<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>UnityBeginner</title>
    <link>https://unitybeginner.tistory.com/</link>
    <description>유니티를 막 시작하신분들의 쉼터?</description>
    <language>ko</language>
    <pubDate>Sun, 12 Jul 2026 23:52:14 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>UnityBeginner</managingEditor>
    <image>
      <title>UnityBeginner</title>
      <url>https://tistory1.daumcdn.net/tistory/3863939/attach/a67eb20c385d4eefb476040bf4697b3a</url>
      <link>https://unitybeginner.tistory.com</link>
    </image>
    <item>
      <title>아크레이더스 ARCraiders 뉴비가이드 프로젝트 단계별 재료</title>
      <link>https://unitybeginner.tistory.com/543</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;!-- Tailwind CSS CDN 로드 --&gt;&lt;/b&gt;&lt;/p&gt;
&lt;script src=&quot;https://cdn.tailwindcss.com&quot;&gt;&lt;/script&gt;
&lt;script&gt;
        // Tailwind 설정을 커스터마이징합니다.
        tailwind.config = {
            theme: {
                extend: {
                    fontFamily: {
                        sans: ['Inter', 'sans-serif'],
                    },
                }
            }
        }
    &lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;!-- ********** 상단 설명 영역 (펼쳐보기/닫기 기능 포함) ********** --&gt;&lt;/b&gt;&lt;/p&gt;
&lt;div class=&quot;max-w-6xl mx-auto mb-6 p-6 bg-indigo-50 border-l-4 border-indigo-500 rounded-xl shadow-lg&quot;&gt;&lt;b&gt;&lt;!-- 토글 버튼 역할 (제목 및 아이콘) --&gt;&lt;/b&gt;
&lt;div id=&quot;description-toggle&quot; class=&quot;flex justify-between items-center cursor-pointer py-1&quot;&gt;
&lt;h1 class=&quot;text-2xl font-bold text-indigo-800 mb-0&quot;&gt;&lt;b&gt;  단계별 재료 목록&lt;/b&gt;&lt;/h1&gt;
&lt;b&gt;&lt;!-- Arrow Icon: 초기 상태(접힘)에서는 아래를 향함 --&gt;&lt;/b&gt;&lt;/div&gt;
&lt;b&gt;&lt;!-- 토글될 내용: max-h-0와 invisible로 기본적으로 숨김 상태 --&gt;&lt;/b&gt;
&lt;div id=&quot;description-content&quot; class=&quot;max-h-0 overflow-hidden transition-all duration-500 ease-in-out invisible&quot;&gt;&lt;b&gt;&lt;!-- 1. 상단 설명 예제 --&gt;&lt;/b&gt;&lt;br /&gt;
&lt;p class=&quot;text-gray-700 pt-3 border-t border-indigo-200 mt-3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;프로젝트를 전부 수행하시면 캐릭터 초기화를 진행하며 일부 영구적인 이점들을 제공합니다. (프로젝트 완료는 일정 기간이 지난이후 가능)&lt;/b&gt;&lt;/p&gt;
&lt;b&gt;&lt;!-- ********** 2. 새롭게 추가된 비교 목록 영역 ********** --&gt;&lt;/b&gt;
&lt;div class=&quot;pt-4 border-t border-indigo-200 mt-4&quot;&gt;
&lt;h3 class=&quot;text-xl font-extrabold text-indigo-700 mb-4&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;✨ &lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;본 체크리스트 도구의 장점 비교&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;div class=&quot;flex flex-col md:flex-row gap-6&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;&lt;!-- 좌측 비교 영역: 전통적인 방법 --&gt;&lt;/b&gt;&lt;/span&gt;
&lt;div class=&quot;w-full md:w-1/2 p-5 bg-white border border-red-300 rounded-lg shadow-inner&quot;&gt;
&lt;h4 class=&quot;text-lg font-bold text-red-600 mb-2&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;❌ 초기화되는 항목&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul class=&quot;text-gray-700 space-y-2 list-disc list-inside pl-4&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;보관함 업그레이드 진행&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;인벤토리 아이템&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;설계도&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;코인&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;플레이어 레벨&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;스킬 포인트&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;레이더 은신처&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;작업장&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;퀘스트&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;&lt;!-- 우측 비교 영역: 본 도구 사용 --&gt;&lt;/b&gt;&lt;/span&gt;
&lt;div class=&quot;w-full md:w-1/2 p-5 bg-white border border-green-300 rounded-lg shadow-inner&quot;&gt;
&lt;h4 class=&quot;text-lg font-bold text-green-600 mb-2&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;✅ 그대로 유지되는 항목&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul class=&quot;text-gray-700 space-y-2 list-disc list-inside pl-4&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;맵 잠금 해제됨&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;작업장 스테이션 잠금 해제됨&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;코덱스 항목&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;레이더 토큰&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;평판 점수&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;레이더 덱 진행&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;진행 중인 순위표&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;시련&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;꾸미기 아이템&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;개인 이벤트 진행도&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;원정으로 획득한 보너스 스킬 포인트&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li class=&quot;text-sm&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;원정으로 획득한 보너스 보관함 슬롯&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;b&gt;&lt;!-- ********** // 새롭게 추가된 비교 목록 영역 ********** --&gt; &lt;!-- 3. 하단 설명 예제 --&gt;&lt;/b&gt;&lt;br /&gt;
&lt;p class=&quot;text-gray-700 pt-4 border-t border-indigo-200 mt-4&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;b&gt;해당 내용은 업데이트를 통해 변경될 수 있습니다.&lt;/b&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;!-- ********** // 상단 설명 영역 ********** --&gt;&lt;/b&gt;&lt;/p&gt;
&lt;div id=&quot;app&quot; class=&quot;max-w-6xl mx-auto flex flex-col md:flex-row shadow-2xl rounded-xl overflow-hidden bg-white min-h-[85vh]&quot;&gt;&lt;b&gt;&lt;!-- 좌측 영역: 6단계 버튼 (메뉴) --&gt;&lt;/b&gt;
&lt;div class=&quot;md:w-64 bg-gray-800 p-6 flex flex-col space-y-3 flex-shrink-0&quot;&gt;
&lt;h2 class=&quot;text-2xl font-bold text-white mb-4 border-b border-gray-700 pb-3&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  단계별 목록&lt;/b&gt;&lt;/h2&gt;
&lt;div id=&quot;stage-menu&quot; class=&quot;space-y-3&quot;&gt;&lt;b&gt;&lt;!-- 버튼들은 JavaScript로 동적으로 생성 및 이벤트 처리됩니다. --&gt; &lt;button class=&quot;stage-button w-full text-left py-3 px-4 rounded-lg text-lg transition duration-200 bg-gray-700 text-gray-200 hover:bg-indigo-600 hover:text-white&quot; data-stage=&quot;1&quot;&gt;1단계&lt;/button&gt; &lt;button class=&quot;stage-button w-full text-left py-3 px-4 rounded-lg text-lg transition duration-200 bg-gray-700 text-gray-200 hover:bg-indigo-600 hover:text-white&quot; data-stage=&quot;2&quot;&gt;2단계&lt;/button&gt; &lt;button class=&quot;stage-button w-full text-left py-3 px-4 rounded-lg text-lg transition duration-200 bg-gray-700 text-gray-200 hover:bg-indigo-600 hover:text-white&quot; data-stage=&quot;3&quot;&gt;3단계&lt;/button&gt; &lt;button class=&quot;stage-button w-full text-left py-3 px-4 rounded-lg text-lg transition duration-200 bg-gray-700 text-gray-200 hover:bg-indigo-600 hover:text-white&quot; data-stage=&quot;4&quot;&gt;4단계&lt;/button&gt; &lt;button class=&quot;stage-button w-full text-left py-3 px-4 rounded-lg text-lg transition duration-200 bg-gray-700 text-gray-200 hover:bg-indigo-600 hover:text-white&quot; data-stage=&quot;5&quot;&gt;5단계&lt;/button&gt; &lt;button class=&quot;stage-button w-full text-left py-3 px-4 rounded-lg text-lg transition duration-200 bg-gray-700 text-gray-200 hover:bg-indigo-600 hover:text-white&quot; data-stage=&quot;6&quot;&gt;6단계&lt;/button&gt;&lt;/b&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;b&gt;&lt;!-- 우측 영역: 상세 내용 및 광고 --&gt;&lt;/b&gt;
&lt;div class=&quot;flex-1 p-6 md:p-10 flex flex-col custom-scrollbar overflow-y-auto&quot;&gt;&lt;b&gt;&lt;!-- 상세 내용 헤더 --&gt;&lt;/b&gt;
&lt;div class=&quot;pb-4 mb-6 border-b-2 border-indigo-200&quot;&gt;
&lt;h1 id=&quot;content-title&quot; class=&quot;text-3xl font-extrabold text-gray-800&quot;&gt;&lt;b&gt;단계를 선택하여 재료를 확인하세요&lt;/b&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;b&gt;&lt;!-- 재료 체크리스트 영역 --&gt;&lt;/b&gt;
&lt;div class=&quot;flex-1&quot;&gt;
&lt;ul id=&quot;ingredient-list&quot; class=&quot;space-y-3&quot; style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;&lt;!-- JavaScript를 통해 재료 항목이 여기에 추가됩니다. --&gt;
&lt;li id=&quot;initial-message&quot; class=&quot;text-gray-500 italic text-lg&quot;&gt;&lt;b&gt;좌측 메뉴에서 단계를 선택하면 필요한 재료 목록이 여기에 표시됩니다.&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;b&gt;&lt;!-- 광고 영역 --&gt;&lt;/b&gt;
&lt;div class=&quot;mt-10 pt-6 border-t border-gray-200&quot;&gt;&lt;b&gt;&lt;!-- h-[100px]와 flex items-center justify-center를 추가하여 높이 100px 고정 및 중앙 정렬 --&gt;&lt;/b&gt;
&lt;div class=&quot;ad-area p-4 rounded-lg shadow-md text-center flex items-center justify-center h-[100px]&quot;&gt;
&lt;ins class=&quot;kakao_ad_area&quot; style=&quot;display:none;&quot;
data-ad-unit = &quot;DAN-NbNH5DsVvgRJidsz&quot;
data-ad-width = &quot;728&quot;
data-ad-height = &quot;90&quot;&gt;&lt;/ins&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;//t1.daumcdn.net/kas/static/ba.min.js&quot; async&gt;&lt;/script&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;!-- 로컬 스토리지 기반 JavaScript 로직 --&gt;&lt;/b&gt;&lt;/p&gt;
&lt;script&gt;
        let activeStage = null;
        // LocalStorage 키: 모든 단계의 체크 상태를 하나의 JSON 문자열로 저장합니다.
        const STORAGE_KEY = 'ingredientChecklist'; 

        // 재료 데이터 정의 (사용자 요청에 따라 수정됨)
        const ingredientsData = {
            1: [&quot;금속 부품 x150&quot;, &quot;고무 부품 x200&quot;, &quot;아크 합금 x80&quot;, &quot;강철 스프링x 15&quot;],
            2: [&quot;질긴 천 x35&quot;, &quot;전선 x30&quot;, &quot;전기 부품 x30&quot;, &quot;냉각 팬 x5&quot;],
            3: [&quot;전구 x5&quot;, &quot;배터리 x30&quot;, &quot;센서 x20&quot;, &quot;엑소더스 모듈 x1&quot;],
            4: [&quot;가습기 x5&quot;, &quot;고급 전기 부품 x5&quot;, &quot;자성 가속기 x3&quot;, &quot;리퍼 펄스 유닛 x3&quot;],
            5: [&quot;카테고리 (무기, 탄약, 무기모드, 수류탄) 아이템 25만 코인 값어치&quot;, &quot;카테고리 (실드, 증강물, 회복, 기타(집라인, 스냅훅)) 아이템 10만 코인 값어치&quot;, &quot;카테고리 (자연, 잡화, 설계도, 키) 아이템 18만 코인 값어치&quot;,&quot;카테고리 (제작재료) 아이템 30만 코인 값어치&quot;],
            6: [&quot;출발 전까지 대기 (일정 기간이 지난 이후에 가능한거 같습니다)&quot;]
        };
        
        // DOM 요소 참조
        const buttons = document.querySelectorAll('.stage-button');
        const contentTitle = document.getElementById('content-title');
        const ingredientList = document.getElementById('ingredient-list');
        const initialMessage = document.getElementById('initial-message');

        // ********** 상단 설명 영역 토글 기능 관련 DOM 참조 및 로직 **********
        const descriptionToggle = document.getElementById('description-toggle');
        const descriptionContent = document.getElementById('description-content');
        const toggleIcon = document.getElementById('toggle-icon');
        // 초기 상태를 접힌 상태로 설정
        let isDescriptionExpanded = false; 

        // 설명 영역 토글 함수
        function toggleDescription() {
            isDescriptionExpanded = !isDescriptionExpanded;
            
            if (isDescriptionExpanded) {
                // 펼치기: max-h-screen을 사용하여 부드러운 전환 효과를 만듭니다.
                descriptionContent.classList.remove('max-h-0', 'invisible');
                descriptionContent.classList.add('max-h-screen', 'visible'); 
                toggleIcon.classList.add('rotate-180'); // 아이콘 회전 (위로)
            } else {
                // 접기
                descriptionContent.classList.remove('max-h-screen', 'visible');
                descriptionContent.classList.add('max-h-0', 'invisible');
                toggleIcon.classList.remove('rotate-180'); // 아이콘 회전 복구 (아래로)
            }
        }
        
        // 토글 이벤트 리스너 설정
        if (descriptionToggle) {
            descriptionToggle.addEventListener('click', toggleDescription);
        }
        // ********** // 토글 기능 로직 **********

        /**
         * LocalStorage에 체크 상태 저장 (Firestore 대신 사용)
         * @param {number} stage - 현재 단계 번호
         * @param {string} materialId - 재료의 고유 ID
         * @param {boolean} isChecked - 체크 상태
         */
        function saveCheckedState(stage, materialId, isChecked) {
            // 1. 전체 상태를 localStorage에서 로드 (JSON.parse)
            const allCheckedStates = JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}');
            
            // 2. 현재 단계의 상태 객체를 가져오거나 새로 생성
            // key는 문자열이어야 하므로 String(stage)를 사용합니다.
            let stageState = allCheckedStates[String(stage)] || {};
            
            // 3. 현재 항목 상태 업데이트
            stageState[materialId] = isChecked;
            
            // 4. 전체 상태에 현재 단계 상태 업데이트
            allCheckedStates[String(stage)] = stageState;

            // 5. localStorage에 저장 (JSON.stringify)
            try {
                localStorage.setItem(STORAGE_KEY, JSON.stringify(allCheckedStates));
                console.log(`Stage ${stage} item [${materialId}] saved to localStorage: ${isChecked}`);
            } catch (error) {
                console.error(&quot;체크 상태 저장 실패:&quot;, error);
                // 사용자에게 표시할 메시지를 여기에 추가할 수 있습니다.
            }
        }

        // UI를 렌더링하는 핵심 함수
        function renderIngredients(stage, checkedState) {
            const materials = ingredientsData[stage] || [];
            ingredientList.innerHTML = ''; // 기존 목록 초기화
            if (initialMessage) initialMessage.style.display = 'none';

            if (materials.length === 0) {
                ingredientList.innerHTML = `&lt;li class=&quot;text-gray-500 italic text-lg p-3&quot;&gt;해당 단계에는 준비할 재료가 없습니다.&lt;/li&gt;`;
                return;
            }

            materials.forEach(material =&gt; {
                // 빈 문자열이 데이터에 포함되어 있을 수 있으므로 무시합니다.
                if (material.trim() === &quot;&quot;) return;
                
                // materialId를 생성할 때 공백을 '_'로 치환하여 고유성을 유지
                const materialId = `${stage}-${material.replace(/\s/g, '_')}`; 
                const isChecked = checkedState[materialId] || false;

                const listItem = document.createElement('li');
                // Tailwind 클래스를 사용하여 세련된 디자인 적용
                listItem.className = `flex items-center p-4 border-b border-gray-100 bg-white hover:bg-indigo-50 transition duration-150 rounded-lg shadow-sm`;

                // 체크박스 생성
                const checkbox = document.createElement('input');
                checkbox.type = 'checkbox';
                checkbox.id = materialId;
                checkbox.checked = isChecked;
                checkbox.className = `form-checkbox h-5 w-5 text-indigo-600 rounded border-gray-300 focus:ring-indigo-500 cursor-pointer`;

                // 라벨 (재료 이름) 생성
                const label = document.createElement('label');
                label.htmlFor = materialId;
                label.textContent = material;
                // 체크 여부에 따라 텍스트 스타일 변경. text-xl -&gt; text-lg로 수정 (사용자 요청)
                label.className = `ml-4 text-lg font-medium text-gray-700 flex-1 transition-all duration-300 ${isChecked ? 'line-through text-gray-400' : ''}`;

                // 이벤트 리스너: 체크박스 상태 변경 시 LocalStorage에 저장
                checkbox.addEventListener('change', (e) =&gt; {
                    const newChecked = e.target.checked;
                    saveCheckedState(stage, materialId, newChecked);
                    // UI 즉시 반영 (시각적인 반응 제공)
                    label.classList.toggle('line-through', newChecked);
                    label.classList.toggle('text-gray-400', newChecked);
                    label.classList.toggle('text-gray-700', !newChecked);
                });

                listItem.appendChild(checkbox);
                listItem.appendChild(label);
                ingredientList.appendChild(listItem);
            });
        }
        
        /**
         * 단계 버튼 클릭 시 UI 업데이트 및 LocalStorage에서 데이터 로드
         * @param {number} stage - 현재 단계 번호
         */
        function displayStageUI(stage) {
            // 현재 활성화된 단계 업데이트
            activeStage = stage;
            
            // 버튼 활성화 스타일 업데이트
            buttons.forEach(btn =&gt; btn.classList.remove('bg-indigo-600', 'text-white'));
            const activeButton = document.querySelector(`.stage-button[data-stage=&quot;${stage}&quot;]`);
            if (activeButton) {
                activeButton.classList.add('bg-indigo-600', 'text-white');
                // 제목 업데이트
                const titleText = activeButton.textContent.split(':').length &gt; 1 ? activeButton.textContent.split(':')[1].trim() : activeButton.textContent.trim();
                contentTitle.textContent = `${titleText} 재료`;
            }

            // 로딩 상태 즉시 표시 (UX 개선을 위해 남겨둠)
            ingredientList.innerHTML = `&lt;li class=&quot;text-gray-500 italic text-lg p-3&quot;&gt;
                &lt;div class=&quot;flex items-center space-x-2&quot;&gt;
                    &lt;svg class=&quot;animate-spin h-5 w-5 text-indigo-500&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; fill=&quot;none&quot; viewBox=&quot;0 0 24 24&quot;&gt;
                        &lt;circle class=&quot;opacity-25&quot; cx=&quot;12&quot; cy=&quot;12&quot; r=&quot;10&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;4&quot;&gt;&lt;/circle&gt;
                        &lt;path class=&quot;opacity-75&quot; fill=&quot;currentColor&quot; d=&quot;M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z&quot;&gt;&lt;/path&gt;
                    &lt;/svg&gt;
                    &lt;span&gt;데이터 로딩 중... 잠시만 기다려주세요.&lt;/span&gt;
                &lt;/div&gt;
            &lt;/li&gt;`;
            if (initialMessage) initialMessage.style.display = 'none';

            // LocalStorage에서 현재 단계의 데이터 로드
            try {
                const allCheckedStates = JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}');
                // 현재 단계의 체크 상태만 추출
                const checkedState = allCheckedStates[String(stage)] || {};

                // 목록 렌더링
                renderIngredients(stage, checkedState);

            } catch (error) {
                console.error(`Stage ${stage} 데이터 로드 실패 (localStorage):`, error);
                // 오류 발생 시에도 재료 목록은 정적 데이터로 표시 (체크 상태는 비어있음)
                ingredientList.innerHTML = `&lt;li class=&quot;text-red-500 italic text-lg p-3&quot;&gt;⚠️ 체크 상태 로드 실패. 임시 목록을 표시합니다.&lt;/li&gt;`;
                renderIngredients(stage, {});
            }
        }
        
        // 애플리케이션 초기화 (Local Storage 사용)
        function initializeApp() {
            try {
                console.log(&quot;애플리케이션이 초기화되었습니다. 데이터 지속성에는 LocalStorage를 사용합니다.&quot;);
                
                // 초기 단계 설정 및 데이터 로드 시작
                if (buttons.length &gt; 0) {
                    activeStage = 1; // 기본적으로 1단계 활성화
                    // UI 초기화 (localStorage에서 데이터를 읽어옴)
                    displayStageUI(activeStage);
                }
                
            } catch (error) {
                console.error(&quot;앱 초기화 실패:&quot;, error);
                contentTitle.textContent = &quot;오류 발생: 애플리케이션 초기화 실패&quot;;
            }
        }
        
        // 버튼 클릭 이벤트 리스너 설정
        buttons.forEach(button =&gt; {
            button.addEventListener('click', (e) =&gt; {
                const stage = parseInt(e.target.dataset.stage);
                displayStageUI(stage);
            });
        });
        
        // 애플리케이션 시작
        window.onload = initializeApp;
    &lt;/script&gt;</description>
      <category>스팀게임</category>
      <author>UnityBeginner</author>
      <guid isPermaLink="true">https://unitybeginner.tistory.com/543</guid>
      <comments>https://unitybeginner.tistory.com/543#entry543comment</comments>
      <pubDate>Fri, 7 Nov 2025 23:46:31 +0900</pubDate>
    </item>
    <item>
      <title>아크레이더스 ARCraiders 뉴비가이드 작업장 총합재료</title>
      <link>https://unitybeginner.tistory.com/539</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;script src=&quot;https://cdn.tailwindcss.com&quot;&gt;&lt;/script&gt;
&lt;!-- 1. 가장 상단 영역: 필요한 총합 재료 --&gt;&lt;header class=&quot;bg-white-600 shadow-xl p-4 md:p-6 rounded-lg mb-6&quot;&gt;
&lt;h1 class=&quot;text-2xl md:text-3xl font-bold text-black mb-2&quot;&gt;건설 총합 재료 (남은 수량)&lt;/h1&gt;
&lt;div id=&quot;total-ingredients-list&quot; class=&quot;total-ingredients bg-white p-4 rounded-md shadow-inner text-gray-800 grid grid-cols-2 sm:grid-cols-4 gap-2&quot;&gt;
&lt;p id=&quot;initial-message&quot; class=&quot;col-span-2 sm:col-span-4 text-center text-sm italic text-gray-500&quot; data-ke-size=&quot;size16&quot;&gt;좌측에서 작업장을 선택해주세요.&lt;/p&gt;
&lt;/div&gt;
&lt;/header&gt;
&lt;div class=&quot;container mx-auto flex flex-col lg:flex-row gap-6&quot;&gt;&lt;!-- 2. 좌측 영역 (버튼 선택) --&gt;
&lt;aside class=&quot;w-full lg:w-1/4 p-4 bg-white rounded-lg shadow-lg h-fit&quot;&gt;
&lt;h3 class=&quot;text-xl font-semibold mb-4 text-gray-800 border-b pb-2&quot; data-ke-size=&quot;size23&quot;&gt;작업장 선택&lt;/h3&gt;
&lt;button class=&quot;build-select-btn w-full py-3 mb-3 bg-indigo-500 hover:bg-indigo-600 text-white font-medium rounded-lg transition&quot; data-build=&quot;build_a&quot;&gt;총기 제작&lt;/button&gt; &lt;button class=&quot;build-select-btn w-full py-3 mb-3 bg-indigo-500 hover:bg-indigo-600 text-white font-medium rounded-lg transition&quot; data-build=&quot;build_b&quot;&gt;장비 작업대&lt;/button&gt; &lt;button class=&quot;build-select-btn w-full py-3 mb-3 bg-indigo-500 hover:bg-indigo-600 text-white font-medium rounded-lg transition&quot; data-build=&quot;build_c&quot;&gt;의약품 연구실&lt;/button&gt; &lt;button class=&quot;build-select-btn w-full py-3 mb-3 bg-indigo-500 hover:bg-indigo-600 text-white font-medium rounded-lg transition&quot; data-build=&quot;build_d&quot;&gt;폭발물 스테이션&lt;/button&gt; &lt;button class=&quot;build-select-btn w-full py-3 mb-3 bg-indigo-500 hover:bg-indigo-600 text-white font-medium rounded-lg transition&quot; data-build=&quot;build_e&quot;&gt;유틸리티 스테이션&lt;/button&gt; &lt;button class=&quot;build-select-btn w-full py-3 mb-3 bg-indigo-500 hover:bg-indigo-600 text-white font-medium rounded-lg transition&quot; data-build=&quot;build_f&quot;&gt;가공기&lt;/button&gt;&lt;/aside&gt;
&lt;!-- 3. 우측 영역 (상세 내역 및 광고) --&gt;&lt;main class=&quot;w-full lg:w-3/4 flex flex-col gap-6&quot;&gt;&lt;!-- 상세 내역 영역 --&gt;
&lt;section class=&quot;details-section bg-white p-6 rounded-lg shadow-lg&quot;&gt;
&lt;h3 class=&quot;text-xl font-semibold mb-4 text-gray-800 border-b pb-2&quot; data-ke-size=&quot;size23&quot;&gt;  작업장 단계&lt;/h3&gt;
&lt;div id=&quot;build-details&quot; class=&quot;space-y-4&quot;&gt;
&lt;p class=&quot;text-gray-500 italic&quot; data-ke-size=&quot;size16&quot;&gt;좌측에서 작업장 선택하시면 단계별 내역이 표시됩니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/section&gt;
&lt;!-- 4. 광고 영역 --&gt;
&lt;section class=&quot;ad-section p-6&quot;&gt;
&lt;ins class=&quot;kakao_ad_area&quot; style=&quot;display:none;&quot;
data-ad-unit = &quot;DAN-NbNH5DsVvgRJidsz&quot;
data-ad-width = &quot;728&quot;
data-ad-height = &quot;90&quot;&gt;&lt;/ins&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;//t1.daumcdn.net/kas/static/ba.min.js&quot; async&gt;&lt;/script&gt;
  &lt;/section&gt;
