<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>장성역 무궁화호 &#8211; 기차 타는 사람들</title>
	<atom:link href="https://krailroad.co.kr/tag/%ec%9e%a5%ec%84%b1%ec%97%ad-%eb%ac%b4%ea%b6%81%ed%99%94%ed%98%b8/feed/" rel="self" type="application/rss+xml" />
	<link>https://krailroad.co.kr</link>
	<description>레일 위에서 만나는 세상, 가장 빠르고 정확한 기차여행 정보와 팁</description>
	<lastBuildDate>Fri, 27 Feb 2026 01:30:17 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://krailroad.co.kr/wp-content/uploads/2025/10/cropped-기차-타는-사람들-32x32.png</url>
	<title>장성역 무궁화호 &#8211; 기차 타는 사람들</title>
	<link>https://krailroad.co.kr</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>장성역 무궁화호 시간표 용산·목포 방면 열차 요금 안내</title>
		<link>https://krailroad.co.kr/%ec%9e%a5%ec%84%b1%ec%97%ad-%eb%ac%b4%ea%b6%81%ed%99%94%ed%98%b8-%ec%8b%9c%ea%b0%84%ed%91%9c-%ec%9a%a9%ec%82%b0%c2%b7%eb%aa%a9%ed%8f%ac-%eb%b0%a9%eb%a9%b4-%ec%97%b4%ec%b0%a8-%ec%9a%94%ea%b8%88/</link>
		
		<dc:creator><![CDATA[운영자]]></dc:creator>
		<pubDate>Sat, 10 Jan 2026 01:19:01 +0000</pubDate>
				<category><![CDATA[무궁화 시간표]]></category>
		<category><![CDATA[장성역 무궁화호]]></category>
		<guid isPermaLink="false">https://krailroad.co.kr/?p=15813</guid>

					<description><![CDATA[장성역 무궁화호 시간표를 찬찬히 살펴보며 다음 여행을 준비하는 과정은 고속열차가 닿지 않는 한적한 마을로 떠나는 나만의 특별한 즐거움이기도 합니다. 속도 중심의 여행에서 벗어나 조용한 소도시로 향하는 길은 무궁화호만이 가진 정겨운 낭만이 있어 늘 마음을 설레게 하였습니다. 다만 이런 여행을 계획할 때마다 흩어져 있는 노선 정보를 일일이 확인하고 시간표를 맞추는 일이 생각보다 번거롭고 많은 정성이 들어가는 ... <a title="장성역 무궁화호 시간표 용산·목포 방면 열차 요금 안내" class="read-more button" href="https://krailroad.co.kr/%ec%9e%a5%ec%84%b1%ec%97%ad-%eb%ac%b4%ea%b6%81%ed%99%94%ed%98%b8-%ec%8b%9c%ea%b0%84%ed%91%9c-%ec%9a%a9%ec%82%b0%c2%b7%eb%aa%a9%ed%8f%ac-%eb%b0%a9%eb%a9%b4-%ec%97%b4%ec%b0%a8-%ec%9a%94%ea%b8%88/" aria-label="장성역 무궁화호 시간표 용산·목포 방면 열차 요금 안내 전체 읽기">자세히 보기</a>]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">장성역 무궁화호 시간표를 찬찬히 살펴보며 다음 여행을 준비하는 과정은 고속열차가 닿지 않는 한적한 마을로 떠나는 나만의 특별한 즐거움이기도 합니다. 속도 중심의 여행에서 벗어나 조용한 소도시로 향하는 길은 무궁화호만이 가진 정겨운 낭만이 있어 늘 마음을 설레게 하였습니다. 다만 이런 여행을 계획할 때마다 흩어져 있는 노선 정보를 일일이 확인하고 시간표를 맞추는 일이 생각보다 번거롭고 많은 정성이 들어가는 작업이었습니다.</p>



<p class="wp-block-paragraph">그래서 장성역을 오가는 무궁화호의 모든 운행 정보를 한데 모아 정리하기 시작했습니다. 단순히 기차 시간을 나열하는 수준을 넘어 장성역을 기점으로 광주송정이나 목포, 서울 같은 대도시는 물론 고속철도가 서지 않는 소박하고 아름다운 역들까지 연결되는 모든 노선을 한눈에 담은 안내서입니다. 이제는 여기저기 정보를 찾아 헤매며 힘을 뺄 필요 없이 이 자료 하나로 효율적인 여정을 구상할 수 있습니다.</p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">장성역 무궁화호 이용 정보</h2>



<h3 class="wp-block-heading">실제 이용자가 전하는 안내서</h3>



<p class="wp-block-paragraph">장성역에서 무궁화호를 이용하는 것은 복잡한 대형 역사의 소란스러움을 피하는 것 이상의 가치가 있습니다. 뻔한 정보가 아닌 직접 장성역 승강장에서 기차를 기다리며 느꼈던 실질적인 팁들을 정리하였으며, 이 내용만 숙지해도 장성역 무궁화호를 마치 동네 버스처럼 편하고 익숙하게 활용할 수 있습니다.</p>



<h3 class="wp-block-heading">장성역 무궁화호의 특별한 점</h3>



<p class="wp-block-paragraph">무궁화호는 KTX가 서지 않는 작은 간이역들까지 구석구석 정차하며 사람과 마을을 이어주는 고마운 이동 수단입니다. 장성역은 광주송정역보다 한산하고 이동 동선이 매우 짧아 이러한 무궁화호의 정겨운 매력을 가장 잘 누릴 수 있는 장소입니다.</p>



<p class="wp-block-paragraph">1️⃣ <strong>단거리 이동의 핵심 거점:</strong> 장성역에서 인근 백양사역이나 정읍, 광주송정 등 가까운 거리를 이동할 때 무궁화호는 참 효율적인 수단이 됩니다. 요금이 저렴할 뿐만 아니라 이동 시간도 고속열차와 큰 차이가 없어 목적지까지 가벼운 마음으로 향할 수 있었습니다.<br><br>2️⃣ <strong>여유로운 환승 환경:</strong> 장성역은 장성군청과 읍내 중심지에 위치하여 접근성이 무척 뛰어납니다. 복잡한 도심 지하철을 타지 않아도 군내 버스나 도보로 쉽게 역에 닿을 수 있고, 역 입구에서 승강장까지 거리가 짧아 기차를 타기까지의 과정이 매우 수월합니다.</p>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">장성역 무궁화호 탑승 안내</h3>



<p class="wp-block-paragraph">장성역 승강장에 들어서면 KTX와 ITX, 무궁화호가 같은 공간을 공유하고 있음을 알게 됩니다. 역사 구조가 명확하여 복잡하게 생각할 필요 없이 안내를 따르면 됩니다.</p>



<p class="wp-block-paragraph">1️⃣ <strong>간결한 이동 동선:</strong> 장성역의 승강장은 대형 역사에 비해 규모가 아담하고 구조가 단순합니다. 대합실 전광판에서 열차 번호와 타는 곳 위치만 확인하고 움직이면 되기에 시간을 지나치게 넉넉히 잡지 않아도 충분히 여유 있는 탑승이 가능했습니다.<br><br>2️⃣ <strong>짐이 많을 때의 이점:</strong> 역 건물이 아담한 덕분에 무거운 짐을 들고 계단을 오르내리는 수고가 덜합니다. 승강장까지 가는 길이 복잡하지 않아 부모님을 모시고 가거나 짐이 많은 여행객에게는 더할 나위 없이 편안한 환경이었습니다.</p>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">놓치면 안 될 필수 점검 사항</h3>



<p class="wp-block-paragraph">무궁화호는 좌석이 매진되더라도 입석이라는 선택지가 있다는 점이 특징입니다. 장성역에서 이 기능을 잘 활용하면 급한 일정에도 유용하게 대처할 수 있습니다.</p>



<p class="wp-block-paragraph">1️⃣ <strong>입석 승차권의 활용:</strong> 갑작스럽게 기차를 타야 하는데 좌석이 없다면 입석 승차권을 확인해야 합니다. 무궁화호는 정차역이 많아 짧은 구간 이동 시에는 금방 빈자리가 생겨 잠시 앉아 갈 기회가 생기기도 하며, 이는 장성역 이용자들에게 꽤 쏠쏠한 팁이 됩니다.<br><br>2️⃣ <strong>열차 정차 여부 재확인:</strong> 장성역을 지나는 모든 무궁화호가 정차하는 것은 아닙니다. 간혹 통과하는 열차도 있으므로 <a href="https://www.korail.com/ticket/main" data-type="link" data-id="https://www.korail.com/ticket/main" target="_blank" rel="noopener">코레일</a>톡 앱을 통해 본인이 타려는 기차가 장성역에 서는지 최종적으로 확인하는 과정이 중요합니다.</p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading"><strong>장성역 첫차 &amp; 막차 운행 정보</strong></h2>


<style>
        .ktx-sum-container { margin: 15px 0; font-family: -apple-system, BlinkMacSystemFont, "Malgun Gothic", sans-serif; }
        .ktx-sum-table { width:100%; border-collapse:collapse; background:#fff; border:1px solid #ddd; table-layout: fixed; }
        .ktx-date-info { text-align: right; font-size: 12px; color: #777; margin-bottom: 5px; font-weight: 500; }
        .ktx-sum-table th { background:#f1f3f5; color:#333; font-size:16px; font-weight:800; padding:12px 4px; border-bottom:2px solid #dee2e6; }
        .ktx-sum-table td { padding:14px 4px; border-bottom:1px solid #eee; text-align:center; vertical-align:middle; }
        .route-info { background:#fcfcfc; font-weight:400; color:#000; font-size:15px; border-right:1px solid #ddd; line-height:1.3; }
        .type-label { display:inline-block; padding:3px 8px; border-radius:4px; font-size:12px; font-weight:700; color:#fff; margin-bottom:4px; }
        .type-ktx { background:#1e40af; } 
        .type-itx { background:#be123c; } 
        .type-mu { background:#047857; }
        .type-default { background:#52525b; }
        .time-display { font-size:18px; font-weight:800; color:#000; letter-spacing:-0.5px; line-height:1; }
        .train-detail { display:block; font-size:12px; color:#444; font-weight:600; margin-bottom:3px; }
        .arrival-info { font-size:12px; color:#555; font-weight:500; margin-top:3px; }
        @media (max-width: 380px) {
            .time-display { font-size: 16px; }
            .route-info { font-size: 13px; }
            .ktx-sum-table th { font-size: 13px; }
            .train-detail, .arrival-info { font-size: 11px; }
        }
    </style><p class="ktx-date-info" style="text-align: right; font-size: small; color: #777;">최신 시간표 기준: 2026년 06월 04일</p><div class="ktx-sum-container"><table class="ktx-sum-table"><thead><tr><th style="width:22%;">구간</th><th style="width:23%;">종별</th><th>첫차</th><th>막차</th></tr></thead><tbody><tr><td class="route-info" rowspan="1" style="border-top:1px solid #ddd;">장성<br>↓<br>광주</td><td><span class="type-label type-mu">무궁화</span></td><td><span class="train-detail">1482호</span><div class="time-display">06:06</div><div class="arrival-info">05:37 도착</div></td><td><span class="train-detail">1486호</span><div class="time-display">21:58</div><div class="arrival-info">21:29 도착</div></td></tr><tr><td class="route-info" rowspan="1" style="border-top:1px solid #ddd;">장성<br>↓<br>서대전</td><td><span class="type-label type-mu">무궁화</span></td><td><span class="train-detail">1482호</span><div class="time-display">06:06</div><div class="arrival-info">08:17 도착</div></td><td><span class="train-detail">1486호</span><div class="time-display">21:58</div><div class="arrival-info">23:59 도착</div></td></tr><tr><td class="route-info" rowspan="1" style="border-top:1px solid #ddd;">장성<br>↓<br>용산</td><td><span class="type-label type-mu">무궁화</span></td><td><span class="train-detail">1452호</span><div class="time-display">08:16</div><div class="arrival-info">12:26 도착</div></td><td><span class="train-detail">1462호</span><div class="time-display">12:39</div><div class="arrival-info">16:54 도착</div></td></tr></tbody></table></div>


<style>
        .ktx-sum-container { margin: 15px 0; font-family: -apple-system, BlinkMacSystemFont, "Malgun Gothic", sans-serif; }
        .ktx-sum-table { width:100%; border-collapse:collapse; background:#fff; border:1px solid #ddd; table-layout: fixed; }
        .ktx-date-info { text-align: right; font-size: 12px; color: #777; margin-bottom: 5px; font-weight: 500; }
        .ktx-sum-table th { background:#f1f3f5; color:#333; font-size:16px; font-weight:800; padding:12px 4px; border-bottom:2px solid #dee2e6; }
        .ktx-sum-table td { padding:14px 4px; border-bottom:1px solid #eee; text-align:center; vertical-align:middle; }
        .route-info { background:#fcfcfc; font-weight:400; color:#000; font-size:15px; border-right:1px solid #ddd; line-height:1.3; }
        .type-label { display:inline-block; padding:3px 8px; border-radius:4px; font-size:12px; font-weight:700; color:#fff; margin-bottom:4px; }
        .type-ktx { background:#1e40af; } 
        .type-itx { background:#be123c; } 
        .type-mu { background:#047857; }
        .type-default { background:#52525b; }
        .time-display { font-size:18px; font-weight:800; color:#000; letter-spacing:-0.5px; line-height:1; }
        .train-detail { display:block; font-size:12px; color:#444; font-weight:600; margin-bottom:3px; }
        .arrival-info { font-size:12px; color:#555; font-weight:500; margin-top:3px; }
        @media (max-width: 380px) {
            .time-display { font-size: 16px; }
            .route-info { font-size: 13px; }
            .ktx-sum-table th { font-size: 13px; }
            .train-detail, .arrival-info { font-size: 11px; }
        }
    </style><p class="ktx-date-info" style="text-align: right; font-size: small; color: #777;">최신 시간표 기준: 2026년 06월 04일</p><div class="ktx-sum-container"><table class="ktx-sum-table"><thead><tr><th style="width:22%;">구간</th><th style="width:23%;">종별</th><th>첫차</th><th>막차</th></tr></thead><tbody><tr><td class="route-info" rowspan="1" style="border-top:1px solid #ddd;">장성<br>↓<br>목포</td><td><span class="type-label type-mu">무궁화</span></td><td><span class="train-detail">1451호</span><div class="time-display">22:23</div><div class="arrival-info">23:24 도착</div></td><td><span class="train-detail">1451호</span><div class="time-display">22:23</div><div class="arrival-info">23:24 도착</div></td></tr></tbody></table></div>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading"><strong>장성역 무궁화호 요금표</strong></h2>



<p class="wp-block-paragraph">👈 <strong><mark style="background-color:rgba(0, 0, 0, 0);color:#007bff" class="has-inline-color"><strong>좌우로 스크롤하여 요금 확인</strong></mark></strong><br>💳 <a href="https://krailroad.co.kr/ktx-%EC%A0%84-%EB%85%B8%EC%84%A0-%EC%9A%94%EA%B8%88%ED%91%9C-%ED%95%9C%EB%88%88%EC%97%90-%EB%B3%B4%EA%B8%B0/" data-type="link" data-id="https://krailroad.co.kr/ktx-%EC%A0%84-%EB%85%B8%EC%84%A0-%EC%9A%94%EA%B8%88%ED%91%9C-%ED%95%9C%EB%88%88%EC%97%90-%EB%B3%B4%EA%B8%B0/">KTX 전체 요금표 한눈에 보기</a><br>🔎 <strong><a href="https://krailroad.co.kr/ktx-srt-itx-money-table/"><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">열차 요금 검색 바로가기</mark></a></strong></p>


<p style="text-align: right; font-size: small; color: #777; margin: 0;">최신 요금표 기준: 2026년 06월 04일</p><p style="text-align: right; font-size: small; color: #777; margin: 0;">(요금이 동일한 열차는 [무궁화·ITX·KTX] 3종으로 단순화)</p><div style="margin-top: 30px;"><div style="max-width: 100%; overflow-x: auto; margin: 20px 0;"><table class="train-table"><thead><tr><th>노선</th><th>종별</th><th>출발</th><th>도착</th><th>운임</th></tr></thead><tbody><tr><td>호남1</td><td>무궁화</td><td class="highlight">용산</td><td class="highlight">장성</td><td>20,900</td></tr><tr><td>호남2</td><td>무궁화</td><td class="highlight">용산</td><td class="highlight">장성</td><td>20,900</td></tr><tr><td>호남1</td><td>무궁화</td><td class="highlight">천안</td><td class="highlight">장성</td><td>14,800</td></tr><tr><td>호남2</td><td>무궁화</td><td class="highlight">천안</td><td class="highlight">장성</td><td>14,800</td></tr><tr><td>호남1</td><td>무궁화</td><td class="highlight">서대전</td><td class="highlight">장성</td><td>10,200</td></tr><tr><td>호남2</td><td>무궁화</td><td class="highlight">서대전</td><td class="highlight">장성</td><td>10,200</td></tr><tr><td>호남2</td><td>무궁화</td><td class="highlight">익산</td><td class="highlight">장성</td><td>4,900</td></tr><tr><td>호남1</td><td>무궁화</td><td class="highlight">익산</td><td class="highlight">장성</td><td>4,900</td></tr><tr><td>호남1</td><td>무궁화</td><td class="highlight">장성</td><td class="highlight">광주</td><td>2,600</td></tr><tr><td>호남1</td><td>무궁화</td><td class="highlight">장성</td><td class="highlight">목포</td><td>5,700</td></tr></tbody></table></div></div>



<h2 class="wp-block-heading has-medium-font-size"><strong>장성역 다른 열차 시간표</strong></h2>



<p class="wp-block-paragraph">✅ <a href="https://krailroad.co.kr/%ec%9e%a5%ec%84%b1%ec%97%ad-ktx-%ec%8b%9c%ea%b0%84%ed%91%9c-%ec%9a%a9%ec%82%b0-%eb%aa%a9%ed%8f%ac%ed%96%89-%ed%98%b8%eb%82%a8%ec%84%a0-%eb%85%b8%ec%84%a0%eb%b3%84-%ec%a0%95%ec%b0%a8%ec%97%ad-%ec%9a%94/" data-type="link" data-id="https://krailroad.co.kr/%ec%9e%a5%ec%84%b1%ec%97%ad-ktx-%ec%8b%9c%ea%b0%84%ed%91%9c-%ec%9a%a9%ec%82%b0-%eb%aa%a9%ed%8f%ac%ed%96%89-%ed%98%b8%eb%82%a8%ec%84%a0-%eb%85%b8%ec%84%a0%eb%b3%84-%ec%a0%95%ec%b0%a8%ec%97%ad-%ec%9a%94/">장성역 KTX 시간표 바로가기</a><br>✅ <s>장성역 SRT 노선 없음</s><br>✅ <a href="https://krailroad.co.kr/%ec%9e%a5%ec%84%b1%ec%97%ad-itx-%ec%83%88%eb%a7%88%ec%9d%84-itx-%eb%a7%88%ec%9d%8c-%ec%8b%9c%ea%b0%84%ed%91%9c-%eb%b0%8f-%ec%a0%95%ec%b0%a8%ec%97%ad%eb%b3%84-%ed%98%b8%eb%82%a8%ec%84%a0-%ec%9a%94/" data-type="link" data-id="https://krailroad.co.kr/%ec%9e%a5%ec%84%b1%ec%97%ad-itx-%ec%83%88%eb%a7%88%ec%9d%84-itx-%eb%a7%88%ec%9d%8c-%ec%8b%9c%ea%b0%84%ed%91%9c-%eb%b0%8f-%ec%a0%95%ec%b0%a8%ec%97%ad%eb%b3%84-%ed%98%b8%eb%82%a8%ec%84%a0-%ec%9a%94/">장성역 ITX 시간표 바로가기</a><br>✅ <a href="https://krailroad.co.kr/%ec%9e%a5%ec%84%b1%ec%97%ad-%eb%ac%b4%ea%b6%81%ed%99%94%ed%98%b8-%ec%8b%9c%ea%b0%84%ed%91%9c-%ec%9a%a9%ec%82%b0%c2%b7%eb%aa%a9%ed%8f%ac-%eb%b0%a9%eb%a9%b4-%ec%97%b4%ec%b0%a8-%ec%9a%94%ea%b8%88/" data-type="link" data-id="https://krailroad.co.kr/%ec%9e%a5%ec%84%b1%ec%97%ad-%eb%ac%b4%ea%b6%81%ed%99%94%ed%98%b8-%ec%8b%9c%ea%b0%84%ed%91%9c-%ec%9a%a9%ec%82%b0%c2%b7%eb%aa%a9%ed%8f%ac-%eb%b0%a9%eb%a9%b4-%ec%97%b4%ec%b0%a8-%ec%9a%94%ea%b8%88/">장성역 무궁화호 시간표 바로가기</a></p>



<p class="has-text-align-center has-text-color has-link-color wp-elements-88704de2ad28f76052113e79b539e929 wp-block-paragraph" style="color:#fe0000"><strong>[ <a href="https://krailroad.co.kr/ktx%c2%b7srt%c2%b7itx%c2%b7%ec%83%88%eb%a7%88%ec%9d%84%ed%98%b8%c2%b7%eb%ac%b4%ea%b6%81%ed%99%94%ed%98%b8%c2%b7%eb%88%84%eb%a6%ac%eb%a1%9c-%ec%97%b4%ec%b0%a8-%ec%8b%9c%ea%b0%84%ed%91%9c-%ea%b2%80/"><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0606" class="has-inline-color">전체 시간표 조회</mark></a> ]</strong> <strong>[ <a href="https://krailroad.co.kr/train-schedule-search/"><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">실시간 열차 조회</mark></a> ]</strong><br><strong><mark style="background-color:rgba(0, 0, 0, 0);color:#fe0a0a" class="has-inline-color">[ </mark><a href="https://krailroad.co.kr/ktx-srt-itx-money-table/"><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">전체 요금표 조회</mark></a><mark style="background-color:rgba(0, 0, 0, 0);color:#fe0a0a" class="has-inline-color"> ] [ </mark><a href="https://krailroad.co.kr/%ec%b6%9c%eb%b0%9c%ec%97%ad%ec%97%90%ec%84%9c-%eb%8f%84%ec%b0%a9%ec%97%ad-%ea%b8%b0%ec%b0%a8-%ec%8b%9c%ea%b0%84%ed%91%9c-%eb%b0%8f-%ec%86%8c%ec%9a%94%ec%8b%9c%ea%b0%84-%ea%b2%80%ec%83%89/"><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color">열차 런타임 조회</mark></a><mark style="background-color:rgba(0, 0, 0, 0);color:#ff0000" class="has-inline-color"> ]</mark></strong></p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading"><strong>장성역 무궁화호 시간표</strong></h2>



<h3 class="wp-block-heading">출발 : 장성 → 도착 : 용산</h3>



<p class="tip-box wp-block-paragraph">👉 <mark style="background-color:rgba(0, 0, 0, 0);color:#007bff" class="has-inline-color"><strong>좌우로 밀면 전체 표를 볼 수 있습니다.!</strong></mark><br> ❗ 빈칸은 열차가 정차하지 않는 역입니다.</p>


<style>
            .ktx-schedule-wrapper { overflow-x: auto; position: relative; }
            .ktx-schedule-table { width: 100%; border-collapse: collapse; border-spacing: 0; border-top: 2px solid #000; border-bottom: 2px solid #000; box-shadow: 0px 0px 15px rgba(0,0,0,0.1); }
            .ktx-schedule-table th, .ktx-schedule-table td { border: 1px solid #ccc; padding: 8px 5px; text-align: center; white-space: nowrap; background-color: #fff; }
            .ktx-schedule-table th { background-color: #f2f2f2; font-weight: bold; }
            .ktx-schedule-table thead tr th { position: sticky; top: 0; z-index: 10; background-color: #f2f2f2; }
            .ktx-schedule-table td:nth-child(3) { position: sticky; left: 0; z-index: 5; background-color: #fff; border-right: 1px solid #ddd; }
            .ktx-schedule-table th:nth-child(3) { position: sticky; top: 0; left: 0; z-index: 20; background-color: #f2f2f2; border-right: 1px solid #ddd; }
            .scrolled-highlight { background-color: #e6f2ff !important; }
        </style>
            <script>
                document.addEventListener("DOMContentLoaded", function() {
                    const wrappers = document.querySelectorAll(".ktx-schedule-wrapper");
                    wrappers.forEach(wrapper => {
                        wrapper.addEventListener("scroll", function() {
                            const cells = wrapper.querySelectorAll(".ktx-schedule-table th:nth-child(3), .ktx-schedule-table td:nth-child(3)");
                            if (wrapper.scrollLeft > 10) {
                                cells.forEach(cell => { cell.classList.add("scrolled-highlight"); });
                            } else {
                                cells.forEach(cell => { cell.classList.remove("scrolled-highlight"); });
                            }
                        });
                    });
                });
            </script>
        <p style="text-align: right; font-size: small; color: #777;">최신 시간표 기준: 2026년 06월 04일</p><div class="ktx-schedule-wrapper"><table class="ktx-schedule-table"><thead><tr><th>열차번호</th><th>열차종별</th><th>장성</th><th>백양사</th><th>정읍</th><th>신태인</th><th>김제</th><th>익산</th><th>함열</th><th>강경</th><th>논산</th><th>연산</th><th>계룡</th><th>서대전</th><th>신탄진</th><th>조치원</th><th>전의</th><th>천안</th><th>평택</th><th>수원</th><th>영등포</th><th>용산</th></tr></thead><tbody><tr><td>1452</td><td>무궁화</td><td>08:16</td><td>08:26</td><td>08:37</td><td>08:47</td><td>08:55</td><td>09:10</td><td>09:23</td><td>09:32</td><td>09:42</td><td>09:52</td><td>10:05</td><td>10:22</td><td>10:36</td><td>10:52</td><td>11:03</td><td>11:17</td><td>11:31</td><td>11:51</td><td>12:17</td><td>12:26</td></tr><tr><td>1462</td><td>무궁화</td><td>12:39</td><td>12:48</td><td>13:00</td><td>13:09</td><td>13:18</td><td>13:33</td><td>13:47</td><td>14:02</td><td>14:13</td><td></td><td>14:33</td><td>14:50</td><td>15:04</td><td>15:20</td><td>15:31</td><td>15:45</td><td>15:59</td><td>16:20</td><td>16:45</td><td>16:54</td></tr></tbody></table></div>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">출발 : 장성 → 도착 : 서대전</h3>



<p class="tip-box wp-block-paragraph">👉 <mark style="background-color:rgba(0, 0, 0, 0);color:#007bff" class="has-inline-color"><strong>좌우로 밀면 전체 표를 볼 수 있습니다.!</strong></mark><br> ❗ 빈칸은 열차가 정차하지 않는 역입니다.</p>


<style>
            .ktx-schedule-wrapper { overflow-x: auto; position: relative; }
            .ktx-schedule-table { width: 100%; border-collapse: collapse; border-spacing: 0; border-top: 2px solid #000; border-bottom: 2px solid #000; box-shadow: 0px 0px 15px rgba(0,0,0,0.1); }
            .ktx-schedule-table th, .ktx-schedule-table td { border: 1px solid #ccc; padding: 8px 5px; text-align: center; white-space: nowrap; background-color: #fff; }
            .ktx-schedule-table th { background-color: #f2f2f2; font-weight: bold; }
            .ktx-schedule-table thead tr th { position: sticky; top: 0; z-index: 10; background-color: #f2f2f2; }
            .ktx-schedule-table td:nth-child(3) { position: sticky; left: 0; z-index: 5; background-color: #fff; border-right: 1px solid #ddd; }
            .ktx-schedule-table th:nth-child(3) { position: sticky; top: 0; left: 0; z-index: 20; background-color: #f2f2f2; border-right: 1px solid #ddd; }
            .scrolled-highlight { background-color: #e6f2ff !important; }
        </style>
            <script>
                document.addEventListener("DOMContentLoaded", function() {
                    const wrappers = document.querySelectorAll(".ktx-schedule-wrapper");
                    wrappers.forEach(wrapper => {
                        wrapper.addEventListener("scroll", function() {
                            const cells = wrapper.querySelectorAll(".ktx-schedule-table th:nth-child(3), .ktx-schedule-table td:nth-child(3)");
                            if (wrapper.scrollLeft > 10) {
                                cells.forEach(cell => { cell.classList.add("scrolled-highlight"); });
                            } else {
                                cells.forEach(cell => { cell.classList.remove("scrolled-highlight"); });
                            }
                        });
                    });
                });
            </script>
        <p style="text-align: right; font-size: small; color: #777;">최신 시간표 기준: 2026년 06월 04일</p><div class="ktx-schedule-wrapper"><table class="ktx-schedule-table"><thead><tr><th>열차번호</th><th>열차종별</th><th>장성</th><th>백양사</th><th>정읍</th><th>신태인</th><th>김제</th><th>익산</th><th>함열</th><th>강경</th><th>논산</th><th>연산</th><th>계룡</th><th>서대전</th></tr></thead><tbody><tr><td>1482</td><td>무궁화</td><td>06:06</td><td>06:16</td><td>06:28</td><td>06:38</td><td>06:48</td><td>07:01</td><td>07:13</td><td>07:23</td><td>07:38</td><td>07:49</td><td>08:02</td><td>08:17</td></tr><tr><td>1452</td><td>무궁화</td><td>08:16</td><td>08:26</td><td>08:37</td><td>08:47</td><td>08:55</td><td>09:10</td><td>09:23</td><td>09:32</td><td>09:42</td><td>09:52</td><td>10:05</td><td>10:22</td></tr><tr><td>1462</td><td>무궁화</td><td>12:39</td><td>12:48</td><td>13:00</td><td>13:09</td><td>13:18</td><td>13:33</td><td>13:47</td><td>14:02</td><td>14:13</td><td></td><td>14:33</td><td>14:50</td></tr><tr><td>1484</td><td>무궁화</td><td>13:37</td><td></td><td>13:56</td><td></td><td>14:13</td><td>14:25</td><td>14:37</td><td>14:48</td><td>14:58</td><td>15:08</td><td>15:20</td><td>15:35</td></tr><tr><td>1486</td><td>무궁화</td><td>21:58</td><td>22:08</td><td>22:20</td><td>22:30</td><td>22:40</td><td>22:53</td><td>23:05</td><td>23:15</td><td>23:25</td><td></td><td>23:44</td><td>23:59</td></tr></tbody></table></div>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">출발 : 장성 → 도착 : 광주</h3>



<p class="tip-box wp-block-paragraph">👉 <mark style="background-color:rgba(0, 0, 0, 0);color:#007bff" class="has-inline-color"><strong>좌우로 밀면 전체 표를 볼 수 있습니다.!</strong></mark><br> ❗ 빈칸은 열차가 정차하지 않는 역입니다.</p>


<style>
            .ktx-schedule-wrapper { overflow-x: auto; position: relative; }
            .ktx-schedule-table { width: 100%; border-collapse: collapse; border-spacing: 0; border-top: 2px solid #000; border-bottom: 2px solid #000; box-shadow: 0px 0px 15px rgba(0,0,0,0.1); }
            .ktx-schedule-table th, .ktx-schedule-table td { border: 1px solid #ccc; padding: 8px 5px; text-align: center; white-space: nowrap; background-color: #fff; }
            .ktx-schedule-table th { background-color: #f2f2f2; font-weight: bold; }
            .ktx-schedule-table thead tr th { position: sticky; top: 0; z-index: 10; background-color: #f2f2f2; }
            .ktx-schedule-table td:nth-child(3) { position: sticky; left: 0; z-index: 5; background-color: #fff; border-right: 1px solid #ddd; }
            .ktx-schedule-table th:nth-child(3) { position: sticky; top: 0; left: 0; z-index: 20; background-color: #f2f2f2; border-right: 1px solid #ddd; }
            .scrolled-highlight { background-color: #e6f2ff !important; }
        </style>
            <script>
                document.addEventListener("DOMContentLoaded", function() {
                    const wrappers = document.querySelectorAll(".ktx-schedule-wrapper");
                    wrappers.forEach(wrapper => {
                        wrapper.addEventListener("scroll", function() {
                            const cells = wrapper.querySelectorAll(".ktx-schedule-table th:nth-child(3), .ktx-schedule-table td:nth-child(3)");
                            if (wrapper.scrollLeft > 10) {
                                cells.forEach(cell => { cell.classList.add("scrolled-highlight"); });
                            } else {
                                cells.forEach(cell => { cell.classList.remove("scrolled-highlight"); });
                            }
                        });
                    });
                });
            </script>
        <p style="text-align: right; font-size: small; color: #777;">최신 시간표 기준: 2026년 06월 04일</p><div class="ktx-schedule-wrapper"><table class="ktx-schedule-table"><thead><tr><th>열차번호</th><th>열차종별</th><th>장성</th><th>극락강</th><th>광주</th></tr></thead><tbody><tr><td>1481</td><td>무궁화</td><td>08:16</td><td>08:35</td><td>08:42</td></tr><tr><td>1483</td><td>무궁화</td><td>15:09</td><td></td><td>15:33</td></tr><tr><td>1461</td><td>무궁화</td><td>20:29</td><td>20:48</td><td>20:57</td></tr><tr><td>1485</td><td>무궁화</td><td>21:18</td><td>21:37</td><td>21:44</td></tr></tbody></table></div>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">출발 : 장성 → 도착 : 목포</h3>



<p class="tip-box wp-block-paragraph">👉 <mark style="background-color:rgba(0, 0, 0, 0);color:#007bff" class="has-inline-color"><strong>좌우로 밀면 전체 표를 볼 수 있습니다.!</strong></mark><br> ❗ 빈칸은 열차가 정차하지 않는 역입니다.</p>


<style>
            .ktx-schedule-wrapper { overflow-x: auto; position: relative; }
            .ktx-schedule-table { width: 100%; border-collapse: collapse; border-spacing: 0; border-top: 2px solid #000; border-bottom: 2px solid #000; box-shadow: 0px 0px 15px rgba(0,0,0,0.1); }
            .ktx-schedule-table th, .ktx-schedule-table td { border: 1px solid #ccc; padding: 8px 5px; text-align: center; white-space: nowrap; background-color: #fff; }
            .ktx-schedule-table th { background-color: #f2f2f2; font-weight: bold; }
            .ktx-schedule-table thead tr th { position: sticky; top: 0; z-index: 10; background-color: #f2f2f2; }
            .ktx-schedule-table td:nth-child(3) { position: sticky; left: 0; z-index: 5; background-color: #fff; border-right: 1px solid #ddd; }
            .ktx-schedule-table th:nth-child(3) { position: sticky; top: 0; left: 0; z-index: 20; background-color: #f2f2f2; border-right: 1px solid #ddd; }
            .scrolled-highlight { background-color: #e6f2ff !important; }
        </style>
            <script>
                document.addEventListener("DOMContentLoaded", function() {
                    const wrappers = document.querySelectorAll(".ktx-schedule-wrapper");
                    wrappers.forEach(wrapper => {
                        wrapper.addEventListener("scroll", function() {
                            const cells = wrapper.querySelectorAll(".ktx-schedule-table th:nth-child(3), .ktx-schedule-table td:nth-child(3)");
                            if (wrapper.scrollLeft > 10) {
                                cells.forEach(cell => { cell.classList.add("scrolled-highlight"); });
                            } else {
                                cells.forEach(cell => { cell.classList.remove("scrolled-highlight"); });
                            }
                        });
                    });
                });
            </script>
        <p style="text-align: right; font-size: small; color: #777;">최신 시간표 기준: 2026년 06월 04일</p><div class="ktx-schedule-wrapper"><table class="ktx-schedule-table"><thead><tr><th>열차번호</th><th>열차종별</th><th>장성</th><th>광주송정</th><th>나주</th><th>함평</th><th>일로</th><th>목포</th></tr></thead><tbody><tr><td>1451</td><td>무궁화</td><td>22:23</td><td>22:39</td><td>22:49</td><td>23:00</td><td>23:13</td><td>23:24</td></tr></tbody></table></div>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">실시간 API 열차 시간표 검색</h2>



<h3 class="wp-block-heading">실시간 시간표 음성 안내 켜기</h3>


<!-- Begin Dable 본문중단_300x250 / For inquiries, visit http://dable.io -->
<div id="dablewidget_GlYqm4xl" data-widget_id="GlYqm4xl">
<script>
      (function(d,a,b,l,e,r) {
if(d[b]&&d[b].q)return;d[b]=function(){(d[b].q=d[b].q||[]).push(arguments)};e=a.createElement(l);
e.async=1;e.charset='utf-8';e.src='//static.dable.io/dist/plugin.min.js';
r=a.getElementsByTagName(l)[0];r.parentNode.insertBefore(e,r);
})(window,document,'dable','script');
      dable('setService', 'krailroad.co.kr');
      dable('sendLogOnce');
      dable('renderWidget', 'dablewidget_GlYqm4xl');
</script>
</div>
<!-- End 본문중단_300x250 / For inquiries, visit http://dable.io -->

    
    <style>
        #bus-live-area { margin: 20px auto; max-width: 600px; background: #fff; border-radius: 12px; font-family: -apple-system, sans-serif; border: 2px solid #0045e6; overflow: hidden; box-shadow: 0 4px 15px rgba(0,0,0,0.1); }
        .station-header { background: #0045e6; padding: 12px 15px; display: flex; justify-content: space-between; align-items: center; color: #fff; }
        .station-header span { font-weight: bold; }

        /* 알림 버튼 튀게 수정 (명령 외 기존 CSS 유지) */
        .voice-toggle { 
            background: #ffeb3b; /* 밝은 노란색 */
            border: 2px solid #fbc02d; 
            color: #0045e6; 
            padding: 5px 12px; 
            border-radius: 8px; 
            font-size: 11px; 
            font-weight: 800; 
            cursor: pointer; 
            transition: 0.2s; 
            margin-right: 8px; 
            box-shadow: 0 0 8px rgba(255,235,59,0.5);
            animation: pulse-yellow 1.5s infinite; /* 반짝임 효과 */
        }
        .voice-toggle.active { 
            background: #4caf50; /* 활성 시 초록색 */
            border-color: #388e3c; 
            color: #fff; 
            animation: none; 
            box-shadow: none;
        }
        @keyframes pulse-yellow {
            0% { transform: scale(1); opacity: 1; }
            50% { transform: scale(1.03); opacity: 0.8; box-shadow: 0 0 15px rgba(255,235,59,0.8); }
            100% { transform: scale(1); opacity: 1; }
        }

        .live-dot-bus { background: #fff; color: #0045e6; padding: 2px 8px; border-radius: 20px; font-size: 11px; font-weight: 800; animation: blink_live 1.5s infinite; }
        @keyframes blink_live { 50% { opacity: 0.5; } }
        .bus-arrival-row { animation: slideUp 0.6s ease-out forwards; opacity: 0; }
        @keyframes slideUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
        #train-list-body { transition: opacity 0.4s ease-in-out; min-height: 650px; }
        .refresh-flash { opacity: 0.3; }
        .bus-table { width: 100%; border-collapse: collapse; text-align: center; }
        .bus-table th { font-size: 13px; color: #666; padding: 10px; background: #f8f9fa; border-top: 1px solid #eee; text-align: center; }
        .bus-table td { padding: 15px 5px; border-bottom: 1px solid #f0f0f0; text-align: center; vertical-align: middle; }
        .route-num { font-size: 18px; font-weight: 800; color: #0045e6; display: block; margin-bottom: 2px; }
        .train-no { font-size: 12px; color: #666; display: block; margin-bottom: 4px; }
        .verify-tag { font-size: 10px; color: #059669; background: #ecfdf5; padding: 1px 4px; border-radius: 3px; border: 1px solid #d1fae5; display: inline-block; }
        @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
        .soon-badge { background: #e11d48; color: #fff; padding: 2px 5px; border-radius: 4px; font-size: 11px; animation: pulse 1.5s infinite; font-weight: bold; }
        .time-main { color: #e11d48; font-weight: bold; font-size: 15px; margin-bottom: 2px; }
        .time-sub { color: #333; font-size: 14px; font-weight: bold; }
        .dest-name { font-size: 14px; font-weight: bold; color: #333; }
        .search-inner { padding: 8px 10px; background: #f8fafc; border-bottom: 1px solid #eee; display: flex; gap: 5px; }
        #ktx-arr-input { flex: 1; padding: 12px; border-radius: 6px; border: 1px solid #ddd; outline: none; font-size: 16px !important; }
        #ktx-search-btn { padding: 0 20px; background: #0045e6; color: #fff; border: none; border-radius: 6px; cursor: pointer; font-weight: bold; font-size: 14px; }
        #bus-announcement { background: #fffbe6; border-top: 1px dashed #ffe58f; padding: 10px 15px; font-size: 12px; color: #856404; line-height: 1.6; text-align: center; }

        .train-pagination { display: flex; justify-content: center; align-items: center; gap: 10px; padding: 15px; background: #f8fafc; border-top: 1px solid #eee; }
        .p-btn { padding: 5px 12px; background: #fff; border: 1px solid #ddd; border-radius: 4px; font-size: 12px; cursor: pointer; color: #0045e6; font-weight: bold; }
        .p-btn:disabled { color: #ccc; cursor: not-allowed; }
        .p-info { font-size: 12px; color: #666; }
    </style>

    <div id="bus-live-area">
        <header class="station-header">
            <span>장성역 시간표 검색</span>
            <div style="display:flex; align-items:center;">
                <button id="voice-toggle-btn" class="voice-toggle" onclick="toggleVoice()">알림 켜기</button>
                <div id="live-indicator" class="live-dot-bus">LIVE</div>
            </div>
        </header>
        <div class="search-inner">
            <input type="text" id="ktx-arr-input" placeholder="도착역 입력 (예: 부산, 동대구)" onkeypress="if(event.keyCode==13) updateKtxBoard(true);">
            <button id="ktx-search-btn" onclick="updateKtxBoard(true)">조회</button>
        </div>
        <table class="bus-table">
            <thead>
                <tr>
                    <th style="width:35%;">노선정보</th>
                    <th style="width:30%;">출발예정</th>
                    <th style="width:35%;">목적지</th>
                </tr>
            </thead>
            <tbody id="train-list-body">
                <tr><td colspan="3" style="padding:300px 0; color:#999; font-size:13px;">도착역을 입력하고 조회를 눌러주세요.</td></tr>
            </tbody>
        </table>

        <div id="train-pagination-area" class="train-pagination" style="display:none;">
            <button id="prev-page" class="p-btn" onclick="movePage(-1)">이전</button>
            <span class="p-info"><span id="curr-p">1</span> / <span id="total-p">1</span></span>
            <button id="next-page" class="p-btn" onclick="movePage(1)">다음</button>
        </div>

        <div id="bus-announcement">
            <span style="display:inline-block; margin-right:5px; animation: pulse 1s infinite;">📢</span> 
            <span id="announcement-text">실시간 정보는 1분 단위로 자동 업데이트됩니다.</span>
        </div>

        <div style="display:flex; justify-content:space-between; padding: 8px 15px; background: #f8fafc; font-size:11px; color:#94a3b8; border-top: 1px solid #eee;">
            <span>국가교통정보 공식 API 연동</span>
            <span>최근 갱신: <span id="last-sync">--:--:--</span></span>
        </div>
    </div>

    <script>
    const ktxKeyFinal = "X7F%2FMhVuiV1lCs97QEbUzX3bSxRSsKro2roj5wdq%2FESJtqWJtRtvrBCCHVWuAvbY0T%2F84rusVFgvnQshHe7XBQ%3D%3D";
    let stationMaster = [];
    const currentDepName = '장성'; 
    
    let allTrainData = [];
    let currentP = 1;
    const perPage = 10;

    window.ktxVoiceEnabled = false;
    window.ktxAnnounced = new Set();

    function toggleVoice() {
        window.ktxVoiceEnabled = !window.ktxVoiceEnabled;
        const btn = document.getElementById('voice-toggle-btn');
        if(window.ktxVoiceEnabled) {
            btn.classList.add('active'); 
            btn.innerText = "알림 끄기"; 
            const msg = new SpeechSynthesisUtterance("실시간 음성 안내가 활성화되었습니다. 출발 15분 전 열차를 안내합니다.");
            msg.lang = "ko-KR"; window.speechSynthesis.speak(msg);
        } else {
            btn.classList.remove('active'); 
            btn.innerText = "알림 켜기"; 
            window.speechSynthesis.cancel();
        }
    }

    async function initMaster() {
        stationMaster.push({ name: "여수EXPO", id: "NAT041993" });
        const codes = ['11','21','22','23','24','25','26','31','32','33','34','35','36','37','38'];
        try {
            const results = await Promise.all(codes.map(c => 
                fetch(`https://apis.data.go.kr/1613000/TrainInfo/GetCtyAcctoTrainSttnList?serviceKey=${ktxKeyFinal}&pageNo=1&numOfRows=200&_type=xml&cityCode=${c}`).then(r => r.text())
            ));
            const parser = new DOMParser();
            results.forEach(xmlText => {
                const xml = parser.parseFromString(xmlText, "text/xml");
                xml.querySelectorAll('item').forEach(item => {
                    const name = item.querySelector('nodename').textContent.trim();
                    const id = item.querySelector('nodeid').textContent.trim();
                    if (!stationMaster.find(s => s.id === id)) stationMaster.push({ name, id });
                });
            });
        } catch (e) { console.log("Master Load Error"); }
    }

    async function updateKtxBoard(isManual = false) {
        const inputEl = document.getElementById('ktx-arr-input');
        let arrival = inputEl.value.trim().replace('역', '');
        if (!arrival) { if(isManual) alert("도착역을 입력해주세요."); return; }

        const tbody = document.getElementById('train-list-body');
        tbody.classList.add('refresh-flash');
        if (isManual) { tbody.innerHTML = '<tr><td colspan="3" style="padding:300px 0; font-size:13px;">실시간 데이터를 불러오는 중...</td></tr>'; }

        const findS = (n) => {
            if (n === "여수" || n === "여수엑스포" || n === "여수EXPO") return { name: "여수EXPO", id: "NAT041993" };
            if (n === "울산") return stationMaster.find(s => s.name === "울산(통도사)");
            return stationMaster.find(s => s.name === n || s.name === n + '역');
        }

        const dep = findS(currentDepName);
        const arr = findS(arrival);
        if (!dep || !arr) { if(isManual) alert("역 이름을 정확히 입력해주세요."); tbody.classList.remove('refresh-flash'); return; }

        const fd = new FormData();
        fd.append('action', 'fetch_ktx_live');
        fd.append('dep_id', dep.id);
        fd.append('arr_id', arr.id);

        try {
            const response = await fetch('https://krailroad.co.kr/wp-admin/admin-ajax.php', { method: 'POST', body: fd });
            allTrainData = await response.json();
            
            if (allTrainData.length > 0) {
                const nowTs = Math.floor(Date.now() / 1000);
                let targetIdx = allTrainData.findIndex(t => t.ts >= nowTs - 300);
                if (targetIdx === -1) targetIdx = 0;
                
                if (isManual) currentP = Math.floor(targetIdx / perPage) + 1;
                renderPage();
            } else {
                tbody.innerHTML = '<tr><td colspan="3" style="padding:300px 0; font-size:13px;">검색된 열차가 없습니다.</td></tr>';
                document.getElementById('train-pagination-area').style.display = 'none';
            }
            tbody.classList.remove('refresh-flash');
        } catch (e) { 
            tbody.classList.remove('refresh-flash');
            tbody.innerHTML = '<tr><td colspan="3" style="padding:300px 0; font-size:13px;">데이터 통신 중 오류가 발생했습니다.</td></tr>';
        }
    }

    function renderPage() {
        const tbody = document.getElementById('train-list-body');
        const nowTs = Math.floor(Date.now() / 1000);
        const totalP = Math.ceil(allTrainData.length / perPage);
        
        const start = (currentP - 1) * perPage;
        const pageData = allTrainData.slice(start, start + perPage);

        let html = '';
        let delay = 0;
        
        pageData.forEach(r => {
            const diffMin = Math.round((r.ts - nowTs) / 60);
            
            // 음성 안내 로직
            if (window.ktxVoiceEnabled && diffMin === 15) {
                const key = r.no + "_" + r.dep_time;
                if (!window.ktxAnnounced.has(key)) {
                    const speech = new SpeechSynthesisUtterance(`안내드립니다. ${r.dep_time}분에 출발하는 ${r.arr_n}행 ${r.grade} ${r.no}열차가 15분 뒤에 출발할 예정입니다.`);
                    speech.lang = "ko-KR"; window.speechSynthesis.speak(speech);
                    window.ktxAnnounced.add(key);
                }
            }

            let soonBadge = (diffMin <= 10 && diffMin >= 0) ? `<span class="soon-badge">출발임박</span>` : '';
            
            // --- 색상 및 문구 로직 시작 ---
            let timeStyle = ""; 
            let timeMain = "";

            if (diffMin <= 0) {
                if (diffMin < -5) {
                    timeMain = '운행 종료';
                    timeStyle = 'style="color: #94a3b8;"'; 
                } else {
                    timeMain = '출발 대기 중';
                }
            } else {
                timeMain = diffMin + '분 후 출발';
            }

            html += `
                <tr class="bus-arrival-row" style="animation-delay: ${delay}s;">
                    <td style="padding: 10px 5px;">
                        <span class="train-no">${r.no}호</span>
                        <span class="route-num">${r.grade}</span>
                        <span class="verify-tag">공식정보연동</span>
                    </td>
                    <td>
                        ${soonBadge}<br>
                        <div class="time-main" ${timeStyle}>${timeMain}</div>
                        <div class="time-sub">${r.dep_time} 출발</div>
                    </td>
                    <td>
                        <div class="dest-name">${r.arr_n}역</div>
                        <div class="verify-tag" style="font-size:13px; background:#f1f5f9; color:#0045e6; border:1px solid #e2e8f0; margin-top:4px; font-weight:bold;">도착 ${r.arr_time}</div>
                        <div style="font-size:13px; color:#666; margin-top:2px;">(${r.duration} 소요)</div>
                    </td>
                </tr>`;
            delay += 0.03;
        });
        
        tbody.innerHTML = html;
        document.getElementById('train-pagination-area').style.display = 'flex';
        document.getElementById('curr-p').innerText = currentP;
        document.getElementById('total-p').innerText = totalP;
        document.getElementById('prev-page').disabled = (currentP === 1);
        document.getElementById('next-page').disabled = (currentP === totalP);

        const now = new Date();
        document.getElementById('last-sync').innerText = 
            now.getHours().toString().padStart(2, '0') + ':' + 
            now.getMinutes().toString().padStart(2, '0') + ':' + 
            now.getSeconds().toString().padStart(2, '0');
    }

    function movePage(step) {
        currentP += step;
        renderPage();
    }

    initMaster();
    setInterval(() => { if(allTrainData.length > 0) updateKtxBoard(false); }, 60000);
    </script>
    



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading">실시간 API 버스 도착 시간표</h2>


    <style>
        #bus-live-area { margin: 20px auto; max-width: 600px; background: #fff; border-radius: 12px; font-family: -apple-system, sans-serif; border: 2px solid #0045e6; overflow: hidden; box-shadow: 0 4px 15px rgba(0,0,0,0.1); }
        /* CLS 최적화: 10개 출력 시의 예상 높이인 750px를 선점 */
        #bus-content-view { min-height: 750px; transition: height 0.3s ease; position: relative; } 

        .station-header { background: #0045e6; padding: 12px 15px; display: flex; justify-content: space-between; align-items: center; color: #fff; }
        .station-header span { font-weight: bold; }
        .live-dot-bus { background: #fff; color: #0045e6; padding: 2px 8px; border-radius: 20px; font-size: 11px; font-weight: 800; animation: blink_live 1.5s infinite; }
        @keyframes blink_live { 50% { opacity: 0.5; } }
        
        .bus-table { width: 100%; border-collapse: collapse; text-align: center; table-layout: fixed; }
        .bus-table th { font-size: 13px; color: #666; padding: 12px 5px; background: #f8f9fa; border-top: 1px solid #eee; }
        .bus-table td { padding: 15px 5px; border-bottom: 1px solid #f0f0f0; text-align: center; vertical-align: middle; overflow: hidden; }
        
        .bus-arrival-row { animation: slideUp 0.6s ease-out forwards; opacity: 0; }
        @keyframes slideUp { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }

        @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
        .soon-badge { background: #e11d48; color: #fff; padding: 2px 5px; border-radius: 4px; font-size: 11px; animation: pulse 1.5s infinite; font-weight: bold; }
        .route-path { width: 60px; height: 3px; background: #e2e8f0; margin: 8px auto 0; position: relative; }
        .bus-icon { position: absolute; top: -9px; font-size: 12px; transition: all 0.5s; }
        .verify-badge { font-size: 10px; color: #059669; background: #ecfdf5; padding: 1px 4px; border-radius: 3px; border: 1px solid #d1fae5; display: inline-block; margin-top: 4px; }
        
        #bus-announcement { background: #fffbe6; border-top: 1px dashed #ffe58f; padding: 10px 15px; font-size: 12px; color: #856404; line-height: 1.6; text-align: center; }
    </style>

    <div id="bus-live-area">
        <div class="station-header">
            <span id="bus-header-name">장성역 버스 도착판</span>
            <div class="live-dot-bus">LIVE</div>
        </div>
        
        <div id="bus-content-view">
            <div id="bus-loading-overlay" style="padding:150px 0; text-align:center; color:#999; line-height:1.6;">
                <div style="display:inline-block; margin-bottom:12px; font-size:24px; animation: pulse 1.5s infinite;">🔍</div>
                <p style="margin:0;">
                    <strong id="loading-name">장성역</strong> 버스 API 연결 중...<br>
                    <span style="font-size:12px;">10초 간 최대 3번 접속시도 하오니 기다려 주세요....</span>
                </p>
            </div>
        </div>
        
        <div id="bus-announcement">
            <span style="display:inline-block; margin-right:5px; animation: pulse 1s infinite;">📢</span> 
            <span id="announcement-text">실시간 정보는 1분 단위로 자동 갱신됩니다.</span>
        </div>

        <div style="display:flex; justify-content:space-between; padding: 8px 15px; background: #f8fafc; font-size:11px; color:#94a3b8; border-top: 1px solid #eee;">
            <span>연계 교통 실시간 모드</span>
            <span>최근 갱신: <span id="last-sync">--:--:--</span></span>
        </div>

        <script type="text/javascript">
        (function($) {
            "use strict";
            let curCity = '36450';
            let curName = '장성';
            let altCity = '';
            let altName = '';
            let hasTriedAlt = false;

            function loadBus() {
                if (document.hidden) return;
                
                const $view = $('#bus-content-view');
                // 갱신 시 현재 높이를 잠시 고정하여 화면 떨림 방지
                if ($view.height() > 0) {
                    $view.css('min-height', $view.height() + 'px');
                }

                $.ajax({
                    url: 'https://krailroad.co.kr/wp-admin/admin-ajax.php',
                    type: 'POST',
                    data: { action: 'get_bus_universal_final', city: curCity, name: curName },
                    success: function(res) { 
                        if (res.indexOf('정류소 정보를 찾지 못했습니다') !== -1 && altName !== '' && !hasTriedAlt) {
                            curCity = altCity;
                            curName = altName;
                            hasTriedAlt = true;
                            $('#bus-main-title').text(curName + '역 실시간 버스 도착 안내');
                            $('#bus-header-name').text(curName + '역 버스 도착판');
                            $('#loading-name').text(curName + '역');
                            loadBus();
                            return;
                        }
                        
                        $view.html(res);
                        
                        // 데이터 로드 후 최소 높이를 다시 750px로 일관성 있게 유지
                        setTimeout(() => { $view.css('min-height', '750px'); }, 100);

                        const now = new Date();
                        const timeStr = now.getHours().toString().padStart(2, '0') + ':' + now.getMinutes().toString().padStart(2, '0') + ':' + now.getSeconds().toString().padStart(2, '0');
                        $('#last-sync').text(timeStr);
                    }
                });
            }
            $(document).ready(function() { loadBus(); setInterval(loadBus, 60000); });
        })(jQuery);
        </script>
    </div>
    



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">실시간 날씨 및 맛집 정보</h3>



    <div class="weather-section-wrap" style="margin: 40px 0;">
        <h4 style="margin-bottom: 25px !important;">장성역 API 실시간 날씨 예보</h4>
        <div class="weather-info-box" style="padding: 20px; border-radius: 12px; background: #f8fafc; border: 1px solid #e2e8f0; margin-top: 15px;">
            <div style="display: flex; gap: 10px; text-align: center;">
                <div style="flex: 1; background: #ffffff; padding: 12px; border-radius: 8px; border: 1px solid #edf2f7;">
                    <span style="font-size: 0.85em; color: #718096; display: block; margin-bottom: 4px;">기온</span>
                    <b style="font-size: 1.3em; color: #2d3748;">28℃</b>
                </div>
                <div style="flex: 1; background: #ffffff; padding: 12px; border-radius: 8px; border: 1px solid #edf2f7;">
                    <span style="font-size: 0.85em; color: #718096; display: block; margin-bottom: 4px;">상태</span>
                    <b style="font-size: 1.1em; color: #2d3748;">☁️ 구름많음</b>
                </div>
                <div style="flex: 1; background: #ffffff; padding: 12px; border-radius: 8px; border: 1px solid #edf2f7;">
                    <span style="font-size: 0.85em; color: #718096; display: block; margin-bottom: 4px;">강수확률</span>
                    <b style="font-size: 1.3em; color: #3182ce;">60%</b>
                </div>
            </div>
        </div>
    </div>


    <div class="station-food-wrap" style="margin: 30px 0; padding-top: 5px;">
        <h4 style="margin-bottom: 25px !important;">장성역 API 실시간 맛집 정보</h4>
        <ul style="list-style: none !important; padding: 0 !important; margin: 0 !important; font-family: 'Noto Sans KR', sans-serif;">
                                                <li style="margin-bottom: 20px !important; padding-bottom: 15px !important; border-bottom: 1px solid #eee !important;">
                        <a href="https://map.naver.com/v5/search/%ED%95%B4%EC%9A%B4%EB%8C%80%EC%8B%9D%EB%8B%B9+%EC%A0%84%EB%9D%BC%EB%82%A8%EB%8F%84+%EC%9E%A5%EC%84%B1%EA%B5%B0+%EC%9E%A5%EC%84%B1%EC%9D%8D+%EC%98%81%EC%B2%9C%EB%A6%AC+1273-116" target="_blank" style="text-decoration: none !important; display: block; color: inherit !important;" rel="noopener">
                            <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 5px;">
                                <strong style="font-size: 1.1rem !important; color: #222 !important;">해운대식당</strong>
                                <span style="background: #f1f3f5; color: #666; font-size: 0.7rem; padding: 2px 6px; border-radius: 4px;">음식점&gt;한식</span>
                            </div>
                            <div style="font-size: 0.9rem !important; color: #888 !important;">전라남도 장성군 장성읍 영천리 1273-116</div>
                        </a>
                    </li>
                                    <li style="margin-bottom: 20px !important; padding-bottom: 15px !important; border-bottom: 1px solid #eee !important;">
                        <a href="https://map.naver.com/v5/search/%EC%B9%B4%ED%8E%98%EB%88%84%EB%B9%84+%EC%A0%84%EB%9D%BC%EB%82%A8%EB%8F%84+%EC%9E%A5%EC%84%B1%EA%B5%B0+%EC%9E%A5%EC%84%B1%EC%9D%8D+%EA%B8%B0%EC%82%B0%EB%A6%AC+221" target="_blank" style="text-decoration: none !important; display: block; color: inherit !important;" rel="noopener">
                            <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 5px;">
                                <strong style="font-size: 1.1rem !important; color: #222 !important;">카페누비</strong>
                                <span style="background: #f1f3f5; color: #666; font-size: 0.7rem; padding: 2px 6px; border-radius: 4px;">음식점&gt;카페,디저트</span>
                            </div>
                            <div style="font-size: 0.9rem !important; color: #888 !important;">전라남도 장성군 장성읍 기산리 221</div>
                        </a>
                    </li>
                                    <li style="margin-bottom: 20px !important; padding-bottom: 15px !important; border-bottom: 1px solid #eee !important;">
                        <a href="https://map.naver.com/v5/search/%EA%B3%A0%EB%8F%88%EC%83%81%ED%9A%8C+%EC%A0%84%EB%9D%BC%EB%82%A8%EB%8F%84+%EC%9E%A5%EC%84%B1%EA%B5%B0+%EC%9E%A5%EC%84%B1%EC%9D%8D+%EC%98%81%EC%B2%9C%EB%A6%AC+1022-5" target="_blank" style="text-decoration: none !important; display: block; color: inherit !important;" rel="noopener">
                            <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 5px;">
                                <strong style="font-size: 1.1rem !important; color: #222 !important;">고돈상회</strong>
                                <span style="background: #f1f3f5; color: #666; font-size: 0.7rem; padding: 2px 6px; border-radius: 4px;">음식점&gt;일식&gt;돈가스</span>
                            </div>
                            <div style="font-size: 0.9rem !important; color: #888 !important;">전라남도 장성군 장성읍 영천리 1022-5</div>
                        </a>
                    </li>
                                    <li style="margin-bottom: 20px !important; padding-bottom: 15px !important; border-bottom: 1px solid #eee !important;">
                        <a href="https://map.naver.com/v5/search/%EC%B9%B4%ED%8E%98%EC%97%AC%EC%9C%A0+%EC%A0%84%EB%9D%BC%EB%82%A8%EB%8F%84+%EC%9E%A5%EC%84%B1%EA%B5%B0+%EC%9E%A5%EC%84%B1%EC%9D%8D+%EC%98%81%EC%B2%9C%EB%A6%AC+1482-6" target="_blank" style="text-decoration: none !important; display: block; color: inherit !important;" rel="noopener">
                            <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 5px;">
                                <strong style="font-size: 1.1rem !important; color: #222 !important;">카페여유</strong>
                                <span style="background: #f1f3f5; color: #666; font-size: 0.7rem; padding: 2px 6px; border-radius: 4px;">음식점&gt;카페,디저트</span>
                            </div>
                            <div style="font-size: 0.9rem !important; color: #888 !important;">전라남도 장성군 장성읍 영천리 1482-6</div>
                        </a>
                    </li>
                                    <li style="margin-bottom: 20px !important; padding-bottom: 15px !important; border-bottom: 1px solid #eee !important;">
                        <a href="https://map.naver.com/v5/search/%EB%A9%94%EA%B0%80MGC%EC%BB%A4%ED%94%BC+%EC%A0%84%EB%82%A8%EC%9E%A5%EC%84%B1%EC%A0%90+%EC%A0%84%EB%9D%BC%EB%82%A8%EB%8F%84+%EC%9E%A5%EC%84%B1%EA%B5%B0+%EC%9E%A5%EC%84%B1%EC%9D%8D+%EC%98%81%EC%B2%9C%EB%A6%AC+1019-3" target="_blank" style="text-decoration: none !important; display: block; color: inherit !important;" rel="noopener">
                            <div style="display: flex; align-items: center; gap: 10px; margin-bottom: 5px;">
                                <strong style="font-size: 1.1rem !important; color: #222 !important;">메가MGC커피 전남장성점</strong>
                                <span style="background: #f1f3f5; color: #666; font-size: 0.7rem; padding: 2px 6px; border-radius: 4px;">카페,디저트&gt;카페</span>
                            </div>
                            <div style="font-size: 0.9rem !important; color: #888 !important;">전라남도 장성군 장성읍 영천리 1019-3</div>
                        </a>
                    </li>
                                    </ul>
    </div>
    



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">실시간 주차장 요금 및 위치</h3>


    <div class="station-parking-section" style="margin: 30px 0; padding-top: 10px; min-height: 400px;">
        <h4 style="margin-bottom: 20px !important;">장성역 실시간 주차장 요금</h4>
        
                    <div style="text-align: center; padding: 50px 20px; background: #f8fafc; border: 1px dashed #cbd5e1; border-radius: 12px; font-family: 'Noto Sans KR', sans-serif;">
                <p style="color: #64748b; margin: 0;">해당 역의 공식 주차 정보가 없습니다.</p>
            </div>
            </div>
    


    <div class="station-location-info" style="margin: 20px 0; font-family: 'Noto Sans KR', sans-serif;">
        <h4 style="margin-bottom: 20px !important;">장성역 주차장 위치 및 문의</h4>
        
        <div style="margin-bottom: 25px; line-height: 1.8; background: #f8fafc; padding: 20px; border-radius: 12px; border: 1px solid #e2e8f0;">
            <p style="margin: 5px 0; font-size: 1.05rem; color: #334155;"><strong>📍 주차장 주소 :</strong> 장성역 인근 공영 및 노상주차장 이용 권장</p>
            <p style="margin: 5px 0; font-size: 1.05rem; color: #334155;"><strong>📞 문의전화 :</strong> <a href="tel:1544-7788" style="color: #0052a4; font-weight: bold; text-decoration: none;">1544-7788</a></p>
        </div>

        <div style="text-align: center; margin: 30px 0;">
            <a href="https://map.naver.com/v5/search/%EC%9E%A5%EC%84%B1%EC%97%AD+%EC%A3%BC%EC%B0%A8%EC%9E%A5" target="_blank" rel="noopener noreferrer" style="display: inline-block; background: #03c75a; color: white; padding: 15px 35px; border-radius: 8px; text-decoration: none; font-weight: bold; font-size: 1.1rem; box-shadow: 0 4px 6px rgba(0,0,0,0.1);">
                  네이버 지도에서 실시간 위치 확인
            </a>
        </div>
    </div>
    



<p class="wp-block-paragraph"></p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img fetchpriority="high" decoding="async" width="450" height="450" src="https://krailroad.co.kr/wp-content/uploads/2026/01/장성역-무궁화호-누리로-시간표-정차역-노선도-첫기차-마지막기차-요금표.jpg" alt="장성역-무궁화호-누리로-시간표-정차역-노선도-첫기차-마지막기차-요금표" class="wp-image-15827" srcset="https://krailroad.co.kr/wp-content/uploads/2026/01/장성역-무궁화호-누리로-시간표-정차역-노선도-첫기차-마지막기차-요금표.jpg 450w, https://krailroad.co.kr/wp-content/uploads/2026/01/장성역-무궁화호-누리로-시간표-정차역-노선도-첫기차-마지막기차-요금표-300x300.jpg 300w, https://krailroad.co.kr/wp-content/uploads/2026/01/장성역-무궁화호-누리로-시간표-정차역-노선도-첫기차-마지막기차-요금표-150x150.jpg 150w" sizes="(max-width: 450px) 100vw, 450px" /></figure>
</div>]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