&lt;/main&gt;&lt;/div&gt;
&lt;script&gt;
        
        const building = {
            build_a: {
                name: &quot;총기 제작&quot;,
                stages: [
                    { name: &quot;1단계&quot;, metrial: [&quot;금속 부품 x20&quot;, &quot;고무 부품 30&quot;] },
                    { name: &quot;2단계&quot;, metrial: [&quot;녹슨 도구 x3&quot;, &quot;기계 부품 x5&quot;, &quot;와스프 드라이버 x8&quot;] },
                    { name: &quot;3단계&quot;, metrial: [&quot;녹습 톱니 바퀴 x3&quot;, &quot;고급 기계 부품 x5&quot;,&quot;센티넬 발사 코어 x4&quot;] }                    
                ]
            },
            build_b: {
                name: &quot;장비 작업대&quot;,
                stages: [
                    { name: &quot;1단계&quot;, metrial: [&quot;플라스틱 부품 x25&quot;, &quot;직물 x30&quot;] },
                    { name: &quot;2단계&quot;, metrial: [&quot;전원 케이블 x3&quot;, &quot;전기 부품 x5&quot;,&quot;호넷 드라이버 x5&quot;] },
                    { name: &quot;3단계&quot;, metrial: [&quot;산업용 배터리 x3&quot;, &quot;고급 전기 부품 x5&quot;,&quot;바스티온 전지 x6&quot;] }                    
                ]
            },
            build_c: {
                name: &quot;의약품 연구실&quot;,
                stages: [
                    { name: &quot;1단계&quot;, metrial: [&quot;직물 x50&quot;, &quot;아크 합금 x6&quot;] },
                    { name: &quot;2단계&quot;, metrial: [&quot;깨진 바이오 스캐너 x2&quot;, &quot;질긴 천 x5&quot;, &quot;틱 포드 x8&quot;] },
                    { name: &quot;3단계&quot;, metrial: [&quot;닫혀 있는 녹슨 의료용품 상자 x3&quot;, &quot;소독약 x8&quot;, &quot;서베이버 볼트 x5&quot;] }                    
                ]
            },
          build_d: {
                name: &quot;폭발물 스테이션&quot;,
                stages: [
                   	{ name: &quot;1단계&quot;, metrial: [&quot;화학품 x50&quot;, &quot;아크 합금 x6&quot;] },
                    { name: &quot;2단계&quot;, metrial: [&quot;합성 연료 x3&quot;, &quot;조악한 폭발물 x5&quot;, &quot;팝 트리거 x5&quot;] },
                    { name: &quot;3단계&quot;, metrial: [&quot;연구실 시약 x3&quot;, &quot;혼합 화약 x5&quot;, &quot;로켓티어 드라이버 x3&quot;] }                    
                ]
            },
          build_e: {
                name: &quot;유틸리티 스테이션&quot;,
                stages: [
                    { name: &quot;1단계&quot;, metrial: [&quot;플라스틱 x50&quot;, &quot;아크 합금 x6&quot;] },
                    { name: &quot;2단계&quot;, metrial: [&quot;손상된 방열판 x2&quot;, &quot;전기 부품 x5&quot;, &quot;스니치 스캐너 x6&quot;] },
                    { name: &quot;3단계&quot;, metrial: [&quot;타버린 메인 보드 x3&quot;, &quot;고급 전기 부품 x5&quot;, &quot;리퍼 펄스 유닛 x4&quot;] }                    
                ]
            },
          build_f: {
                name: &quot;가공기&quot;,
                stages: [
                    { name: &quot;1단계&quot;, metrial: [&quot;금속 부품 x60&quot;, &quot;아크 파워셀 x5&quot;] },
                    { name: &quot;2단계&quot;, metrial: [&quot;토스트기 x3&quot;, &quot;아크 모션 코어 x5&quot;, &quot;파이어볼 버너 x8&quot;] },
                    { name: &quot;3단계&quot;, metrial: [&quot;모터 x3&quot;, &quot;아크 전기회로망 x10&quot;, &quot;봄바디어 전지 x6&quot;] }                    
                ]
            }
          
        };

        let currentBuildId = null; 
        let currentTotalIngredients = new Set(); 
        let completedStages = []; 

        
        const totalListElement = document.getElementById('total-ingredients-list');
        const detailsElement = document.getElementById('build-details');
        const initialMessage = document.getElementById('initial-message');
        
        

        
        function saveState() {
            try {
                localStorage.setItem('buildId', currentBuildId);
                localStorage.setItem('completedStages', JSON.stringify(completedStages));
            } catch (error) {
                console.error(&quot;Error saving state to localStorage:&quot;, error);
            }
        }
        
        
        function loadState() {
            try {
                const savedBuildId = localStorage.getItem('buildId');
                const savedCompletedStages = localStorage.getItem('completedStages');

                if (savedBuildId &amp;&amp; savedCompletedStages) {
                    currentBuildId = savedBuildId;
                    
                    completedStages = JSON.parse(savedCompletedStages);
                    
                    
                    if (initialMessage) initialMessage.classList.add('hidden');

                    
                    const activeBtn = document.querySelector(`.build-select-btn[data-build=&quot;${currentBuildId}&quot;]`);
                    if (activeBtn) {
                        document.querySelectorAll('.build-select-btn').forEach(btn =&gt; {
                            btn.classList.remove('bg-indigo-700', 'ring-2', 'ring-indigo-300');
                            btn.classList.add('bg-indigo-500');
                        });
                        activeBtn.classList.remove('bg-indigo-500');
                        activeBtn.classList.add('bg-indigo-700', 'ring-2', 'ring-indigo-300');
                    }

                    
                    initializeTotalMetrials(currentBuildId, false); 
                    renderBuildDetails(currentBuildId); 
                    updateTotalIngredientsDisplay(); 

                    console.log(`State loaded: Build ID=${currentBuildId}, Completed Stages=${completedStages.length}`);
                    return true;
                }
            } catch (error) {
                console.error(&quot;Error loading state from localStorage:&quot;, error);
            }
            return false;
        }

        

        
        function initializeTotalMetrials(buildId) {
            const build = building[buildId];
            const total = new Set();

            build.stages.forEach(stage =&gt; {
                stage.metrial.forEach(item =&gt; {
                    total.add(item);
                });
            });

            currentTotalIngredients = total;
        }

        
        function updateTotalIngredientsDisplay() {
            if (!currentBuildId) {
                return;
            }
            
            const stages = building[currentBuildId].stages;
            const completedIngredients = new Set(); 
            const totalIngredients = new Set([...currentTotalIngredients]); 

            
            completedStages.forEach(stageIndex =&gt; {
                const stage = stages[stageIndex];
                
                if (stage) {
                    stage.metrial.forEach(item =&gt; {
                        completedIngredients.add(item);
                    });
                }
            });

            
            const neededIngredients = new Set([...totalIngredients].filter(item =&gt; !completedIngredients.has(item)));

            
            let totalHtml = '';
            let itemsNeeded = neededIngredients.size &gt; 0;
            
            
            neededIngredients.forEach(item =&gt; {
                totalHtml += `&lt;div class=&quot;ingredient-item flex justify-between items-center bg-red-100 p-2 rounded-md shadow-sm&quot;&gt;
                                &lt;span class=&quot;font-medium text-gray-700&quot;&gt;${item}&lt;/span&gt;
                                &lt;span class=&quot;font-bold text-red-700&quot;&gt;필요&lt;/span&gt;
                              &lt;/div&gt;`;
            });

            
            if (completedIngredients.size &gt; 0) {
                 completedIngredients.forEach(item =&gt; {
                    
                    if (!neededIngredients.has(item)) {
                        totalHtml += `&lt;div class=&quot;ingredient-item flex justify-between items-center bg-green-100 p-2 rounded-md shadow-sm opacity-50&quot;&gt;
                                    &lt;span class=&quot;font-medium text-gray-700&quot;&gt;${item}&lt;/span&gt;
                                    &lt;span class=&quot;font-bold text-green-700&quot;&gt;건설 완료&lt;/span&gt;
                                  &lt;/div&gt;`;
                    }
                });
            }


            if (!itemsNeeded &amp;&amp; totalIngredients.size &gt; 0) {
                totalHtml = `&lt;p class=&quot;col-span-2 sm:col-span-4 text-center text-lg font-bold text-green-600&quot;&gt;작업장 레벨업 완료&lt;/p&gt;`;
            } else if (totalIngredients.size === 0) {
                totalHtml = `&lt;p class=&quot;col-span-2 sm:col-span-4 text-center text-sm italic text-gray-500&quot; id=&quot;initial-message&quot;&gt;좌측에서 작업장을 선택해주세요.&lt;/p&gt;`;
            }

            totalListElement.innerHTML = totalHtml;
        }

        
        function renderBuildDetails(buildId) {
            const build = building[buildId];
            let detailsHtml = '';

            build.stages.forEach((stage, index) =&gt; {
                
                const isChecked = completedStages.includes(index);
                
                
                const ingredientList = stage.metrial.map(item =&gt; 
                    `&lt;span class=&quot;text-sm text-gray-600&quot;&gt;(${item})&lt;/span&gt;`
                ).join(', ');

                detailsHtml += `
                    &lt;div class=&quot;build-step-card p-4 border border-gray-200 rounded-lg shadow-sm bg-gray-50 flex flex-col md:flex-row justify-between items-start md:items-center&quot;&gt;
                        &lt;div class=&quot;flex items-center space-x-3 w-full md:w-auto&quot;&gt;
                            &lt;input type=&quot;checkbox&quot; data-stage-index=&quot;${index}&quot; id=&quot;stage-${buildId}-${index}&quot; 
                                class=&quot;h-5 w-5 text-indigo-600 border-gray-300 rounded focus:ring-indigo-500 stage-checkbox&quot; ${isChecked ? 'checked' : ''}&gt;
                            &lt;label for=&quot;stage-${buildId}-${index}&quot; class=&quot;text-lg font-semibold text-gray-800 cursor-pointer&quot;&gt;
                                ${stage.name}
                            &lt;/label&gt;
                        &lt;/div&gt;
                        &lt;div class=&quot;mt-2 md:mt-0 md:text-right text-sm text-indigo-500 font-medium&quot;&gt;
                            필요 재료: ${ingredientList}
                        &lt;/div&gt;
                    &lt;/div&gt;
                `;
            });

            detailsElement.innerHTML = detailsHtml;

            
            document.querySelectorAll('.stage-checkbox').forEach(checkbox =&gt; {
                checkbox.addEventListener('change', handleCheckboxChange);
            });
        }

        
        function handleBuildSelection(event) {
            const newBuildId = event.target.dataset.build;
            if (!newBuildId) return;

            
            if (currentBuildId !== newBuildId) {
                completedStages = []; 
            }
            
            currentBuildId = newBuildId;
            initializeTotalMetrials(currentBuildId);

            
            if (initialMessage) initialMessage.classList.add('hidden');
            
            
            renderBuildDetails(currentBuildId);
            updateTotalIngredientsDisplay();
            
            
            saveState();

            
            document.querySelectorAll('.build-select-btn').forEach(btn =&gt; {
                btn.classList.remove('bg-indigo-700', 'ring-2', 'ring-indigo-300');
                btn.classList.add('bg-indigo-500');
            });
            event.target.classList.remove('bg-indigo-500');
            event.target.classList.add('bg-indigo-700', 'ring-2', 'ring-indigo-300');
        }

        
        function handleCheckboxChange(event) {
            const stageIndex = parseInt(event.target.dataset.stageIndex);
            const isChecked = event.target.checked;
            
            if (isChecked) {
                
                if (!completedStages.includes(stageIndex)) {
                    completedStages.push(stageIndex);
                }
            } else {
                
                completedStages = completedStages.filter(index =&gt; index !== stageIndex);
            }

            
            updateTotalIngredientsDisplay();
            
            
            saveState();
        }

        
        document.addEventListener('DOMContentLoaded', () =&gt; {
            
            document.querySelectorAll('.build-select-btn').forEach(button =&gt; {
                button.addEventListener('click', handleBuildSelection);
            });
            
            
            const stateLoaded = loadState();

            
            if (!stateLoaded) {
                const initialBuildId = 'build_a';
                if (building[initialBuildId]) {
                    
                    currentBuildId = initialBuildId;
                    initializeTotalMetrials(currentBuildId);
                    renderBuildDetails(currentBuildId);
                    updateTotalIngredientsDisplay();
                    saveState(); 

                    
                    const initialButton = document.querySelector(`.build-select-btn[data-build=&quot;${initialBuildId}&quot;]`);
                    if (initialButton) {
                        initialButton.classList.remove('bg-indigo-500');
                        initialButton.classList.add('bg-indigo-700', 'ring-2', 'ring-indigo-300');
                    }
                    if (initialMessage) initialMessage.classList.add('hidden');
                } else {
                     totalListElement.innerHTML = `&lt;p class=&quot;col-span-2 sm:col-span-4 text-center text-sm italic text-gray-500&quot;&gt;좌측에서 레시피를 선택하시면 재료 목록이 나타납니다.&lt;/p&gt;`;
                }
            }
        });
    &lt;/script&gt;
&lt;div&gt;
&lt;style&gt;
        /* Custom styles for aesthetic enhancements */
        body { font-family: 'Inter', sans-serif; background-color: #f8f9fa; }
        .container { max-width: 1280px; }
        .build-step-card { transition: all 0.2s; }
        .build-step-card:hover { transform: translateY(-2px); box-shadow: 0 4px 10px rgba(0,0,0,0.1); }
        .ad-section { 
            background-color: white;
            color: white; 
            min-height: 200px;
            display: flex;
            align-items: center;
            justify-content: center;
            flex-direction: column;
            border-radius: 0.5rem;
        }
        .ingredient-item { transition: opacity 0.3s; }
    &lt;/style&gt;
&lt;/div&gt;</description>
      <category>스팀게임</category>
      <author>UnityBeginner</author>
      <guid isPermaLink="true">https://unitybeginner.tistory.com/539</guid>
      <comments>https://unitybeginner.tistory.com/539#entry539comment</comments>
      <pubDate>Sun, 2 Nov 2025 01:18:53 +0900</pubDate>
    </item>
    <item>
      <title>아크레이더스 ARCraiders 뉴비가이드 분해품 목록 (미완성)</title>
      <link>https://unitybeginner.tistory.com/537</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;title&gt;분해품 관리 시스템 (JS 데이터 관리)&lt;/title&gt;
    &lt;!-- Tailwind CSS CDN --&gt;
    &lt;script src=&quot;https://cdn.tailwindcss.com&quot;&gt;&lt;/script&gt;
    &lt;style&gt;
        /* ID 선택자를 사용하고 !important를 추가하여 CSS 우선순위를 극단적으로 높였습니다. */
        /* 기본 스타일 및 그리드 레이아웃 */
        #recycle-app-container {
            display: flex !important; /* !important 추가 */
            height: 100vh !important; /* !important 추가 */
            font-family: 'Inter', sans-serif;
        }

        /* 좌측 메뉴 (목록) */
        #recycle-app-container .side-menu {
            width: 500px !important; /* 너비 500px 유지 - !important 추가 */
            background-color: #f8fafc !important;
            padding: 1rem !important;
            box-shadow: 4px 0 8px rgba(0, 0, 0, 0.05) !important;
            overflow-y: auto !important;
            flex-shrink: 0 !important;
        }

        /* 우측 메인 콘텐츠 + 광고 영역 */
        #recycle-app-container .main-content {
            flex-grow: 1 !important; /* !important 추가 */
            padding: 1.5rem !important;
            background-color: #ecf0f1 !important;
            display: flex !important;
            flex-direction: column !important;
        }

        /* 목록 그리드 스타일: 한 줄에 2개씩 표시 */
        #recycle-app-container .item-list-grid {
            display: grid !important;
            grid-template-columns: repeat(2, 1fr) !important; /* 2열로 분할 */
            gap: 0.75rem !important; /* 항목 간 간격 */
        }
        
        #recycle-app-container .item-card {
            padding: 0.75rem !important;
            text-align: center !important;
            background-color: #ffffff !important;
            border-radius: 0.5rem !important;
            cursor: pointer !important;
            transition: all 0.2s !important;
            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05) !important;
            font-weight: 500 !important;
            overflow: hidden !important; 
            text-overflow: ellipsis !important;
            white-space: nowrap !important;
            border: 1px solid #e5e7eb !important;
        }

        #recycle-app-container .item-card:hover {
            background-color: #e0f2f1 !important; /* Tailwind teal-50 */
        }

        /* JavaScript에 의해 추가되는 선택된 항목 스타일 */
        #recycle-app-container .item-card.selected-item {
            /* 이 스타일은 재활용 아이템 선택 시 목록에서 활성화 상태를 나타내므로, 색상 팔레트를 다르게 유지합니다. */
            background-color: #10b981 !important; /* Tailwind emerald-500 */
            color: white !important;
            font-weight: 700 !important;
            box-shadow: 0 4px 6px rgba(16, 185, 129, 0.3) !important;
            border-color: #059669 !important;
        }

        /* 기존 테이블 관련 스타일은 사용하지 않으므로 제거하거나 비활성화 */
        #recycle-app-container #itemListTable th, #recycle-app-container #itemListTable td { display: none !important; }
        
        /* 광고 영역을 아래로 밀기 */
        #recycle-app-container .ad-area {
            margin-top: auto !important;
        }
        
        /* 재활용 재료 버튼 스타일 (모양 수정: 모서리가 살짝 둥근 사각형) */
        .material-button {
            display: inline-block;
            padding: 0.35rem 0.75rem;
            margin: 0.25rem;
            border-radius: 0.5rem; /* 살짝 둥근 사각형 (rounded-lg) */
            font-weight: 600;
            white-space: nowrap;
            box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
            transition: transform 0.1s;
        }
        .material-button:hover {
            transform: translateY(-1px);
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body class=&quot;bg-gray-100&quot;&gt;

    &lt;!-- 고유 ID를 추가하여 CSS 우선순위를 높였습니다. --&gt;
    &lt;div class=&quot;container&quot; id=&quot;recycle-app-container&quot;&gt;
        &lt;!-- 1. 좌측 영역: 목록 및 검색/카테고리 (너비 500px) --&gt;
        &lt;div class=&quot;side-menu rounded-lg&quot;&gt;
            &lt;h3 class=&quot;text-2xl font-bold mb-4 text-gray-800&quot;&gt;  분해품 목록&lt;/h3&gt;
            
            &lt;!-- 이름 검색 필드 --&gt;
            &lt;input type=&quot;text&quot; id=&quot;searchInput&quot; onkeyup=&quot;renderItems()&quot; placeholder=&quot;이름으로 검색...&quot;
                   class=&quot;w-full p-2 mb-4 border border-gray-300 rounded-lg shadow-sm focus:ring-blue-500 focus:border-blue-500&quot;&gt;
            
            &lt;!-- 등급 필터 Select Box --&gt;
            &lt;div class=&quot;mb-4&quot;&gt;
                &lt;label for=&quot;gradeFilter&quot; class=&quot;block text-sm font-medium text-gray-700 mb-1&quot;&gt;아이템 등급별 필터&lt;/label&gt;
                &lt;select id=&quot;gradeFilter&quot; onchange=&quot;filterByGrade(this.value)&quot;
                        class=&quot;w-full p-2 border border-gray-300 rounded-lg shadow-sm focus:ring-blue-500 focus:border-blue-500 bg-white&quot;&gt;
                    &lt;option value=&quot;all&quot;&gt;전체&lt;/option&gt;
                    &lt;option value=&quot;일반&quot;&gt;일반&lt;/option&gt;
                    &lt;option value=&quot;고급&quot;&gt;고급&lt;/option&gt;
                    &lt;option value=&quot;희귀&quot;&gt;희귀&lt;/option&gt;
                    &lt;option value=&quot;에픽&quot;&gt;에픽&lt;/option&gt;
                    &lt;option value=&quot;전설&quot;&gt;전설&lt;/option&gt;
                &lt;/select&gt;
            &lt;/div&gt;

            &lt;!-- 카테고리 필터 Select Box (새로 추가) --&gt;
            &lt;div class=&quot;mb-4&quot;&gt;
                &lt;label for=&quot;categoryFilter&quot; class=&quot;block text-sm font-medium text-gray-700 mb-1&quot;&gt;아이템 카테고리별 필터&lt;/label&gt;
                &lt;select id=&quot;categoryFilter&quot; onchange=&quot;filterByCategory(this.value)&quot;
                        class=&quot;w-full p-2 border border-gray-300 rounded-lg shadow-sm focus:ring-blue-500 focus:border-blue-500 bg-white&quot;&gt;
                    &lt;!-- 옵션들은 JavaScript에 의해 동적으로 삽입됩니다. --&gt;
                &lt;/select&gt;
            &lt;/div&gt;


            &lt;!-- 분해품 목록 Grid (2열로 표시, 이름만) --&gt;
            &lt;div id=&quot;itemListGrid&quot; class=&quot;item-list-grid&quot;&gt;
                &lt;!-- 항목들은 JavaScript에 의해 동적으로 여기에 삽입됩니다. --&gt;
            &lt;/div&gt;
            
        &lt;/div&gt;

        &lt;!-- 2. 우측 영역: 상세 정보 및 광고 --&gt;
        &lt;div class=&quot;main-content&quot;&gt;
            &lt;div id=&quot;detailsArea&quot; class=&quot;bg-white p-6 rounded-xl shadow-lg flex-grow mb-6&quot;&gt;
                &lt;h3 class=&quot;text-3xl font-extrabold text-gray-900 mb-4 border-b pb-2&quot;&gt;제품 상세 정보&lt;/h3&gt;
                &lt;p class=&quot;text-gray-600 text-lg&quot;&gt;좌측 목록에서 항목을 선택해주세요.&lt;/p&gt;
                &lt;!-- 선택된 항목의 상세 정보가 여기에 표시됩니다. --&gt;
            &lt;/div&gt;

            &lt;!-- 3. 광고 영역 (AD) --&gt;
            &lt;div class=&quot;ad-area bg-white  p-4 rounded-xl shadow-md border-2&quot;&gt;
                &lt;div id=&quot;dablewidget_Pl1E0Lyl&quot; data-widget_id=&quot;Pl1E0Lyl&quot;&gt;

&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7343105306726381&quot;
     crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;
&lt;!-- CENTER_ADAREA_500X450 --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:500px;height:450px&quot;
     data-ad-client=&quot;ca-pub-7343105306726381&quot;
     data-ad-slot=&quot;2791417549&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;
&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;script&gt;
        // 1. 데이터 정의 (JavaScript에서 아이템 관리)
        // recycleInRaid, recycleLobby 필드 모두 배열 (Array&lt;string&gt;)로 변경되었습니다.
        const itemData = [
  
  
  { &quot;id&quot;: 1, &quot;name&quot;: &quot;스냅 훅&quot;, &quot;category&quot;: [ &quot;밧줄&quot;, &quot;파워 로드&quot; ], &quot;grade&quot;: &quot;전설&quot;, &quot;price&quot;: 14000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;파워 로드 x1&quot;, &quot;밧줄 x3&quot; ] },
{ &quot;id&quot;: 2, &quot;name&quot;: &quot;자성 가속기&quot;, &quot;category&quot;: [ &quot;고급 기계 부품&quot;, &quot;아크 모션 코어&quot; ], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 5500, &quot;recycleInRaid&quot;: [ &quot;고급 기계 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;고급 기계 부품 x1&quot;, &quot;아크 모션 코어 x1&quot; ] },
{ &quot;id&quot;: 3, &quot;name&quot;: &quot;엑소더스 모듈&quot;, &quot;category&quot;: [ &quot;자석&quot;, &quot;프로세서&quot; ], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 2750, &quot;recycleInRaid&quot;: [ &quot;프로세서 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;프로세서 x2&quot;, &quot;자석 x2&quot; ] },
{ &quot;id&quot;: 4, &quot;name&quot;: &quot;로켓티어 드라이버&quot;, &quot;category&quot;: [ &quot;고급 전기 부품&quot;, &quot;아크 전기 회로망&quot;, &quot;아크 합금&quot; ], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 5000, &quot;recycleInRaid&quot;: [ &quot;아크 전기 회로망 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;고급 전기 부품 x3&quot;, &quot;아크 합금 x2&quot; ] },
{ &quot;id&quot;: 5, &quot;name&quot;: &quot;정교한 총기 부품&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot; ], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;간단한 총기 부품 x3&quot; ] },
{ &quot;id&quot;: 6, &quot;name&quot;: &quot;울프팩&quot;, &quot;category&quot;: [ &quot;조악한 폭발물&quot;, &quot;합성 연료&quot; ], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 3000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;합성 연료 x2&quot;, &quot;조악한 폭발물 x2&quot; ] },
{ &quot;id&quot;: 7, &quot;name&quot;: &quot;봄바디어 전지&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 8, &quot;name&quot;: &quot;리퍼 펄스 유닛&quot;, &quot;category&quot;: [ &quot;고급 기계 부품&quot;, &quot;아크 합금&quot; ], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 5000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;고급 기계 부품 x2&quot;, &quot;아크 합금 x3&quot; ] },
{ &quot;id&quot;: 9, &quot;name&quot;: &quot;바스티온 전지&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 10, &quot;name&quot;: &quot;중량 실드&quot;, &quot;category&quot;: [ &quot;변압기&quot;, &quot;아크 전기회로망&quot; ], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 5500, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;아크 전기회로망 x2&quot;, &quot;변압기 x1&quot; ] },
{ &quot;id&quot;: 11, &quot;name&quot;: &quot;파워 로드&quot;, &quot;category&quot;: [ &quot;고급 전기 부품&quot;, &quot;아크 전기회로망&quot; ], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 5500, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;고급 전기 부품 x1&quot;, &quot;아크 전기회로망 x1&quot; ] },
{ &quot;id&quot;: 12, &quot;name&quot;: &quot;전술 마크 3 (치유)&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 5000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 13, &quot;name&quot;: &quot;아크 냉각수&quot;, &quot;category&quot;: [ &quot;화학품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;화학품 x9&quot; ], &quot;recycleLobby&quot;: [ &quot;화학품 x16&quot; ] },
{ &quot;id&quot;: 14, &quot;name&quot;: &quot;소독약&quot;, &quot;category&quot;: [ &quot;화학품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;화학품 x5&quot; ], &quot;recycleLobby&quot;: [ &quot;화학품 x10&quot; ] },
{ &quot;id&quot;: 15, &quot;name&quot;: &quot;아크 합성수지&quot;, &quot;category&quot;: [ &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;플라스틱 부품 x9&quot; ], &quot;recycleLobby&quot;: [ &quot;플라스틱 부품 x14&quot; ] },
{ &quot;id&quot;: 16, &quot;name&quot;: &quot;프로세서&quot;, &quot;category&quot;: [ &quot;전선&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 500, &quot;recycleInRaid&quot;: [ &quot;플라스틱 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;전선 x1&quot;, &quot;플라스틱 부품 x1&quot; ] },
{ &quot;id&quot;: 17, &quot;name&quot;: &quot;스피커 부품&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 500, &quot;recycleInRaid&quot;: [ &quot;플라스틱 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;플라스틱 부품 x2&quot;, &quot;고무 부품 x2&quot; ] },
{ &quot;id&quot;: 18, &quot;name&quot;: &quot;주사기&quot;, &quot;category&quot;: [ &quot;화학품&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 500, &quot;recycleInRaid&quot;: [ &quot;플라스틱 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;플라스틱 부품 x3&quot;, &quot;화학품 x2&quot; ] },
{ &quot;id&quot;: 19, &quot;name&quot;: &quot;너절한 진압 방패&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;플라스틱 부품 x10&quot; ], &quot;recycleLobby&quot;: [ &quot;플라스틱 부품 x10&quot;, &quot;고무 부품 x6&quot; ] },
{ &quot;id&quot;: 20, &quot;name&quot;: &quot;부서진 유도 시스템&quot;, &quot;category&quot;: [ &quot;프로세서&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;프로세서 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;프로세서 x4&quot; ] },
{ &quot;id&quot;: 21, &quot;name&quot;: &quot;알람 시계&quot;, &quot;category&quot;: [ &quot;프로세서&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;프로세서 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;프로세서 x1&quot;, &quot;플라스틱 부품 x6&quot; ] },
{ &quot;id&quot;: 22, &quot;name&quot;: &quot;프로젝터&quot;, &quot;category&quot;: [ &quot;전선&quot;, &quot;프로세서&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;프로세서 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;프로세서 x1&quot;, &quot;전선 x2&quot; ] },
{ &quot;id&quot;: 23, &quot;name&quot;: &quot;혼합 화약&quot;, &quot;category&quot;: [ &quot;조악한 폭발물&quot;, &quot;조악한 폭발물&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;조악한 폭발물 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;조악한 폭발물 x2&quot; ] },
{ &quot;id&quot;: 24, &quot;name&quot;: &quot;가습기&quot;, &quot;category&quot;: [ &quot;캔&quot;, &quot;전선&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;캔 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;캔 x2&quot;, &quot;전선 x2&quot; ] },
{ &quot;id&quot;: 25, &quot;name&quot;: &quot;자전거 펌프&quot;, &quot;category&quot;: [ &quot;캔&quot;, &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;캔 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;캔 x4&quot;, &quot;금속 부품 x10&quot; ] },
{ &quot;id&quot;: 26, &quot;name&quot;: &quot;물 필터&quot;, &quot;category&quot;: [ &quot;캔&quot;, &quot;고무 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;캔 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;캔 x3&quot;, &quot;고무 부품 x2&quot; ] },
{ &quot;id&quot;: 27, &quot;name&quot;: &quot;멸균 붕대&quot;, &quot;category&quot;: [ &quot;소독약&quot;, &quot;직물&quot;, &quot;질긴 천&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;질긴 천 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;소독약 x1&quot;, &quot;직물 x1&quot; ] },
{ &quot;id&quot;: 28, &quot;name&quot;: &quot;아크 발열 안감&quot;, &quot;category&quot;: [ &quot;직물&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;직물 x9&quot; ], &quot;recycleLobby&quot;: [ &quot;직물 x16&quot; ] },
{ &quot;id&quot;: 29, &quot;name&quot;: &quot;개 목걸이&quot;, &quot;category&quot;: [ &quot;금속 부품&quot;, &quot;직물&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;직물 x5&quot; ], &quot;recycleLobby&quot;: [ &quot;직물 x8&quot;, &quot;금속 부품 x1&quot; ] },
{ &quot;id&quot;: 30, &quot;name&quot;: &quot;찢어진 담요&quot;, &quot;category&quot;: [ &quot;직물&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;직물 x5&quot; ], &quot;recycleLobby&quot;: [ &quot;직물 x12&quot; ] },
{ &quot;id&quot;: 31, &quot;name&quot;: &quot;밧줄&quot;, &quot;category&quot;: [ &quot;직물&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 500, &quot;recycleInRaid&quot;: [ &quot;직물 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;직물 x5&quot; ] },
{ &quot;id&quot;: 32, &quot;name&quot;: &quot;닫혀 있는 녹슨 의료 용품 상자&quot;, &quot;category&quot;: [ &quot;소독약&quot;, &quot;주사기&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;주사기 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;주사기 x2&quot;, &quot;소독약 x1&quot; ] },
{ &quot;id&quot;: 33, &quot;name&quot;: &quot;연구실 시약&quot;, &quot;category&quot;: [ &quot;조악한 폭발물&quot;, &quot;화학품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;조악한 폭발물 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;조악한 폭발물 x3&quot;, &quot;화학품 x16&quot; ] },
{ &quot;id&quot;: 34, &quot;name&quot;: &quot;타버린 메인보드&quot;, &quot;category&quot;: [ &quot;전기 부품&quot;, &quot;전선&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;전선 x5&quot; ], &quot;recycleLobby&quot;: [ &quot;전기 부품 x2&quot;, &quot;플라스틱 부품 x5&quot; ] },
{ &quot;id&quot;: 35, &quot;name&quot;: &quot;휴대용 TV&quot;, &quot;category&quot;: [ &quot;배터리&quot;, &quot;전선&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;전선 x4&quot; ], &quot;recycleLobby&quot;: [ &quot;배터리 x2&quot;, &quot;전선 x6&quot; ] },
{ &quot;id&quot;: 36, &quot;name&quot;: &quot;토스트기&quot;, &quot;category&quot;: [ &quot;전선&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;전선 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;전선 x3&quot;, &quot;플라스틱 부품 x5&quot; ] },
{ &quot;id&quot;: 37, &quot;name&quot;: &quot;전원 케이블&quot;, &quot;category&quot;: [ &quot;전선&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;전선 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;전선 x4&quot; ] },
{ &quot;id&quot;: 38, &quot;name&quot;: &quot;손상된 방열판&quot;, &quot;category&quot;: [ &quot;금속 부품&quot;, &quot;전선&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;전선 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;전선 x2&quot;, &quot;금속 부품 x6&quot; ] },
{ &quot;id&quot;: 39, &quot;name&quot;: &quot;센서&quot;, &quot;category&quot;: [ &quot;금속 부품&quot;, &quot;전선&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 500, &quot;recycleInRaid&quot;: [ &quot;전선 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;전선 x1&quot;, &quot;금속 부품 x1&quot; ] },
{ &quot;id&quot;: 40, &quot;name&quot;: &quot;고급 전기 부품&quot;, &quot;category&quot;: [ &quot;전기 부품&quot;, &quot;전선&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1750, &quot;recycleInRaid&quot;: [ &quot;전기 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;전선 x1&quot;, &quot;전기 부품 x1&quot; ] },
{ &quot;id&quot;: 41, &quot;name&quot;: &quot;호넷 드라이버&quot;, &quot;category&quot;: [ &quot;아크 합금&quot;, &quot;전기 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;전기 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;아크 합금 x2&quot;, &quot;전기 부품 x2&quot; ] },
{ &quot;id&quot;: 42, &quot;name&quot;: &quot;와스프 드라이버&quot;, &quot;category&quot;: [ &quot;아크 합금&quot;, &quot;전기 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;전기 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;아크 합금 x1&quot;, &quot;전기 부품 x1&quot; ] },
{ &quot;id&quot;: 43, &quot;name&quot;: &quot;노획 마크 2&quot;, &quot;category&quot;: [ &quot;자석&quot;, &quot;전기 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;전기 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;자석 x1&quot;, &quot;전기 부품 x1&quot; ] },
{ &quot;id&quot;: 44, &quot;name&quot;: &quot;전투 마크 2&quot;, &quot;category&quot;: [ &quot;자석&quot;, &quot;전기 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;전기 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;자석 x1&quot;, &quot;전기 부품 x1&quot; ] },
{ &quot;id&quot;: 45, &quot;name&quot;: &quot;전술 마크 2&quot;, &quot;category&quot;: [ &quot;자석&quot;, &quot;전기 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;전기 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;자석 x1&quot;, &quot;전기 부품 x1&quot; ] },
{ &quot;id&quot;: 46, &quot;name&quot;: &quot;산업용 자석&quot;, &quot;category&quot;: [ &quot;금속 부품&quot;, &quot;자석&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;자석 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;자석 x2&quot;, &quot;금속 부품 x4&quot; ] },
{ &quot;id&quot;: 47, &quot;name&quot;: &quot;준중량 실드&quot;, &quot;category&quot;: [ &quot;아크 전기회로망&quot;, &quot;아크 합금&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;아크 합금 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;아크 전기회로망 x1&quot; ] },
{ &quot;id&quot;: 48, &quot;name&quot;: &quot;아크 전기 회로망&quot;, &quot;category&quot;: [ &quot;아크 합금&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;아크 합금 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;아크 합금 x2&quot; ] },
{ &quot;id&quot;: 49, &quot;name&quot;: &quot;아크 모션 코어&quot;, &quot;category&quot;: [ &quot;아크 합금&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;아크 합금 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;아크 합금 x2&quot; ] },
{ &quot;id&quot;: 50, &quot;name&quot;: &quot;고급 아크 파워셀&quot;, &quot;category&quot;: [ &quot;아크 파워셀&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;아크 파워셀 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;아크 파워셀 x2&quot; ] },
{ &quot;id&quot;: 51, &quot;name&quot;: &quot;라디오&quot;, &quot;category&quot;: [ &quot;센서&quot;, &quot;스피커 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;스피커 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;스피커 부품 x1&quot;, &quot;센서 x1&quot; ] },
{ &quot;id&quot;: 52, &quot;name&quot;: &quot;헤드폰&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;스피커 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;스피커 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;스피커 부품 x1&quot;, &quot;고무 부품 x7&quot; ] },
{ &quot;id&quot;: 53, &quot;name&quot;: &quot;부서진 휴대용 라디오&quot;, &quot;category&quot;: [ &quot;센서&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [ &quot;센서 x2&quot; ], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 54, &quot;name&quot;: &quot;온도 조절 장치&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;센서&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;센서 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;센서 x1&quot;, &quot;고무 부품 x7&quot; ] },
{ &quot;id&quot;: 55, &quot;name&quot;: &quot;리모컨&quot;, &quot;category&quot;: [ &quot;센서&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;센서 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;센서 x1&quot;, &quot;플라스틱 부품 x7&quot; ] },
{ &quot;id&quot;: 56, &quot;name&quot;: &quot;산업용 충전기&quot;, &quot;category&quot;: [ &quot;금속 부품&quot;, &quot;변압기&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;변압기 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;변압기 x1&quot;, &quot;금속 부품 x5&quot; ] },
{ &quot;id&quot;: 57, &quot;name&quot;: &quot;보조 배터리&quot;, &quot;category&quot;: [ &quot;배터리&quot;, &quot;전선&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;배터리 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;배터리 x2&quot;, &quot;전선 x2&quot; ] },
{ &quot;id&quot;: 58, &quot;name&quot;: &quot;부서진 테이저&quot;, &quot;category&quot;: [ &quot;배터리&quot;, &quot;전선&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;배터리 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;배터리 x2&quot;, &quot;전선 x2&quot; ] },
{ &quot;id&quot;: 59, &quot;name&quot;: &quot;깨진 바이오스캐너&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;배터리&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;배터리 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;배터리 x3&quot;, &quot;고무 부품 x3&quot; ] },
{ &quot;id&quot;: 60, &quot;name&quot;: &quot;산업용 배터리&quot;, &quot;category&quot;: [ &quot;배터리&quot;, &quot;화학품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;배터리 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;배터리 x2&quot;, &quot;화학품 x7&quot; ] },
{ &quot;id&quot;: 61, &quot;name&quot;: &quot;집라인&quot;, &quot;category&quot;: [ &quot;밧줄&quot;, &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;밧줄 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;밧줄 x1&quot;, &quot;금속 부품 x1&quot; ] },
{ &quot;id&quot;: 62, &quot;name&quot;: &quot;모터&quot;, &quot;category&quot;: [ &quot;기계 부품&quot;, &quot;기름&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;기름 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x2&quot;, &quot;기름 x2&quot; ] },
{ &quot;id&quot;: 63, &quot;name&quot;: &quot;오염된 공기 필터&quot;, &quot;category&quot;: [ &quot;기름&quot;, &quot;직물&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;기름 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;기름 x2&quot;, &quot;직물 x6&quot; ] },
{ &quot;id&quot;: 64, &quot;name&quot;: &quot;물 펌프&quot;, &quot;category&quot;: [ &quot;금속 부품&quot;, &quot;기름&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;기름 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;기름 x2&quot;, &quot;금속 부품 x4&quot; ] },
{ &quot;id&quot;: 65, &quot;name&quot;: &quot;냉각수&quot;, &quot;category&quot;: [ &quot;기름&quot;, &quot;화학품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;기름 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;기름 x2&quot;, &quot;화학품 x5&quot; ] },
{ &quot;id&quot;: 66, &quot;name&quot;: &quot;합성 연료&quot;, &quot;category&quot;: [ &quot;기름&quot;, &quot;화학품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 700, &quot;recycleInRaid&quot;: [ &quot;기름 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;기름 x1&quot;, &quot;화학품 x1&quot; ] },
{ &quot;id&quot;: 67, &quot;name&quot;: &quot;센티넬 발사 코어&quot;, &quot;category&quot;: [ &quot;기계 부품&quot;, &quot;아크 합금&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 3000, &quot;recycleInRaid&quot;: [ &quot;기계 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;아크 합금 x2&quot;, &quot;기계 부품 x3&quot; ] },
{ &quot;id&quot;: 68, &quot;name&quot;: &quot;서베이어 볼트&quot;, &quot;category&quot;: [ &quot;기계 부품&quot;, &quot;아크 합금&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;기계 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x2&quot;, &quot;아크 합금 x2&quot; ] },
{ &quot;id&quot;: 69, &quot;name&quot;: &quot;고급 기계 부품&quot;, &quot;category&quot;: [ &quot;강철 스프링&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1750, &quot;recycleInRaid&quot;: [ &quot;기계 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x1&quot;, &quot;강철 스프링 x1&quot; ] },
{ &quot;id&quot;: 70, &quot;name&quot;: &quot;모드 부품&quot;, &quot;category&quot;: [ &quot;강철 스프링&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1750, &quot;recycleInRaid&quot;: [ &quot;기계 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x1&quot;, &quot;강철 스프링 x1&quot; ] },
{ &quot;id&quot;: 71, &quot;name&quot;: &quot;녹슨 도구&quot;, &quot;category&quot;: [ &quot;강철 스프링&quot;, &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x7&quot; ], &quot;recycleLobby&quot;: [ &quot;강철 스프링 x1&quot;, &quot;금속 부품 x8&quot; ] },
{ &quot;id&quot;: 72, &quot;name&quot;: &quot;부서진 손전등&quot;, &quot;category&quot;: [ &quot;금속 부품&quot;, &quot;배터리&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x7&quot; ], &quot;recycleLobby&quot;: [ &quot;배터리 x2&quot;, &quot;금속 부품 x6&quot; ] },
{ &quot;id&quot;: 73, &quot;name&quot;: &quot;아크 고강도 강철&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x7&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x12&quot; ] },
{ &quot;id&quot;: 74, &quot;name&quot;: &quot;프라이팬&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x4&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x8&quot; ] },
{ &quot;id&quot;: 75, &quot;name&quot;: &quot;번호판&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 270, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x3&quot; ] },
{ &quot;id&quot;: 76, &quot;name&quot;: &quot;녹슨 톱니 바퀴&quot;, &quot;category&quot;: [ &quot;금속 부품&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x12&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x2&quot;, &quot;금속 부품 x4&quot; ] },
{ &quot;id&quot;: 77, &quot;name&quot;: &quot;아크 플렉스 고무&quot;, &quot;category&quot;: [ &quot;고무 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;고무 부품 x9&quot; ], &quot;recycleLobby&quot;: [ &quot;고무 부품 x16&quot; ] },
{ &quot;id&quot;: 78, &quot;name&quot;: &quot;다이빙 고글&quot;, &quot;category&quot;: [ &quot;고무 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;고무 부품 x5&quot; ], &quot;recycleLobby&quot;: [ &quot;고무 부품 x12&quot; ] },
{ &quot;id&quot;: 79, &quot;name&quot;: &quot;유통기한이 지난 인공호흡기&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;직물&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;고무 부품 x5&quot; ], &quot;recycleLobby&quot;: [ &quot;고무 부품 x8&quot;, &quot;직물 x4&quot; ] },
{ &quot;id&quot;: 80, &quot;name&quot;: &quot;변압기&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;전선&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 500, &quot;recycleInRaid&quot;: [ &quot;고무 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;전선 x1&quot;, &quot;고무 부품 x1&quot; ] },
{ &quot;id&quot;: 81, &quot;name&quot;: &quot;망가진 아코디언&quot;, &quot;category&quot;: [ &quot;강철 스프링&quot;, &quot;고무 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;고무 부품 x13&quot; ], &quot;recycleLobby&quot;: [ &quot;강철 스프링 x1&quot;, &quot;고무 부품 x18&quot; ] },
{ &quot;id&quot;: 82, &quot;name&quot;: &quot;고무 패드&quot;, &quot;category&quot;: [ &quot;고무 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;고무 부품 x12&quot; ], &quot;recycleLobby&quot;: [ &quot;고무 부품 x18&quot; ] },
{ &quot;id&quot;: 83, &quot;name&quot;: &quot;스프링 쿠션&quot;, &quot;category&quot;: [ &quot;강철 스프링&quot;, &quot;질긴 천&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;강철 스프링 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;질긴 천 x2&quot;, &quot;강철 스프링 x2&quot; ] },
{ &quot;id&quot;: 84, &quot;name&quot;: &quot;냉각 코일&quot;, &quot;category&quot;: [ &quot;강철 스프링&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;강철 스프링 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;강철 스프링 x2&quot;, &quot;플라스틱 부품 x6&quot; ] },
{ &quot;id&quot;: 85, &quot;name&quot;: &quot;경량 총기 부품&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 700, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;간단한 총기 부품 x2&quot; ] },
{ &quot;id&quot;: 86, &quot;name&quot;: &quot;중량 총기 부품&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 700, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;간단한 총기 부품 x2&quot; ] },
{ &quot;id&quot;: 87, &quot;name&quot;: &quot;준중량 총기 부품&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 700, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;간단한 총기 부품 x2&quot; ] },
{ &quot;id&quot;: 88, &quot;name&quot;: &quot;냉각팬&quot;, &quot;category&quot;: [ &quot;전선&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;전선 x4&quot; ], &quot;recycleLobby&quot;: [ &quot;전선 x4&quot;, &quot;플라스틱 부품 x14&quot; ] },
{ &quot;id&quot;: 89, &quot;name&quot;: &quot;급속 실드 충전기&quot;, &quot;category&quot;: [ &quot;전기 부품&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1200, &quot;recycleInRaid&quot;: [ &quot;플라스틱 부품 x5&quot; ], &quot;recycleLobby&quot;: [ &quot;전기 부품 x1&quot; ] },
{ &quot;id&quot;: 90, &quot;name&quot;: &quot;제세동기&quot;, &quot;category&quot;: [ &quot;이끼&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;이끼 x1&quot;, &quot;플라스틱 부품 x1&quot; ] },
{ &quot;id&quot;: 91, &quot;name&quot;: &quot;회복 주사&quot;, &quot;category&quot;: [ &quot;주사기&quot;, &quot;화학품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;주사기 x1&quot;, &quot;화학품 x4&quot; ] },
{ &quot;id&quot;: 92, &quot;name&quot;: &quot;이끼&quot;, &quot;category&quot;: [ &quot;잡다한 씨앗&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 500, &quot;recycleInRaid&quot;: [ &quot;잡다한 씨앗 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;잡다한 씨앗 x3&quot; ] },
{ &quot;id&quot;: 93, &quot;name&quot;: &quot;마늘 다지개&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x7&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x12&quot; ] },
{ &quot;id&quot;: 94, &quot;name&quot;: &quot;양초 홀더&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x4&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x8&quot; ] },
{ &quot;id&quot;: 95, &quot;name&quot;: &quot;금속 브래킷&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x4&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x8&quot; ] },
{ &quot;id&quot;: 96, &quot;name&quot;: &quot;녹슨 볼트&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x4&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x8&quot; ] },
{ &quot;id&quot;: 97, &quot;name&quot;: &quot;녹슨 아크 강철&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x8&quot; ] },
{ &quot;id&quot;: 98, &quot;name&quot;: &quot;망가진 경찰봉&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x4&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x6&quot;, &quot;고무 부품 x3&quot; ] },
{ &quot;id&quot;: 99, &quot;name&quot;: &quot;아이스크림 스쿠퍼&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x7&quot; ] },
{ &quot;id&quot;: 100, &quot;name&quot;: &quot;바리게이트 키트&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x4&quot; ] },
{ &quot;id&quot;: 101, &quot;name&quot;: &quot;기계 부품&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x3&quot;, &quot;고무 부품 x2&quot; ] },
{ &quot;id&quot;: 102, &quot;name&quot;: &quot;간단한 총기 부품&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 330, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x2&quot; ] },
{ &quot;id&quot;: 103, &quot;name&quot;: &quot;자석&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 300, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x2&quot; ] },
{ &quot;id&quot;: 104, &quot;name&quot;: &quot;강철 스프링&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 300, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x2&quot; ] },
{ &quot;id&quot;: 105, &quot;name&quot;: &quot;아크 합금&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 200, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x2&quot; ] },
{ &quot;id&quot;: 106, &quot;name&quot;: &quot;배터리&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 250, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x2&quot; ] },
{ &quot;id&quot;: 107, &quot;name&quot;: &quot;찢어진 안전 조끼&quot;, &quot;category&quot;: [ &quot;자석&quot;, &quot;직물&quot;, &quot;질긴 천&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;직물 x8&quot; ], &quot;recycleLobby&quot;: [ &quot;질긴 천 x1&quot;, &quot;자석 x1&quot; ] },
{ &quot;id&quot;: 108, &quot;name&quot;: &quot;약초 붕대&quot;, &quot;category&quot;: [ &quot;잡다한 씨앗&quot;, &quot;직물&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;직물 x8&quot; ], &quot;recycleLobby&quot;: [ &quot;잡다한 씨앗 x2&quot;, &quot;직물 x5&quot; ] },
{ &quot;id&quot;: 109, &quot;name&quot;: &quot;해진 옷&quot;, &quot;category&quot;: [ &quot;직물&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;직물 x5&quot; ], &quot;recycleLobby&quot;: [ &quot;직물 x11&quot; ] },
{ &quot;id&quot;: 110, &quot;name&quot;: &quot;부서진 낙하산&quot;, &quot;category&quot;: [ &quot;직물&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;직물 x5&quot; ], &quot;recycleLobby&quot;: [ &quot;직물 x10&quot; ] },
{ &quot;id&quot;: 111, &quot;name&quot;: &quot;질긴 천&quot;, &quot;category&quot;: [ &quot;직물&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;직물 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;직물 x6&quot; ] },
{ &quot;id&quot;: 112, &quot;name&quot;: &quot;덕트 테이프&quot;, &quot;category&quot;: [ &quot;직물&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 300, &quot;recycleInRaid&quot;: [ &quot;직물 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;직물 x3&quot; ] },
{ &quot;id&quot;: 113, &quot;name&quot;: &quot;청소용 세정제&quot;, &quot;category&quot;: [ &quot;화학품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;화학품 x5&quot; ], &quot;recycleLobby&quot;: [ &quot;화학품 x11&quot; ] },
{ &quot;id&quot;: 114, &quot;name&quot;: &quot;조악한 폭발물&quot;, &quot;category&quot;: [ &quot;화학품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 270, &quot;recycleInRaid&quot;: [ &quot;화학품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;화학품 x3&quot; ] },
{ &quot;id&quot;: 115, &quot;name&quot;: &quot;기름&quot;, &quot;category&quot;: [ &quot;화학품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 300, &quot;recycleInRaid&quot;: [ &quot;화학품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;화학품 x3&quot; ] },
{ &quot;id&quot;: 116, &quot;name&quot;: &quot;바람 빠진 축구공&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;직물&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;고무 부품 x9&quot; ], &quot;recycleLobby&quot;: [ &quot;고무 부품 x9&quot;, &quot;직물 x9&quot; ] },
{ &quot;id&quot;: 117, &quot;name&quot;: &quot;망가진 아크 고무&quot;, &quot;category&quot;: [ &quot;고무 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [ &quot;고무 부품 x5&quot; ], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 118, &quot;name&quot;: &quot;전선&quot;, &quot;category&quot;: [ &quot;고무 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 200, &quot;recycleInRaid&quot;: [ &quot;고무 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;고무 부품 x2&quot; ] },
{ &quot;id&quot;: 119, &quot;name&quot;: &quot;연주 가능 플루트&quot;, &quot;category&quot;: [ &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;플라스틱 부품 x5&quot; ], &quot;recycleLobby&quot;: [ &quot;플라스틱 부품 x10&quot; ] },
{ &quot;id&quot;: 120, &quot;name&quot;: &quot;카메라 렌즈&quot;, &quot;category&quot;: [ &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;플라스틱 부품 x4&quot; ], &quot;recycleLobby&quot;: [ &quot;플라스틱 부품 x8&quot; ] },
{ &quot;id&quot;: 121, &quot;name&quot;: &quot;전기 부품&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;플라스틱 부품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;플라스틱 부품 x3&quot;, &quot;고무 부품 x3&quot; ] },
{ &quot;id&quot;: 122, &quot;name&quot;: &quot;캔&quot;, &quot;category&quot;: [ &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 300, &quot;recycleInRaid&quot;: [ &quot;플라스틱 부품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;플라스틱 부품 x3&quot; ] },
{ &quot;id&quot;: 123, &quot;name&quot;: &quot;전투 마크 1&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;플라스틱 부품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;고무 부품 x3&quot;, &quot;플라스틱 부품 x3&quot; ] },
{ &quot;id&quot;: 124, &quot;name&quot;: &quot;노획 마크 1&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;플라스틱 부품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;고무 부품 x3&quot;, &quot;플라스틱 부품 x3&quot; ] },
{ &quot;id&quot;: 125, &quot;name&quot;: &quot;전술 마크 1&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;플라스틱 부품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;고무 부품 x3&quot;, &quot;플라스틱 부품 x3&quot; ] },
{ &quot;id&quot;: 126, &quot;name&quot;: &quot;실드 충전기&quot;, &quot;category&quot;: [ &quot;고무 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 520, &quot;recycleInRaid&quot;: [ &quot;고무 부품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;고무 부품 x4&quot; ] },
{ &quot;id&quot;: 127, &quot;name&quot;: &quot;구겨진 플라스틱 병&quot;, &quot;category&quot;: [ &quot;플라스틱 부품&quot;, &quot;플라스팀 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 270, &quot;recycleInRaid&quot;: [ &quot;플라스팀 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;플라스틱 부품 x4&quot; ] },
{ &quot;id&quot;: 128, &quot;name&quot;: &quot;비료&quot;, &quot;category&quot;: [ &quot;잡다한 씨앗&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;잡다한 씨앗 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;잡다한 씨앗 x2&quot; ] },
{ &quot;id&quot;: 129, &quot;name&quot;: &quot;뿌리&quot;, &quot;category&quot;: [ &quot;잡다한 씨앗&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [ &quot;잡다한 씨앗 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;잡다한 씨앗 x2&quot; ] },
{ &quot;id&quot;: 130, &quot;name&quot;: &quot;우단담배풀&quot;, &quot;category&quot;: [ &quot;잡다한 씨앗&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 300, &quot;recycleInRaid&quot;: [ &quot;잡다한 씨앗 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;잡다한 씨앗 x2&quot; ] },
{ &quot;id&quot;: 131, &quot;name&quot;: &quot;경량 실드&quot;, &quot;category&quot;: [ &quot;아크 합금&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;아크 합금 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;플라스틱 부품 x4&quot; ] },
{ &quot;id&quot;: 132, &quot;name&quot;: &quot;손상된 아크 모션 코어&quot;, &quot;category&quot;: [ &quot;아크 합금&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;아크 합금 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;아크 합금 x2&quot; ] },
{ &quot;id&quot;: 133, &quot;name&quot;: &quot;타버린 아크 전기회로망&quot;, &quot;category&quot;: [ &quot;아크 합금&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;아크 합금 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;아크 합금 x2&quot; ] },
{ &quot;id&quot;: 134, &quot;name&quot;: &quot;틱 포드&quot;, &quot;category&quot;: [ &quot;아크 합금&quot;, &quot;화학품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;아크 합금 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;아크 합금 x2&quot;, &quot;화학품 x2&quot; ] },
{ &quot;id&quot;: 135, &quot;name&quot;: &quot;파이어볼 버너&quot;, &quot;category&quot;: [ &quot;아크 합금&quot;, &quot;조악한 폭발물&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;아크 합금 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;아크 합금 x1&quot;, &quot;조악한 폭발물 x1&quot; ] },
{ &quot;id&quot;: 136, &quot;name&quot;: &quot;스니치 스캐너&quot;, &quot;category&quot;: [ &quot;아크 합금&quot;, &quot;전기 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;전기 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;아크 합금 x1&quot;, &quot;전기 부품 x2&quot; ] },
{ &quot;id&quot;: 137, &quot;name&quot;: &quot;스포터 릴레이&quot;, &quot;category&quot;: [ &quot;아크 합금&quot;, &quot;전기 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 5000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;전기 부품 x2&quot;, &quot;아크 합금 x1&quot; ] },
{ &quot;id&quot;: 138, &quot;name&quot;: &quot;망가진 수갑&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x4&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x8&quot; ] },
{ &quot;id&quot;: 139, &quot;name&quot;: &quot;망가진 전술 조끼&quot;, &quot;category&quot;: [ &quot;자석&quot;, &quot;직물&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;직물 x5&quot; ], &quot;recycleLobby&quot;: [ &quot;자석 x1&quot;, &quot;직물 x5&quot; ] },
{ &quot;id&quot;: 140, &quot;name&quot;: &quot;살구&quot;, &quot;category&quot;: [ &quot;잡다한 씨앗&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;잡다한 씨앗 x3&quot; ] },
{ &quot;id&quot;: 141, &quot;name&quot;: &quot;아드레날린 주사&quot;, &quot;category&quot;: [ &quot;화학품&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 300, &quot;recycleInRaid&quot;: [ &quot;화학품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;화학품 x1&quot;, &quot;플라스틱 부품 x1&quot; ] },
{ &quot;id&quot;: 142, &quot;name&quot;: &quot;붕대&quot;, &quot;category&quot;: [ &quot;직물&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 250, &quot;recycleInRaid&quot;: [ &quot;직물 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;직물 x2&quot; ] },
{ &quot;id&quot;: 143, &quot;name&quot;: &quot;손상된 로켓티어 드라이버&quot;, &quot;category&quot;: [ &quot;아크 합금&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [ &quot;아크 합금 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;아크 합금 x3&quot; ] },
{ &quot;id&quot;: 144, &quot;name&quot;: &quot;팝 트리거&quot;, &quot;category&quot;: [ &quot;아크 합금&quot;, &quot;조악한 폭발물&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;조악한 폭발물 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;조악한 폭발물 x1&quot;, &quot;아크 합금 x1&quot; ] },
{ &quot;id&quot;: 145, &quot;name&quot;: &quot;문 차단기&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 270, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x2&quot; ] },
{ &quot;id&quot;: 146, &quot;name&quot;: &quot;쌍안경&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;플라스틱 부품 x4&quot; ], &quot;recycleLobby&quot;: [ &quot;고무 부품 x2&quot;, &quot;플라스틱 부품 x4&quot; ] },
{ &quot;id&quot;: 147, &quot;name&quot;: &quot;손상된 호넷 드라이버&quot;, &quot;category&quot;: [ &quot;아크 합급&quot;, &quot;아크 합금&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;아크 합급 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;아크 합금 x2&quot; ] },
{ &quot;id&quot;: 148, &quot;name&quot;: &quot;손상된 파이어볼 버너&quot;, &quot;category&quot;: [ &quot;금속 부품&quot;, &quot;아크 합금&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 270, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;아크 합금 x1&quot; ] },
{ &quot;id&quot;: 149, &quot;name&quot;: &quot;노란색 야광봉&quot;, &quot;category&quot;: [ &quot;화학품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 150, &quot;recycleInRaid&quot;: [ &quot;화학품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;화학품 x1&quot; ] },
{ &quot;id&quot;: 150, &quot;name&quot;: &quot;빨간색 야광봉&quot;, &quot;category&quot;: [ &quot;화학품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 150, &quot;recycleInRaid&quot;: [ &quot;화학품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;화학품 x1&quot; ] },
{ &quot;id&quot;: 151, &quot;name&quot;: &quot;파란색 야광봉&quot;, &quot;category&quot;: [ &quot;화학품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 150, &quot;recycleInRaid&quot;: [ &quot;화학품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;화학품 x1&quot; ] },
{ &quot;id&quot;: 152, &quot;name&quot;: &quot;초록색 야광봉&quot;, &quot;category&quot;: [ &quot;화학품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 150, &quot;recycleInRaid&quot;: [ &quot;화학품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;화학품 x1&quot; ] },
{ &quot;id&quot;: 153, &quot;name&quot;: &quot;소음기&quot;, &quot;category&quot;: [ &quot;스피커 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;스피커 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;스피커 부품 x1&quot; ] },
{ &quot;id&quot;: 154, &quot;name&quot;: &quot;원격 레이더 조명탄&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;화학품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 270, &quot;recycleInRaid&quot;: [ &quot;화학품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;화학품 x2&quot;, &quot;고무 부품 x2&quot; ] },
{ &quot;id&quot;: 155, &quot;name&quot;: &quot;연막 수류탄&quot;, &quot;category&quot;: [ &quot;캔&quot;, &quot;화학품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;화학품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;캔 x1&quot;, &quot;화학품 x2&quot; ] },
{ &quot;id&quot;: 156, &quot;name&quot;: &quot;중량 신관 수류탄&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;기름&quot;, &quot;폭발물&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1600, &quot;recycleInRaid&quot;: [ &quot;조악한 폭발물 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;기름 x1&quot;, &quot;고무 부품 x2&quot; ] },
{ &quot;id&quot;: 157, &quot;name&quot;: &quot;쇼스토퍼&quot;, &quot;category&quot;: [ &quot;배터리&quot;, &quot;전기 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2200, &quot;recycleInRaid&quot;: [ &quot;배터리 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;전기 부품 x1&quot;, &quot;배터리 x2&quot; ] },
{ &quot;id&quot;: 158, &quot;name&quot;: &quot;충격 지뢰&quot;, &quot;category&quot;: [ &quot;배터리&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 850, &quot;recycleInRaid&quot;: [ &quot;배터리 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;배터리 x1&quot;, &quot;플라스틱 부품 x2&quot; ] },
{ &quot;id&quot;: 159, &quot;name&quot;: &quot;화염 수류탄&quot;, &quot;category&quot;: [ &quot;금속 부품&quot;, &quot;기름&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1600, &quot;recycleInRaid&quot;: [ &quot;기름 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;기름 x2&quot;, &quot;금속 부품 x4&quot; ] },
{ &quot;id&quot;: 160, &quot;name&quot;: &quot;표식 수류탄&quot;, &quot;category&quot;: [ &quot;센서&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;센서 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;센서 x1&quot;, &quot;플라스틱 부품 x1&quot; ] },
{ &quot;id&quot;: 161, &quot;name&quot;: &quot;트리거 수류탄&quot;, &quot;category&quot;: [ &quot;프로세서&quot;, &quot;화학품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;프로세서 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;프로세서 x1&quot;, &quot;화학품 x1&quot; ] },
{ &quot;id&quot;: 162, &quot;name&quot;: &quot;파편 수류탄&quot;, &quot;category&quot;: [ &quot;금속 부품&quot;, &quot;조악한 폭발물&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 800, &quot;recycleInRaid&quot;: [ &quot;조악한 폭발물 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;조악한 폭발물 x1&quot;, &quot;금속 부품 x1&quot; ] },
{ &quot;id&quot;: 163, &quot;name&quot;: &quot;유인 수류탄&quot;, &quot;category&quot;: [ &quot;스피커 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [ &quot;스피커 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;스피커 부품 x1&quot; ] },
{ &quot;id&quot;: 164, &quot;name&quot;: &quot;스냅 블래스트 수류탄&quot;, &quot;category&quot;: [ &quot;자석&quot;, &quot;화학품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 800, &quot;recycleInRaid&quot;: [ &quot;화학품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;자석 x1&quot;, &quot;화학품 x1&quot; ] },
{ &quot;id&quot;: 165, &quot;name&quot;: &quot;화염 스프레이&quot;, &quot;category&quot;: [ &quot;캔&quot;, &quot;파이어볼 버너&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [ &quot;파이어볼 버너 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;파이어볼 버너 x1&quot;, &quot;캔 x1&quot; ] },
{ &quot;id&quot;: 166, &quot;name&quot;: &quot;경량 충돌 수류탄&quot;, &quot;category&quot;: [ &quot;화학품&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 270, &quot;recycleInRaid&quot;: [ &quot;화학품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;화학품 x1&quot;, &quot;플라스틱 부품 x1&quot; ] },
{ &quot;id&quot;: 167, &quot;name&quot;: &quot;가스 수류탄&quot;, &quot;category&quot;: [ &quot;화학품&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 270, &quot;recycleInRaid&quot;: [ &quot;화학품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;화학품 x1&quot;, &quot;플라스틱 부품 x1&quot; ] },
{ &quot;id&quot;: 168, &quot;name&quot;: &quot;꼬마 연막 수류탄&quot;, &quot;category&quot;: [ &quot;화학품&quot;, &quot;플라스틱 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 300, &quot;recycleInRaid&quot;: [ &quot;화학품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;화학품 x1&quot;, &quot;플라스틱 부품 x1&quot; ] },
{ &quot;id&quot;: 169, &quot;name&quot;: &quot;스티처Ⅰ&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 800, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x3&quot;, &quot;고무 부품 x2&quot; ] },
{ &quot;id&quot;: 170, &quot;name&quot;: &quot;스티처Ⅱ&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;금속 부품 x6&quot;, &quot;고무 부품 x6&quot; ] },
{ &quot;id&quot;: 171, &quot;name&quot;: &quot;스티처Ⅲ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 3000, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x1&quot; ], &quot;recycleLobby&quot;: [ &quot;간단한 총기 부품 x1&quot;, &quot;금속 부품 x12&quot; ] },
{ &quot;id&quot;: 172, &quot;name&quot;: &quot;스티처Ⅳ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 5000, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x2&quot;, &quot;간단한 총기 부품 x2&quot; ] },
{ &quot;id&quot;: 173, &quot;name&quot;: &quot;페로Ⅰ&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x2&quot;, &quot;고무 부품 x1&quot; ] },
{ &quot;id&quot;: 174, &quot;name&quot;: &quot;페로Ⅱ&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 1000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;금속 부품 x4&quot;, &quot;고무 부품 x3&quot; ] },
{ &quot;id&quot;: 175, &quot;name&quot;: &quot;페로Ⅲ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x1&quot; ], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 176, &quot;name&quot;: &quot;페로Ⅳ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 2900, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;간단한 총기 부품 x2&quot;, &quot;기계 부품 x1&quot; ] },
{ &quot;id&quot;: 177, &quot;name&quot;: &quot;케틀Ⅰ&quot;, &quot;category&quot;: [ &quot;고무 부품&quot;, &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 840, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;금속 부품 x3&quot;, &quot;고무 부품 x2&quot; ] },
{ &quot;id&quot;: 178, &quot;name&quot;: &quot;케틀Ⅱ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 179, &quot;name&quot;: &quot;케틀Ⅲ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;간단한 총기 부품 x1&quot;, &quot;금속 부품 x12&quot; ] },
{ &quot;id&quot;: 180, &quot;name&quot;: &quot;케틀Ⅳ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 10280, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;기계 부품 x2&quot;, &quot;간단한 총기 부품 x2&quot; ] },
{ &quot;id&quot;: 181, &quot;name&quot;: &quot;헤어핀Ⅰ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 182, &quot;name&quot;: &quot;헤어핀Ⅱ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 183, &quot;name&quot;: &quot;헤어핀Ⅲ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 184, &quot;name&quot;: &quot;헤어핀Ⅳ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 185, &quot;name&quot;: &quot;레틀러Ⅰ&quot;, &quot;category&quot;: [ &quot;금속 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x4&quot; ], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 186, &quot;name&quot;: &quot;레틀러Ⅱ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 187, &quot;name&quot;: &quot;레틀러Ⅲ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;금속 부품&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 7000, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x12&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x3&quot;, &quot;간단한 총기 부품 x1&quot; ] },
{ &quot;id&quot;: 188, &quot;name&quot;: &quot;레틀러Ⅳ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;금속 부품&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 8920, &quot;recycleInRaid&quot;: [ &quot;금속 부품 x14&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x4&quot;, &quot;간단한 총기 부품 x2&quot; ] },
{ &quot;id&quot;: 189, &quot;name&quot;: &quot;부를레타Ⅰ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x1&quot;, &quot;간단한 총기 부품 x2&quot; ] },
{ &quot;id&quot;: 190, &quot;name&quot;: &quot;부를레타Ⅱ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;기계 부품&quot;, &quot;단간한 총기 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 5000, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x2&quot;, &quot;단간한 총기 부품 x2&quot; ] },
{ &quot;id&quot;: 191, &quot;name&quot;: &quot;부를레타Ⅲ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 192, &quot;name&quot;: &quot;일 토르Ⅰ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 5000, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x2&quot;, &quot;간단한 총기 부품 x2&quot; ] },
{ &quot;id&quot;: 193, &quot;name&quot;: &quot;일 토르Ⅱ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 7000, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x3&quot;, &quot;간단한 총기 부품 x3&quot; ] },
{ &quot;id&quot;: 194, &quot;name&quot;: &quot;일 토르Ⅲ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 10000, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x4&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x4&quot;, &quot;간단한 총기 부품 x4&quot; ] },
{ &quot;id&quot;: 195, &quot;name&quot;: &quot;일 토르Ⅳ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 13000, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x5&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x5&quot;, &quot;간단한 총기 부품 x5&quot; ] },
{ &quot;id&quot;: 196, &quot;name&quot;: &quot;아르페지오Ⅰ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 5500, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x2&quot;, &quot;간단한 총기 부품 x2&quot; ] },
{ &quot;id&quot;: 197, &quot;name&quot;: &quot;아르페지오Ⅱ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 8000, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x3&quot;, &quot;간단한 총기 부품 x3&quot; ] },
{ &quot;id&quot;: 198, &quot;name&quot;: &quot;아르페지오Ⅲ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 11500, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x4&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x4&quot;, &quot;간단한 총기 부품 x4&quot; ] },
{ &quot;id&quot;: 199, &quot;name&quot;: &quot;아르페지오Ⅳ&quot;, &quot;category&quot;: [ &quot;간단한 총기 부품&quot;, &quot;기계 부품&quot; ], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [ &quot;간단한 총기 부품 x5&quot; ], &quot;recycleLobby&quot;: [ &quot;기계 부품 x5&quot;, &quot;간단한 총기 부품 x5&quot; ] },
{ &quot;id&quot;: 200, &quot;name&quot;: &quot;레니게이드Ⅰ&quot;, &quot;category&quot;: [ &quot;고급 기계 부품&quot;, &quot;준중량 총기 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [ &quot;준중량 총기 부품 x2&quot; ], &quot;recycleLobby&quot;: [ &quot;고급 기계 부품 x1&quot;, &quot;준중량 총기 부품 x2&quot; ] },
{ &quot;id&quot;: 201, &quot;name&quot;: &quot;레니게이드Ⅱ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 202, &quot;name&quot;: &quot;레니게이드Ⅲ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 203, &quot;name&quot;: &quot;레니게이드&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 204, &quot;name&quot;: &quot;베나토르Ⅰ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 205, &quot;name&quot;: &quot;베나토르Ⅱ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 206, &quot;name&quot;: &quot;베나토르Ⅲ&quot;, &quot;category&quot;: [ &quot;고급 기계 부품&quot;, &quot;준중량 총기 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [ &quot;준중량 총기 부품 x3&quot; ], &quot;recycleLobby&quot;: [ &quot;고급 기계 부품 x2&quot;, &quot;준중량 총기 부품 x3&quot; ] },
{ &quot;id&quot;: 207, &quot;name&quot;: &quot;베나토르Ⅳ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 208, &quot;name&quot;: &quot;토렌테Ⅰ&quot;, &quot;category&quot;: [ &quot;고급 기계 부품&quot;, &quot;준중량 총기 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 7000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;고급 기계 부품 x1&quot;, &quot;준중량 총기 부품 x2&quot; ] },
{ &quot;id&quot;: 209, &quot;name&quot;: &quot;토렌테Ⅱ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 210, &quot;name&quot;: &quot;토렌테Ⅲ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 211, &quot;name&quot;: &quot;토렌테Ⅳ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
{ &quot;id&quot;: 212, &quot;name&quot;: &quot;오스프레이Ⅰ&quot;, &quot;category&quot;: [ &quot;고급 기계 부품&quot;, &quot;준중량 총기 부품&quot; ], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [ &quot;고급 기계 부품 X1&quot;, &quot;준중량 총기 부품 X2&quot; ] },
{ &quot;id&quot;: 213, &quot;name&quot;: &quot;오스프레이Ⅱ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 214, &quot;name&quot;: &quot;오스프레이Ⅲ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 215, &quot;name&quot;: &quot;오스프레이Ⅳ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 216, &quot;name&quot;: &quot;헐 크래크Ⅰ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 217, &quot;name&quot;: &quot;헐 크래크Ⅱ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 218, &quot;name&quot;: &quot;헐 크래크Ⅲ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 219, &quot;name&quot;: &quot;헐 크래크Ⅳ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 220, &quot;name&quot;: &quot;템페스트Ⅰ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 221, &quot;name&quot;: &quot;템페스트Ⅱ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 222, &quot;name&quot;: &quot;템페스트Ⅲ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 223, &quot;name&quot;: &quot;템페스트Ⅳ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 224, &quot;name&quot;: &quot;밥캣Ⅰ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 225, &quot;name&quot;: &quot;밥캣Ⅱ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 226, &quot;name&quot;: &quot;밥캣Ⅲ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 227, &quot;name&quot;: &quot;밥캣Ⅳ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 228, &quot;name&quot;: &quot;베티나Ⅰ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 229, &quot;name&quot;: &quot;베티나Ⅱ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 230, &quot;name&quot;: &quot;베티나Ⅲ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 231, &quot;name&quot;: &quot;베티나Ⅳ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 232, &quot;name&quot;: &quot;앤빌 스플리터&quot;, &quot;category&quot;: [&quot;모드 부품&quot;, &quot;프로세서&quot;], &quot;grade&quot;: &quot;전설&quot;, &quot;price&quot;: 7000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;모드 부품 x1&quot;, &quot;프로세서 x1&quot;] },
  { &quot;id&quot;: 233, &quot;name&quot;: &quot;확장형 준중량 탄창Ⅰ&quot;, &quot;category&quot;: [&quot;플라스틱 부품&quot;], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;플라스틱 부품 x6&quot;] },
  { &quot;id&quot;: 234, &quot;name&quot;: &quot;확장형 준중량 탄창Ⅱ&quot;, &quot;category&quot;: [&quot;기계 부품&quot;, &quot;강철 스프링&quot;], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;기계 부품 x1&quot;, &quot;강철 스프링 x1&quot;] },
  { &quot;id&quot;: 235, &quot;name&quot;: &quot;소음기Ⅰ&quot;, &quot;category&quot;: [&quot;기계 부품&quot;, &quot;전선&quot;], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;기계 부품 x1&quot;, &quot;전선 x1&quot;] },
  { &quot;id&quot;: 236, &quot;name&quot;: &quot;소음기Ⅱ&quot;, &quot;category&quot;: [&quot;모드 부품&quot;, &quot;전선&quot;], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 5000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;모드 부품 x1&quot;, &quot;전선 x2&quot;] },
  { &quot;id&quot;: 237, &quot;name&quot;: &quot;총구 제동기Ⅰ&quot;, &quot;category&quot;: [&quot;금속 부품&quot;], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;금속 부품 x5&quot;] },
  { &quot;id&quot;: 238, &quot;name&quot;: &quot;총구 제동기Ⅱ&quot;, &quot;category&quot;: [&quot;기계 부품&quot;, &quot;전선&quot;], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;기계 부품 x1&quot;, &quot;전선 x1&quot;] },
  { &quot;id&quot;: 239, &quot;name&quot;: &quot;수직 그립Ⅰ&quot;, &quot;category&quot;: [&quot;플라스틱 부품&quot;], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;플라스틱 부품 x6&quot;] },
  { &quot;id&quot;: 240, &quot;name&quot;: &quot;수직 그립Ⅱ&quot;, &quot;category&quot;: [&quot;기계 부품&quot;, &quot;덕트 테이프&quot;], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;기계 부품 x1&quot;, &quot;덕트 테이프 x1&quot;] },
  { &quot;id&quot;: 241, &quot;name&quot;: &quot;수직 그립 Ⅲ&quot;, &quot;category&quot;: [&quot;기계 부품&quot;, &quot;덕트 테이프&quot;], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 5000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;기계 부품 x2&quot;, &quot;덕트 테이프 x1&quot;] },
  { &quot;id&quot;: 242, &quot;name&quot;: &quot;앵글 그립Ⅰ&quot;, &quot;category&quot;: [&quot;플라스틱 부품&quot;], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [&quot;플라스틱 부품 x3&quot;], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 243, &quot;name&quot;: &quot;앵글 그립Ⅱ&quot;, &quot;category&quot;: [&quot;기계 부품&quot;, &quot;덕트 테이프&quot;], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;기계 부품 x1&quot;, &quot;덕트 테이프 x1&quot;] },
  { &quot;id&quot;: 244, &quot;name&quot;: &quot;앵글 그립Ⅲ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 245, &quot;name&quot;: &quot;확장형 산탄총 탄창Ⅱ&quot;, &quot;category&quot;: [&quot;기계 부품&quot;, &quot;강철 스프링&quot;], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;기계 부품 x1&quot;, &quot;강철 스프링 x1&quot;] },
  { &quot;id&quot;: 246, &quot;name&quot;: &quot;안정형 개머리판Ⅰ&quot;, &quot;category&quot;: [&quot;고무 부품&quot;], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;고무 부품 x6&quot;] },
  { &quot;id&quot;: 247, &quot;name&quot;: &quot;안정형 개머리판Ⅱ&quot;, &quot;category&quot;: [&quot;기계 부품&quot;, &quot;덕트 테이프&quot;], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 2000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;기계 부품 x1&quot;, &quot;덕트 테이프 x1&quot;] },
  { &quot;id&quot;: 248, &quot;name&quot;: &quot;안정형 개머리판Ⅲ&quot;, &quot;category&quot;: [&quot;모드 부품&quot;, &quot;덕트 테이프&quot;], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 5000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;모드 부품 x1&quot;, &quot;덕트 테이프 x1&quot;] },
  { &quot;id&quot;: 249, &quot;name&quot;: &quot;총구 보정기Ⅰ&quot;, &quot;category&quot;: [&quot;금속 부품&quot;], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;금속 부품 x5&quot;] },
  { &quot;id&quot;: 250, &quot;name&quot;: &quot;총구 보정기Ⅱ&quot;, &quot;category&quot;: [], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 251, &quot;name&quot;: &quot;총구 보정기Ⅲ&quot;, &quot;category&quot;: [&quot;모드 부품&quot;, &quot;전선&quot;], &quot;grade&quot;: &quot;희귀&quot;, &quot;price&quot;: 5000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;모드 부품 x1&quot;, &quot;전선 x2&quot;] },
  { &quot;id&quot;: 252, &quot;name&quot;: &quot;확장형 경량 탄창Ⅰ&quot;, &quot;category&quot;: [&quot;플라스틱 부품&quot;], &quot;grade&quot;: &quot;일반&quot;, &quot;price&quot;: 640, &quot;recycleInRaid&quot;: [&quot;플라스틱 부품 x3&quot;], &quot;recycleLobby&quot;: [&quot;플라스틱 부품 x6&quot;] },
  { &quot;id&quot;: 253, &quot;name&quot;: &quot;확장형 경량 탄창Ⅱ&quot;, &quot;category&quot;: [&quot;기계 부품&quot;], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [&quot;기계 부품 x1&quot;], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 254, &quot;name&quot;: &quot;산탄총 초크Ⅱ&quot;, &quot;category&quot;: [&quot;기계 부품&quot;], &quot;grade&quot;: &quot;고급&quot;, &quot;price&quot;: 0, &quot;recycleInRaid&quot;: [&quot;기계 부품 x1&quot;], &quot;recycleLobby&quot;: [] },
  { &quot;id&quot;: 255, &quot;name&quot;: &quot;산탄총 소음기&quot;, &quot;category&quot;: [&quot;기계 부품&quot;, &quot;모드 부품&quot;, &quot;전선&quot;], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 5000, &quot;recycleInRaid&quot;: [&quot;기계 부품 x2&quot;], &quot;recycleLobby&quot;: [&quot;모드 부품 x1&quot;, &quot;전선 x1&quot;] },
  { &quot;id&quot;: 256, &quot;name&quot;: &quot;경량 개머리판&quot;, &quot;category&quot;: [&quot;모드 부품&quot;, &quot;덕트 테이프&quot;], &quot;grade&quot;: &quot;에픽&quot;, &quot;price&quot;: 5000, &quot;recycleInRaid&quot;: [], &quot;recycleLobby&quot;: [&quot;모드 부품 x1&quot;, &quot;덕트 테이프 x1&quot;] }
  
  
];

        // 2. 상태 관리
        let currentCategoryFilter = 'all'; // 현재 활성화된 카테고리 필터
        let currentGradeFilter = 'all'; // 등급 필터 상태
        let selectedItemId = null; // 현재 선택된 아이템의 ID

        /**
         * 재료 등급별 스타일 정의 (중복 제거)
         */
        const GRADE_STYLES = {
            &quot;C&quot;: { prefix: &quot;C&quot;, color: &quot;bg-gray-200 text-gray-800&quot; },       // Common (일반)
            &quot;U&quot;: { prefix: &quot;U&quot;, color: &quot;bg-green-100 text-green-800&quot; },     // Uncommon (고급)
            &quot;R&quot;: { prefix: &quot;R&quot;, color: &quot;bg-blue-100 text-blue-800&quot; },       // Rare (희귀)
            &quot;E&quot;: { prefix: &quot;E&quot;, color: &quot;bg-fuchsia-100 text-fuchsia-800&quot; }, // Epic (에픽)
			&quot;L&quot;: { prefix: &quot;L&quot;, color: &quot;bg-fuchsia-100 text-yellow-400&quot; },  // Legend (전설)
            &quot;default&quot;: { prefix: &quot;&quot;, color: &quot;bg-indigo-100 text-indigo-800&quot; } // 미분류
        };

        /**
         * 재료 이름과 GRADE_STYLES의 키를 매핑
         */
        const MATERIAL_TO_TO_GRADE_KEY = {
            // C (Common, 일반)
            &quot;금속 부품&quot;: &quot;C&quot;,
            &quot;플라스틱 부품&quot;: &quot;C&quot;,
            &quot;직물&quot;: &quot;C&quot;,
            &quot;화학품&quot;: &quot;C&quot;,
            &quot;고무 부품&quot;: &quot;C&quot;,
			&quot;아크 파워셀&quot;: &quot;C&quot;,
			&quot;잡다한 씨앗&quot;: &quot;C&quot;,

            // U (Uncommon, 고급)
			&quot;캔&quot;: &quot;U&quot;,
			&quot;질긴 천&quot;: &quot;U&quot;,			
			&quot;조악한 폭발물&quot;: &quot;U&quot;,
			&quot;전선&quot;: &quot;U&quot;,
			&quot;전기 부품&quot;: &quot;U&quot;,
			&quot;자석&quot;: &quot;U&quot;,
			&quot;아크 합금&quot;: &quot;U&quot;,			
			&quot;스피커 부품&quot;: &quot;U&quot;,			
			&quot;배터리&quot;: &quot;U&quot;,
			&quot;밧줄&quot;: &quot;U&quot;,
			&quot;기름&quot;: &quot;U&quot;,
			&quot;기계 부품&quot;: &quot;U&quot;,
			&quot;강철 스프링&quot;: &quot;U&quot;,
			&quot;간단한 총기 부품&quot;: &quot;U&quot;,
			
            &quot;간단한 총기 부품&quot;: &quot;U&quot;,
            &quot;기계 부품&quot;: &quot;U&quot;,
            &quot;전선&quot;: &quot;U&quot;,
            &quot;전기 부품&quot;: &quot;U&quot;,            
            &quot;조악한 폭발물&quot;: &quot;U&quot;,

            // R (Rare, 희귀)
			&quot;주사기&quot;: &quot;R&quot;,
            &quot;센서&quot;: &quot;R&quot;,
            &quot;변압기&quot;: &quot;R&quot;,                        
            &quot;프로세서&quot;: &quot;R&quot;,
			&quot;스피커 부품&quot;: &quot;R&quot;,            			
			&quot;밧줄&quot;: &quot;R&quot;,
			&quot;고급 기계 부품&quot;: &quot;R&quot;,
			&quot;아크 모션 코어&quot;: &quot;R&quot;,
			&quot;아크 전기회로망&quot;: &quot;R&quot;,
			&quot;고급 전기 부품&quot;: &quot;R&quot;,
			
			&quot;합성 연료&quot;: &quot;R&quot;,
			&quot;소독약&quot;: &quot;R&quot;,
			&quot;이끼&quot;: &quot;R&quot;,
			&quot;준중량 총기 부품&quot;: &quot;R&quot;,
			&quot;경량 총기 부품&quot;: &quot;R&quot;,
			&quot;중량 총기 부품&quot;: &quot;R&quot;,
			&quot;모드 부품&quot;: &quot;R&quot;,
			
			
            // E (Epic, 에픽)
			&quot;파워 로드&quot;: &quot;E&quot;,
            
        };

        /**
         * 등급에 따른 적절한 Tailwind CSS 클래스를 반환합니다.
         * @param {string} grade - 아이템 등급 ('일반', '고급', '희귀', '에픽', '전설').
         * @returns {string} Tailwind CSS 클래스 문자열 (예: 'bg-gray-400 text-white').
         */
        function getGradeColorClasses(grade) {
            switch (grade) {
                case '일반': // 일반: 회색
                    return 'bg-gray-400 text-white';
                case '고급': // 고급: 초록색
                    return 'bg-green-500 text-white';
                case '희귀': // 희귀: 찐하지 않은 파랑색
                    return 'bg-blue-400 text-white';
                case '에픽': // 에픽: 찐한 분홍색
                    return 'bg-fuchsia-600 text-white';
                case '전설': // 전설: 노란색 (글자색 어둡게)
                    return 'bg-yellow-400 text-gray-900';
                default:
                    return 'bg-blue-400 text-white'; // 기본값
            }
        }
        
        /**
         * 재활용 정보를 파싱하여 등급별 색상이 적용된 버튼 HTML로 변환합니다.
         * @param {Array&lt;string&gt; | string} input - 재활용 결과 (배열 또는 쉼표 구분 문자열).
         * @returns {string} Tailwind CSS 스타일이 적용된 HTML 문자열.
         */
        function formatRecycleOutput(input) {
            let parts = [];

            // 1. 입력을 배열로 정규화 및 필터링
            if (Array.isArray(input)) {
                parts = input.filter(p =&gt; p.trim() !== '');
            } else if (typeof input === 'string' &amp;&amp; input.trim() !== '') {
                parts = input.split(',').map(p =&gt; p.trim()).filter(p =&gt; p !== '');
            } 
            
            if (parts.length === 0) {
                return '&lt;span class=&quot;italic text-gray-500&quot;&gt;정보 없음&lt;/span&gt;';
            }

            const formattedParts = parts.map(part =&gt; {
                const match = part.match(/(.+)\s(x\d+)$/i);
                
                let materialName;
                let quantity;

                if (match) {
                    materialName = match[1].trim();
                    quantity = match[2].trim();
                } else {
                    materialName = part.trim();
                    quantity = '';
                }
                
                // 2. 재료 이름을 등급 키로 변환 후, 스타일을 조회합니다.
                const gradeKey = MATERIAL_TO_TO_GRADE_KEY[materialName] || 'default';
                const gradeInfo = GRADE_STYLES[gradeKey] || GRADE_STYLES.default;
                
                const displayClass = gradeInfo.color;
                const displayText = `${materialName} ${quantity}`; 

                return `&lt;span class=&quot;material-button ${displayClass} border border-opacity-30&quot;&gt;${displayText}&lt;/span&gt;`;
            });

            return formattedParts.join(''); // 공백 없이 연결
        }


        // 3. 상세 정보 표시 함수
        function showDetails(item) {
            const detailsArea = document.getElementById('detailsArea');
            // 등급에 따른 색상 클래스를 가져옵니다.
            const gradeClasses = getGradeColorClasses(item.grade);
            // 판매 가격을 한국 통화 형식으로 포맷팅 (예: 150,000원)
            const formattedPrice = item.price.toLocaleString('ko-KR') + '원';

            // 재활용 정보를 포매팅 함수를 통해 버튼 형태로 변환
            const formattedRecycleInRaid = formatRecycleOutput(item.recycleInRaid);
            const formattedRecycleLobby = formatRecycleOutput(item.recycleLobby);


            detailsArea.innerHTML = `
                &lt;!-- 제목과 등급을 Flex로 묶고 정렬하여 한 줄에 표시 --&gt;
                &lt;div class=&quot;flex justify-between items-center mb-4 border-b pb-2&quot;&gt;
                    &lt;h3 class=&quot;text-3xl font-extrabold text-gray-900&quot;&gt;${item.name}&lt;/h3&gt;
                    &lt;!-- 등급에 따라 동적으로 색상 클래스를 적용합니다. --&gt;
                    &lt;span class=&quot;${gradeClasses} font-bold px-3 py-1 rounded-full shadow-md text-base&quot;&gt;${item.grade}&lt;/span&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;space-y-3&quot;&gt;
                    &lt;!-- 1. 판매 가격 --&gt;
                    &lt;p class=&quot;text-lg&quot;&gt;&lt;strong&gt;&lt;span class=&quot;font-bold text-black-600&quot;&gt;상점 판매가&lt;/span&gt;&lt;/strong&gt; &lt;span class=&quot;font-bold text-red-600&quot;&gt;${formattedPrice}&lt;/span&gt;&lt;/p&gt;
                    
                    &lt;!-- 2. 분해 (인게임) - 텍스트 변경 적용 --&gt;
                    &lt;p class=&quot;text-lg mt-4&quot;&gt;&lt;strong&gt;&lt;span class=&quot;font-bold text-black-600&quot;&gt;분해 (인게임)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
                    &lt;div class=&quot;pt-2 pb-2 mt-1&quot;&gt;${formattedRecycleInRaid}&lt;/div&gt;

                    &lt;!-- 3. 재활용 (로비) - 텍스트 변경 및 데이터 공백 처리 적용 --&gt;
                    &lt;p class=&quot;text-lg mt-4&quot;&gt;&lt;strong&gt;&lt;span class=&quot;font-bold text-black-600&quot;&gt;재활용 (로비)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
                    &lt;div class=&quot;pt-2 pb-2 mt-1&quot;&gt;${formattedRecycleLobby}&lt;/div&gt;

                &lt;/div&gt;
            `;
            selectedItemId = item.id;
            highlightRow();
        }

        // 4. 선택된 항목을 강조하는 시각적 피드백 함수
        function highlightRow() {
            const grid = document.getElementById('itemListGrid');
            const items = grid.querySelectorAll('.item-card');
            
            // 모든 항목에서 'selected-item' 클래스 제거
            items.forEach(item =&gt; item.classList.remove('selected-item'));
            
            // 현재 선택된 아이템 ID와 일치하는 항목에 클래스 추가
            if (selectedItemId !== null) {
                const selectedItem = grid.querySelector(`.item-card[data-id=&quot;${selectedItemId}&quot;]`);
                if (selectedItem) {
                    selectedItem.classList.add('selected-item');
                }
            }
        }

        // 5. 항목 클릭 리스너 부착 함수
        function attachRowListeners() {
            const grid = document.getElementById('itemListGrid');
            const items = grid.querySelectorAll('.item-card');

            items.forEach(item =&gt; {
                item.addEventListener('click', function() {
                    const itemId = parseInt(this.dataset.id);
                    const itemDataFound = itemData.find(i =&gt; i.id === itemId);
                    
                    if (itemDataFound) {
                        showDetails(itemDataFound);
                    }
                });
            });
        }
        
        // 6. 목록 렌더링 (검색, 카테고리, 등급 필터링 및 동적 생성)
        function renderItems() {
            const grid = document.getElementById('itemListGrid');
            const searchInput = document.getElementById('searchInput');
            const filterTerm = searchInput.value.toUpperCase();
            
            // Grid 내용 초기화
            grid.innerHTML = '';

            const filteredItems = itemData.filter(item =&gt; {
                const nameMatch = item.name.toUpperCase().includes(filterTerm);
                
                // 1. 카테고리 필터링: item.category (배열)에 currentCategoryFilter가 포함되어 있는지 확인
                const categoryMatch = currentCategoryFilter === 'all' || 
                                      item.category.includes(currentCategoryFilter);
                
                // 2. 등급 필터링 추가
                const gradeMatch = currentGradeFilter === 'all' || item.grade === currentGradeFilter;
                
                return nameMatch &amp;&amp; categoryMatch &amp;&amp; gradeMatch; // 모든 조건 만족
            });
            
            filteredItems.forEach(item =&gt; {
                const itemCard = document.createElement('div');
                itemCard.classList.add('item-card'); // Grid 항목 스타일 적용
                itemCard.dataset.id = item.id; // 아이템 ID를 data 속성에 저장
                
                // 이름만 표시
                itemCard.textContent = item.name;
                grid.appendChild(itemCard);
            });
            
            // 새 항목들이 생성된 후 리스너를 다시 부착
            attachRowListeners();
            // 렌더링 후 선택된 항목이 있다면 강조 유지
            highlightRow();
            
            // 필터링으로 인해 선택된 항목이 화면에 없다면 상세 정보 초기화
            if (selectedItemId &amp;&amp; !filteredItems.some(i =&gt; i.id === selectedItemId)) {
                selectedItemId = null;
                document.getElementById('detailsArea').innerHTML = `
                    &lt;h3 class=&quot;text-3xl font-extrabold text-gray-900 mb-4 border-b pb-2&quot;&gt;제품 상세 정보&lt;/h3&gt;
                    &lt;p class=&quot;text-gray-600 text-lg&quot;&gt;좌측 목록에서 항목을 선택해주세요.&lt;/p&gt;
                `;
            }
        }

        // 7. 카테고리 필터 함수 (Select Box 변경 시 호출)
        function filterByCategory(category) {
            currentCategoryFilter = category;
            
            // 목록 다시 렌더링
            renderItems();
        }

        // 8. 등급 필터 함수 (Select Box 변경 시 호출)
        function filterByGrade(grade) {
            currentGradeFilter = grade;
            // 목록 다시 렌더링
            renderItems();
        }
        
        // 9. 고유 카테고리 추출 및 Select Box 렌더링 함수
        function renderCategorySelect() {
            // itemData의 모든 category 배열을 하나의 배열로 평탄화 (flatMap 사용)
            const allCategories = itemData.flatMap(item =&gt; item.category); 
            
            // Set을 사용하여 고유한 카테고리만 추출 후, 'all'을 맨 앞에 추가
            const uniqueCategories = ['all', ...new Set(allCategories)].sort((a, b) =&gt; {
                // 'all'을 항상 맨 앞으로 정렬
                if (a === 'all') return -1;
                if (b === 'all') return 1;
                // 그 외 카테고리는 가나다순으로 정렬
                return a.localeCompare(b);
            });
            
            const selectElement = document.getElementById('categoryFilter');
            selectElement.innerHTML = ''; // 기존 옵션 모두 제거
            
            uniqueCategories.forEach(category =&gt; {
                const option = document.createElement('option');
                option.value = category;
                option.textContent = category === 'all' ? '전체 카테고리' : category;
                
                // 현재 선택된 필터가 있다면 해당 옵션 선택 상태 유지
                if (category === currentCategoryFilter) {
                    option.selected = true;
                }
                
                selectElement.appendChild(option);
            });
        }

        // 10. 초기화
        document.addEventListener('DOMContentLoaded', () =&gt; {
            // 1. 카테고리 Select Box를 동적으로 생성
            renderCategorySelect();
            
            // 2. 목록을 렌더링 (이미 'all'로 초기화된 상태)
            renderItems();

            // 3. 첫 번째 항목의 상세 정보를 자동으로 표시 (itemData에 항목이 있을 경우)
            const firstItem = itemData[0];
            if (firstItem) {
                showDetails(firstItem);
            }
        });
    &lt;/script&gt; 
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>스팀게임</category>
      <author>UnityBeginner</author>
      <guid isPermaLink="true">https://unitybeginner.tistory.com/537</guid>
      <comments>https://unitybeginner.tistory.com/537#entry537comment</comments>
      <pubDate>Fri, 31 Oct 2025 01:55:31 +0900</pubDate>
    </item>
    <item>
      <title>방탈출 시뮬레이터 2 (Escape Simulator 2 Token) 저주받은 보물 은신처 토큰 위치</title>
      <link>https://unitybeginner.tistory.com/536</link>
      <description>&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;방탈출 시뮬레이터 2 저주받은 보물 (은신처) 토큰 위치&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;!-- Tailwind CSS CDN 로드 --&gt;
&lt;script src=&quot;https://cdn.tailwindcss.com&quot;&gt;&lt;/script&gt;
&lt;script&gt;
        // Tailwind 설정을 커스터마이징합니다. (폰트 설정)
        tailwind.config = {
            theme: {
                extend: {
                    fontFamily: {
                        sans: ['Inter', 'sans-serif'],
                    },
                }
            }
        }
    &lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 메인 컨테이너: 좌측(버튼)과 우측(내용)을 포함하는 2분할 레이아웃 --&gt;
&lt;div class=&quot;w-full max-w-4xl bg-white shadow-2xl rounded-xl p-6 md:p-8 border border-gray-100 flex flex-col md:flex-row gap-6&quot;&gt;
&lt;h1 class=&quot;text-3xl font-extrabold text-gray-800 text-center md:hidden mb-4&quot;&gt;정보 목록&lt;/h1&gt;
&lt;!-- 좌측 영역: 주제 버튼 목록 (1/3 너비) --&gt;
&lt;div id=&quot;topicsContainer&quot; class=&quot;w-full md:w-1/3 md:pr-4 md:border-r border-gray-200 space-y-3 p-2 bg-gray-50 rounded-lg shadow-inner md:shadow-none md:bg-white&quot;&gt;
&lt;h2 style=&quot;font-family: 'Noto Serif KR';&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;토큰 목록 (Click)&lt;/b&gt;&lt;/h2&gt;
&lt;!-- JavaScript가 여기에 버튼을 생성합니다 --&gt;&lt;/div&gt;
&lt;!-- 우측 영역: 선택된 주제의 정보 표시 (2/3 너비) --&gt;
&lt;div id=&quot;contentDisplay&quot; class=&quot;w-full md:w-2/3 pl-0 md:pl-6&quot;&gt;&lt;!-- JavaScript가 여기에 내용을 표시합니다 --&gt;
&lt;div class=&quot;text-center text-gray-500 py-10&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측 목록에서 주제를 선택해 주세요.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 이미지 뷰어 모달 (Lightbox) --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 모든 클릭 이벤트는 JavaScript에서 처리됩니다. --&gt;
&lt;div id=&quot;imageModal&quot; class=&quot;fixed inset-0 z-50 bg-black bg-opacity-90 flex items-center justify-center hidden transition-opacity duration-300 opacity-0&quot;&gt;&lt;!-- 모달 내부 콘텐츠 (이 부분 클릭은 닫히지 않도록 JavaScript에서 event.stopPropagation() 처리) --&gt;
&lt;div id=&quot;modalContentContainer&quot; class=&quot;relative max-w-4xl max-h-full p-4&quot;&gt;&lt;!-- 닫기 버튼 (X 표시) --&gt; &lt;button id=&quot;closeModalButton&quot; class=&quot;absolute top-4 right-4 text-white text-3xl font-extrabold p-2 rounded-full bg-gray-800 bg-opacity-50 hover:bg-opacity-80 transition cursor-pointer z-50&quot;&gt; &amp;times; &lt;/button&gt; &lt;!-- 표시될 이미지 --&gt; &lt;img id=&quot;modalImage&quot; class=&quot;max-w-full max-h-[90vh] object-contain rounded-lg shadow-2xl transition-transform duration-300 transform scale-95 opacity-0&quot; alt=&quot;확대된 이미지&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;hiddenArea&quot; class=&quot;hidden p-4 bg-yellow-100 text-yellow-800 border border-yellow-300 rounded-lg max-w-lg mx-auto mt-6&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kzizb/dJMcajHhrqp/OAmpJ35RLtauRGjh3OQuLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kzizb/dJMcajHhrqp/OAmpJ35RLtauRGjh3OQuLk/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰5.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kzizb/dJMcajHhrqp/OAmpJ35RLtauRGjh3OQuLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fkzizb%2FdJMcajHhrqp%2FOAmpJ35RLtauRGjh3OQuLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wFvbi/dJMcai9rvAb/c7VNWu7H1wXOY0TDDgAPZ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wFvbi/dJMcai9rvAb/c7VNWu7H1wXOY0TDDgAPZ0/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰2.png&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wFvbi/dJMcai9rvAb/c7VNWu7H1wXOY0TDDgAPZ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwFvbi%2FdJMcai9rvAb%2Fc7VNWu7H1wXOY0TDDgAPZ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qoLai/dJMcahvVCy8/kmtcwEkM3CRl1ALwpnC5D1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qoLai/dJMcahvVCy8/kmtcwEkM3CRl1ALwpnC5D1/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰4.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qoLai/dJMcahvVCy8/kmtcwEkM3CRl1ALwpnC5D1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqoLai%2FdJMcahvVCy8%2FkmtcwEkM3CRl1ALwpnC5D1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bk5BCX/dJMcahvVCy9/bQGiUvBNiiWkfBQWKw9nPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bk5BCX/dJMcahvVCy9/bQGiUvBNiiWkfBQWKw9nPk/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰8.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bk5BCX/dJMcahvVCy9/bQGiUvBNiiWkfBQWKw9nPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbk5BCX%2FdJMcahvVCy9%2FbQGiUvBNiiWkfBQWKw9nPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5m23z/dJMcajHhrqq/Ntdg5vXcRxu3LX2n7sYBCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5m23z/dJMcajHhrqq/Ntdg5vXcRxu3LX2n7sYBCK/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰3.png&quot; style=&quot;width: 32.5581%; margin-top: 10px;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5m23z/dJMcajHhrqq/Ntdg5vXcRxu3LX2n7sYBCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5m23z%2FdJMcajHhrqq%2FNtdg5vXcRxu3LX2n7sYBCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/umDBr/dJMcahvVCy7/oSyMkEnKQC1eQkiid1Ezz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/umDBr/dJMcahvVCy7/oSyMkEnKQC1eQkiid1Ezz0/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰6.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/umDBr/dJMcahvVCy7/oSyMkEnKQC1eQkiid1Ezz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FumDBr%2FdJMcahvVCy7%2FoSyMkEnKQC1eQkiid1Ezz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4Ns0l/dJMcai9rvAc/2dpD5iPtAENP9DPI3rGlWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4Ns0l/dJMcai9rvAc/2dpD5iPtAENP9DPI3rGlWk/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰7.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4Ns0l/dJMcai9rvAc/2dpD5iPtAENP9DPI3rGlWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4Ns0l%2FdJMcai9rvAc%2F2dpD5iPtAENP9DPI3rGlWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pUK1c/dJMcahvVCza/vHcKitG6UW1WCVKaWPhiXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pUK1c/dJMcahvVCza/vHcKitG6UW1WCVKaWPhiXK/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰1.png&quot; style=&quot;width: 32.5581%; margin-top: 10px;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pUK1c/dJMcahvVCza/vHcKitG6UW1WCVKaWPhiXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpUK1c%2FdJMcahvVCza%2FvHcKitG6UW1WCVKaWPhiXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;!-- 9. Ad Element (페이지 로드 시 딱 한 번 생성되고, 필요할 때 위치만 이동됩니다.) --&gt;
&lt;div id=&quot;singleAdElement&quot; class=&quot;mt-8 mb-4 hidden&quot;&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7343105306726381&quot;
     crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;
&lt;!-- CENTER_ADAREA_500X450 --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:500px;height:450px&quot;
     data-ad-client=&quot;ca-pub-7343105306726381&quot;
     data-ad-slot=&quot;2791417549&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;/div&gt;
&lt;script&gt;
        // JavaScript 코드
        
        // 1. 표시할 정보 데이터 정의
        const topics = [
              {
                id: 1,
                title: &quot;토큰 1&quot;,
                header: &quot;저주받은 보물 (은신처) 토큰 1&quot;,
                description: &quot;다리 위 로프 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fkzizb%2FdJMcajHhrqp%2FAAAAAAAAAAAAAAAAAAAAAEnjfsfK-BdaQkan6esOqFYZf34eMFchyg6yMrpgdC9c%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DgfbvCfEmEsF%252BNmDsKW8RDdyb4pU%253D&quot;
            },
          {
                id: 2,
                title: &quot;토큰 2&quot;,
                header: &quot;저주받은 보물 (은신처) 토큰 2&quot;,
                description: &quot;까마귀 벽 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FwFvbi%2FdJMcai9rvAb%2FAAAAAAAAAAAAAAAAAAAAAKidqeLI9PeyJRNMeeslVxyQT82XTa06yH4mcJQ5F3zP%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DDODqrHt64AP9PyF8SyY2ypGtnyY%253D&quot;
            },
          
          {
                id: 3,
                title: &quot;토큰 3&quot;,
                header: &quot;저주받은 보물 (은신처) 토큰 3&quot;,
                description: &quot;건축 모형 지붕 아랫면 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FqoLai%2FdJMcahvVCy8%2FAAAAAAAAAAAAAAAAAAAAACfAayx2M5NF1st0UIAUixdXv_dtNZRhWw4TaICcCw0c%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DsrD2eqlmC2bUeHQTLB0wsnMqT5c%253D&quot;
            },
          {
                id: 4,
                title: &quot;토큰 4&quot;,
                header: &quot;저주받은 보물 (은신처) 토큰 4&quot;,
                description: &quot;새장 백골 사체 근처 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fbk5BCX%2FdJMcahvVCy9%2FAAAAAAAAAAAAAAAAAAAAAD5L4BeJbShscL5fq81BOOqofZhaDWrvOgMNNygZcpiT%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DspcRoAJm64hlxIH53ZkS3GVigsI%253D&quot;
            },
          {
                id: 5,
                title: &quot;토큰 5&quot;,
                header: &quot;저주받은 보물 (은신처) 토큰 5&quot;,
                description: &quot;양초 받침대 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb5m23z%2FdJMcajHhrqq%2FAAAAAAAAAAAAAAAAAAAAAB0Lse6-d6fnQfooWJS23HRKBIeC5Rtzd2fsrYtEN1cB%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3D3bKem%252Bto5P19tOqOs1flY51GaMY%253D&quot;
            },
          {
                id: 6,
                title: &quot;토큰 6&quot;,
                header: &quot;저주받은 보물 (은신처) 토큰 6&quot;,
                description: &quot;중앙 방 구조물 천장 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FumDBr%2FdJMcahvVCy7%2FAAAAAAAAAAAAAAAAAAAAAAYy0OSQV_vLjRJspIxXPXrjd4WPGlkouwM7R6eNLQEh%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DgBW1O6WCOHwh9CLFd9fgpcWNsHA%253D&quot;
            },
     
          {
                id: 7,
                title: &quot;토큰 7&quot;,
                header: &quot;저주받은 보물 (은신처) 토큰 7&quot;,
                description: &quot;로프 기둥방 고정된 기둥 근처 화단 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb4Ns0l%2FdJMcai9rvAc%2FAAAAAAAAAAAAAAAAAAAAAN1nyxzW7ywbyL05PINOVSIt2hVIksFm23czw0fAavXO%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3Do7uMw6QbyQICnVrXnbvwFegm49g%253D&quot;
            },
          {
                id: 8,
                title: &quot;토큰 8&quot;,
                header: &quot;저주받은 보물 (은신처) 토큰 8&quot;,
                description: &quot;키 작은 백골 사체 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FpUK1c%2FdJMcahvVCza%2FAAAAAAAAAAAAAAAAAAAAAKhJoVPHWAt6M9xk1178ySgyfHTx5ZaffFt8VV5tvVvN%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3D3cUs21HuemVLY1Lv5J49tGKHatc%253D&quot;
            }
        ];

        const topicsContainer = document.getElementById('topicsContainer');
        const contentDisplay = document.getElementById('contentDisplay');

        // 모달 관련 요소 정의
        const imageModal = document.getElementById('imageModal');
        const modalImage = document.getElementById('modalImage');
        // 새로 추가된 요소 및 ID
        const closeModalButton = document.getElementById('closeModalButton');
        const modalContentContainer = document.getElementById('modalContentContainer');

        // [수정된 부분] 광고 요소를 전역적으로 한 번만 가져옵니다.
        const singleAdElement = document.getElementById('singleAdElement');
        const mainContainer = document.querySelector('.w-full.max-w-4xl');


        /**
         * 이미지 뷰어 모달을 열고 이미지를 설정합니다.
         * @param {string} imageUrl - 모달에 표시할 이미지 URL
         * @param {string} imageTitle - 이미지 대체 텍스트
         */
        function openModal(imageUrl, imageTitle) {
            imageModal.classList.remove('hidden');
            // 부드러운 전환을 위해 opacity를 나중에 추가합니다.
            setTimeout(() =&gt; {
                imageModal.classList.remove('opacity-0');
                // 이미지 로드 및 애니메이션 시작
                modalImage.src = imageUrl;
                modalImage.alt = imageTitle;
                modalImage.classList.remove('scale-95', 'opacity-0');
                modalImage.classList.add('scale-100', 'opacity-100');
            }, 10);
        }

        /**
         * 이미지 뷰어 모달을 닫습니다.
         */
        function closeModal() {
            // 이미지 애니메이션 역순 적용
            modalImage.classList.remove('scale-100', 'opacity-100');
            modalImage.classList.add('scale-95', 'opacity-0');

            // 배경 투명도 감소
            imageModal.classList.add('opacity-0');

            // 닫는 애니메이션 후 숨김 처리
            setTimeout(() =&gt; {
                imageModal.classList.add('hidden');
                modalImage.src = &quot;&quot;; // 이미지 소스 초기화
            }, 300); // CSS transition duration에 맞춤
        }
        
        /**
         * 선택된 주제의 내용을 우측 영역에 표시하고 버튼 스타일을 업데이트합니다.
         * @param {object} topic - 표시할 주제 데이터 객체
         */
        function displayTopic(topic) {
            
            // [수정된 부분] 1. contentDisplay 내용을 교체하기 전에, 광고 요소를 원래 위치로 안전하게 이동시킵니다.
            const adPlaceholderInPreviousContent = document.querySelector('#contentDisplay #adPlaceholder');
            
            if (singleAdElement &amp;&amp; adPlaceholderInPreviousContent &amp;&amp; adPlaceholderInPreviousContent.contains(singleAdElement)) {
                // singleAdElement를 원래의 정적 위치 (메인 컨테이너 다음)로 이동시키고 숨깁니다.
                // 이렇게 해야 innerHTML 교체 시 요소가 DOM에서 'detached' 상태가 되는 것을 방지합니다.
                if (mainContainer) {
                    mainContainer.after(singleAdElement);
                    singleAdElement.classList.add('hidden');
                }
            }


            // 2. 우측 내용 영역 업데이트
            contentDisplay.innerHTML = `
                &lt;div id=&quot;infoCard&quot; class=&quot;bg-white p-2 content-fade-in&quot;&gt;
                    &lt;h2 style=&quot;font-family: 'Noto Serif KR';&quot; class=&quot;text-3xl font-bold text-indigo-700 mb-4&quot;&gt;&lt;b&gt;${topic.header}&lt;/b&gt;&lt;/h2&gt;
                    &lt;p style=&quot;font-family: 'Noto Serif KR';&quot; class=&quot;text-gray-700 mb-6 leading-relaxed border-l-4 border-indigo-400 pl-3&quot;&gt;&lt;b&gt;${topic.description}&lt;/b&gt;&lt;/p&gt;&lt;br/&gt;
                    &lt;img id=&quot;topicImage&quot; 
                         src=&quot;${topic.imageUrl}&quot; 
                         onerror=&quot;this.onerror=null;this.src='https://placehold.co/600x300/4f46e5/ffffff?text=이미지+로드+실패';&quot;
                         alt=&quot;${topic.title} 관련 예시 이미지&quot; 
                         class=&quot;w-full rounded-lg shadow-lg border border-indigo-200 cursor-pointer hover:shadow-xl transition-shadow&quot;
                    &gt;
                    
                    &lt;!-- 광고 삽입을 위한 플레이스홀더 (여기에 실제 광고 요소가 이동됩니다) --&gt;
                    &lt;div id=&quot;adPlaceholder&quot; class=&quot;ad-placeholder-container&quot;&gt;&lt;/div&gt;

                &lt;/div&gt;
            `;

            // 2.1. 새로 생성된 이미지 요소에 이벤트 리스너 부착
            const displayedImage = document.getElementById('topicImage');
            if (displayedImage) {
                displayedImage.addEventListener('click', () =&gt; {
                    openModal(topic.imageUrl, topic.title + &quot; 확대 이미지&quot;);
                });
            }
            
            // 2.2. 광고 요소를 새로 생성된 플레이스홀더로 이동 (요청 1회만 유지)
            const adPlaceholder = document.getElementById('adPlaceholder');
            
            if (adPlaceholder &amp;&amp; singleAdElement) {
                // singleAdElement를 placeholder의 자식으로 이동
                adPlaceholder.appendChild(singleAdElement);
                // 숨겨져 있던 adElement를 보이도록 설정
                singleAdElement.classList.remove('hidden');
            }

            // 3. 버튼 스타일 업데이트 (활성화/비활성화)
            document.querySelectorAll('.topic-button').forEach(btn =&gt; {
                btn.classList.remove('bg-indigo-600', 'text-white', 'shadow-md', 'scale-105');
                btn.classList.add('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
            });

            // 클릭된 버튼에 활성화 스타일 적용
            const activeBtn = document.getElementById(`button-${topic.id}`);
            if (activeBtn) {
                activeBtn.classList.remove('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
                activeBtn.classList.add('bg-indigo-600', 'text-white', 'shadow-md', 'scale-105');
            }
        }

        // 4. 버튼 생성 및 이벤트 리스너 부착
        topics.forEach(topic =&gt; {
            const button = document.createElement('button');
            button.id = `button-${topic.id}`;
          button.className = 'topic-button w-full text-left py-3 px-4 rounded-lg font-medium transition duration-200 ease-in-out transform';	
            button.style.fontFamily = 'Noto Serif KR';
          	button.style.fontWeight = 'bold';
          				
            
            // 초기 스타일
            button.classList.add('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
            
            button.textContent = topic.title;

            button.addEventListener('click', () =&gt; {
                displayTopic(topic);
            });

            topicsContainer.appendChild(button);
        });

        // 5. 초기 표시 (페이지 로드 시 첫 번째 주제를 자동으로 표시)
        if (topics.length &gt; 0) {
            displayTopic(topics[0]);
        }
        
        // 6. 모달 닫기 이벤트 리스너 추가 (인라인 onclick 대신 스크립트에서 처리)
        
        // A. X 버튼 클릭 시 닫기
        closeModalButton.addEventListener('click', closeModal);

        // B. 모달 배경 클릭 시 닫기
        imageModal.addEventListener('click', closeModal);
        
        // C. 모달 내부 콘텐츠 클릭 시 이벤트 전파 중단 (배경 클릭으로 간주되는 것을 방지)
        modalContentContainer.addEventListener('click', (event) =&gt; {
            event.stopPropagation();
        });
    &lt;/script&gt;</description>
      <category>스팀게임</category>
      <author>UnityBeginner</author>
      <guid isPermaLink="true">https://unitybeginner.tistory.com/536</guid>
      <comments>https://unitybeginner.tistory.com/536#entry536comment</comments>
      <pubDate>Thu, 30 Oct 2025 21:32:07 +0900</pubDate>
    </item>
    <item>
      <title>방탈출 시뮬레이터 2 (Escape Simulator 2 Token) 저주받은 보물 섬 토큰 위치</title>
      <link>https://unitybeginner.tistory.com/535</link>
      <description>&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;방탈출 시뮬레이터 2 저주받은 보물 (섬) 토큰 위치&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;!-- Tailwind CSS CDN 로드 --&gt;
&lt;script src=&quot;https://cdn.tailwindcss.com&quot;&gt;&lt;/script&gt;
&lt;script&gt;
        // Tailwind 설정을 커스터마이징합니다. (폰트 설정)
        tailwind.config = {
            theme: {
                extend: {
                    fontFamily: {
                        sans: ['Inter', 'sans-serif'],
                    },
                }
            }
        }
    &lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 메인 컨테이너: 좌측(버튼)과 우측(내용)을 포함하는 2분할 레이아웃 --&gt;
&lt;div class=&quot;w-full max-w-4xl bg-white shadow-2xl rounded-xl p-6 md:p-8 border border-gray-100 flex flex-col md:flex-row gap-6&quot;&gt;
&lt;h1 class=&quot;text-3xl font-extrabold text-gray-800 text-center md:hidden mb-4&quot;&gt;정보 목록&lt;/h1&gt;
&lt;!-- 좌측 영역: 주제 버튼 목록 (1/3 너비) --&gt;
&lt;div id=&quot;topicsContainer&quot; class=&quot;w-full md:w-1/3 md:pr-4 md:border-r border-gray-200 space-y-3 p-2 bg-gray-50 rounded-lg shadow-inner md:shadow-none md:bg-white&quot;&gt;
&lt;h2 style=&quot;font-family: 'Noto Serif KR';&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;토큰 목록 (Click)&lt;/b&gt;&lt;/h2&gt;
&lt;!-- JavaScript가 여기에 버튼을 생성합니다 --&gt;&lt;/div&gt;
&lt;!-- 우측 영역: 선택된 주제의 정보 표시 (2/3 너비) --&gt;
&lt;div id=&quot;contentDisplay&quot; class=&quot;w-full md:w-2/3 pl-0 md:pl-6&quot;&gt;&lt;!-- JavaScript가 여기에 내용을 표시합니다 --&gt;
&lt;div class=&quot;text-center text-gray-500 py-10&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측 목록에서 주제를 선택해 주세요.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 이미지 뷰어 모달 (Lightbox) --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 모든 클릭 이벤트는 JavaScript에서 처리됩니다. --&gt;
&lt;div id=&quot;imageModal&quot; class=&quot;fixed inset-0 z-50 bg-black bg-opacity-90 flex items-center justify-center hidden transition-opacity duration-300 opacity-0&quot;&gt;&lt;!-- 모달 내부 콘텐츠 (이 부분 클릭은 닫히지 않도록 JavaScript에서 event.stopPropagation() 처리) --&gt;
&lt;div id=&quot;modalContentContainer&quot; class=&quot;relative max-w-4xl max-h-full p-4&quot;&gt;&lt;!-- 닫기 버튼 (X 표시) --&gt; &lt;button id=&quot;closeModalButton&quot; class=&quot;absolute top-4 right-4 text-white text-3xl font-extrabold p-2 rounded-full bg-gray-800 bg-opacity-50 hover:bg-opacity-80 transition cursor-pointer z-50&quot;&gt; &amp;times; &lt;/button&gt; &lt;!-- 표시될 이미지 --&gt; &lt;img id=&quot;modalImage&quot; class=&quot;max-w-full max-h-[90vh] object-contain rounded-lg shadow-2xl transition-transform duration-300 transform scale-95 opacity-0&quot; alt=&quot;확대된 이미지&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;hiddenArea&quot; class=&quot;hidden p-4 bg-yellow-100 text-yellow-800 border border-yellow-300 rounded-lg max-w-lg mx-auto mt-6&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YPTr2/dJMcajgc4tn/wVqdC4CHODTh5T1V5wFBM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YPTr2/dJMcajgc4tn/wVqdC4CHODTh5T1V5wFBM1/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰4.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YPTr2/dJMcajgc4tn/wVqdC4CHODTh5T1V5wFBM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYPTr2%2FdJMcajgc4tn%2FwVqdC4CHODTh5T1V5wFBM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLHNdq/dJMcahCHfe6/LkXNV2NLqLS0aqkbKb8ubK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLHNdq/dJMcahCHfe6/LkXNV2NLqLS0aqkbKb8ubK/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰5.png&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLHNdq/dJMcahCHfe6/LkXNV2NLqLS0aqkbKb8ubK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLHNdq%2FdJMcahCHfe6%2FLkXNV2NLqLS0aqkbKb8ubK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Hu4ZG/dJMcajgc4tq/l5Lg0YtpxzkklXojKdJEkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Hu4ZG/dJMcajgc4tq/l5Lg0YtpxzkklXojKdJEkk/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰1.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Hu4ZG/dJMcajgc4tq/l5Lg0YtpxzkklXojKdJEkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHu4ZG%2FdJMcajgc4tq%2Fl5Lg0YtpxzkklXojKdJEkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TLwXO/dJMcajgc4to/w7xwFRbHf3rGZehufXlK1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TLwXO/dJMcajgc4to/w7xwFRbHf3rGZehufXlK1K/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰2.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TLwXO/dJMcajgc4to/w7xwFRbHf3rGZehufXlK1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTLwXO%2FdJMcajgc4to%2Fw7xwFRbHf3rGZehufXlK1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/deLdfK/dJMcajgc4tp/PXK0ppMomEiCEv8X5TyWIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deLdfK/dJMcajgc4tp/PXK0ppMomEiCEv8X5TyWIK/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰3.png&quot; style=&quot;width: 32.5581%; margin-top: 10px;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deLdfK/dJMcajgc4tp/PXK0ppMomEiCEv8X5TyWIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeLdfK%2FdJMcajgc4tp%2FPXK0ppMomEiCEv8X5TyWIK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0bnO1/dJMcahCHfe5/5BlJ2KSqOewk8EmflVIVp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0bnO1/dJMcahCHfe5/5BlJ2KSqOewk8EmflVIVp0/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰7.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0bnO1/dJMcahCHfe5/5BlJ2KSqOewk8EmflVIVp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0bnO1%2FdJMcahCHfe5%2F5BlJ2KSqOewk8EmflVIVp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bftZWB/dJMcaiuPXO7/VDgVMgKV3vCEDCJKuXCGdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bftZWB/dJMcaiuPXO7/VDgVMgKV3vCEDCJKuXCGdk/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰6.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bftZWB/dJMcaiuPXO7/VDgVMgKV3vCEDCJKuXCGdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbftZWB%2FdJMcaiuPXO7%2FVDgVMgKV3vCEDCJKuXCGdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4sWbU/dJMcagKyuFS/LVnfrDak94yp0DpTLXCk51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4sWbU/dJMcagKyuFS/LVnfrDak94yp0DpTLXCk51/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰8.png&quot; style=&quot;width: 32.5581%; margin-top: 10px;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4sWbU/dJMcagKyuFS/LVnfrDak94yp0DpTLXCk51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4sWbU%2FdJMcagKyuFS%2FLVnfrDak94yp0DpTLXCk51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;!-- 9. Ad Element (페이지 로드 시 딱 한 번 생성되고, 필요할 때 위치만 이동됩니다.) --&gt;
&lt;div id=&quot;singleAdElement&quot; class=&quot;mt-8 mb-4 hidden&quot;&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7343105306726381&quot;
     crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;
&lt;!-- CENTER_ADAREA_500X450 --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:500px;height:450px&quot;
     data-ad-client=&quot;ca-pub-7343105306726381&quot;
     data-ad-slot=&quot;2791417549&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;/div&gt;
&lt;script&gt;
        // JavaScript 코드
        
        // 1. 표시할 정보 데이터 정의
        const topics = [
              {
                id: 1,
                title: &quot;토큰 1&quot;,
                header: &quot;저주받은 보물 (섬) 토큰 1&quot;,
                description: &quot;오크통 치우고 바닥 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FYPTr2%2FdJMcajgc4tn%2FAAAAAAAAAAAAAAAAAAAAAMMzSIrkERPQovU-ATdzMtYvS9p0J3k7DIAC85n_8y8J%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DSFnHwUYwrkEihhq40dGNEDLUvok%253D&quot;
            },
          {
                id: 2,
                title: &quot;토큰 2&quot;,
                header: &quot;저주받은 보물 (섬) 토큰 2&quot;,
                description: &quot;벽 기둥 돌 틈 사이 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbLHNdq%2FdJMcahCHfe6%2FAAAAAAAAAAAAAAAAAAAAAIx9l6_QCOwKbac4m5rpiL2JWfBeOku--YjBYGGIszcu%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DN6hlo1FhWrbSFXhZthnVLcbaT74%253D&quot;
            },
          
          {
                id: 3,
                title: &quot;토큰 3&quot;,
                header: &quot;저주받은 보물 (섬) 토큰 3&quot;,
                description: &quot;나무 다리 틈 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FTLwXO%2FdJMcajgc4to%2FAAAAAAAAAAAAAAAAAAAAAC_iRUVftZxD1HHmBwQa-gsojsnLuo5VMFpbauGc6vXd%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3D56S2HlNsBVkpio%252FNM%252FjrggPh0Fw%253D&quot;
            },
          {
                id: 4,
                title: &quot;토큰 4&quot;,
                header: &quot;저주받은 보물 (섬) 토큰 4&quot;,
                description: &quot;돌 기둥 뒤 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FHu4ZG%2FdJMcajgc4tq%2FAAAAAAAAAAAAAAAAAAAAAANMaEhhTG9kV_2C4ThUMfU-8XhfNZwKTA0LqvLTh-Rw%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3Db%252BLLFKVUkRqLd8lpT5oxoX%252BHADA%253D&quot;
            },
          {
                id: 5,
                title: &quot;토큰 5&quot;,
                header: &quot;저주받은 보물 (섬) 토큰 5&quot;,
                description: &quot;쇠지렛대 사용 상자 안 탐색 &quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FdeLdfK%2FdJMcajgc4tp%2FAAAAAAAAAAAAAAAAAAAAAPhwDdm_dBiWe1uieQIJQWLl3IZ0lM4hjLDY3Z-eyKJo%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DRpNvQRkJz2syXp3yqdgLhY5c3nQ%253D&quot;
            },
          {
                id: 6,
                title: &quot;토큰 6&quot;,
                header: &quot;저주받은 보물 (섬) 토큰 6&quot;,
                description: &quot;앵무새방 돌 문틀 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb0bnO1%2FdJMcahCHfe5%2FAAAAAAAAAAAAAAAAAAAAABr2YUde-WDA7wAF63VmhR1cQP_aGD9x9fe8i_spahbn%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DuU33op7vLVadTpbdYuiIdMPylKk%253D&quot;
            },
     
          {
                id: 7,
                title: &quot;토큰 7&quot;,
                header: &quot;저주받은 보물 (섬) 토큰 7&quot;,
                description: &quot;얕은 물가 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbftZWB%2FdJMcaiuPXO7%2FAAAAAAAAAAAAAAAAAAAAACfTa24B6SYG3XdNQuR0cGF8NdlNWEEFUeeyIUnP1uYN%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DZcCrwkde9ejQKb4Bl%252BXuvYtb99c%253D&quot;
            },
          {
                id: 8,
                title: &quot;토큰 8&quot;,
                header: &quot;저주받은 보물 (섬) 토큰 8&quot;,
                description: &quot;화약방 빈굴 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb4sWbU%2FdJMcagKyuFS%2FAAAAAAAAAAAAAAAAAAAAAHMeNt-LcHZuMxuYrzqJlbE3QGD2ZHniSi7979r89EiC%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DXTWWrId1UHE6wvwMyENZnJq%252F%252FKo%253D&quot;
            }
        ];

        const topicsContainer = document.getElementById('topicsContainer');
        const contentDisplay = document.getElementById('contentDisplay');

        // 모달 관련 요소 정의
        const imageModal = document.getElementById('imageModal');
        const modalImage = document.getElementById('modalImage');
        // 새로 추가된 요소 및 ID
        const closeModalButton = document.getElementById('closeModalButton');
        const modalContentContainer = document.getElementById('modalContentContainer');

        // [수정된 부분] 광고 요소를 전역적으로 한 번만 가져옵니다.
        const singleAdElement = document.getElementById('singleAdElement');
        const mainContainer = document.querySelector('.w-full.max-w-4xl');


        /**
         * 이미지 뷰어 모달을 열고 이미지를 설정합니다.
         * @param {string} imageUrl - 모달에 표시할 이미지 URL
         * @param {string} imageTitle - 이미지 대체 텍스트
         */
        function openModal(imageUrl, imageTitle) {
            imageModal.classList.remove('hidden');
            // 부드러운 전환을 위해 opacity를 나중에 추가합니다.
            setTimeout(() =&gt; {
                imageModal.classList.remove('opacity-0');
                // 이미지 로드 및 애니메이션 시작
                modalImage.src = imageUrl;
                modalImage.alt = imageTitle;
                modalImage.classList.remove('scale-95', 'opacity-0');
                modalImage.classList.add('scale-100', 'opacity-100');
            }, 10);
        }

        /**
         * 이미지 뷰어 모달을 닫습니다.
         */
        function closeModal() {
            // 이미지 애니메이션 역순 적용
            modalImage.classList.remove('scale-100', 'opacity-100');
            modalImage.classList.add('scale-95', 'opacity-0');

            // 배경 투명도 감소
            imageModal.classList.add('opacity-0');

            // 닫는 애니메이션 후 숨김 처리
            setTimeout(() =&gt; {
                imageModal.classList.add('hidden');
                modalImage.src = &quot;&quot;; // 이미지 소스 초기화
            }, 300); // CSS transition duration에 맞춤
        }
        
        /**
         * 선택된 주제의 내용을 우측 영역에 표시하고 버튼 스타일을 업데이트합니다.
         * @param {object} topic - 표시할 주제 데이터 객체
         */
        function displayTopic(topic) {
            
            // [수정된 부분] 1. contentDisplay 내용을 교체하기 전에, 광고 요소를 원래 위치로 안전하게 이동시킵니다.
            const adPlaceholderInPreviousContent = document.querySelector('#contentDisplay #adPlaceholder');
            
            if (singleAdElement &amp;&amp; adPlaceholderInPreviousContent &amp;&amp; adPlaceholderInPreviousContent.contains(singleAdElement)) {
                // singleAdElement를 원래의 정적 위치 (메인 컨테이너 다음)로 이동시키고 숨깁니다.
                // 이렇게 해야 innerHTML 교체 시 요소가 DOM에서 'detached' 상태가 되는 것을 방지합니다.
                if (mainContainer) {
                    mainContainer.after(singleAdElement);
                    singleAdElement.classList.add('hidden');
                }
            }


            // 2. 우측 내용 영역 업데이트
            contentDisplay.innerHTML = `
                &lt;div id=&quot;infoCard&quot; class=&quot;bg-white p-2 content-fade-in&quot;&gt;
                    &lt;h2 style=&quot;font-family: 'Noto Serif KR';&quot; class=&quot;text-3xl font-bold text-indigo-700 mb-4&quot;&gt;&lt;b&gt;${topic.header}&lt;/b&gt;&lt;/h2&gt;
                    &lt;p style=&quot;font-family: 'Noto Serif KR';&quot; class=&quot;text-gray-700 mb-6 leading-relaxed border-l-4 border-indigo-400 pl-3&quot;&gt;&lt;b&gt;${topic.description}&lt;/b&gt;&lt;/p&gt;&lt;br/&gt;
                    &lt;img id=&quot;topicImage&quot; 
                         src=&quot;${topic.imageUrl}&quot; 
                         onerror=&quot;this.onerror=null;this.src='https://placehold.co/600x300/4f46e5/ffffff?text=이미지+로드+실패';&quot;
                         alt=&quot;${topic.title} 관련 예시 이미지&quot; 
                         class=&quot;w-full rounded-lg shadow-lg border border-indigo-200 cursor-pointer hover:shadow-xl transition-shadow&quot;
                    &gt;
                    
                    &lt;!-- 광고 삽입을 위한 플레이스홀더 (여기에 실제 광고 요소가 이동됩니다) --&gt;
                    &lt;div id=&quot;adPlaceholder&quot; class=&quot;ad-placeholder-container&quot;&gt;&lt;/div&gt;

                &lt;/div&gt;
            `;

            // 2.1. 새로 생성된 이미지 요소에 이벤트 리스너 부착
            const displayedImage = document.getElementById('topicImage');
            if (displayedImage) {
                displayedImage.addEventListener('click', () =&gt; {
                    openModal(topic.imageUrl, topic.title + &quot; 확대 이미지&quot;);
                });
            }
            
            // 2.2. 광고 요소를 새로 생성된 플레이스홀더로 이동 (요청 1회만 유지)
            const adPlaceholder = document.getElementById('adPlaceholder');
            
            if (adPlaceholder &amp;&amp; singleAdElement) {
                // singleAdElement를 placeholder의 자식으로 이동
                adPlaceholder.appendChild(singleAdElement);
                // 숨겨져 있던 adElement를 보이도록 설정
                singleAdElement.classList.remove('hidden');
            }

            // 3. 버튼 스타일 업데이트 (활성화/비활성화)
            document.querySelectorAll('.topic-button').forEach(btn =&gt; {
                btn.classList.remove('bg-indigo-600', 'text-white', 'shadow-md', 'scale-105');
                btn.classList.add('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
            });

            // 클릭된 버튼에 활성화 스타일 적용
            const activeBtn = document.getElementById(`button-${topic.id}`);
            if (activeBtn) {
                activeBtn.classList.remove('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
                activeBtn.classList.add('bg-indigo-600', 'text-white', 'shadow-md', 'scale-105');
            }
        }

        // 4. 버튼 생성 및 이벤트 리스너 부착
        topics.forEach(topic =&gt; {
            const button = document.createElement('button');
            button.id = `button-${topic.id}`;
          button.className = 'topic-button w-full text-left py-3 px-4 rounded-lg font-medium transition duration-200 ease-in-out transform';	
            button.style.fontFamily = 'Noto Serif KR';
          	button.style.fontWeight = 'bold';
          				
            
            // 초기 스타일
            button.classList.add('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
            
            button.textContent = topic.title;

            button.addEventListener('click', () =&gt; {
                displayTopic(topic);
            });

            topicsContainer.appendChild(button);
        });

        // 5. 초기 표시 (페이지 로드 시 첫 번째 주제를 자동으로 표시)
        if (topics.length &gt; 0) {
            displayTopic(topics[0]);
        }
        
        // 6. 모달 닫기 이벤트 리스너 추가 (인라인 onclick 대신 스크립트에서 처리)
        
        // A. X 버튼 클릭 시 닫기
        closeModalButton.addEventListener('click', closeModal);

        // B. 모달 배경 클릭 시 닫기
        imageModal.addEventListener('click', closeModal);
        
        // C. 모달 내부 콘텐츠 클릭 시 이벤트 전파 중단 (배경 클릭으로 간주되는 것을 방지)
        modalContentContainer.addEventListener('click', (event) =&gt; {
            event.stopPropagation();
        });
    &lt;/script&gt;</description>
      <category>스팀게임</category>
      <author>UnityBeginner</author>
      <guid isPermaLink="true">https://unitybeginner.tistory.com/535</guid>
      <comments>https://unitybeginner.tistory.com/535#entry535comment</comments>
      <pubDate>Thu, 30 Oct 2025 20:24:31 +0900</pubDate>
    </item>
    <item>
      <title>방탈출 시뮬레이터 2 (Escape Simulator 2 Token) 저주받은 보물 해적선 토큰 위치</title>
      <link>https://unitybeginner.tistory.com/534</link>
      <description>&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;방탈출 시뮬레이터 2 저주받은 보물 (해적선) 토큰 위치&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;!-- Tailwind CSS CDN 로드 --&gt;
&lt;script src=&quot;https://cdn.tailwindcss.com&quot;&gt;&lt;/script&gt;
&lt;script&gt;
        // Tailwind 설정을 커스터마이징합니다. (폰트 설정)
        tailwind.config = {
            theme: {
                extend: {
                    fontFamily: {
                        sans: ['Inter', 'sans-serif'],
                    },
                }
            }
        }
    &lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 메인 컨테이너: 좌측(버튼)과 우측(내용)을 포함하는 2분할 레이아웃 --&gt;
&lt;div class=&quot;w-full max-w-4xl bg-white shadow-2xl rounded-xl p-6 md:p-8 border border-gray-100 flex flex-col md:flex-row gap-6&quot;&gt;
&lt;h1 class=&quot;text-3xl font-extrabold text-gray-800 text-center md:hidden mb-4&quot;&gt;정보 목록&lt;/h1&gt;
&lt;!-- 좌측 영역: 주제 버튼 목록 (1/3 너비) --&gt;
&lt;div id=&quot;topicsContainer&quot; class=&quot;w-full md:w-1/3 md:pr-4 md:border-r border-gray-200 space-y-3 p-2 bg-gray-50 rounded-lg shadow-inner md:shadow-none md:bg-white&quot;&gt;
&lt;h2 style=&quot;font-family: 'Noto Serif KR';&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;토큰 목록 (Click)&lt;/b&gt;&lt;/h2&gt;
&lt;!-- JavaScript가 여기에 버튼을 생성합니다 --&gt;&lt;/div&gt;
&lt;!-- 우측 영역: 선택된 주제의 정보 표시 (2/3 너비) --&gt;
&lt;div id=&quot;contentDisplay&quot; class=&quot;w-full md:w-2/3 pl-0 md:pl-6&quot;&gt;&lt;!-- JavaScript가 여기에 내용을 표시합니다 --&gt;
&lt;div class=&quot;text-center text-gray-500 py-10&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측 목록에서 주제를 선택해 주세요.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 이미지 뷰어 모달 (Lightbox) --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 모든 클릭 이벤트는 JavaScript에서 처리됩니다. --&gt;
&lt;div id=&quot;imageModal&quot; class=&quot;fixed inset-0 z-50 bg-black bg-opacity-90 flex items-center justify-center hidden transition-opacity duration-300 opacity-0&quot;&gt;&lt;!-- 모달 내부 콘텐츠 (이 부분 클릭은 닫히지 않도록 JavaScript에서 event.stopPropagation() 처리) --&gt;
&lt;div id=&quot;modalContentContainer&quot; class=&quot;relative max-w-4xl max-h-full p-4&quot;&gt;&lt;!-- 닫기 버튼 (X 표시) --&gt; &lt;button id=&quot;closeModalButton&quot; class=&quot;absolute top-4 right-4 text-white text-3xl font-extrabold p-2 rounded-full bg-gray-800 bg-opacity-50 hover:bg-opacity-80 transition cursor-pointer z-50&quot;&gt; &amp;times; &lt;/button&gt; &lt;!-- 표시될 이미지 --&gt; &lt;img id=&quot;modalImage&quot; class=&quot;max-w-full max-h-[90vh] object-contain rounded-lg shadow-2xl transition-transform duration-300 transform scale-95 opacity-0&quot; alt=&quot;확대된 이미지&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;hiddenArea&quot; class=&quot;hidden p-4 bg-yellow-100 text-yellow-800 border border-yellow-300 rounded-lg max-w-lg mx-auto mt-6&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FaKRL/dJMcai9rtxe/LCgwg7jbZSfHT6JIPbUgB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FaKRL/dJMcai9rtxe/LCgwg7jbZSfHT6JIPbUgB0/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰1.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FaKRL/dJMcai9rtxe/LCgwg7jbZSfHT6JIPbUgB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFaKRL%2FdJMcai9rtxe%2FLCgwg7jbZSfHT6JIPbUgB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bx3jp5/dJMcaaQ6Ea9/RBmYf4HZXg1EkaOZIfskf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bx3jp5/dJMcaaQ6Ea9/RBmYf4HZXg1EkaOZIfskf0/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰3.png&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bx3jp5/dJMcaaQ6Ea9/RBmYf4HZXg1EkaOZIfskf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbx3jp5%2FdJMcaaQ6Ea9%2FRBmYf4HZXg1EkaOZIfskf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/deDrlV/dJMcai9rtxd/rasxOsORSbVnGpsLPLLcC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deDrlV/dJMcai9rtxd/rasxOsORSbVnGpsLPLLcC0/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰6.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deDrlV/dJMcai9rtxd/rasxOsORSbVnGpsLPLLcC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeDrlV%2FdJMcai9rtxd%2FrasxOsORSbVnGpsLPLLcC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6o9Fc/dJMcakzp6ZQ/UNTTXIVhNbTy05mxATSvDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6o9Fc/dJMcakzp6ZQ/UNTTXIVhNbTy05mxATSvDK/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰8.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6o9Fc/dJMcakzp6ZQ/UNTTXIVhNbTy05mxATSvDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6o9Fc%2FdJMcakzp6ZQ%2FUNTTXIVhNbTy05mxATSvDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWrYAb/dJMcai9rtxc/8P4y4YwsT6zkdk7xb5Wsi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWrYAb/dJMcai9rtxc/8P4y4YwsT6zkdk7xb5Wsi0/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰2.png&quot; style=&quot;width: 32.5581%; margin-top: 10px;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWrYAb/dJMcai9rtxc/8P4y4YwsT6zkdk7xb5Wsi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWrYAb%2FdJMcai9rtxc%2F8P4y4YwsT6zkdk7xb5Wsi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/R616l/dJMcagjt8jD/r6AaGvJDbzlyYALyQehknk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/R616l/dJMcagjt8jD/r6AaGvJDbzlyYALyQehknk/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰5.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/R616l/dJMcagjt8jD/r6AaGvJDbzlyYALyQehknk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FR616l%2FdJMcagjt8jD%2Fr6AaGvJDbzlyYALyQehknk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w68N0/dJMcagjt8jE/17z6lTJIMwqKCNE0MUihe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w68N0/dJMcagjt8jE/17z6lTJIMwqKCNE0MUihe0/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰4.png&quot; data-widthpercent=&quot;33.33&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w68N0/dJMcagjt8jE/17z6lTJIMwqKCNE0MUihe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw68N0%2FdJMcagjt8jE%2F17z6lTJIMwqKCNE0MUihe0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKNxAi/dJMcagjt8jF/4FMbLMxvRC0TtPMpkZSdnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKNxAi/dJMcagjt8jF/4FMbLMxvRC0TtPMpkZSdnK/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰7.png&quot; data-widthpercent=&quot;33.34&quot; style=&quot;width: 32.5581%; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKNxAi/dJMcagjt8jF/4FMbLMxvRC0TtPMpkZSdnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKNxAi%2FdJMcagjt8jF%2F4FMbLMxvRC0TtPMpkZSdnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;!-- 9. Ad Element (페이지 로드 시 딱 한 번 생성되고, 필요할 때 위치만 이동됩니다.) --&gt;
&lt;div id=&quot;singleAdElement&quot; class=&quot;mt-8 mb-4 hidden&quot;&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7343105306726381&quot;
     crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;
&lt;!-- CENTER_ADAREA_500X450 --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:500px;height:450px&quot;
     data-ad-client=&quot;ca-pub-7343105306726381&quot;
     data-ad-slot=&quot;2791417549&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;/div&gt;
&lt;script&gt;
        // JavaScript 코드
        
        // 1. 표시할 정보 데이터 정의
        const topics = [
              {
                id: 1,
                title: &quot;토큰 1&quot;,
                header: &quot;저주받은 보물 (해적선) 토큰 1&quot;,
                description: &quot;인어 석상 꼬리 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FFaKRL%2FdJMcai9rtxe%2FAAAAAAAAAAAAAAAAAAAAAORDqCOEJu7YQxShkonncU3PrS6eLrJ6h2RFXfwpCZOi%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DAy9W87g3uP1AbV4Vls1aUOyhd1o%253D&quot;
            },
          {
                id: 2,
                title: &quot;토큰 2&quot;,
                header: &quot;저주받은 보물 (해적선) 토큰 2&quot;,
                description: &quot;오크통 주변 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fbx3jp5%2FdJMcaaQ6Ea9%2FAAAAAAAAAAAAAAAAAAAAAI4fhPFtVKdM5envvpZqiKJAvCmnkmDQd5gs9cRKD8q7%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3Dnc%252FmDeWWdkdzuoJN283fQRcQVyc%253D&quot;
            },
          
          {
                id: 3,
                title: &quot;토큰 3&quot;,
                header: &quot;저주받은 보물 (해적선) 토큰 3&quot;,
                description: &quot;유리창 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FdeDrlV%2FdJMcai9rtxd%2FAAAAAAAAAAAAAAAAAAAAALVOXIxEj2ixcc8vsapxQE56ObBuNAHKD3EGrud6H4xO%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DaUPNDmi42oWqg6qLtsUtUpIo5xA%253D&quot;
            },
          {
                id: 4,
                title: &quot;토큰 4&quot;,
                header: &quot;저주받은 보물 (해적선) 토큰 4&quot;,
                description: &quot;액자 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2F6o9Fc%2FdJMcakzp6ZQ%2FAAAAAAAAAAAAAAAAAAAAAE2T50Zel19-GDNILametkKm6im0erp2ZapxCnqIxheM%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DZzwmaPbhQsEY9XrrgaWivb5%252FgCk%253D&quot;
            },
          {
                id: 5,
                title: &quot;토큰 5&quot;,
                header: &quot;저주받은 보물 (해적선) 토큰 5&quot;,
                description: &quot;조타 장치 뒤 유리창 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbWrYAb%2FdJMcai9rtxc%2FAAAAAAAAAAAAAAAAAAAAABla5UGYMFrW8foW4fQ5NtnZ6AHjMPMQH_nKZujFO4E5%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3D0jZVLRej2AJ0bNF%252F7nqhf%252FHmXp4%253D&quot;
            },
          {
                id: 6,
                title: &quot;토큰 6&quot;,
                header: &quot;저주받은 보물 (해적선) 토큰 6&quot;,
                description: &quot;대포 근처 바다 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FR616l%2FdJMcagjt8jD%2FAAAAAAAAAAAAAAAAAAAAAC2tS1xKVEgRvsZ4ZQ_ZMx6R_GU1esCjJUZ6ezahM6ND%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DJIquNYVUgo%252BtXKDifV2tgN4950s%253D&quot;
            },
     
          {
                id: 7,
                title: &quot;토큰 7&quot;,
                header: &quot;저주받은 보물 (해적선) 토큰 7&quot;,
                description: &quot;뱃머리 방향 돛 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fw68N0%2FdJMcagjt8jE%2FAAAAAAAAAAAAAAAAAAAAAJ8ypVhLF4Xs7S1OdnshsqRpBL8_e2iCH8Ad09x6JvaQ%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3D5Iu2vccesARyCd9UmklNv%252BbEJwE%253D&quot;
            },
          {
                id: 8,
                title: &quot;토큰 8&quot;,
                header: &quot;저주받은 보물 (해적선) 토큰 8&quot;,
                description: &quot;선장실 책상 서랍 옆면 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FdKNxAi%2FdJMcagjt8jF%2FAAAAAAAAAAAAAAAAAAAAADlHJT-4BafND1sYDocZjwIEFSL5sQRboFc4k9ck50Z9%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DRCoXYEsotxm5Q54NDaZGxdNOo6Y%253D&quot;
            }
        ];

        const topicsContainer = document.getElementById('topicsContainer');
        const contentDisplay = document.getElementById('contentDisplay');

        // 모달 관련 요소 정의
        const imageModal = document.getElementById('imageModal');
        const modalImage = document.getElementById('modalImage');
        // 새로 추가된 요소 및 ID
        const closeModalButton = document.getElementById('closeModalButton');
        const modalContentContainer = document.getElementById('modalContentContainer');

        // [수정된 부분] 광고 요소를 전역적으로 한 번만 가져옵니다.
        const singleAdElement = document.getElementById('singleAdElement');
        const mainContainer = document.querySelector('.w-full.max-w-4xl');


        /**
         * 이미지 뷰어 모달을 열고 이미지를 설정합니다.
         * @param {string} imageUrl - 모달에 표시할 이미지 URL
         * @param {string} imageTitle - 이미지 대체 텍스트
         */
        function openModal(imageUrl, imageTitle) {
            imageModal.classList.remove('hidden');
            // 부드러운 전환을 위해 opacity를 나중에 추가합니다.
            setTimeout(() =&gt; {
                imageModal.classList.remove('opacity-0');
                // 이미지 로드 및 애니메이션 시작
                modalImage.src = imageUrl;
                modalImage.alt = imageTitle;
                modalImage.classList.remove('scale-95', 'opacity-0');
                modalImage.classList.add('scale-100', 'opacity-100');
            }, 10);
        }

        /**
         * 이미지 뷰어 모달을 닫습니다.
         */
        function closeModal() {
            // 이미지 애니메이션 역순 적용
            modalImage.classList.remove('scale-100', 'opacity-100');
            modalImage.classList.add('scale-95', 'opacity-0');

            // 배경 투명도 감소
            imageModal.classList.add('opacity-0');

            // 닫는 애니메이션 후 숨김 처리
            setTimeout(() =&gt; {
                imageModal.classList.add('hidden');
                modalImage.src = &quot;&quot;; // 이미지 소스 초기화
            }, 300); // CSS transition duration에 맞춤
        }
        
        /**
         * 선택된 주제의 내용을 우측 영역에 표시하고 버튼 스타일을 업데이트합니다.
         * @param {object} topic - 표시할 주제 데이터 객체
         */
        function displayTopic(topic) {
            
            // [수정된 부분] 1. contentDisplay 내용을 교체하기 전에, 광고 요소를 원래 위치로 안전하게 이동시킵니다.
            const adPlaceholderInPreviousContent = document.querySelector('#contentDisplay #adPlaceholder');
            
            if (singleAdElement &amp;&amp; adPlaceholderInPreviousContent &amp;&amp; adPlaceholderInPreviousContent.contains(singleAdElement)) {
                // singleAdElement를 원래의 정적 위치 (메인 컨테이너 다음)로 이동시키고 숨깁니다.
                // 이렇게 해야 innerHTML 교체 시 요소가 DOM에서 'detached' 상태가 되는 것을 방지합니다.
                if (mainContainer) {
                    mainContainer.after(singleAdElement);
                    singleAdElement.classList.add('hidden');
                }
            }


            // 2. 우측 내용 영역 업데이트
            contentDisplay.innerHTML = `
                &lt;div id=&quot;infoCard&quot; class=&quot;bg-white p-2 content-fade-in&quot;&gt;
                    &lt;h2 style=&quot;font-family: 'Noto Serif KR';&quot; class=&quot;text-3xl font-bold text-indigo-700 mb-4&quot;&gt;&lt;b&gt;${topic.header}&lt;/b&gt;&lt;/h2&gt;
                    &lt;p style=&quot;font-family: 'Noto Serif KR';&quot; class=&quot;text-gray-700 mb-6 leading-relaxed border-l-4 border-indigo-400 pl-3&quot;&gt;&lt;b&gt;${topic.description}&lt;/b&gt;&lt;/p&gt;&lt;br/&gt;
                    &lt;img id=&quot;topicImage&quot; 
                         src=&quot;${topic.imageUrl}&quot; 
                         onerror=&quot;this.onerror=null;this.src='https://placehold.co/600x300/4f46e5/ffffff?text=이미지+로드+실패';&quot;
                         alt=&quot;${topic.title} 관련 예시 이미지&quot; 
                         class=&quot;w-full rounded-lg shadow-lg border border-indigo-200 cursor-pointer hover:shadow-xl transition-shadow&quot;
                    &gt;
                    
                    &lt;!-- 광고 삽입을 위한 플레이스홀더 (여기에 실제 광고 요소가 이동됩니다) --&gt;
                    &lt;div id=&quot;adPlaceholder&quot; class=&quot;ad-placeholder-container&quot;&gt;&lt;/div&gt;

                &lt;/div&gt;
            `;

            // 2.1. 새로 생성된 이미지 요소에 이벤트 리스너 부착
            const displayedImage = document.getElementById('topicImage');
            if (displayedImage) {
                displayedImage.addEventListener('click', () =&gt; {
                    openModal(topic.imageUrl, topic.title + &quot; 확대 이미지&quot;);
                });
            }
            
            // 2.2. 광고 요소를 새로 생성된 플레이스홀더로 이동 (요청 1회만 유지)
            const adPlaceholder = document.getElementById('adPlaceholder');
            
            if (adPlaceholder &amp;&amp; singleAdElement) {
                // singleAdElement를 placeholder의 자식으로 이동
                adPlaceholder.appendChild(singleAdElement);
                // 숨겨져 있던 adElement를 보이도록 설정
                singleAdElement.classList.remove('hidden');
            }

            // 3. 버튼 스타일 업데이트 (활성화/비활성화)
            document.querySelectorAll('.topic-button').forEach(btn =&gt; {
                btn.classList.remove('bg-indigo-600', 'text-white', 'shadow-md', 'scale-105');
                btn.classList.add('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
            });

            // 클릭된 버튼에 활성화 스타일 적용
            const activeBtn = document.getElementById(`button-${topic.id}`);
            if (activeBtn) {
                activeBtn.classList.remove('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
                activeBtn.classList.add('bg-indigo-600', 'text-white', 'shadow-md', 'scale-105');
            }
        }

        // 4. 버튼 생성 및 이벤트 리스너 부착
        topics.forEach(topic =&gt; {
            const button = document.createElement('button');
            button.id = `button-${topic.id}`;
          button.className = 'topic-button w-full text-left py-3 px-4 rounded-lg font-medium transition duration-200 ease-in-out transform';	
            button.style.fontFamily = 'Noto Serif KR';
          	button.style.fontWeight = 'bold';
          				
            
            // 초기 스타일
            button.classList.add('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
            
            button.textContent = topic.title;

            button.addEventListener('click', () =&gt; {
                displayTopic(topic);
            });

            topicsContainer.appendChild(button);
        });

        // 5. 초기 표시 (페이지 로드 시 첫 번째 주제를 자동으로 표시)
        if (topics.length &gt; 0) {
            displayTopic(topics[0]);
        }
        
        // 6. 모달 닫기 이벤트 리스너 추가 (인라인 onclick 대신 스크립트에서 처리)
        
        // A. X 버튼 클릭 시 닫기
        closeModalButton.addEventListener('click', closeModal);

        // B. 모달 배경 클릭 시 닫기
        imageModal.addEventListener('click', closeModal);
        
        // C. 모달 내부 콘텐츠 클릭 시 이벤트 전파 중단 (배경 클릭으로 간주되는 것을 방지)
        modalContentContainer.addEventListener('click', (event) =&gt; {
            event.stopPropagation();
        });
    &lt;/script&gt;</description>
      <author>UnityBeginner</author>
      <guid isPermaLink="true">https://unitybeginner.tistory.com/534</guid>
      <comments>https://unitybeginner.tistory.com/534#entry534comment</comments>
      <pubDate>Thu, 30 Oct 2025 18:44:45 +0900</pubDate>
    </item>
    <item>
      <title>방탈출 시뮬레이터 2 (Escape Simulator 2 Token) 저주받은 보물 선술집 토큰 위치</title>
      <link>https://unitybeginner.tistory.com/533</link>
      <description>&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;방탈출 시뮬레이터 2 저주받은 보물 (선술집) 토큰 위치&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;!-- Tailwind CSS CDN 로드 --&gt;
&lt;script src=&quot;https://cdn.tailwindcss.com&quot;&gt;&lt;/script&gt;
&lt;script&gt;
        // Tailwind 설정을 커스터마이징합니다. (폰트 설정)
        tailwind.config = {
            theme: {
                extend: {
                    fontFamily: {
                        sans: ['Inter', 'sans-serif'],
                    },
                }
            }
        }
    &lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 메인 컨테이너: 좌측(버튼)과 우측(내용)을 포함하는 2분할 레이아웃 --&gt;
&lt;div class=&quot;w-full max-w-4xl bg-white shadow-2xl rounded-xl p-6 md:p-8 border border-gray-100 flex flex-col md:flex-row gap-6&quot;&gt;
&lt;h1 class=&quot;text-3xl font-extrabold text-gray-800 text-center md:hidden mb-4&quot;&gt;정보 목록&lt;/h1&gt;
&lt;!-- 좌측 영역: 주제 버튼 목록 (1/3 너비) --&gt;
&lt;div id=&quot;topicsContainer&quot; class=&quot;w-full md:w-1/3 md:pr-4 md:border-r border-gray-200 space-y-3 p-2 bg-gray-50 rounded-lg shadow-inner md:shadow-none md:bg-white&quot;&gt;
&lt;h2 style=&quot;font-family: 'Noto Serif KR';&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;토큰 목록 (Click)&lt;/b&gt;&lt;/h2&gt;
&lt;!-- JavaScript가 여기에 버튼을 생성합니다 --&gt;&lt;/div&gt;
&lt;!-- 우측 영역: 선택된 주제의 정보 표시 (2/3 너비) --&gt;
&lt;div id=&quot;contentDisplay&quot; class=&quot;w-full md:w-2/3 pl-0 md:pl-6&quot;&gt;&lt;!-- JavaScript가 여기에 내용을 표시합니다 --&gt;
&lt;div class=&quot;text-center text-gray-500 py-10&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측 목록에서 주제를 선택해 주세요.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 이미지 뷰어 모달 (Lightbox) --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 모든 클릭 이벤트는 JavaScript에서 처리됩니다. --&gt;
&lt;div id=&quot;imageModal&quot; class=&quot;fixed inset-0 z-50 bg-black bg-opacity-90 flex items-center justify-center hidden transition-opacity duration-300 opacity-0&quot;&gt;&lt;!-- 모달 내부 콘텐츠 (이 부분 클릭은 닫히지 않도록 JavaScript에서 event.stopPropagation() 처리) --&gt;
&lt;div id=&quot;modalContentContainer&quot; class=&quot;relative max-w-4xl max-h-full p-4&quot;&gt;&lt;!-- 닫기 버튼 (X 표시) --&gt; &lt;button id=&quot;closeModalButton&quot; class=&quot;absolute top-4 right-4 text-white text-3xl font-extrabold p-2 rounded-full bg-gray-800 bg-opacity-50 hover:bg-opacity-80 transition cursor-pointer z-50&quot;&gt; &amp;times; &lt;/button&gt; &lt;!-- 표시될 이미지 --&gt; &lt;img id=&quot;modalImage&quot; class=&quot;max-w-full max-h-[90vh] object-contain rounded-lg shadow-2xl transition-transform duration-300 transform scale-95 opacity-0&quot; alt=&quot;확대된 이미지&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;hiddenArea&quot; class=&quot;hidden p-4 bg-yellow-100 text-yellow-800 border border-yellow-300 rounded-lg max-w-lg mx-auto mt-6&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqM6Gd/dJMcaiuPUWJ/sImojT96UiYu7thnA0dZC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqM6Gd/dJMcaiuPUWJ/sImojT96UiYu7thnA0dZC0/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰3.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqM6Gd/dJMcaiuPUWJ/sImojT96UiYu7thnA0dZC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqM6Gd%2FdJMcaiuPUWJ%2FsImojT96UiYu7thnA0dZC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBB4U1/dJMcaiuPUWK/XjQbPJHZut4aIFoGfv95A1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBB4U1/dJMcaiuPUWK/XjQbPJHZut4aIFoGfv95A1/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰1.png&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBB4U1/dJMcaiuPUWK/XjQbPJHZut4aIFoGfv95A1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBB4U1%2FdJMcaiuPUWK%2FXjQbPJHZut4aIFoGfv95A1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0HJyN/dJMb99Sci0j/rcRO0shVDDP1kVOakuWahk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0HJyN/dJMb99Sci0j/rcRO0shVDDP1kVOakuWahk/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰4.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0HJyN/dJMb99Sci0j/rcRO0shVDDP1kVOakuWahk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0HJyN%2FdJMb99Sci0j%2FrcRO0shVDDP1kVOakuWahk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZ37SF/dJMcac9d0lN/H5U3hjS7qtKxwMzxpKedV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZ37SF/dJMcac9d0lN/H5U3hjS7qtKxwMzxpKedV1/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰5.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZ37SF/dJMcac9d0lN/H5U3hjS7qtKxwMzxpKedV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZ37SF%2FdJMcac9d0lN%2FH5U3hjS7qtKxwMzxpKedV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lnDdB/dJMcaaXSbR5/1hyTzzZvFHxAtLkQD3Keqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lnDdB/dJMcaaXSbR5/1hyTzzZvFHxAtLkQD3Keqk/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰6.png&quot; style=&quot;width: 32.5581%; margin-top: 10px;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lnDdB/dJMcaaXSbR5/1hyTzzZvFHxAtLkQD3Keqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlnDdB%2FdJMcaaXSbR5%2F1hyTzzZvFHxAtLkQD3Keqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KJsAG/dJMcaeTvrrE/c1hJeqOQfaFvbOJjYPXz71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KJsAG/dJMcaeTvrrE/c1hJeqOQfaFvbOJjYPXz71/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰7.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KJsAG/dJMcaeTvrrE/c1hJeqOQfaFvbOJjYPXz71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKJsAG%2FdJMcaeTvrrE%2Fc1hJeqOQfaFvbOJjYPXz71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IsAXx/dJMcacg5jkT/WhaqZy2Pgwi3nKYSMUUoKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IsAXx/dJMcacg5jkT/WhaqZy2Pgwi3nKYSMUUoKK/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰8.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IsAXx/dJMcacg5jkT/WhaqZy2Pgwi3nKYSMUUoKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIsAXx%2FdJMcacg5jkT%2FWhaqZy2Pgwi3nKYSMUUoKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0XsvK/dJMcaeTvrrD/gEXAzfFnnKMQqdoULvVEC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0XsvK/dJMcaeTvrrD/gEXAzfFnnKMQqdoULvVEC1/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰2.png&quot; style=&quot;width: 32.5581%; margin-top: 10px;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0XsvK/dJMcaeTvrrD/gEXAzfFnnKMQqdoULvVEC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0XsvK%2FdJMcaeTvrrD%2FgEXAzfFnnKMQqdoULvVEC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;!-- 9. Ad Element (페이지 로드 시 딱 한 번 생성되고, 필요할 때 위치만 이동됩니다.) --&gt;
&lt;div id=&quot;singleAdElement&quot; class=&quot;mt-8 mb-4 hidden&quot;&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7343105306726381&quot;
     crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;
&lt;!-- CENTER_ADAREA_500X450 --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:500px;height:450px&quot;
     data-ad-client=&quot;ca-pub-7343105306726381&quot;
     data-ad-slot=&quot;2791417549&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;/div&gt;
&lt;script&gt;
        // JavaScript 코드
        
        // 1. 표시할 정보 데이터 정의
        const topics = [
              {
                id: 1,
                title: &quot;토큰 1&quot;,
                header: &quot;저주받은 보물 (선술집) 토큰 1&quot;,
                description: &quot;사브르 칼 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbqM6Gd%2FdJMcaiuPUWJ%2FAAAAAAAAAAAAAAAAAAAAAFeMJnz2Xx4JJuHCylgfGofCDbjYGgU-HJGFI3VQF6xZ%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DG8KXvCQKYSOw7oowmAnle9XoKb4%253D&quot;
            },
          {
                id: 2,
                title: &quot;토큰 2&quot;,
                header: &quot;저주받은 보물 (선술집) 토큰 2&quot;,
                description: &quot;계단쪽 천장 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcBB4U1%2FdJMcaiuPUWK%2FAAAAAAAAAAAAAAAAAAAAAAb2tElZ8Qc1Hwykv2G6eK9SauaPN3AM1YpaoC0ZXN8a%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DiV6wNZEIfHrSykt%252Bg%252FdCKqw5Au0%253D&quot;
            },
          
          {
                id: 3,
                title: &quot;토큰 3&quot;,
                header: &quot;저주받은 보물 (선술집) 토큰 3&quot;,
                description: &quot;지도 근처 좌측 나무 기둥 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fc0HJyN%2FdJMb99Sci0j%2FAAAAAAAAAAAAAAAAAAAAAGJ1iPWXFGD_Wj4VpG8BWwn2Pn5gO_HYS_ydMI2i086k%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DbB0%252BzbBbnue3wwwvqvkc7FrwskM%253D&quot;
            },
          {
                id: 4,
                title: &quot;토큰 4&quot;,
                header: &quot;저주받은 보물 (선술집) 토큰 4&quot;,
                description: &quot;구석 레몬나무 뒤 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbZ37SF%2FdJMcac9d0lN%2FAAAAAAAAAAAAAAAAAAAAAF2i2Z_x8DzBCFa0FBX5rSHHCyt6wne1I1Vu4e2Fuf7d%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DDGD5CnIm26wPe9Ow%252B1NqAC1CzAA%253D&quot;
            },
          {
                id: 5,
                title: &quot;토큰 5&quot;,
                header: &quot;저주받은 보물 (선술집) 토큰 5&quot;,
                description: &quot;바 테이블위 마늘 옆에 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FlnDdB%2FdJMcaaXSbR5%2FAAAAAAAAAAAAAAAAAAAAAHg-epwvC9NMPC6US9jEyK4DChILfA7DWlbVCCAINuYx%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DFhnkPgo%252BxMsFn2f%252BaekrP0F3aaE%253D&quot;
            },
          {
                id: 6,
                title: &quot;토큰 6&quot;,
                header: &quot;저주받은 보물 (선술집) 토큰 6&quot;,
                description: &quot;물고기 뼈 주둥이 부분 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FKJsAG%2FdJMcaeTvrrE%2FAAAAAAAAAAAAAAAAAAAAALMznt5ZhRWMbwkCRuR23YMQZUGY80VaYDHSJ98WgUrw%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3D%252BZoGV1YHFWm5mazhFSeCQqQzEJA%253D&quot;
            },
     
          {
                id: 7,
                title: &quot;토큰 7&quot;,
                header: &quot;저주받은 보물 (선술집) 토큰 7&quot;,
                description: &quot;술 진열장 좌측 위 술병 탐색 &quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FIsAXx%2FdJMcacg5jkT%2FAAAAAAAAAAAAAAAAAAAAAOZtb1f9rCBseYI7LEa98qEAnliYD7UIFqnzWIr8h1Nx%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3D1AsQ7m%252F8QOPOKbsRDB%252FtD3mv%252BCc%253D&quot;
            },
          {
                id: 8,
                title: &quot;토큰 8&quot;,
                header: &quot;저주받은 보물 (선술집) 토큰 8&quot;,
                description: &quot;주사위 박스 옆면 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb0XsvK%2FdJMcaeTvrrD%2FAAAAAAAAAAAAAAAAAAAAAI2RFDxaeF9tr6QDxG4x4C4pVaSj7AMSNYGSIvqrwR0j%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3Da%252FS9lqGkcSY7KMcMpDMGwK2xHAI%253D&quot;
            }
        ];

        const topicsContainer = document.getElementById('topicsContainer');
        const contentDisplay = document.getElementById('contentDisplay');

        // 모달 관련 요소 정의
        const imageModal = document.getElementById('imageModal');
        const modalImage = document.getElementById('modalImage');
        // 새로 추가된 요소 및 ID
        const closeModalButton = document.getElementById('closeModalButton');
        const modalContentContainer = document.getElementById('modalContentContainer');

        // [수정된 부분] 광고 요소를 전역적으로 한 번만 가져옵니다.
        const singleAdElement = document.getElementById('singleAdElement');
        const mainContainer = document.querySelector('.w-full.max-w-4xl');


        /**
         * 이미지 뷰어 모달을 열고 이미지를 설정합니다.
         * @param {string} imageUrl - 모달에 표시할 이미지 URL
         * @param {string} imageTitle - 이미지 대체 텍스트
         */
        function openModal(imageUrl, imageTitle) {
            imageModal.classList.remove('hidden');
            // 부드러운 전환을 위해 opacity를 나중에 추가합니다.
            setTimeout(() =&gt; {
                imageModal.classList.remove('opacity-0');
                // 이미지 로드 및 애니메이션 시작
                modalImage.src = imageUrl;
                modalImage.alt = imageTitle;
                modalImage.classList.remove('scale-95', 'opacity-0');
                modalImage.classList.add('scale-100', 'opacity-100');
            }, 10);
        }

        /**
         * 이미지 뷰어 모달을 닫습니다.
         */
        function closeModal() {
            // 이미지 애니메이션 역순 적용
            modalImage.classList.remove('scale-100', 'opacity-100');
            modalImage.classList.add('scale-95', 'opacity-0');

            // 배경 투명도 감소
            imageModal.classList.add('opacity-0');

            // 닫는 애니메이션 후 숨김 처리
            setTimeout(() =&gt; {
                imageModal.classList.add('hidden');
                modalImage.src = &quot;&quot;; // 이미지 소스 초기화
            }, 300); // CSS transition duration에 맞춤
        }
        
        /**
         * 선택된 주제의 내용을 우측 영역에 표시하고 버튼 스타일을 업데이트합니다.
         * @param {object} topic - 표시할 주제 데이터 객체
         */
        function displayTopic(topic) {
            
            // [수정된 부분] 1. contentDisplay 내용을 교체하기 전에, 광고 요소를 원래 위치로 안전하게 이동시킵니다.
            const adPlaceholderInPreviousContent = document.querySelector('#contentDisplay #adPlaceholder');
            
            if (singleAdElement &amp;&amp; adPlaceholderInPreviousContent &amp;&amp; adPlaceholderInPreviousContent.contains(singleAdElement)) {
                // singleAdElement를 원래의 정적 위치 (메인 컨테이너 다음)로 이동시키고 숨깁니다.
                // 이렇게 해야 innerHTML 교체 시 요소가 DOM에서 'detached' 상태가 되는 것을 방지합니다.
                if (mainContainer) {
                    mainContainer.after(singleAdElement);
                    singleAdElement.classList.add('hidden');
                }
            }


            // 2. 우측 내용 영역 업데이트
            contentDisplay.innerHTML = `
                &lt;div id=&quot;infoCard&quot; class=&quot;bg-white p-2 content-fade-in&quot;&gt;
                    &lt;h2 style=&quot;font-family: 'Noto Serif KR';&quot; class=&quot;text-3xl font-bold text-indigo-700 mb-4&quot;&gt;&lt;b&gt;${topic.header}&lt;/b&gt;&lt;/h2&gt;
                    &lt;p style=&quot;font-family: 'Noto Serif KR';&quot; class=&quot;text-gray-700 mb-6 leading-relaxed border-l-4 border-indigo-400 pl-3&quot;&gt;&lt;b&gt;${topic.description}&lt;/b&gt;&lt;/p&gt;&lt;br/&gt;
                    &lt;img id=&quot;topicImage&quot; 
                         src=&quot;${topic.imageUrl}&quot; 
                         onerror=&quot;this.onerror=null;this.src='https://placehold.co/600x300/4f46e5/ffffff?text=이미지+로드+실패';&quot;
                         alt=&quot;${topic.title} 관련 예시 이미지&quot; 
                         class=&quot;w-full rounded-lg shadow-lg border border-indigo-200 cursor-pointer hover:shadow-xl transition-shadow&quot;
                    &gt;
                    
                    &lt;!-- 광고 삽입을 위한 플레이스홀더 (여기에 실제 광고 요소가 이동됩니다) --&gt;
                    &lt;div id=&quot;adPlaceholder&quot; class=&quot;ad-placeholder-container&quot;&gt;&lt;/div&gt;

                &lt;/div&gt;
            `;

            // 2.1. 새로 생성된 이미지 요소에 이벤트 리스너 부착
            const displayedImage = document.getElementById('topicImage');
            if (displayedImage) {
                displayedImage.addEventListener('click', () =&gt; {
                    openModal(topic.imageUrl, topic.title + &quot; 확대 이미지&quot;);
                });
            }
            
            // 2.2. 광고 요소를 새로 생성된 플레이스홀더로 이동 (요청 1회만 유지)
            const adPlaceholder = document.getElementById('adPlaceholder');
            
            if (adPlaceholder &amp;&amp; singleAdElement) {
                // singleAdElement를 placeholder의 자식으로 이동
                adPlaceholder.appendChild(singleAdElement);
                // 숨겨져 있던 adElement를 보이도록 설정
                singleAdElement.classList.remove('hidden');
            }

            // 3. 버튼 스타일 업데이트 (활성화/비활성화)
            document.querySelectorAll('.topic-button').forEach(btn =&gt; {
                btn.classList.remove('bg-indigo-600', 'text-white', 'shadow-md', 'scale-105');
                btn.classList.add('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
            });

            // 클릭된 버튼에 활성화 스타일 적용
            const activeBtn = document.getElementById(`button-${topic.id}`);
            if (activeBtn) {
                activeBtn.classList.remove('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
                activeBtn.classList.add('bg-indigo-600', 'text-white', 'shadow-md', 'scale-105');
            }
        }

        // 4. 버튼 생성 및 이벤트 리스너 부착
        topics.forEach(topic =&gt; {
            const button = document.createElement('button');
            button.id = `button-${topic.id}`;
          button.className = 'topic-button w-full text-left py-3 px-4 rounded-lg font-medium transition duration-200 ease-in-out transform';	
            button.style.fontFamily = 'Noto Serif KR';
          	button.style.fontWeight = 'bold';
          				
            
            // 초기 스타일
            button.classList.add('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
            
            button.textContent = topic.title;

            button.addEventListener('click', () =&gt; {
                displayTopic(topic);
            });

            topicsContainer.appendChild(button);
        });

        // 5. 초기 표시 (페이지 로드 시 첫 번째 주제를 자동으로 표시)
        if (topics.length &gt; 0) {
            displayTopic(topics[0]);
        }
        
        // 6. 모달 닫기 이벤트 리스너 추가 (인라인 onclick 대신 스크립트에서 처리)
        
        // A. X 버튼 클릭 시 닫기
        closeModalButton.addEventListener('click', closeModal);

        // B. 모달 배경 클릭 시 닫기
        imageModal.addEventListener('click', closeModal);
        
        // C. 모달 내부 콘텐츠 클릭 시 이벤트 전파 중단 (배경 클릭으로 간주되는 것을 방지)
        modalContentContainer.addEventListener('click', (event) =&gt; {
            event.stopPropagation();
        });
    &lt;/script&gt;</description>
      <author>UnityBeginner</author>
      <guid isPermaLink="true">https://unitybeginner.tistory.com/533</guid>
      <comments>https://unitybeginner.tistory.com/533#entry533comment</comments>
      <pubDate>Thu, 30 Oct 2025 17:01:58 +0900</pubDate>
    </item>
    <item>
      <title>방탈출 시뮬레이터 2 (Escape Simulator 2 Token) 잃어버린 우주선 미지 속으로 토큰 위치</title>
      <link>https://unitybeginner.tistory.com/532</link>
      <description>&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;방탈출 시뮬레이터 2 잃어버린 우주선 (미지 속으로) 토큰 위치&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;!-- Tailwind CSS CDN 로드 --&gt;
&lt;script src=&quot;https://cdn.tailwindcss.com&quot;&gt;&lt;/script&gt;
&lt;script&gt;
        // Tailwind 설정을 커스터마이징합니다. (폰트 설정)
        tailwind.config = {
            theme: {
                extend: {
                    fontFamily: {
                        sans: ['Inter', 'sans-serif'],
                    },
                }
            }
        }
    &lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 메인 컨테이너: 좌측(버튼)과 우측(내용)을 포함하는 2분할 레이아웃 --&gt;
&lt;div class=&quot;w-full max-w-4xl bg-white shadow-2xl rounded-xl p-6 md:p-8 border border-gray-100 flex flex-col md:flex-row gap-6&quot;&gt;
&lt;h1 class=&quot;text-3xl font-extrabold text-gray-800 text-center md:hidden mb-4&quot;&gt;정보 목록&lt;/h1&gt;
&lt;!-- 좌측 영역: 주제 버튼 목록 (1/3 너비) --&gt;
&lt;div id=&quot;topicsContainer&quot; class=&quot;w-full md:w-1/3 md:pr-4 md:border-r border-gray-200 space-y-3 p-2 bg-gray-50 rounded-lg shadow-inner md:shadow-none md:bg-white&quot;&gt;
&lt;h2 style=&quot;font-family: 'Noto Serif KR';&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;토큰 목록 (Click)&lt;/b&gt;&lt;/h2&gt;
&lt;!-- JavaScript가 여기에 버튼을 생성합니다 --&gt;&lt;/div&gt;
&lt;!-- 우측 영역: 선택된 주제의 정보 표시 (2/3 너비) --&gt;
&lt;div id=&quot;contentDisplay&quot; class=&quot;w-full md:w-2/3 pl-0 md:pl-6&quot;&gt;&lt;!-- JavaScript가 여기에 내용을 표시합니다 --&gt;
&lt;div class=&quot;text-center text-gray-500 py-10&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측 목록에서 주제를 선택해 주세요.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 이미지 뷰어 모달 (Lightbox) --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 모든 클릭 이벤트는 JavaScript에서 처리됩니다. --&gt;
&lt;div id=&quot;imageModal&quot; class=&quot;fixed inset-0 z-50 bg-black bg-opacity-90 flex items-center justify-center hidden transition-opacity duration-300 opacity-0&quot;&gt;&lt;!-- 모달 내부 콘텐츠 (이 부분 클릭은 닫히지 않도록 JavaScript에서 event.stopPropagation() 처리) --&gt;
&lt;div id=&quot;modalContentContainer&quot; class=&quot;relative max-w-4xl max-h-full p-4&quot;&gt;&lt;!-- 닫기 버튼 (X 표시) --&gt; &lt;button id=&quot;closeModalButton&quot; class=&quot;absolute top-4 right-4 text-white text-3xl font-extrabold p-2 rounded-full bg-gray-800 bg-opacity-50 hover:bg-opacity-80 transition cursor-pointer z-50&quot;&gt; &amp;times; &lt;/button&gt; &lt;!-- 표시될 이미지 --&gt; &lt;img id=&quot;modalImage&quot; class=&quot;max-w-full max-h-[90vh] object-contain rounded-lg shadow-2xl transition-transform duration-300 transform scale-95 opacity-0&quot; alt=&quot;확대된 이미지&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;hiddenArea&quot; class=&quot;hidden p-4 bg-yellow-100 text-yellow-800 border border-yellow-300 rounded-lg max-w-lg mx-auto mt-6&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wrDaE/dJMcafESvYD/1lALDB5zfmSRQZbuXlZke1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wrDaE/dJMcafESvYD/1lALDB5zfmSRQZbuXlZke1/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰1.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wrDaE/dJMcafESvYD/1lALDB5zfmSRQZbuXlZke1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwrDaE%2FdJMcafESvYD%2F1lALDB5zfmSRQZbuXlZke1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qcGWC/dJMcaacu1XM/0jQTF7lt2xjXiw9gYGfxH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qcGWC/dJMcaacu1XM/0jQTF7lt2xjXiw9gYGfxH1/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰2.png&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qcGWC/dJMcaacu1XM/0jQTF7lt2xjXiw9gYGfxH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqcGWC%2FdJMcaacu1XM%2F0jQTF7lt2xjXiw9gYGfxH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DEmfK/dJMcaesq1SG/TQmOz7VHUvC6nbmQxKuln1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DEmfK/dJMcaesq1SG/TQmOz7VHUvC6nbmQxKuln1/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰3.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DEmfK/dJMcaesq1SG/TQmOz7VHUvC6nbmQxKuln1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDEmfK%2FdJMcaesq1SG%2FTQmOz7VHUvC6nbmQxKuln1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhCXHf/dJMcafESvYB/iYPElF7koYtMunPUoCU050/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhCXHf/dJMcafESvYB/iYPElF7koYtMunPUoCU050/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰4.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhCXHf/dJMcafESvYB/iYPElF7koYtMunPUoCU050/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhCXHf%2FdJMcafESvYB%2FiYPElF7koYtMunPUoCU050%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D6tZt/dJMcaboWvrv/xNlBtyYsozeiU1HeVbJ0C1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D6tZt/dJMcaboWvrv/xNlBtyYsozeiU1HeVbJ0C1/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰5.png&quot; style=&quot;width: 32.5581%; margin-top: 10px;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D6tZt/dJMcaboWvrv/xNlBtyYsozeiU1HeVbJ0C1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD6tZt%2FdJMcaboWvrv%2FxNlBtyYsozeiU1HeVbJ0C1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4dNZ2/dJMcafESvYC/ehcaFZ018sELaiqbpIMF2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4dNZ2/dJMcafESvYC/ehcaFZ018sELaiqbpIMF2K/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰6.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4dNZ2/dJMcafESvYC/ehcaFZ018sELaiqbpIMF2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4dNZ2%2FdJMcafESvYC%2FehcaFZ018sELaiqbpIMF2K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uUEjE/dJMcaeeTR6x/A14Bi95BtWKOVhFkBoXu90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uUEjE/dJMcaeeTR6x/A14Bi95BtWKOVhFkBoXu90/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰7.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uUEjE/dJMcaeeTR6x/A14Bi95BtWKOVhFkBoXu90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuUEjE%2FdJMcaeeTR6x%2FA14Bi95BtWKOVhFkBoXu90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZnMeC/dJMcahQelc8/wb7yctcBtlkFP4wczJGSCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZnMeC/dJMcahQelc8/wb7yctcBtlkFP4wczJGSCK/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰8.png&quot; style=&quot;width: 32.5581%; margin-top: 10px;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZnMeC/dJMcahQelc8/wb7yctcBtlkFP4wczJGSCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZnMeC%2FdJMcahQelc8%2Fwb7yctcBtlkFP4wczJGSCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;!-- 9. Ad Element (페이지 로드 시 딱 한 번 생성되고, 필요할 때 위치만 이동됩니다.) --&gt;
&lt;div id=&quot;singleAdElement&quot; class=&quot;mt-8 mb-4 hidden&quot;&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7343105306726381&quot;
     crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;
&lt;!-- CENTER_ADAREA_500X450 --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:500px;height:450px&quot;
     data-ad-client=&quot;ca-pub-7343105306726381&quot;
     data-ad-slot=&quot;2791417549&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;/div&gt;
&lt;script&gt;
        // JavaScript 코드
        
        // 1. 표시할 정보 데이터 정의
        const topics = [
              {
                id: 1,
                title: &quot;토큰 1&quot;,
                header: &quot;잃어버린 우주선 (미지 속으로) 토큰 1&quot;,
                description: &quot;휴지통 근처 바닥 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FwrDaE%2FdJMcafESvYD%2FAAAAAAAAAAAAAAAAAAAAAGs3rs0RF5GmQREpKfyhUYdgDyygWF7UEkoQ8lerGOZT%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DiiY7pWDURqCAyhdwvI%252Bqfgfsr54%253D&quot;
            },
          {
                id: 2,
                title: &quot;토큰 2&quot;,
                header: &quot;잃어버린 우주선 (미지 속으로) 토큰 2&quot;,
                description: &quot;화분 근처 벽면 틈 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FqcGWC%2FdJMcaacu1XM%2FAAAAAAAAAAAAAAAAAAAAAJ5Er8gRpJEqsM8Y0Ni14NlHAHJE-VzI1ylYjoldl-1O%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DrjP5ohoXnt%252B3%252BUzGyctcKltx%252BjY%253D&quot;
            },
          
          {
                id: 3,
                title: &quot;토큰 3&quot;,
                header: &quot;잃어버린 우주선 (미지 속으로) 토큰 3&quot;,
                description: &quot;화분 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FDEmfK%2FdJMcaesq1SG%2FAAAAAAAAAAAAAAAAAAAAAHWgNI7Iek7FcZ_HM2ZH2h-AGC3zJFkP0RQojJhg_0xZ%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3D6pN2BsK8%252BHGMbDkGo%252BSW0IlTJ%252B0%253D&quot;
            },
          {
                id: 4,
                title: &quot;토큰 4&quot;,
                header: &quot;잃어버린 우주선 (미지 속으로) 토큰 4&quot;,
                description: &quot;구조물 바닥 틈새 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbhCXHf%2FdJMcafESvYB%2FAAAAAAAAAAAAAAAAAAAAAOseImkjeYLqxAaAixFQh-tqQqhJ8QCidFeOB7EKP_xf%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DJqed7cNj1lGSlqP47MThdBwAOBM%253D&quot;
            },
          {
                id: 5,
                title: &quot;토큰 5&quot;,
                header: &quot;잃어버린 우주선 (미지 속으로) 토큰 5&quot;,
                description: &quot;거울유물 사용 ÷ 모양 바닥 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FD6tZt%2FdJMcaboWvrv%2FAAAAAAAAAAAAAAAAAAAAAI3cGQryod8yAPtYbL9dLe1P-M3PZ_pT8Sl6Kf_S5b41%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DP8YuPGuKu%252FYwlKR%252BTOvz33z4Kwg%253D&quot;
            },
          {
                id: 6,
                title: &quot;토큰 6&quot;,
                header: &quot;잃어버린 우주선 (미지 속으로) 토큰 6&quot;,
                description: &quot;쓰레기통 우측 거울사용 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb4dNZ2%2FdJMcafESvYC%2FAAAAAAAAAAAAAAAAAAAAAGsMmJmaR2Cxu4mOZbENlf5l0jhtMyLvT2Bp9yaV3M9J%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DnkgibR55b%252F2dc2DBmWAt%252BTh%252F1wg%253D&quot;
            },
     
          {
                id: 7,
                title: &quot;토큰 7&quot;,
                header: &quot;잃어버린 우주선 (미지 속으로) 토큰 7&quot;,
                description: &quot;거울유물 사용 ㅣ: 모양 뒷 부분 탐색 (※ 정면 보고 먹어야 먹어짐) &quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FuUEjE%2FdJMcaeeTR6x%2FAAAAAAAAAAAAAAAAAAAAAPGgzsoIDR-YAJ1qIDZ9uSAd3c5wb_ZALkNGF-4Z_1VX%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DuldlVYnWsdN1tflBrXfeEWaIa60%253D&quot;
            },
          {
                id: 8,
                title: &quot;토큰 8&quot;,
                header: &quot;잃어버린 우주선 (미지 속으로) 토큰 8&quot;,
                description: &quot;거울유물 사용 천장 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbZnMeC%2FdJMcahQelc8%2FAAAAAAAAAAAAAAAAAAAAAPseZzueopKE2Ltd0Dw8ku3xNBU0kt9WnHjB-P6HrYwX%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DzGCWKYO29UY729NuRzEZaFlQ54o%253D&quot;
            }
        ];

        const topicsContainer = document.getElementById('topicsContainer');
        const contentDisplay = document.getElementById('contentDisplay');

        // 모달 관련 요소 정의
        const imageModal = document.getElementById('imageModal');
        const modalImage = document.getElementById('modalImage');
        // 새로 추가된 요소 및 ID
        const closeModalButton = document.getElementById('closeModalButton');
        const modalContentContainer = document.getElementById('modalContentContainer');

        // [수정된 부분] 광고 요소를 전역적으로 한 번만 가져옵니다.
        const singleAdElement = document.getElementById('singleAdElement');
        const mainContainer = document.querySelector('.w-full.max-w-4xl');


        /**
         * 이미지 뷰어 모달을 열고 이미지를 설정합니다.
         * @param {string} imageUrl - 모달에 표시할 이미지 URL
         * @param {string} imageTitle - 이미지 대체 텍스트
         */
        function openModal(imageUrl, imageTitle) {
            imageModal.classList.remove('hidden');
            // 부드러운 전환을 위해 opacity를 나중에 추가합니다.
            setTimeout(() =&gt; {
                imageModal.classList.remove('opacity-0');
                // 이미지 로드 및 애니메이션 시작
                modalImage.src = imageUrl;
                modalImage.alt = imageTitle;
                modalImage.classList.remove('scale-95', 'opacity-0');
                modalImage.classList.add('scale-100', 'opacity-100');
            }, 10);
        }

        /**
         * 이미지 뷰어 모달을 닫습니다.
         */
        function closeModal() {
            // 이미지 애니메이션 역순 적용
            modalImage.classList.remove('scale-100', 'opacity-100');
            modalImage.classList.add('scale-95', 'opacity-0');

            // 배경 투명도 감소
            imageModal.classList.add('opacity-0');

            // 닫는 애니메이션 후 숨김 처리
            setTimeout(() =&gt; {
                imageModal.classList.add('hidden');
                modalImage.src = &quot;&quot;; // 이미지 소스 초기화
            }, 300); // CSS transition duration에 맞춤
        }
        
        /**
         * 선택된 주제의 내용을 우측 영역에 표시하고 버튼 스타일을 업데이트합니다.
         * @param {object} topic - 표시할 주제 데이터 객체
         */
        function displayTopic(topic) {
            
            // [수정된 부분] 1. contentDisplay 내용을 교체하기 전에, 광고 요소를 원래 위치로 안전하게 이동시킵니다.
            const adPlaceholderInPreviousContent = document.querySelector('#contentDisplay #adPlaceholder');
            
            if (singleAdElement &amp;&amp; adPlaceholderInPreviousContent &amp;&amp; adPlaceholderInPreviousContent.contains(singleAdElement)) {
                // singleAdElement를 원래의 정적 위치 (메인 컨테이너 다음)로 이동시키고 숨깁니다.
                // 이렇게 해야 innerHTML 교체 시 요소가 DOM에서 'detached' 상태가 되는 것을 방지합니다.
                if (mainContainer) {
                    mainContainer.after(singleAdElement);
                    singleAdElement.classList.add('hidden');
                }
            }


            // 2. 우측 내용 영역 업데이트
            contentDisplay.innerHTML = `
                &lt;div id=&quot;infoCard&quot; class=&quot;bg-white p-2 content-fade-in&quot;&gt;
                    &lt;h2 style=&quot;font-family: 'Noto Serif KR';&quot; class=&quot;text-3xl font-bold text-indigo-700 mb-4&quot;&gt;&lt;b&gt;${topic.header}&lt;/b&gt;&lt;/h2&gt;
                    &lt;p style=&quot;font-family: 'Noto Serif KR';&quot; class=&quot;text-gray-700 mb-6 leading-relaxed border-l-4 border-indigo-400 pl-3&quot;&gt;&lt;b&gt;${topic.description}&lt;/b&gt;&lt;/p&gt;&lt;br/&gt;
                    &lt;img id=&quot;topicImage&quot; 
                         src=&quot;${topic.imageUrl}&quot; 
                         onerror=&quot;this.onerror=null;this.src='https://placehold.co/600x300/4f46e5/ffffff?text=이미지+로드+실패';&quot;
                         alt=&quot;${topic.title} 관련 예시 이미지&quot; 
                         class=&quot;w-full rounded-lg shadow-lg border border-indigo-200 cursor-pointer hover:shadow-xl transition-shadow&quot;
                    &gt;
                    
                    &lt;!-- 광고 삽입을 위한 플레이스홀더 (여기에 실제 광고 요소가 이동됩니다) --&gt;
                    &lt;div id=&quot;adPlaceholder&quot; class=&quot;ad-placeholder-container&quot;&gt;&lt;/div&gt;

                &lt;/div&gt;
            `;

            // 2.1. 새로 생성된 이미지 요소에 이벤트 리스너 부착
            const displayedImage = document.getElementById('topicImage');
            if (displayedImage) {
                displayedImage.addEventListener('click', () =&gt; {
                    openModal(topic.imageUrl, topic.title + &quot; 확대 이미지&quot;);
                });
            }
            
            // 2.2. 광고 요소를 새로 생성된 플레이스홀더로 이동 (요청 1회만 유지)
            const adPlaceholder = document.getElementById('adPlaceholder');
            
            if (adPlaceholder &amp;&amp; singleAdElement) {
                // singleAdElement를 placeholder의 자식으로 이동
                adPlaceholder.appendChild(singleAdElement);
                // 숨겨져 있던 adElement를 보이도록 설정
                singleAdElement.classList.remove('hidden');
            }

            // 3. 버튼 스타일 업데이트 (활성화/비활성화)
            document.querySelectorAll('.topic-button').forEach(btn =&gt; {
                btn.classList.remove('bg-indigo-600', 'text-white', 'shadow-md', 'scale-105');
                btn.classList.add('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
            });

            // 클릭된 버튼에 활성화 스타일 적용
            const activeBtn = document.getElementById(`button-${topic.id}`);
            if (activeBtn) {
                activeBtn.classList.remove('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
                activeBtn.classList.add('bg-indigo-600', 'text-white', 'shadow-md', 'scale-105');
            }
        }

        // 4. 버튼 생성 및 이벤트 리스너 부착
        topics.forEach(topic =&gt; {
            const button = document.createElement('button');
            button.id = `button-${topic.id}`;
          button.className = 'topic-button w-full text-left py-3 px-4 rounded-lg font-medium transition duration-200 ease-in-out transform';	
            button.style.fontFamily = 'Noto Serif KR';
          	button.style.fontWeight = 'bold';
          				
            
            // 초기 스타일
            button.classList.add('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
            
            button.textContent = topic.title;

            button.addEventListener('click', () =&gt; {
                displayTopic(topic);
            });

            topicsContainer.appendChild(button);
        });

        // 5. 초기 표시 (페이지 로드 시 첫 번째 주제를 자동으로 표시)
        if (topics.length &gt; 0) {
            displayTopic(topics[0]);
        }
        
        // 6. 모달 닫기 이벤트 리스너 추가 (인라인 onclick 대신 스크립트에서 처리)
        
        // A. X 버튼 클릭 시 닫기
        closeModalButton.addEventListener('click', closeModal);

        // B. 모달 배경 클릭 시 닫기
        imageModal.addEventListener('click', closeModal);
        
        // C. 모달 내부 콘텐츠 클릭 시 이벤트 전파 중단 (배경 클릭으로 간주되는 것을 방지)
        modalContentContainer.addEventListener('click', (event) =&gt; {
            event.stopPropagation();
        });
    &lt;/script&gt;</description>
      <category>스팀게임</category>
      <author>UnityBeginner</author>
      <guid isPermaLink="true">https://unitybeginner.tistory.com/532</guid>
      <comments>https://unitybeginner.tistory.com/532#entry532comment</comments>
      <pubDate>Wed, 29 Oct 2025 23:48:47 +0900</pubDate>
    </item>
    <item>
      <title>방탈출 시뮬레이터 2 (Escape Simulator 2 Token) 잃어버린 우주선 화물칸 토큰 위치</title>
      <link>https://unitybeginner.tistory.com/531</link>
      <description>&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;방탈출 시뮬레이터 2 잃어버린 우주선 (화물칸) 토큰 위치&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;!-- Tailwind CSS CDN 로드 --&gt;
&lt;script src=&quot;https://cdn.tailwindcss.com&quot;&gt;&lt;/script&gt;
&lt;script&gt;
        // Tailwind 설정을 커스터마이징합니다. (폰트 설정)
        tailwind.config = {
            theme: {
                extend: {
                    fontFamily: {
                        sans: ['Inter', 'sans-serif'],
                    },
                }
            }
        }
    &lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 메인 컨테이너: 좌측(버튼)과 우측(내용)을 포함하는 2분할 레이아웃 --&gt;
&lt;div class=&quot;w-full max-w-4xl bg-white shadow-2xl rounded-xl p-6 md:p-8 border border-gray-100 flex flex-col md:flex-row gap-6&quot;&gt;
&lt;h1 class=&quot;text-3xl font-extrabold text-gray-800 text-center md:hidden mb-4&quot;&gt;정보 목록&lt;/h1&gt;
&lt;!-- 좌측 영역: 주제 버튼 목록 (1/3 너비) --&gt;
&lt;div id=&quot;topicsContainer&quot; class=&quot;w-full md:w-1/3 md:pr-4 md:border-r border-gray-200 space-y-3 p-2 bg-gray-50 rounded-lg shadow-inner md:shadow-none md:bg-white&quot;&gt;
&lt;h2 style=&quot;font-family: 'Noto Serif KR';&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;토큰 목록 (Click)&lt;/b&gt;&lt;/h2&gt;
&lt;!-- JavaScript가 여기에 버튼을 생성합니다 --&gt;&lt;/div&gt;
&lt;!-- 우측 영역: 선택된 주제의 정보 표시 (2/3 너비) --&gt;
&lt;div id=&quot;contentDisplay&quot; class=&quot;w-full md:w-2/3 pl-0 md:pl-6&quot;&gt;&lt;!-- JavaScript가 여기에 내용을 표시합니다 --&gt;
&lt;div class=&quot;text-center text-gray-500 py-10&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측 목록에서 주제를 선택해 주세요.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 이미지 뷰어 모달 (Lightbox) --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 모든 클릭 이벤트는 JavaScript에서 처리됩니다. --&gt;
&lt;div id=&quot;imageModal&quot; class=&quot;fixed inset-0 z-50 bg-black bg-opacity-90 flex items-center justify-center hidden transition-opacity duration-300 opacity-0&quot;&gt;&lt;!-- 모달 내부 콘텐츠 (이 부분 클릭은 닫히지 않도록 JavaScript에서 event.stopPropagation() 처리) --&gt;
&lt;div id=&quot;modalContentContainer&quot; class=&quot;relative max-w-4xl max-h-full p-4&quot;&gt;&lt;!-- 닫기 버튼 (X 표시) --&gt; &lt;button id=&quot;closeModalButton&quot; class=&quot;absolute top-4 right-4 text-white text-3xl font-extrabold p-2 rounded-full bg-gray-800 bg-opacity-50 hover:bg-opacity-80 transition cursor-pointer z-50&quot;&gt; &amp;times; &lt;/button&gt; &lt;!-- 표시될 이미지 --&gt; &lt;img id=&quot;modalImage&quot; class=&quot;max-w-full max-h-[90vh] object-contain rounded-lg shadow-2xl transition-transform duration-300 transform scale-95 opacity-0&quot; alt=&quot;확대된 이미지&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;hiddenArea&quot; class=&quot;hidden p-4 bg-yellow-100 text-yellow-800 border border-yellow-300 rounded-lg max-w-lg mx-auto mt-6&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rq5nt/dJMcac2scWT/yeWRHLtTsMlZ7nNPG65cJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rq5nt/dJMcac2scWT/yeWRHLtTsMlZ7nNPG65cJ0/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰1.png&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rq5nt/dJMcac2scWT/yeWRHLtTsMlZ7nNPG65cJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frq5nt%2FdJMcac2scWT%2FyeWRHLtTsMlZ7nNPG65cJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S6wko/dJMcaaKkOYA/ehYq4bTp6dORgLX5HrCM31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S6wko/dJMcaaKkOYA/ehYq4bTp6dORgLX5HrCM31/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰2.png&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S6wko/dJMcaaKkOYA/ehYq4bTp6dORgLX5HrCM31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS6wko%2FdJMcaaKkOYA%2FehYq4bTp6dORgLX5HrCM31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coR73F/dJMcac2scWR/vJu03awK5w9vWakY1Z1XX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coR73F/dJMcac2scWR/vJu03awK5w9vWakY1Z1XX1/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰3.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coR73F/dJMcac2scWR/vJu03awK5w9vWakY1Z1XX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoR73F%2FdJMcac2scWR%2FvJu03awK5w9vWakY1Z1XX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXSSUM/dJMcac2scWQ/xHOczvoQRjSwAocT7OZcf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXSSUM/dJMcac2scWQ/xHOczvoQRjSwAocT7OZcf0/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰4.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXSSUM/dJMcac2scWQ/xHOczvoQRjSwAocT7OZcf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXSSUM%2FdJMcac2scWQ%2FxHOczvoQRjSwAocT7OZcf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z5jDt/dJMcaaDzdA1/dhk5mDTQdgRSN5z2vlnON1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z5jDt/dJMcaaDzdA1/dhk5mDTQdgRSN5z2vlnON1/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰5.png&quot; style=&quot;width: 32.5581%; margin-top: 10px;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z5jDt/dJMcaaDzdA1/dhk5mDTQdgRSN5z2vlnON1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz5jDt%2FdJMcaaDzdA1%2Fdhk5mDTQdgRSN5z2vlnON1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oV6we/dJMcac2scWS/uasvt6lFPl0kTksbmoAqH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oV6we/dJMcac2scWS/uasvt6lFPl0kTksbmoAqH0/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰6.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oV6we/dJMcac2scWS/uasvt6lFPl0kTksbmoAqH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoV6we%2FdJMcac2scWS%2Fuasvt6lFPl0kTksbmoAqH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v0GAG/dJMcaj1zXxJ/w1VLkza34syXnQgclkgQs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v0GAG/dJMcaj1zXxJ/w1VLkza34syXnQgclkgQs0/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰7.png&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v0GAG/dJMcaj1zXxJ/w1VLkza34syXnQgclkgQs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv0GAG%2FdJMcaj1zXxJ%2Fw1VLkza34syXnQgclkgQs0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bexcmq/dJMcaaKkOYz/0Ob1IvVTiHbEQYL9UOXQx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bexcmq/dJMcaaKkOYz/0Ob1IvVTiHbEQYL9UOXQx1/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; data-filename=&quot;토큰8.png&quot; style=&quot;width: 32.5581%; margin-top: 10px;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bexcmq/dJMcaaKkOYz/0Ob1IvVTiHbEQYL9UOXQx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbexcmq%2FdJMcaaKkOYz%2F0Ob1IvVTiHbEQYL9UOXQx1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;!-- 9. Ad Element (페이지 로드 시 딱 한 번 생성되고, 필요할 때 위치만 이동됩니다.) --&gt;
&lt;div id=&quot;singleAdElement&quot; class=&quot;mt-8 mb-4 hidden&quot;&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7343105306726381&quot;
     crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;
&lt;!-- CENTER_ADAREA_500X450 --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:500px;height:450px&quot;
     data-ad-client=&quot;ca-pub-7343105306726381&quot;
     data-ad-slot=&quot;2791417549&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;/div&gt;
&lt;script&gt;
        // JavaScript 코드
        
        // 1. 표시할 정보 데이터 정의
        const topics = [
              {
                id: 1,
                title: &quot;토큰 1&quot;,
                header: &quot;잃어버린 우주선 (화물칸) 토큰 1&quot;,
                description: &quot;캐비넷 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Frq5nt%2FdJMcac2scWT%2FAAAAAAAAAAAAAAAAAAAAANU8etlXSOnUrLWlswPqYyLI1qr_BSgIN43kSOpgR04T%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DpzH9qyGDXmJmyFreoY9HCOdkB34%253D&quot;
            },
          {
                id: 2,
                title: &quot;토큰 2&quot;,
                header: &quot;잃어버린 우주선 (화물칸) 토큰 2&quot;,
                description: &quot;823번 사물함 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FS6wko%2FdJMcaaKkOYA%2FAAAAAAAAAAAAAAAAAAAAAIEsIbQrjhML8YVWq6xq6wex-mL7tyrHGt9Ob9kui-RU%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DFvIJE24FMYPU3H%252B4wnMXHjyPgxw%253D&quot;
            },
          
          {
                id: 3,
                title: &quot;토큰 3&quot;,
                header: &quot;잃어버린 우주선 (화물칸) 토큰 3&quot;,
                description: &quot;케이블선 틈 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcoR73F%2FdJMcac2scWR%2FAAAAAAAAAAAAAAAAAAAAAClz6nVW8jowBODEqX17DSF2i1Lc7xtF31PJOdDhrzFZ%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DMClTRZl0Lrfzm%252F4PYBtanweB3ok%253D&quot;
            },
          {
                id: 4,
                title: &quot;토큰 4&quot;,
                header: &quot;잃어버린 우주선 (화물칸) 토큰 4&quot;,
                description: &quot;화물차방 행동 수칙 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbXSSUM%2FdJMcac2scWQ%2FAAAAAAAAAAAAAAAAAAAAAKOnSxi01fEe-h6jaigyiWiZTZGxsN_fUiqgNI6FLHKx%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DAm5TMJ1FPYgy1IeAzEDS6oI5eGY%253D&quot;
            },
          {
                id: 5,
                title: &quot;토큰 5&quot;,
                header: &quot;잃어버린 우주선 (화물칸) 토큰 5&quot;,
                description: &quot;제어실 모자 아래 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fz5jDt%2FdJMcaaDzdA1%2FAAAAAAAAAAAAAAAAAAAAAASaqk3YRf7OfKADy1koZy1lW0qDP5y0cMDnl0q6D2nS%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DgfDUhReizK8c4b2odowbSZQzL6s%253D&quot;
            },
          {
                id: 6,
                title: &quot;토큰 6&quot;,
                header: &quot;잃어버린 우주선 (화물칸) 토큰 6&quot;,
                description: &quot;제어실 소화기 거치대 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FoV6we%2FdJMcac2scWS%2FAAAAAAAAAAAAAAAAAAAAAIuMddad7wSVql758MrUEVprrmqIG8bGsgPdU4pmV4Pd%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3D0Mzlkuy47fLMlvbPC1RyQuXjIZ8%253D&quot;
            },
     
          {
                id: 7,
                title: &quot;토큰 7&quot;,
                header: &quot;잃어버린 우주선 (화물칸) 토큰 7&quot;,
                description: &quot;함교 외부 바닥 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fv0GAG%2FdJMcaj1zXxJ%2FAAAAAAAAAAAAAAAAAAAAALOuHIg-53Z1oEL1YZdBDHLssD0_zRZt7aoAR8vfhe4M%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DPgHkaoWRGi7%252FuAkly%252FY4J3gHG8E%253D&quot;
            },
          {
                id: 8,
                title: &quot;토큰 8&quot;,
                header: &quot;잃어버린 우주선 (화물칸) 토큰 8&quot;,
                description: &quot;사물함 위에 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fbexcmq%2FdJMcaaKkOYz%2FAAAAAAAAAAAAAAAAAAAAAOBgeIYyU5TbURB8pxWiTVfyBhw4-uBmHBYOeUCV7ubP%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DKWyQev0z%252BsWJo2WamJPAqHic37k%253D&quot;
            }
        ];

        const topicsContainer = document.getElementById('topicsContainer');
        const contentDisplay = document.getElementById('contentDisplay');

        // 모달 관련 요소 정의
        const imageModal = document.getElementById('imageModal');
        const modalImage = document.getElementById('modalImage');
        // 새로 추가된 요소 및 ID
        const closeModalButton = document.getElementById('closeModalButton');
        const modalContentContainer = document.getElementById('modalContentContainer');

        // [수정된 부분] 광고 요소를 전역적으로 한 번만 가져옵니다.
        const singleAdElement = document.getElementById('singleAdElement');
        const mainContainer = document.querySelector('.w-full.max-w-4xl');


        /**
         * 이미지 뷰어 모달을 열고 이미지를 설정합니다.
         * @param {string} imageUrl - 모달에 표시할 이미지 URL
         * @param {string} imageTitle - 이미지 대체 텍스트
         */
        function openModal(imageUrl, imageTitle) {
            imageModal.classList.remove('hidden');
            // 부드러운 전환을 위해 opacity를 나중에 추가합니다.
            setTimeout(() =&gt; {
                imageModal.classList.remove('opacity-0');
                // 이미지 로드 및 애니메이션 시작
                modalImage.src = imageUrl;
                modalImage.alt = imageTitle;
                modalImage.classList.remove('scale-95', 'opacity-0');
                modalImage.classList.add('scale-100', 'opacity-100');
            }, 10);
        }

        /**
         * 이미지 뷰어 모달을 닫습니다.
         */
        function closeModal() {
            // 이미지 애니메이션 역순 적용
            modalImage.classList.remove('scale-100', 'opacity-100');
            modalImage.classList.add('scale-95', 'opacity-0');

            // 배경 투명도 감소
            imageModal.classList.add('opacity-0');

            // 닫는 애니메이션 후 숨김 처리
            setTimeout(() =&gt; {
                imageModal.classList.add('hidden');
                modalImage.src = &quot;&quot;; // 이미지 소스 초기화
            }, 300); // CSS transition duration에 맞춤
        }
        
        /**
         * 선택된 주제의 내용을 우측 영역에 표시하고 버튼 스타일을 업데이트합니다.
         * @param {object} topic - 표시할 주제 데이터 객체
         */
        function displayTopic(topic) {
            
            // [수정된 부분] 1. contentDisplay 내용을 교체하기 전에, 광고 요소를 원래 위치로 안전하게 이동시킵니다.
            const adPlaceholderInPreviousContent = document.querySelector('#contentDisplay #adPlaceholder');
            
            if (singleAdElement &amp;&amp; adPlaceholderInPreviousContent &amp;&amp; adPlaceholderInPreviousContent.contains(singleAdElement)) {
                // singleAdElement를 원래의 정적 위치 (메인 컨테이너 다음)로 이동시키고 숨깁니다.
                // 이렇게 해야 innerHTML 교체 시 요소가 DOM에서 'detached' 상태가 되는 것을 방지합니다.
                if (mainContainer) {
                    mainContainer.after(singleAdElement);
                    singleAdElement.classList.add('hidden');
                }
            }


            // 2. 우측 내용 영역 업데이트
            contentDisplay.innerHTML = `
                &lt;div id=&quot;infoCard&quot; class=&quot;bg-white p-2 content-fade-in&quot;&gt;
                    &lt;h2 style=&quot;font-family: 'Noto Serif KR';&quot; class=&quot;text-3xl font-bold text-indigo-700 mb-4&quot;&gt;&lt;b&gt;${topic.header}&lt;/b&gt;&lt;/h2&gt;
                    &lt;p style=&quot;font-family: 'Noto Serif KR';&quot; class=&quot;text-gray-700 mb-6 leading-relaxed border-l-4 border-indigo-400 pl-3&quot;&gt;&lt;b&gt;${topic.description}&lt;/b&gt;&lt;/p&gt;&lt;br/&gt;
                    &lt;img id=&quot;topicImage&quot; 
                         src=&quot;${topic.imageUrl}&quot; 
                         onerror=&quot;this.onerror=null;this.src='https://placehold.co/600x300/4f46e5/ffffff?text=이미지+로드+실패';&quot;
                         alt=&quot;${topic.title} 관련 예시 이미지&quot; 
                         class=&quot;w-full rounded-lg shadow-lg border border-indigo-200 cursor-pointer hover:shadow-xl transition-shadow&quot;
                    &gt;
                    
                    &lt;!-- 광고 삽입을 위한 플레이스홀더 (여기에 실제 광고 요소가 이동됩니다) --&gt;
                    &lt;div id=&quot;adPlaceholder&quot; class=&quot;ad-placeholder-container&quot;&gt;&lt;/div&gt;

                &lt;/div&gt;
            `;

            // 2.1. 새로 생성된 이미지 요소에 이벤트 리스너 부착
            const displayedImage = document.getElementById('topicImage');
            if (displayedImage) {
                displayedImage.addEventListener('click', () =&gt; {
                    openModal(topic.imageUrl, topic.title + &quot; 확대 이미지&quot;);
                });
            }
            
            // 2.2. 광고 요소를 새로 생성된 플레이스홀더로 이동 (요청 1회만 유지)
            const adPlaceholder = document.getElementById('adPlaceholder');
            
            if (adPlaceholder &amp;&amp; singleAdElement) {
                // singleAdElement를 placeholder의 자식으로 이동
                adPlaceholder.appendChild(singleAdElement);
                // 숨겨져 있던 adElement를 보이도록 설정
                singleAdElement.classList.remove('hidden');
            }

            // 3. 버튼 스타일 업데이트 (활성화/비활성화)
            document.querySelectorAll('.topic-button').forEach(btn =&gt; {
                btn.classList.remove('bg-indigo-600', 'text-white', 'shadow-md', 'scale-105');
                btn.classList.add('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
            });

            // 클릭된 버튼에 활성화 스타일 적용
            const activeBtn = document.getElementById(`button-${topic.id}`);
            if (activeBtn) {
                activeBtn.classList.remove('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
                activeBtn.classList.add('bg-indigo-600', 'text-white', 'shadow-md', 'scale-105');
            }
        }

        // 4. 버튼 생성 및 이벤트 리스너 부착
        topics.forEach(topic =&gt; {
            const button = document.createElement('button');
            button.id = `button-${topic.id}`;
          button.className = 'topic-button w-full text-left py-3 px-4 rounded-lg font-medium transition duration-200 ease-in-out transform';	
            button.style.fontFamily = 'Noto Serif KR';
          	button.style.fontWeight = 'bold';
          				
            
            // 초기 스타일
            button.classList.add('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
            
            button.textContent = topic.title;

            button.addEventListener('click', () =&gt; {
                displayTopic(topic);
            });

            topicsContainer.appendChild(button);
        });

        // 5. 초기 표시 (페이지 로드 시 첫 번째 주제를 자동으로 표시)
        if (topics.length &gt; 0) {
            displayTopic(topics[0]);
        }
        
        // 6. 모달 닫기 이벤트 리스너 추가 (인라인 onclick 대신 스크립트에서 처리)
        
        // A. X 버튼 클릭 시 닫기
        closeModalButton.addEventListener('click', closeModal);

        // B. 모달 배경 클릭 시 닫기
        imageModal.addEventListener('click', closeModal);
        
        // C. 모달 내부 콘텐츠 클릭 시 이벤트 전파 중단 (배경 클릭으로 간주되는 것을 방지)
        modalContentContainer.addEventListener('click', (event) =&gt; {
            event.stopPropagation();
        });
    &lt;/script&gt;</description>
      <category>스팀게임</category>
      <author>UnityBeginner</author>
      <guid isPermaLink="true">https://unitybeginner.tistory.com/531</guid>
      <comments>https://unitybeginner.tistory.com/531#entry531comment</comments>
      <pubDate>Wed, 29 Oct 2025 23:41:41 +0900</pubDate>
    </item>
    <item>
      <title>방탈출 시뮬레이터 2 (Escape Simulator 2 Token) 잃어버린 우주선 함교 토큰 위치</title>
      <link>https://unitybeginner.tistory.com/530</link>
      <description>&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;방탈출 시뮬레이터 2 잃어버린 우주선 (함교) 토큰 위치&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;!-- Tailwind CSS CDN 로드 --&gt;
&lt;script src=&quot;https://cdn.tailwindcss.com&quot;&gt;&lt;/script&gt;
&lt;script&gt;
        // Tailwind 설정을 커스터마이징합니다. (폰트 설정)
        tailwind.config = {
            theme: {
                extend: {
                    fontFamily: {
                        sans: ['Inter', 'sans-serif'],
                    },
                }
            }
        }
    &lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 메인 컨테이너: 좌측(버튼)과 우측(내용)을 포함하는 2분할 레이아웃 --&gt;
&lt;div class=&quot;w-full max-w-4xl bg-white shadow-2xl rounded-xl p-6 md:p-8 border border-gray-100 flex flex-col md:flex-row gap-6&quot;&gt;
&lt;h1 class=&quot;text-3xl font-extrabold text-gray-800 text-center md:hidden mb-4&quot;&gt;정보 목록&lt;/h1&gt;
&lt;!-- 좌측 영역: 주제 버튼 목록 (1/3 너비) --&gt;
&lt;div id=&quot;topicsContainer&quot; class=&quot;w-full md:w-1/3 md:pr-4 md:border-r border-gray-200 space-y-3 p-2 bg-gray-50 rounded-lg shadow-inner md:shadow-none md:bg-white&quot;&gt;
&lt;h2 style=&quot;font-family: 'Noto Serif KR';&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;토큰 목록 (Click)&lt;/b&gt;&lt;/h2&gt;
&lt;!-- JavaScript가 여기에 버튼을 생성합니다 --&gt;&lt;/div&gt;
&lt;!-- 우측 영역: 선택된 주제의 정보 표시 (2/3 너비) --&gt;
&lt;div id=&quot;contentDisplay&quot; class=&quot;w-full md:w-2/3 pl-0 md:pl-6&quot;&gt;&lt;!-- JavaScript가 여기에 내용을 표시합니다 --&gt;
&lt;div class=&quot;text-center text-gray-500 py-10&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측 목록에서 주제를 선택해 주세요.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;!-- 이미지 뷰어 모달 (Lightbox) --&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;!-- 모든 클릭 이벤트는 JavaScript에서 처리됩니다. --&gt;
&lt;div id=&quot;imageModal&quot; class=&quot;fixed inset-0 z-50 bg-black bg-opacity-90 flex items-center justify-center hidden transition-opacity duration-300 opacity-0&quot;&gt;&lt;!-- 모달 내부 콘텐츠 (이 부분 클릭은 닫히지 않도록 JavaScript에서 event.stopPropagation() 처리) --&gt;
&lt;div id=&quot;modalContentContainer&quot; class=&quot;relative max-w-4xl max-h-full p-4&quot;&gt;&lt;!-- 닫기 버튼 (X 표시) --&gt; &lt;button id=&quot;closeModalButton&quot; class=&quot;absolute top-4 right-4 text-white text-3xl font-extrabold p-2 rounded-full bg-gray-800 bg-opacity-50 hover:bg-opacity-80 transition cursor-pointer z-50&quot;&gt; &amp;times; &lt;/button&gt; &lt;!-- 표시될 이미지 --&gt; &lt;img id=&quot;modalImage&quot; class=&quot;max-w-full max-h-[90vh] object-contain rounded-lg shadow-2xl transition-transform duration-300 transform scale-95 opacity-0&quot; alt=&quot;확대된 이미지&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;hiddenArea&quot; class=&quot;hidden p-4 bg-yellow-100 text-yellow-800 border border-yellow-300 rounded-lg max-w-lg mx-auto mt-6&quot;&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d0nhti/dJMcabvHTVW/MvUZOAklG4sJxic9hE5P7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d0nhti/dJMcabvHTVW/MvUZOAklG4sJxic9hE5P7K/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;토큰1.png&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d0nhti/dJMcabvHTVW/MvUZOAklG4sJxic9hE5P7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd0nhti%2FdJMcabvHTVW%2FMvUZOAklG4sJxic9hE5P7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lIQ23/dJMcaelFhnD/ZlbaxgqhNxqUkLNi7b8cPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lIQ23/dJMcaelFhnD/ZlbaxgqhNxqUkLNi7b8cPK/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;토큰2.png&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lIQ23/dJMcaelFhnD/ZlbaxgqhNxqUkLNi7b8cPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlIQ23%2FdJMcaelFhnD%2FZlbaxgqhNxqUkLNi7b8cPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WfwDB/dJMcaf5WImB/0CTpexGZxnfrxvRgIb2sK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WfwDB/dJMcaf5WImB/0CTpexGZxnfrxvRgIb2sK1/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;토큰3.png&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WfwDB/dJMcaf5WImB/0CTpexGZxnfrxvRgIb2sK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWfwDB%2FdJMcaf5WImB%2F0CTpexGZxnfrxvRgIb2sK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRWkAT/dJMcagKyeuw/8YuOtkzvVmz9X7rk7SAYX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRWkAT/dJMcagKyeuw/8YuOtkzvVmz9X7rk7SAYX0/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;토큰4.png&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRWkAT/dJMcagKyeuw/8YuOtkzvVmz9X7rk7SAYX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRWkAT%2FdJMcagKyeuw%2F8YuOtkzvVmz9X7rk7SAYX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SO2t5/dJMcabvHTVU/YbrkpKkzOrXd4Sf4u1CJZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SO2t5/dJMcabvHTVU/YbrkpKkzOrXd4Sf4u1CJZk/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;토큰5.png&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.5581%; margin-top: 10px;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SO2t5/dJMcabvHTVU/YbrkpKkzOrXd4Sf4u1CJZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSO2t5%2FdJMcabvHTVU%2FYbrkpKkzOrXd4Sf4u1CJZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfD5MH/dJMcabvHTVV/zkWQYwauzPiKBty2YmDdhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfD5MH/dJMcabvHTVV/zkWQYwauzPiKBty2YmDdhk/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;토큰6.png&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfD5MH/dJMcabvHTVV/zkWQYwauzPiKBty2YmDdhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfD5MH%2FdJMcabvHTVV%2FzkWQYwauzPiKBty2YmDdhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bldPY3/dJMcaaXRXDF/J2hzbQ2AnNDsvCDQd4kZak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bldPY3/dJMcaaXRXDF/J2hzbQ2AnNDsvCDQd4kZak/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;토큰7.png&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.5581%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bldPY3/dJMcaaXRXDF/J2hzbQ2AnNDsvCDQd4kZak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbldPY3%2FdJMcaaXRXDF%2FJ2hzbQ2AnNDsvCDQd4kZak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2Znwh/dJMcagKyeux/ywFTbkjOlVbqkdlp2k8RG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2Znwh/dJMcagKyeux/ywFTbkjOlVbqkdlp2k8RG1/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-filename=&quot;토큰8.png&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.5581%; margin-top: 10px;&quot; data-widthpercent=&quot;33.34&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2Znwh/dJMcagKyeux/ywFTbkjOlVbqkdlp2k8RG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2Znwh%2FdJMcagKyeux%2FywFTbkjOlVbqkdlp2k8RG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/div&gt;
&lt;!-- 9. Ad Element (페이지 로드 시 딱 한 번 생성되고, 필요할 때 위치만 이동됩니다.) --&gt;
&lt;div id=&quot;singleAdElement&quot; class=&quot;mt-8 mb-4 hidden&quot;&gt;&lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7343105306726381&quot;
     crossorigin=&quot;anonymous&quot;&gt;&lt;/script&gt;
&lt;!-- CENTER_ADAREA_500X450 --&gt;
&lt;ins class=&quot;adsbygoogle&quot;
     style=&quot;display:inline-block;width:500px;height:450px&quot;
     data-ad-client=&quot;ca-pub-7343105306726381&quot;
     data-ad-slot=&quot;2791417549&quot;&gt;&lt;/ins&gt;
&lt;script&gt;
     (adsbygoogle = window.adsbygoogle || []).push({});
&lt;/script&gt;&lt;/div&gt;
&lt;script&gt;
        // JavaScript 코드
        
        // 1. 표시할 정보 데이터 정의
        const topics = [
              {
                id: 1,
                title: &quot;토큰 1&quot;,
                header: &quot;잃어버린 우주선 (함교) 토큰 1&quot;,
                description: &quot;계단 난간 위에 벽면 틈 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fd0nhti%2FdJMcabvHTVW%2FAAAAAAAAAAAAAAAAAAAAAF9_Tnj_GSux5TfyARlD_ZUwACVaGbDumxt_QGamJkrr%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DJZm85%252Fs4Y16oGvYtnSM22toQ4Es%253D&quot;
            },
          {
                id: 2,
                title: &quot;토큰 2&quot;,
                header: &quot;잃어버린 우주선 (함교) 토큰 2&quot;,
                description: &quot;의자 하단 기둥 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FlIQ23%2FdJMcaelFhnD%2FAAAAAAAAAAAAAAAAAAAAAEtgsStQ2YlWAcjXUTQigODYRKpobSAG15mKkHwp6ShE%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3Do8QxWLC0DDQoI2cX3RruJdIq9k8%253D&quot;
            },
          
          {
                id: 3,
                title: &quot;토큰 3&quot;,
                header: &quot;잃어버린 우주선 (함교) 토큰 3&quot;,
                description: &quot;키보드 자판 위에 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FWfwDB%2FdJMcaf5WImB%2FAAAAAAAAAAAAAAAAAAAAADtl5e9Jxjpwjs-1aMragWAFcILPp7JgtJ49OCYDTzlA%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DmuYhnWczhVeqGJLfPDSeOuwxUBI%253D&quot;
            },
          {
                id: 4,
                title: &quot;토큰 4&quot;,
                header: &quot;잃어버린 우주선 (함교) 토큰 4&quot;,
                description: &quot;함교 외부 우주 탐색 &quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbRWkAT%2FdJMcagKyeuw%2FAAAAAAAAAAAAAAAAAAAAALVSK1KeGL3mBQZt0pRkiVKBCQLZeft5Fw5wRbepd3Rr%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DogWvpz3bgwyTPgbIR45u6if857I%253D&quot;
            },
          {
                id: 5,
                title: &quot;토큰 5&quot;,
                header: &quot;잃어버린 우주선 (함교) 토큰 5&quot;,
                description: &quot;우주복 입고 내려가서 기계패널 반대편 환풍기 틈 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FSO2t5%2FdJMcabvHTVU%2FAAAAAAAAAAAAAAAAAAAAAPZE6C9Che4t1ggzHK3rzNZZBsIZMutqxQJ4FOuJ8z-0%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DXf5FzJP2d4DOjxmzHoysgg6hnlU%253D&quot;
            },
          {
                id: 6,
                title: &quot;토큰 6&quot;,
                header: &quot;잃어버린 우주선 (함교) 토큰 6&quot;,
                description: &quot;우주복 환복방 벽 틈 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcfD5MH%2FdJMcabvHTVV%2FAAAAAAAAAAAAAAAAAAAAADpzCaziaYRm_2tjAbwFInsqn82a6WPetNs5RhuldReH%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3Dp3Z%252BJ0ljGHnnNnUOsE320rF0Vx8%253D&quot;
            },
     
          {
                id: 7,
                title: &quot;토큰 7&quot;,
                header: &quot;잃어버린 우주선 (함교) 토큰 7&quot;,
                description: &quot;함교 외부 떠다니는 부속물 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbldPY3%2FdJMcaaXRXDF%2FAAAAAAAAAAAAAAAAAAAAAD3lY5TXBCkOhXmuzXmJeaVzAkMXLX-t2wDyaUNsnYuJ%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3Do2Untvi4MRy2mRgGwJUXbtFJcdQ%253D&quot;
            },
          {
                id: 8,
                title: &quot;토큰 8&quot;,
                header: &quot;잃어버린 우주선 (함교) 토큰 8&quot;,
                description: &quot;식량 적재함 아래칸 천장 탐색&quot;,
                imageUrl: &quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2F2Znwh%2FdJMcagKyeux%2FAAAAAAAAAAAAAAAAAAAAAMRzrignNPrY-RpzreoGVU6veadySQmkI_66nFkbeJAa%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1761922799%26allow_ip%3D%26allow_referer%3D%26signature%3DewDYtB%252F%252FwYjHO9M51Ipc3gTSI1I%253D&quot;
            }
        ];

        const topicsContainer = document.getElementById('topicsContainer');
        const contentDisplay = document.getElementById('contentDisplay');

        // 모달 관련 요소 정의
        const imageModal = document.getElementById('imageModal');
        const modalImage = document.getElementById('modalImage');
        // 새로 추가된 요소 및 ID
        const closeModalButton = document.getElementById('closeModalButton');
        const modalContentContainer = document.getElementById('modalContentContainer');

        // [수정된 부분] 광고 요소를 전역적으로 한 번만 가져옵니다.
        const singleAdElement = document.getElementById('singleAdElement');
        const mainContainer = document.querySelector('.w-full.max-w-4xl');


        /**
         * 이미지 뷰어 모달을 열고 이미지를 설정합니다.
         * @param {string} imageUrl - 모달에 표시할 이미지 URL
         * @param {string} imageTitle - 이미지 대체 텍스트
         */
        function openModal(imageUrl, imageTitle) {
            imageModal.classList.remove('hidden');
            // 부드러운 전환을 위해 opacity를 나중에 추가합니다.
            setTimeout(() =&gt; {
                imageModal.classList.remove('opacity-0');
                // 이미지 로드 및 애니메이션 시작
                modalImage.src = imageUrl;
                modalImage.alt = imageTitle;
                modalImage.classList.remove('scale-95', 'opacity-0');
                modalImage.classList.add('scale-100', 'opacity-100');
            }, 10);
        }

        /**
         * 이미지 뷰어 모달을 닫습니다.
         */
        function closeModal() {
            // 이미지 애니메이션 역순 적용
            modalImage.classList.remove('scale-100', 'opacity-100');
            modalImage.classList.add('scale-95', 'opacity-0');

            // 배경 투명도 감소
            imageModal.classList.add('opacity-0');

            // 닫는 애니메이션 후 숨김 처리
            setTimeout(() =&gt; {
                imageModal.classList.add('hidden');
                modalImage.src = &quot;&quot;; // 이미지 소스 초기화
            }, 300); // CSS transition duration에 맞춤
        }
        
        /**
         * 선택된 주제의 내용을 우측 영역에 표시하고 버튼 스타일을 업데이트합니다.
         * @param {object} topic - 표시할 주제 데이터 객체
         */
        function displayTopic(topic) {
            
            // [수정된 부분] 1. contentDisplay 내용을 교체하기 전에, 광고 요소를 원래 위치로 안전하게 이동시킵니다.
            const adPlaceholderInPreviousContent = document.querySelector('#contentDisplay #adPlaceholder');
            
            if (singleAdElement &amp;&amp; adPlaceholderInPreviousContent &amp;&amp; adPlaceholderInPreviousContent.contains(singleAdElement)) {
                // singleAdElement를 원래의 정적 위치 (메인 컨테이너 다음)로 이동시키고 숨깁니다.
                // 이렇게 해야 innerHTML 교체 시 요소가 DOM에서 'detached' 상태가 되는 것을 방지합니다.
                if (mainContainer) {
                    mainContainer.after(singleAdElement);
                    singleAdElement.classList.add('hidden');
                }
            }


            // 2. 우측 내용 영역 업데이트
            contentDisplay.innerHTML = `
                &lt;div id=&quot;infoCard&quot; class=&quot;bg-white p-2 content-fade-in&quot;&gt;
                    &lt;h2 style=&quot;font-family: 'Noto Serif KR';&quot; class=&quot;text-3xl font-bold text-indigo-700 mb-4&quot;&gt;&lt;b&gt;${topic.header}&lt;/b&gt;&lt;/h2&gt;
                    &lt;p style=&quot;font-family: 'Noto Serif KR';&quot; class=&quot;text-gray-700 mb-6 leading-relaxed border-l-4 border-indigo-400 pl-3&quot;&gt;&lt;b&gt;${topic.description}&lt;/b&gt;&lt;/p&gt;&lt;br/&gt;
                    &lt;img id=&quot;topicImage&quot; 
                         src=&quot;${topic.imageUrl}&quot; 
                         onerror=&quot;this.onerror=null;this.src='https://placehold.co/600x300/4f46e5/ffffff?text=이미지+로드+실패';&quot;
                         alt=&quot;${topic.title} 관련 예시 이미지&quot; 
                         class=&quot;w-full rounded-lg shadow-lg border border-indigo-200 cursor-pointer hover:shadow-xl transition-shadow&quot;
                    &gt;
                    
                    &lt;!-- 광고 삽입을 위한 플레이스홀더 (여기에 실제 광고 요소가 이동됩니다) --&gt;
                    &lt;div id=&quot;adPlaceholder&quot; class=&quot;ad-placeholder-container&quot;&gt;&lt;/div&gt;

                &lt;/div&gt;
            `;

            // 2.1. 새로 생성된 이미지 요소에 이벤트 리스너 부착
            const displayedImage = document.getElementById('topicImage');
            if (displayedImage) {
                displayedImage.addEventListener('click', () =&gt; {
                    openModal(topic.imageUrl, topic.title + &quot; 확대 이미지&quot;);
                });
            }
            
            // 2.2. 광고 요소를 새로 생성된 플레이스홀더로 이동 (요청 1회만 유지)
            const adPlaceholder = document.getElementById('adPlaceholder');
            
            if (adPlaceholder &amp;&amp; singleAdElement) {
                // singleAdElement를 placeholder의 자식으로 이동
                adPlaceholder.appendChild(singleAdElement);
                // 숨겨져 있던 adElement를 보이도록 설정
                singleAdElement.classList.remove('hidden');
            }

            // 3. 버튼 스타일 업데이트 (활성화/비활성화)
            document.querySelectorAll('.topic-button').forEach(btn =&gt; {
                btn.classList.remove('bg-indigo-600', 'text-white', 'shadow-md', 'scale-105');
                btn.classList.add('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
            });

            // 클릭된 버튼에 활성화 스타일 적용
            const activeBtn = document.getElementById(`button-${topic.id}`);
            if (activeBtn) {
                activeBtn.classList.remove('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
                activeBtn.classList.add('bg-indigo-600', 'text-white', 'shadow-md', 'scale-105');
            }
        }

        // 4. 버튼 생성 및 이벤트 리스너 부착
        topics.forEach(topic =&gt; {
            const button = document.createElement('button');
            button.id = `button-${topic.id}`;
          button.className = 'topic-button w-full text-left py-3 px-4 rounded-lg font-medium transition duration-200 ease-in-out transform';	
            button.style.fontFamily = 'Noto Serif KR';
          	button.style.fontWeight = 'bold';
          				
            
            // 초기 스타일
            button.classList.add('bg-white', 'text-gray-700', 'hover:bg-indigo-50');
            
            button.textContent = topic.title;

            button.addEventListener('click', () =&gt; {
                displayTopic(topic);
            });

            topicsContainer.appendChild(button);
        });

        // 5. 초기 표시 (페이지 로드 시 첫 번째 주제를 자동으로 표시)
        if (topics.length &gt; 0) {
            displayTopic(topics[0]);
        }
        
        // 6. 모달 닫기 이벤트 리스너 추가 (인라인 onclick 대신 스크립트에서 처리)
        
        // A. X 버튼 클릭 시 닫기
        closeModalButton.addEventListener('click', closeModal);

        // B. 모달 배경 클릭 시 닫기
        imageModal.addEventListener('click', closeModal);
        
        // C. 모달 내부 콘텐츠 클릭 시 이벤트 전파 중단 (배경 클릭으로 간주되는 것을 방지)
        modalContentContainer.addEventListener('click', (event) =&gt; {
            event.stopPropagation();
        });
    &lt;/script&gt;</description>
      <category>스팀게임</category>
      <author>UnityBeginner</author>
      <guid isPermaLink="true">https://unitybeginner.tistory.com/530</guid>
      <comments>https://unitybeginner.tistory.com/530#entry530comment</comments>
      <pubDate>Wed, 29 Oct 2025 21:35:51 +0900</pubDate>
    </item>
  </channel>
</rss>