PageSourceSearch

https://www.sgilbo.kr/ko-kr/articles?category=S1N19

html sgilbo.kr collected 2026-10-02 20:45:38 UTC 111,577 bytes, 2,596 lines download raw bytes

1<!DOCTYPE html>
2<html lang="ko-KR" dir="ltr">
3<head>
4<meta charset="utf-8">
5<meta name="viewport" content="width=1200">
6<link rel="preconnect" href="https://cdn.www.sgilbo.kr">
7<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin="anonymous">
8<link rel="dns-prefetch" href="https://c11bd799973d.edge.sdk.awswaf.com">
9<link rel="dns-prefetch" href="https://www.googletagmanager.com">
10<script>window.__ENV={"API_BASE_URL":"https://www.sgilbo.kr","SITE_TYPE":"NEWS","DEFAULT_REGION":"ko-kr","IMAGE_CDN_DOMAIN":"cdn.www.sgilbo.kr","AWS_S3_BUCKET_NAME":"pango-lingo-sgilbo-assetsbucket-sawsdkom","RECAPTCHA_SITE_KEY":"6LelPcMrAAAAALidtu2C-OAumOBLtC3cQxV8W9zi","VAPID_PUBLIC_KEY":"BBcjOaXYcA_VoHANEYaiRgkDE0tc8LyCXhKd2auIO4-ZtKyBvlFTaaHl717UftM_2nI7df3QIRWmRWX3Jzwy8ic","FLOBI_API_URL":"http://pango-flobi-env-1.eba-fa8qg5yp.ap-northeast-2.elasticbeanstalk.com","FLOBI_APPROVE":"false","ENABLE_BOARD":"false","LINGO_NEWS_ENABLED":"false","KAKAO_APP_KEY":"","AI_CHAT_STREAM_URL":"https://kscnfgbjin7wyys7j56rmn3yam0sxmjb.lambda-url.ap-northeast-2.on.aws/","GENERATE_IMAGE_URL":"https://napoy2m5tlxof2t27tlnt32jau0axbza.lambda-url.ap-northeast-2.on.aws/","TRANSLATOR_URL":"https://ifm4fblbupj47bg3r5tnx2akqq0lsokd.lambda-url.ap-northeast-2.on.aws/","MIGRATION_SERVER_URL":"","WEBHOOK_TRIGGER_DEFAULT_ENABLED":"true","CDN_DOMAIN":"","BASE_URL":"","SITE_URL":""}</script>
vendor: 1 bytes, line 10
10
11<script src="https://c11bd799973d.edge.sdk.awswaf.com/c11bd799973d/0653c6043266/challenge.js" defer></script>
11
12<title>성동신문 | 성광일보</title>
13<meta name="description" content="성광일보 성동신문 최신 기사 목록">
14<meta name="robots" content="max-image-preview:large">
15<link rel="canonical" href="https://www.sgilbo.kr/ko-kr/articles?category=S1N19">
16<link rel="alternate" hreflang="x-default" href="https://www.sgilbo.kr/ko-kr/articles?category=S1N19">
17<link rel="alternate" hreflang="ko-KR" href="https://www.sgilbo.kr/ko-kr/articles?category=S1N19">
18<meta property="og:type" content="website">
19<meta property="og:title" content="성동신문 | 성광일보">
20<meta property="og:description" content="성광일보 성동신문 최신 기사 목록">
21<meta property="og:url" content="https://www.sgilbo.kr/ko-kr/articles?category=S1N19">
22<meta property="og:site_name" content="성광일보">
23<meta property="og:locale" content="ko_KR">
24<meta property="og:image" content="https://cdn.www.sgilbo.kr/w1200/q100/f_original/uploads/dab958d0-e92f-4d35-a5b3-f41e12866dc7.png">
25<meta name="twitter:image" content="https://cdn.www.sgilbo.kr/w1200/q100/f_original/uploads/dab958d0-e92f-4d35-a5b3-f41e12866dc7.png">
26<meta name="twitter:card" content="summary_large_image">
27<meta name="twitter:title" content="성동신문 | 성광일보">
28<meta name="twitter:description" content="성광일보 성동신문 최신 기사 목록">
29<link rel="manifest" href="/api/manifest">
30<link rel="icon" href="https://cdn.www.sgilbo.kr/w32/q100/f_png/configs/2025-12-02/42969e45-f555-438e-890a-d971f454b863.png" type="image/png" sizes="32x32">
31<link rel="icon" href="https://cdn.www.sgilbo.kr/w48/q100/f_png/configs/2025-12-02/42969e45-f555-438e-890a-d971f454b863.png" type="image/png" sizes="48x48">
32<link rel="icon" href="https://cdn.www.sgilbo.kr/w96/q100/f_png/configs/2025-12-02/42969e45-f555-438e-890a-d971f454b863.png" type="image/png" sizes="96x96">
33<link rel="icon" href="https://cdn.www.sgilbo.kr/w128/q100/f_png/configs/2025-12-02/42969e45-f555-438e-890a-d971f454b863.png" type="image/png" sizes="128x128">
34<link rel="icon" href="https://cdn.www.sgilbo.kr/w192/q100/f_png/configs/2025-12-02/42969e45-f555-438e-890a-d971f454b863.png" type="image/png" sizes="192x192">
35<link rel="icon" href="https://cdn.www.sgilbo.kr/w228/q100/f_png/configs/2025-12-02/42969e45-f555-438e-890a-d971f454b863.png" type="image/png" sizes="228x228">
36<link rel="icon" href="https://cdn.www.sgilbo.kr/w512/q100/f_png/configs/2025-12-02/42969e45-f555-438e-890a-d971f454b863.png" type="image/png" sizes="512x512">
37<link rel="icon" href="https://cdn.www.sgilbo.kr/w16/q100/f_png/configs/2025-12-02/b937cf37-0fb4-41d4-9d98-2ab0601a9e18.png" type="image/png" sizes="16x16">
38<link rel="icon" href="https://cdn.www.sgilbo.kr/w32/q100/f_png/configs/2025-12-02/58af618d-661c-46a8-bad7-25bb39b2c25a.png" type="image/png" sizes="32x32">
39<link rel="icon" href="https://cdn.www.sgilbo.kr/w192/q100/f_png/configs/2025-12-02/07b2f89d-ed2c-4e5f-a085-072636ac7072.png" type="image/png" sizes="192x192">
40<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.www.sgilbo.kr/w180/q100/f_png/configs/2025-12-02/e66445a3-0dd1-45d8-a0c8-2ece1725974a.png">
41<link rel="alternate" type="application/rss+xml" title="성광일보 RSS" href="https://www.sgilbo.kr/rss/recent/ko-kr/sitemap.xml">
42<link rel="stylesheet" crossorigin="anonymous" href="https://cdn.jsdelivr.net/gh/orioncactus/[email protected]/dist/web/variable/pretendardvariable-dynamic-subset.min.css" media="print" data-font="pretendard">
43<script>!function(){var l=document.querySelector('link[data-font="pretendard"]');if(!l)return;if(l.sheet){l.media='all'}else{l.addEventListener('load',function(){this.media='all'})}}()</script>
43
44<noscript><link rel="stylesheet" crossorigin="anonymous" href="https://cdn.jsdelivr.net/gh/orioncactus/[email protected]/dist/web/variable/pretendardvariable-dynamic-subset.min.css"></noscript>
45<meta name="naver-site-verification" content="f12e0c79ea6f4beb29ea48a70b69f78cfaea6e27">
46<meta name="google-site-verification" content="vFpEVAuQiCTvBZIRc_y8MiyMte2pOFzlGRU8OHvGTso">
47<script>(function() {
48    // 1. 현재 경로
49    var currentPath = window.location.pathname;    
50    // 2. 목표 언어 설정
51    var targetLocale = '/ko-kr';
52    // 3. 이미 ko-kr로 접속해 있다면 아무것도 하지 않고 종료
53    if (currentPath.indexOf(targetLocale) === 0) {
54      return;
55    }
56
57    // 4. 정규표현식: 슬래시(/) 뒤에 "문자2개-문자2개" 패턴이 오는지 검사
58    // 예: /en-us, /ja-jp, /zh-cn 등 모든 패턴 매칭
59    var localeRegex = /^\/[a-z]{2}-[a-z]{2}/i;
60
61    // 5. 현재 경로가 위 패턴(다른 언어 코드)으로 시작하는 경우
62    if (localeRegex.test(currentPath)) {
63      // 해당 언어 부분을 /ko-kr 로 교체
64      var newPath = currentPath.replace(localeRegex, targetLocale);
65      // 교체된 주소로 즉시 이동 (뒤로가기 방지)
66      window.location.replace(newPath + window.location.search + window.location.hash);
67    }
68  })();</script>
vendor: 1 bytes, line 68
68
69<script>window.dataLayer=window.dataLayer||[];function gtag(){dataLayer.push(arguments);}</script>
vendor: 1 bytes, line 69
69
70<script type="application/ld+json">{"@context":"https://schema.org","@id":"https://www.sgilbo.kr/#website","@type":"WebSite","url":"https://www.sgilbo.kr","name":"성광일보","description":"인터넷 신문","inLanguage":"ko-KR","publisher":{"@type":"Organization","@id":"https://www.sgilbo.kr/#organization","name":"성광일보","url":"https://www.sgilbo.kr","logo":{"@type":"ImageObject","url":"https://cdn.www.sgilbo.kr/w224/q100/configs/2025-12-02/53c70b0b-d5bb-4bfd-a212-32096e493621.png"}},"potentialAction":{"@type":"SearchAction","target":"https://www.sgilbo.kr/ko-kr/articles?q={query}","query-input":{"@type":"PropertyValueSpecification","valueName":"query","valueRequired":true}}}</script>
vendor: 1 bytes, line 70
70
71<script type="application/ld+json">{"@context":"https://schema.org","@type":"NewsMediaOrganization","@id":"https://www.sgilbo.kr/#organization","name":"성광일보","url":"https://www.sgilbo.kr","logo":{"@type":"ImageObject","url":"https://cdn.www.sgilbo.kr/w224/q100/configs/2025-12-02/53c70b0b-d5bb-4bfd-a212-32096e493621.png"},"description":"인터넷 신문","telephone":"02-2294-7322","address":{"@type":"PostalAddress","streetAddress":"서울특별시 광진구 용마산로 128, 원방빌딩 501호(중곡동)","addressCountry":"KR"}}</script>
vendor: 1 bytes, line 71
71
72<script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"https://www.sgilbo.kr/ko-kr","name":"홈"}},{"@type":"ListItem","position":2,"item":{"@id":"https://www.sgilbo.kr/ko-kr/articles?category=S1N19","name":"성동신문"}}]}</script>
72
73
74
75<style>*,*::before,*::after{box-sizing:border-box}
76/* 헤딩 마진 리셋.
77   브라우저 기본값은 em 단위라(h2 .83em, h3 1em, h4 1.33em) 폰트 크기에 비례하고,
78   h4 가 h2 보다 마진이 커지는 역전도 생긴다. 셸에 헤딩 규칙이 없어 그 기본값이
79   그대로 먹고 있었다. 간격은 섹션 Liquid 가 자기 클래스로 정한다
80   (실측: 미디어 페이지 헤딩 전부 이미 저자 CSS 로 마진을 지정하고 있다). */
81h1,h2,h3,h4,h5,h6{margin:0}
82/* <a> 리셋 — Tailwind Preflight 와 같은 값.
83   구 경로는 globals.css(@tailwind base)가 이 규칙을 걸어줬는데, 이 경로는 전역 CSS 를
84   싣지 않아 브라우저 기본(파란 글자 + 밑줄)이 그대로 나왔다. 색·밑줄은 섹션이 자기
85   규칙으로 정한다. */
86a{color:inherit;text-decoration:inherit}
87body{margin:0;font-family:var(--section-font-family);line-height:1.5;color:#333;letter-spacing:-.02em;font-size:16px;word-break:normal;overflow-wrap:anywhere;background-color:#fff}
88:lang(ko){word-break:keep-all}
89/* 섹션 Liquid 가 var() 로 참조하는 변수. 정의가 없으면 색이 깨진다. */
90:root{
91--section-font-family:"Pretendard Variable",Pretendard,-apple-system,sans-serif;
92--background:#f9fafb;--foreground:#111827;--primary:#ff4c17;--primary-hover:#e63c0a;
93--border:#e5e7eb;--card-background:#fff;--muted:#f3f4f6;--muted-foreground:#6b7280;
94}
95html.lang-ja :root{--section-font-family:"Hiragino Kaku Gothic ProN","Hiragino Sans","BIZ UDPGothic",system-ui,-apple-system,sans-serif}
96.layout-container{margin:0 auto}
97.layout-section-full{width:100%}
98.layout-section-inner{margin:0 auto;width:100%}
99.layout-section-inner.constrained{max-width:1200px}
100.layout-body{display:flex;position:relative}
101.layout-sidebar-item{margin-bottom:1rem}
102.layout-main{min-height:100vh;width:100%;margin:0 auto;position:relative}
103.layout-main.constrained{max-width:1200px}
104.layout-popup-overlay{position:absolute;inset:0;z-index:100;pointer-events:none}
105.layout-popup-item{pointer-events:auto}
106.layout-sidebar-anchor{position:relative;width:0}
107.desktop-layout-wrapper{min-width:1200px;width:100%;margin:0 auto}
108@media (max-width:1200px){body:has(.desktop-layout-wrapper){min-width:1200px!important;overflow-x:auto!important}.desktop-layout-wrapper{min-width:1200px!important}}
109/* grid item 기본값 min-width:auto 해제 — 넓은 콘텐츠가 트랙을 밀어내는 것을 막는다 */
110.section-wrapper{min-width:0}
111.section-html-container{width:100%;max-width:100%}
112.fixed-right-wing{position:fixed;top:calc(var(--header-height,100px) + var(--wing-margin-top,16px) - var(--wing-bottom-adjust,0px));right:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;padding-left:64px;left:calc(50vw + 540px);will-change:transform}
113.fixed-left-wing{position:fixed;top:calc(var(--header-height,100px) + 16px);left:0;display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;padding-right:64px;right:calc(50vw + 540px);will-change:transform}
114@media (min-width:1600px){.fixed-right-wing{left:calc(50vw + 600px)}.fixed-left-wing{right:calc(50vw + 600px)}}
115/* 푸터 저작권 표기 — 섹션이 아니라 렌더러가 직접 뿜는다 (copyright.css 에서 옮겨옴) */
116.section-news-footer-copyright{display:flex;justify-content:space-between;align-items:center;font-size:.85rem;color:#888;padding:2rem 0;max-width:1200px;margin-left:auto;margin-right:auto}
117.section-news-footer-copyright a{color:inherit;text-decoration:none}
118.section-news-footer-copyright-text{text-align:left}
119.section-news-footer-copyright-powered-by{text-align:right;display:flex;align-items:end;gap:.35rem;font-size:.7rem}
120.section-news-footer-copyright-powered-by img{height:auto;object-fit:contain;vertical-align:middle;display:block}
121@media screen and (max-width:768px){.section-news-footer-copyright{padding:1rem;height:auto;flex-direction:column;gap:.5rem;align-items:flex-start}.section-news-footer-copyright-powered-by{text-align:left}}body{background-color:#ffffff !important;height:auto}</style>
122</head>
123<body>
124<div class="layout-container desktop-layout-wrapper" style="background-color:#ffffff;
124color:#1a1a1a;--section-muted-fg:#737373"><header id="header-section" class="layout-section-full" style="background-color:#ffffff;padding-top:0;padding-bottom:0;--section-muted-fg:#737373"><div class="layout-section-inner"><div style="position:relative"><div class="grid-masonry-layout desktop-layout" style="display:grid;grid-template-columns:repeat(24, 1fr);gap:1rem;width:100%;max-width:100%;position:relative;min-height:0;margin:0 auto"><div class="section-wrapper" style="grid-column:1 / 25;grid-row:1 / 8;width:100%;max-width:100%;box-sizing:border-box;position:relative"><div class="section-html-container"><style>
125:root {
126--section-font-family: "var(--font-noto-sans-kr)", "var(--font-noto-sans-sc)",
127"var(--font-noto-sans-tc)", system-ui, sans-serif;
128}
129.hdn-header-wrapper {
130background-color: #00a2ea;background-image: url('https://cdn.www.sgilbo.kr/w1920/q75/article-images/2025-12-02/9120c0b3-369c-4186-ad55-30ccf9536fee.png');
131background-size: cover;
132background-position: center;
133background-repeat: no-repeat;color: #333;
134}
135.hdn-header-container {
136max-width: 1200px;
137margin: 0 auto;
138padding: 0 10px;
139display: flex;
140justify-content: space-between;
141align-items: center;
142}
143.hdn-publish-date {
144font-size: 0.85rem;
145color: rgba(255, 255, 255, 0.75);
146margin-right: 16px;
147white-space: nowrap;
148}
149.hdn-auth-links {
150display: flex;
151align-items: center;
152gap: 12px;
153}
154.hdn-auth-links a {
155color: rgba(255, 255, 255, 0.75);
156text-decoration: none;
157transition: color 0.2s ease;
158display: flex;
159align-items: center;
160font-size: 0.9rem;
161}
162.hdn-auth-links a:hover {
163color: #ffc107;
164}
165.hdn-auth-links .user-guest {
166display: flex;
167align-items: center;
168gap: 12px;
169}
170.hdn-auth-links .user-guest a:not(:last-child)::after {
171content: '|';
172margin-left: 12px;
173color: rgba(255, 255, 255, 0.5);
174}
175.hdn-auth-links .user-logged-in a:not(:last-child)::after {
176content: '|';
177margin-left: 12px;
178color: rgba(255, 255, 255, 0.5);
179}
180.hdn-auth-links .user-logged-in { 
181display: none; 
182gap: 12px;
183}
184.hdn-header-top {
185padding: 12px 0;
186}
187.hdn-header-top .hdn-header-container {
188display: flex;
189justify-content: space-between;
190align-items: center;
191}
192.hdn-header-main {
193padding: 12px 0;
194}
195.hdn-header-main .hdn-header-container {
196display: flex;
197justify-content: space-between;
198align-items: center;
199gap: 30px;
200}
201.hdn-header-main .hdn-logo-wrapper {
202text-align: center;
203flex-shrink: 0;
204}
205.hdn-logo-wrapper a {
206text-decoration: none;
207color: rgba(255, 255, 255, 0.75);
208display: inline-block;
209}
210.hdn-logo-wrapper img {
211max-height: 80px;
212width: auto;
213}
214.hdn-logo-wrapper .site-title-text {
215font-size: 2.5rem;
216font-weight: bold;
217}
218.hdn-header-banner {
219width: 250px;
220flex-shrink: 0;
221}
222.hdn-header-banner a {
223display: block;
224text-decoration: none;
225transition: opacity 0.2s ease;
226}
227.hdn-header-banner a:hover {
228opacity: 0.8;
229}
230.hdn-header-banner img {
231width: 250px;
232height: 80px;
233object-fit: cover;
234display: block;
235}
236.hdn-header-nav {
237position: sticky;
238top: 0;
239z-index: 1000;
240background: transparent;
241border-bottom: 1px solid #e8e8e9;
242}
243.hdn-nav-container {
244display: flex;
245align-items: center;
246justify-content: space-between;
247height: 60px;
248}
249.hdn-nav-actions-left {
250display: flex;
251align-items: center;
252}
253.hdn-nav-actions-right {
254display: flex;
255align-items: center;
256gap: 8px;
257}
258.hdn-nav-actions-right button {
259background: none;
260border: none;
261cursor: pointer;
262padding: 10px;
263position: relative;
264z-index: 1002;
265}
266.hdn-nav-actions-right svg {
267width: 28px;
268height: 28px;
269color: #fff;
270transition: color 0.3s ease;
271}
272.hdn-main-nav {
273flex-grow: 1;
274text-align: left;
275margin-left: 30px;
276}
277.hdn-main-nav > ul {
278display: flex;
279list-style: none;
280margin: 0;
281padding: 0;
282gap: 20px;
283}
284.hdn-main-nav > ul > li {
285position: relative;
286}
287.hdn-main-nav .nav-link {
288white-space: nowrap;
289overflow: visible;
290color: #fff;
291text-decoration: none;
292font-size: 1rem;
293font-weight: 500;
294padding: 10px 0;
295position: relative;
296transition: color 0.3s ease;
297display: block;
298}
299.hdn-main-nav .nav-link:hover {
300color: #ffc107;
301}
302.hdn-main-nav > ul > li > .nav-link::after {
303content: '';
304position: absolute;
305bottom: 0;
306left: 0;
307width: 0;
308height: 2px;
309background: #ffc107;
310transition: width 0.3s ease;
311}
312.hdn-main-nav > ul > li > .nav-link:hover::after {
313width: 100%;
314}
315.hdn-dropdown-menu {
316position: absolute;
317top: 100%;
318left: 50%;
319transform: translateX(-50%);
320background: #fff;
321border: 1px solid #e8e8e9;
322box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
323list-style: none;
324margin: 0;
325padding: 0;
326min-width: 80px;
327opacity: 0;
328visibility: hidden;
329transform: translateX(-50%) translateY(-10px);
330transition: opacity 0.3s ease, visibility 0.3s ease, transform 0.3s ease;
331z-index: 1001;
332display: flex;
333flex-direction: column;
334}
335.hdn-main-nav > ul > li:hover .hdn-dropdown-menu {
336opacity: 1;
337visibility: visible;
338transform: translateX(-50%) translateY(0);
339}
340.hdn-dropdown-menu li {
341margin: 0;
342padding: 0;
343width: 100%;
344}
345.hdn-dropdown-menu li::after {
346display: none !important;
347}
348.hdn-dropdown-menu a {
349display: block;
350padding: 8px 12px;
351color: #333;
352text-decoration: none;
353font-size: 0.95rem;
354transition: background-color 0.2s ease, color 0.2s ease;
355white-space: nowrap;
356width: 100%;
357box-sizing: border-box;
358}
359.hdn-dropdown-menu a:hover {
360background-color: #f5f5f5;
361color: #ffc107;
362}
363.hdn-nav-actions-left button {
364background: none;
365border: none;
366cursor: pointer;
367padding: 10px;
368position: relative;
369z-index: 1002; 
370}
371.hdn-fullscreen-menu.active .hdn-nav-actions-left svg,
372.hdn-fullscreen-menu.active .hdn-nav-actions-left .line {
373color: #fff;
374background-color: #fff;
375}
376.hdn-nav-actions-left .hamburger-icon {
377width: 28px;
378height: 21px;
379display: flex;
380flex-direction: column;
381justify-content: space-between;
382}
383.hdn-nav-actions-left .line {
384display: block;
385height: 3px;
386width: 100%;
387background-color: #fff;
388border-radius: 10px;
389transition: background-color 0.3s ease;
390}
391.hdn-fullscreen-menu {
392position: fixed;
393top: 0;
394left: 0;
395width: 100%;
396height: 100%;
397z-index: 1001;
398opacity: 0;
399visibility: hidden;
400transition: opacity 0.3s ease, visibility 0.3s ease;
401}
402.hdn-fullscreen-menu.active {
403opacity: 1;
404visibility: visible;
405}
406.hdn-drawer-overlay {
407position: absolute;
408top: 0;
409left: 0;
410width: 100%;
411height: 100%;
412background-color: rgba(0, 0, 0, 0.5);
413}
414.hdn-drawer-content {
415position: absolute;
416top: 0;
417left: 0;
418width: 400px;
419height: 100%;
420background-color: #fff;
421box-shadow: 2px 0 10px rgba(0, 0, 0, 0.1);
422transform: translateX(-100%);
423transition: transform 0.3s ease;
424overflow-y: auto;
425z-index: 1002;
426}
427.hdn-fullscreen-menu.active .hdn-drawer-content {
428transform: translateX(0);
429}
430.hdn-drawer-header {
431display: flex;
432justify-content: space-between;
433align-items: center;
434padding: 20px;
435border-bottom: 1px solid #e8e8e9;
436}
437.hdn-drawer-logo {
438text-decoration: none;
439color: #000;
440}
441.hdn-drawer-logo img {
442max-height: 40px;
443width: auto;
444}
445.hdn-drawer-logo .site-title-text {
446font-size: 1.5rem;
447font-weight: bold;
448}
449.hdn-drawer-close-btn {
450background: none;
451border: none;
452cursor: pointer;
453padding: 5px;
454display: flex;
455align-items: center;
456justify-content: center;
457}
458.hdn-drawer-close-btn svg {
459width: 28px;
460height: 28px;
461color: #333;
462}
463.hdn-drawer-menu {
464padding: 0;
465margin: 0;
466list-style: none;
467}
468.hdn-drawer-menu-item {
469border-bottom: 1px solid #e8e8e9;
470}
471.hdn-drawer-menu-item a {
472display: flex;
473justify-content: space-between;
474align-items: center;
475padding: 16px 20px;
476color: #333;
477text-decoration: none;
478font-size: 1rem;
479transition: background-color 0.2s ease, color 0.2s ease;
480}
481.hdn-drawer-menu-item a:hover {
482background-color: #f5f5f5;
483color: #ffc107;
484}
485.hdn-drawer-menu-item.has-children > a::after {
486content: '';
487width: 10px;
488height: 10px;
489border-right: 2px solid currentColor;
490border-bottom: 2px solid currentColor;
491display: inline-block;
492transform: rotate(45deg);
493transition: transform 0.3s ease;
494}
495.hdn-drawer-menu-item.has-children.expanded > a::after {
496transform: rotate(225deg);
497}
498.hdn-drawer-submenu {
499max-height: 0;
500overflow: hidden;
501transition: max-height 0.3s ease;
502background-color: #f9f9f9;
503}
504.hdn-drawer-menu-item.expanded .hdn-drawer-submenu {
505max-height: 1000px;
506}
507.hdn-drawer-submenu li {
508border-bottom: 1px solid #e8e8e9;
509}
510.hdn-drawer-submenu li:last-child {
511border-bottom: none;
512}
513.hdn-drawer-submenu a {
514padding-left: 40px;
515font-size: 0.9rem;
516color: #666;
517}
518.hdn-drawer-submenu a:hover {
519background-color: #f0f0f0;
520color: #ffc107;
521}
522.hdn-modal-overlay {
523position: fixed;
524top: 0;
525left: 0;
526width: 100%;
527height: 100%;
528background-color: rgba(255, 255, 255, 0.5);
529backdrop-filter: blur(10px);
530-webkit-backdrop-filter: blur(10px);
531z-index: 1003;
532display: flex;
533justify-content: center;
534align-items: center;
535padding: 2rem;
536opacity: 0;
537visibility: hidden;
538transition: opacity 0.3s ease, visibility 0.3s ease;
539}
540.hdn-modal-overlay.active {
541opacity: 1;
542visibility: visible;
543}
544.hdn-modal-box {
545width: 100%;
546max-width: 600px;
547background: #fff;
548border-radius: 10px;
549box-shadow: 0 10px 30px rgba(0,0,0,0.1);
550transform: scale(0.95);
551transition: transform 0.3s ease;
552}
553.hdn-modal-overlay.active .hdn-modal-box {
554transform: scale(1);
555}
556.hdn-spotlight-form {
557display: flex;
558align-items: center;
559position: relative;
560}
561.hdn-spotlight-input {
562width: 100%;
563border: none;
564background: transparent;
565padding: 20px 60px 20px 25px;
566font-size: 1.5rem;
567color: #333;
568outline: none;
569}
570.hdn-spotlight-submit-btn {
571position: absolute;
572right: 10px;
573top: 50%;
574transform: translateY(-50%);
575background: #00a2ea;
576color: white;
577border: none;
578border-radius: 8px;
579width: 44px;
580height: 44px;
581display: flex;
582align-items: center;
583justify-content: center;
584cursor: pointer;
585transition: background-color 0.3s ease;
586}
587.hdn-spotlight-submit-btn:hover {
588background-color: #ffc107;
589}
590.hdn-spotlight-submit-btn svg {
591width: 24px;
592height: 24px;
593}
594#languageModal .hdn-modal-box {
595max-width: 800px;
596padding: 1rem;
597}
598.hdn-language-header {
599text-align: center;
600padding: 1rem;
601font-size: 1.2rem;
602font-weight: 500;
603color: #333;
604}
605.hdn-language-groups {
606padding: 1rem;
607}
608.hdn-language-group {
609margin-bottom: 2rem;
610}
611.hdn-language-group-title {
612font-size: 0.8rem;
613font-weight: 500;
614color: #777;
615text-transform: uppercase;
616letter-spacing: 0.05em;
617padding-bottom: 0.5rem;
618border-bottom: 1px solid #e8e8e9;
619margin-bottom: 1rem;
620}
621.hdn-language-grid {
622display: grid;
623grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
624gap: 0.75rem;
625}
626.hdn-language-grid a {
627display: block;
628padding: 0.75rem 1rem;
629text-decoration: none;
630color: #333;
631border-radius: 8px;
632transition: background-color 0.2s ease, color 0.2s ease;
633}
634.hdn-language-grid a:hover {
635background-color: #f0f0f0;
636}
637.hdn-language-grid a.current-lang {
638font-weight: bold;
639color: #ffc107;
640background-color: #f0f0f0;
641}
642</style>
643<div>
644<div class="hdn-header-wrapper">
645<div class="hdn-header-top">
646<div class="hdn-header-container">
647<div class="hdn-publish-date">
648발행일 : <span id="current-date-time"></span>
649</div>
650<div class="hdn-auth-links">
651<div class="user-guest"><a href="/login" rel="nofollow">로그인</a><a href="/signup/step1" rel="nofollow">회원가입</a></div>
652<div class="user-logged-in"><a href="/my-page" class="auth-menu-link" rel="nofollow">마이페이지</a><a href="#" class="auth-menu-link logout-btn">로그아웃</a></div>
653</div>
654</div>
655</div>
656<div class="hdn-header-main">
657<div class="hdn-header-container">
658<div class="hdn-header-banner"><a href="https://www.gwangjin.go.kr/portal/main/main.do" rel="nofollow">
659<img src="https://pango-lingo-sgilbo-assetsbucket-sawsdkom.s3.ap-northeast-2.amazonaws.com/ads/2025-12-28/67b219fc-0af2-4470-ad48-0d3d4a95b0da.gif" alt="" loading="lazy" />
660</a></div>
661<div class="hdn-logo-wrapper"><a href="/ko-kr"><img src="https://cdn.www.sgilbo.kr/w400/q75/article-images/2025-12-02/085b3719-d4a5-46fa-bb87-4649c1d5f850.png" alt="성광일보" /></a></div>
662<div class="hdn-header-banner"><a href="https://council.gwangjin.go.kr/" rel="nofollow">
663<img src="https://pango-lingo-sgilbo-assetsbucket-sawsdkom.s3.ap-northeast-2.amazonaws.com/ads/2026-07-04/eba09708-9fde-4bde-b145-984bea6add25.gif" alt="" loading="lazy" />
664</a></div>
665</div>
666</div>
667<nav class="hdn-header-nav">
668<div class="hdn-header-container hdn-nav-container">
669<div class="hdn-nav-actions-left">
670<button class="menu-all-btn" onclick="toggleAllMenu()" title="전체메뉴">
671<div class="hamburger-icon"><span class="line line-1"></span><span class="line line-2"></span><span class="line line-3"></span></div>
672</button>
673</div>
674<div class="hdn-main-nav">
675<ul><li>
676<a href="/ko-kr/articles?category=S1N19" class="nav-link">
677성동신문
678</a></li><li>
679<a href="/ko-kr/articles?category=S1N20" class="nav-link">
680광진투데이
681</a></li><li>
682<a href="/ko-kr/articles?category=S1N11" class="nav-link">
683오피니언
684</a><ul class="hdn-dropdown-menu"><li>
685<a href="/ko-kr/articles?category=S2N1">
686사설
687</a>
688</li><li>
689<a href="/ko-kr/articles?category=S2N2">
690칼럼
691</a>
692</li></ul></li><li>
693<a href="/ko-kr/articles?category=S1N22" class="nav-link">
694기획·특집
695</a></li><li>
696<a href="/ko-kr/articles?category=S1N13" class="nav-link">
697인터뷰
698</a></li><li>
699<a href="/ko-kr/articles?category=S1N24" class="nav-link">
700문화&
701</a><ul class="hdn-dropdown-menu"><li>
702<a href="/ko-kr/articles?category=S2N13">
703공연
704</a>
705</li><li>
706<a href="/ko-kr/articles?category=S2N14">
707여행
708</a>
709</li><li>
710<a href="/ko-kr/articles?category=S2N28">
711전시
712</a>
713</li></ul></li><li>
714<a href="/ko-kr/articles?category=S1N27" class="nav-link">
715라이프
716</a><ul class="hdn-dropdown-menu"><li>
717<a href="/ko-kr/articles?category=S2N18">
718여행스케치
719</a>
720</li><li>
721<a href="/ko-kr/articles?category=S2N17">
722연예&스포츠
723</a>
724</li><li>
725<a href="/ko-kr/articles?category=S2N19">
726건강
727</a>
728</li></ul></li><li>
729<a href="/ko-kr/articles?category=S1N29" class="nav-link">
730뉴스종합
731</a><ul class="hdn-dropdown-menu"><li>
732<a href="/ko-kr/articles?category=S2N20">
733정치
734</a>
735</li><li>
736<a href="/ko-kr/articles?category=S2N21">
737경제
738</a>
739</li><li>
740<a href="/ko-kr/articles?category=S2N22">
741사회
742</a>
743</li></ul></li><li>
744<a href="/ko-kr/articles?category=S1N36" class="nav-link">
745송란교의 마음산책
746</a></li><li>
747<a href="/ko-kr/articles?category=S1N37" class="nav-link">
748문학
749</a><ul class="hdn-dropdown-menu"><li>
750<a href="/ko-kr/articles?category=S2N29">
751성동
752</a>
753</li><li>
754<a href="/ko-kr/articles?category=S2N30">
755광진
756</a>
757</li></ul></li><li>
758<a href="/ko-kr/articles?category=RADS" class="nav-link">
759정성원 칼럼
760</a></li></ul>
761</div>
762<div class="hdn-nav-actions-right"><button class="search-toggle-btn" onclick="toggleSearch()" title="검색"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="10.5" cy="10.5" r="7"/><line x1="16" y1="16" x2="21" y2="21"/></svg></button>
763</div>
764</div>
765</nav>
766</div>
767<div class="hdn-fullscreen-menu" id="fullscreenMenu">
768<div class="hdn-drawer-overlay" onclick="toggleAllMenu()"></div>
769<div class="hdn-drawer-content">
770<div class="hdn-drawer-header">
771<a href="/ko-kr" class="hdn-drawer-logo"><img src="https://cdn.www.sgilbo.kr/w400/q75/article-images/2025-12-02/085b3719-d4a5-46fa-bb87-4649c1d5f850.png" alt="성광일보" /></a>
772<button class="hdn-drawer-close-btn" onclick="toggleAllMenu()" title="Close Menu">
773<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
774</button>
775</div>
776<ul class="hdn-drawer-menu">
777<li class="hdn-drawer-menu-item">
778<a href="/ko-kr/articles">전체기사</a>
779</li><li class="hdn-drawer-menu-item"><a href="/ko-kr/articles?category=S1N19">성동신문</a></li><li class="hdn-drawer-menu-item"><a href="/ko-kr/articles?category=S1N20">광진투데이</a></li><li class="hdn-drawer-menu-item has-children"><a href="#" onclick="toggleDrawerSubmenu(this.parentElement); return false;">오피니언</a><ul class="hdn-drawer-submenu"><li>
780<a href="/ko-kr/articles?category=S2N1">사설</a>
781</li><li>
782<a href="/ko-kr/articles?category=S2N2">칼럼</a>
783</li></ul></li><li class="hdn-drawer-menu-item"><a href="/ko-kr/articles?category=S1N22">기획·특집</a></li><li class="hdn-drawer-menu-item"><a href="/ko-kr/articles?category=S1N13">인터뷰</a></li><li class="hdn-drawer-menu-item has-children"><a href="#" onclick="toggleDrawerSubmenu(this.parentElement); return false;">문화&</a><ul class="hdn-drawer-submenu"><li>
784<a href="/ko-kr/articles?category=S2N13">공연</a>
785</li><li>
786<a href="/ko-kr/articles?category=S2N14">여행</a>
787</li><li>
788<a href="/ko-kr/articles?category=S2N28">전시</a>
789</li></ul></li><li class="hdn-drawer-menu-item has-children"><a href="#" onclick="toggleDrawerSubmenu(this.parentElement); return false;">라이프</a><ul class="hdn-drawer-submenu"><li>
790<a href="/ko-kr/articles?category=S2N18">여행스케치</a>
791</li><li>
792<a href="/ko-kr/articles?category=S2N17">연예&스포츠</a>
793</li><li>
794<a href="/ko-kr/articles?category=S2N19">건강</a>
795</li></ul></li><li class="hdn-drawer-menu-item has-children"><a href="#" onclick="toggleDrawerSubmenu(this.parentElement); return false;">뉴스종합</a><ul class="hdn-drawer-submenu"><li>
796<a href="/ko-kr/articles?category=S2N20">정치</a>
797</li><li>
798<a href="/ko-kr/articles?category=S2N21">경제</a>
799</li><li>
800<a href="/ko-kr/articles?category=S2N22">사회</a>
801</li></ul></li><li class="hdn-drawer-menu-item"><a href="/ko-kr/articles?category=S1N36">송란교의 마음산책</a></li><li class="hdn-drawer-menu-item has-children"><a href="#" onclick="toggleDrawerSubmenu(this.parentElement); return false;">신향금기자의 맛집탐방</a><ul class="hdn-drawer-submenu"><li>
802<a href="/ko-kr/articles?category=S2N11">전국 맛집</a>
803</li></ul></li><li class="hdn-drawer-menu-item has-children"><a href="#" onclick="toggleDrawerSubmenu(this.parentElement); return false;">우리동호회</a><ul class="hdn-drawer-submenu"><li>
804<a href="/ko-kr/articles?category=S2N24">성동</a>
805</li><li>
806<a href="/ko-kr/articles?category=S2N25">광진</a>
807</li></ul></li><li class="hdn-drawer-menu-item"><a href="/ko-kr/articles?category=S1N33">김흥국의 동양학과 풍수</a></li><li class="hdn-drawer-menu-item has-children"><a href="#" onclick="toggleDrawerSubmenu(this.parentElement); return false;">상공회소식</a><ul class="hdn-drawer-submenu"><li>
808<a href="/ko-kr/articles?category=S2N26">성동</a>
809</li><li>
810<a href="/ko-kr/articles?category=S2N27">광진</a>
811</li></ul></li><li class="hdn-drawer-menu-item"><a href="/ko-kr/articles?category=S1N35">우리동네 축제</a></li><li class="hdn-drawer-menu-item has-children"><a href="#" onclick="toggleDrawerSubmenu(this.parentElement); return false;">문학</a><ul class="hdn-drawer-submenu"><li>
812<a href="/ko-kr/articles?category=S2N29">성동</a>
813</li><li>
814<a href="/ko-kr/articles?category=S2N30">광진</a>
815</li></ul></li><li class="hdn-drawer-menu-item"><a href="/ko-kr/articles?category=S1N38">
815평범한 사람들의 자서전</a></li><li class="hdn-drawer-menu-item"><a href="/ko-kr/articles?category=S1N39">서성원의 성동이야기</a></li><li class="hdn-drawer-menu-item"><a href="/ko-kr/articles?category=S1N40">뉴스포커스</a></li><li class="hdn-drawer-menu-item"><a href="/ko-kr/articles?category=S1N41">기업탐방</a></li><li class="hdn-drawer-menu-item"><a href="/ko-kr/articles?category=S1N42">카메라 촛점</a></li></ul>
816</div>
817</div>
818<div class="hdn-modal-overlay" id="searchModal">
819<div class="hdn-modal-box">
820<div class="hdn-spotlight-form">
821<input type="text" class="hdn-spotlight-input" placeholder="검색어를 입력하세요..." onkeypress="if(event.key==='Enter') performSearch(this.value)">
822<button class="hdn-spotlight-submit-btn" onclick="performSearch(this.previousElementSibling.value)" title="Search">
823<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="10.5" cy="10.5" r="7"/><line x1="16" y1="16" x2="21" y2="21"/></svg>
824</button>
825</div>
826</div>
827</div>
828<div class="hdn-modal-overlay" id="languageModal">
829<div class="hdn-modal-box">
830<div class="hdn-language-header">언어 선택</div>
831<div class="hdn-language-groups"><div class="hdn-language-group">
832<h3 class="hdn-language-group-title">ASIAN</h3>
833<div class="hdn-language-grid"><a href="/ko-kr/articles" class="">
834한국어
835</a></div>
836</div></div>
837</div>
838</div>
839</div>
840<script>
841(function() {
842const componentId = 'userAuth_kma1qa1rn';
843// AuthButton 로직 참조하여 사용자 정보 확인
844async function checkAuthStatus_kma1qa1rn() {
845try {
846const profileToken = localStorage.getItem(window.location.hostname + "_profileToken");
847const userDataString = localStorage.getItem(window.location.hostname + "_user");
848if (profileToken && !isTokenExpired_kma1qa1rn(profileToken) && userDataString) {
849// 로그인된 상태
850const userData = JSON.parse(userDataString);
851showLoggedInElements_kma1qa1rn(userData);
852} else {
853// 로그인되지 않은 상태
854localStorage.removeItem(window.location.hostname + "_profileToken");
855localStorage.removeItem(window.location.hostname + "_user");
856showGuestElements_kma1qa1rn();
857}
858} catch (error) {
859// console.error("사용자 정보 조회 실패:", error);
860localStorage.removeItem(window.location.hostname + "_profileToken");
861localStorage.removeItem(window.location.hostname + "_user");
862showGuestElements_kma1qa1rn();
863}
864}
865// 토큰 만료 확인
866function isTokenExpired_kma1qa1rn(token) {
867try {
868const payload = JSON.parse(atob(token.split('.')[1]));
869return payload.exp * 1000 < Date.now();
870} catch (error) {
871return true;
872}
873}
874// 로그인된 사용자 요소 표시
875function showLoggedInElements_kma1qa1rn(user) {
876// 로그인된 상태 요소 표시
877const loggedInElements = document.querySelectorAll('.user-logged-in');
878loggedInElements.forEach(el => {
879el.style.display = 'flex';
880// 사용자 이름이 있는 요소에 이름 삽입
881const nameElements = el.querySelectorAll('[data-user-name]');
882nameElements.forEach(nameEl => {
883nameEl.textContent = user.name + '님';
884});
885// 사용자 이미지가 있는 요소에 이미지 삽입
886const avatarElements = el.querySelectorAll('[data-user-avatar]');
887avatarElements.forEach(avatarEl => {
888if (user.profileImage) {
889avatarEl.src = user.profileImage;
890avatarEl.alt = user.name;
891}
892});
893});
894// 게스트 상태 요소 숨김
895const guestElements = document.querySelectorAll('.user-guest');
896guestElements.forEach(el => el.style.display = 'none');
897}
898// 게스트 사용자 요소 표시
899function showGuestElements_kma1qa1rn() {
900// 게스트 상태 요소 표시
901const guestElements = document.querySelectorAll('.user-guest');
902guestElements.forEach(el => {
903el.style.display = 'flex';
904});
905// 로그인된 상태 요소 숨김
906// 로그인된 상태 요소 숨김
907const loggedInElements = document.querySelectorAll('.user-logged-in');
908loggedInElements.forEach(el => el.style.display = 'none');
909}
910// DOM 로드 후 실행
911if (document.readyState === 'loading') {
912document.addEventListener('DOMContentLoaded', checkAuthStatus_kma1qa1rn);
913} else {
914checkAuthStatus_kma1qa1rn();
915}
916// 전역에서 재확인 가능하도록 함수 노출
917window['checkAuthStatus_kma1qa1rn'] = checkAuthStatus_kma1qa1rn;
918})();
919</script>
vendor: 1 bytes, line 919
919
920<script>
921(function() {
922const componentId = 'logout_xl4yasx07';
923// 로그아웃 처리 (AuthButton 로직 참조)
924async function handleLogout_xl4yasx07() {
925try {
926const response = await fetch("/api/auth/logout", {
927method: "POST",
928credentials: "include",
929});
930if (response.ok) {
931// localStorage 정리
932localStorage.removeItem(window.location.hostname + "_profileToken");
933localStorage.removeItem(window.location.hostname + "_user");
934// 페이지 새로고침
935window.location.reload();
936} else {
937// console.error("로그아웃 실패");
938alert("로그아웃에 실패했습니다.");
939}
940} catch (error) {
941// console.error("로그아웃 중 오류:", error);
942alert("로그아웃 중 오류가 발생했습니다.");
943}
944}
945// DOM 로드 후 이벤트 리스너 등록
946function bindLogoutHandler_xl4yasx07() {
947const logoutButtons = document.querySelectorAll('.logout-btn');
948logoutButtons.forEach(button => {
949button.addEventListener('click', function(event) {
950event.preventDefault();
951handleLogout_xl4yasx07();
952});
953});
954}
955if (document.readyState === 'loading') {
956document.addEventListener('DOMContentLoaded', bindLogoutHandler_xl4yasx07);
957} else {
958bindLogoutHandler_xl4yasx07();
959}
960})();
961</script>
vendor: 1 bytes, line 961
961
962<script>
963const menuModal = document.getElementById('fullscreenMenu');
964const searchModal = document.getElementById('searchModal');
965const languageModal = document.getElementById('languageModal');
966const searchInput = document.querySelector('.hdn-spotlight-input');
967const menuBtn = document.querySelector('.menu-all-btn');
968const searchBtn = document.querySelector('.search-toggle-btn');
969function toggleAllMenu() {
970menuModal.classList.toggle('active');
971const isActive = menuModal.classList.contains('active');
972searchBtn.style.visibility = isActive ? 'hidden' : 'visible';
973const langBtn = document.querySelector('.language-toggle-btn');
974if(langBtn) {
975langBtn.style.visibility = isActive ? 'hidden' : 'visible';
976}
977// 드로어가 닫힐 때 모든 서브메뉴 닫기
978if (!isActive) {
979const expandedItems = document.querySelectorAll('.hdn-drawer-menu-item.expanded');
980expandedItems.forEach(item => {
981item.classList.remove('expanded');
982});
983}
984}
985function toggleDrawerSubmenu(element) {
986element.classList.toggle('expanded');
987}
988function toggleSearch() {
989searchModal.classList.toggle('active');
990if (searchModal.classList.contains('active')) {
991setTimeout(() => searchInput.focus(), 300);
992}
993}
994function toggleLanguageMenu() {
995languageModal.classList.toggle('active');
996}
997function performSearch(query) {
998if (query && query.trim() !== '') {
999window.location.href = '/ko-kr/articles?q=' + encodeURIComponent(query.trim());
1000}
1001}
1002window.addEventListener('keydown', (e) => {
1003if (e.key === 'Escape') {
1004if (menuModal.classList.contains('active')) toggleAllMenu();
1005if (searchModal.classList.contains('active')) toggleSearch();
1006if (languageModal.classList.contains('active')) toggleLanguageMenu();
1007}
1008});
1009function setupModalClose(modal) {
1010if (modal) {
1011modal.addEventListener('click', function(e) {
1012if (e.target === modal) {
1013modal.classList.remove('active');
1014}
1015});
1016}
1017}
1018setupModalClose(searchModal);
1019setupModalClose(languageModal);
1020// 드로어 서브메뉴 링크 클릭 이벤트 처리
1021const drawerSubmenuLinks = document.querySelectorAll('.hdn-drawer-submenu a');
1022drawerSubmenuLinks.forEach(link => {
1023link.addEventListener('click', function(e) {
1024e.stopPropagation();
1025});
1026});
1027// 발행일 표시 함수
1028function updatePublishDate() {
1029const now = new Date();
1030const year = now.getFullYear();
1031const month = String(now.getMonth() + 1).padStart(2, '0');
1032const day = String(now.getDate()).padStart(2, '0');
1033const hours = String(now.getHours()).padStart(2, '0');
1034const minutes = String(now.getMinutes()).padStart(2, '0');
1035const dateTimeString = `${year}-${month}-${day} ${hours}:${minutes}`;
1036const dateTimeElement = document.getElementById('current-date-time');
1037if (dateTimeElement) {
1038dateTimeElement.textContent = dateTimeString;
1039}
1040}
1041// 페이지 로드 시 발행일 표시
1042updatePublishDate();
1043</script>
1043</div></div></div></div></div></header><main class="layout-body"><div class="layout-sidebar-anchor"><aside data-sidebar="left" class="fixed-left-wing" aria-label="왼쪽 광고"><div class="layout-sidebar-item" style="width:fit-content"><div class="section-html-container"><style>
1044.pango-full-banner {
1045width: 100%;
1046display: block;
1047overflow: hidden;
1048line-height: 0; 
1049}
1050.pango-full-banner a {
1051display: block;
1052width: 100%;
1053}
1054.pango-full-banner img {
1055width: 100% !important; 
1056height: auto;
1057max-width: none !important; 
1058display: block;
1059}
1060</style><div class="pango-full-banner" data-banner-id=""></div></div></div></aside></div><div class="layout-main constrained"><div style="position:relative"><div class="grid-masonry-layout desktop-layout" style="display:grid;grid-template-columns:repeat(24, 1fr);gap:1rem;width:100%;max-width:100%;position:relative;min-height:0;margin:0 auto"><div class="section-wrapper" style="grid-column:1 / 18;grid-row:1 / 61;width:100%;max-width:100%;box-sizing:border-box;position:relative"><div class="section-html-container"><link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,[email protected],100..700,0..1,-50..200" rel="stylesheet">
1061<style>
1062* { box-sizing: border-box; }
1063body { line-height: 1.6; color: #212529; }
1064.article-list-container { background: white; min-height: 100vh; padding: 2rem 0; }
1065.article-list-main { max-width: 1200px; margin: 0 auto; padding: 0 2rem; border-right: 1px solid #e9ecef; }
1066.sub-categories { display: flex; flex-wrap: wrap; gap: 0.75rem; margin-bottom: 1.5rem; padding-bottom: 1rem; border-bottom: 1px solid #e9ecef; }
1067.sub-category-link { display: inline-block; padding: 0.5rem 0; color: #6c757d; text-decoration: none; transition: color 0.2s ease; font-size: 1rem; font-weight: 500; }
1068.sub-category-link:hover { color: #595c5f; }
1069.list-header { margin-bottom: 1rem; padding-bottom: 1rem; border-bottom: 2px solid #ccc; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 1rem; }
1070.list-title { font-size: 2rem; font-weight: 700; color: #212529; margin: 0; }
1071.list-title small { font-weight: 400; font-size: 0.8rem; color: #6c757d; margin-left: 0.5rem; }
1072.view-mode-toggle { display: flex; gap: 0.375rem; background: #f8f9fa; padding: 0.25rem; border-radius: 8px; }
1073.view-mode-btn { display: flex; align-items: center; gap: 0.375rem; padding: 0.5rem 0.875rem; background: transparent; border: none; color: #6c757d; cursor: pointer; transition: all 0.2s ease; font-size: 0.8125rem; font-weight: 500; border-radius: 6px; }
1074.view-mode-btn .material-symbols-outlined { font-size: 18px; font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 20; }
1075.view-mode-btn:hover { background: rgba(255, 255, 255, 0.6); color: #495057; }
1076.view-mode-btn.active { background: white; color: #595c5f; box-shadow: 0 1px 3px rgba(0,0,0,0.1); }
1077.view-mode-btn.active .material-symbols-outlined { font-variation-settings: 'FILL' 1, 'wght' 500, 'GRAD' 0, 'opsz' 20; }
1078.article-list.summary-view { margin-bottom: 3rem; }
1079.article-card-list { display: flex; gap: 1.5rem; background: white; padding: 1.5rem 0; border-bottom: 1px solid #e9ecef; transition: all 0.3s ease; }
1080.article-card-list:hover { background: #f8f9fa; }
1081.article-card-list:last-child { border-bottom: none; }
1082.article-image { width: 210px; height: 140px; overflow: hidden; flex-shrink: 0; }
1083.article-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; }
1084.article-card-list:hover .article-image img { transform: scale(1.05); }
1085.article-content-list { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 0.65rem; }
1086.article-title-list { font-size: 20px; font-weight: 600; line-height: 1.4; color: #000000; margin: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
1087.article-title-list a { color: inherit; text-decoration: none; transition: color 0.2s ease; }
1088.article-card-list:hover .article-title-list a { color: #595c5f; }
1089.article-subtitle-list { font-size: 15px; color: #333333; line-height: 1.5; margin: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
1090.article-meta-list { display: flex; align-items: center; gap: 0.5rem; font-size: 0.8125rem; color: #6c757d; margin-top: auto; }
1091.article-meta-category { color: #6c757d; }
1092.article-meta-separator { color: #dee2e6; }
1093.article-meta-author { font-size: 13px; color: #6c757d; }
1094.article-date-list { font-size: 13px; color: #6c757d; }
1095.article-list.title-view { margin-bottom: 3rem; }
1096.article-list.title-view .article-card-title { display: flex; align-items: center; gap: 0.75rem; background: white; padding: 0.5rem 0; transition: all 0.2s ease; }
1097.article-list.title-view .article-card-title:hover { background: #f8f9fa; }
1098.article-list.title-view .article-card-title:nth-child(5n) { border-bottom: 1px solid #e9ecef; padding-bottom: 1.25rem; margin-bottom: 1rem; }
1099.article-list.title-view .article-card-title:last-child { border-bottom: none; padding-bottom: 0.5rem; margin-bottom: 0; }
1100.article-list.title-view .article-title-only { min-width: 0; font-size: 16px; font-weight: 500; line-height: 1.4; color: #212529; margin: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
1101.article-list.title-view .article-title-only a { color: inherit; text-decoration: none; transition: color 0.2s ease; }
1102.article-list.title-view .article-card-title:hover .article-title-only a { color: #595c5f; }
1103.article-list.title-view .article-category-badge { display: inline-flex; align-items: center; color: #6c757d; font-size: 12px; font-weight: 500; white-space: nowrap; flex-shrink: 0; }
1104.article-list.title-view .article-author-info { font-size: 13px; color: #6c757d; white-space: nowrap; flex-shrink: 0; }
1105.article-list.title-view .article-separator { color: #dee2e6; flex-shrink: 0; }
1106.article-list.title-view .article-date-title { font-size: 13px; color: #6c757d; white-space: nowrap; flex-shrink: 0; }
1107.article-list.photo-view { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem; margin-bottom: 3rem; }
1108.article-list.photo-view .article-card-photo { background: white; transition: all 0.3s ease; }
1109.article-list.photo-view .article-card-photo:hover { transform: translateY(-4px); box-shadow: 0 4px 12px rgba(0,0,0,0.1); }
1110.article-list.photo-view .article-image-photo { width: 100%; padding-top: 75%; position: relative; overflow: hidden; }
1111.article-list.photo-view .article-image-photo img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s ease; }
1112.article-list.photo-view .article-card-photo:hover .article-image-photo img { transform: scale(1.05); }
1113.article-list.photo-view .article-content-photo { padding: 1rem 0; display: flex; flex-direction: column; gap: 0.5rem; }
1114.article-list.photo-view .article-title-photo { font-size: 15px; font-weight: 600; line-height: 1.4; color: #212529; margin: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 2.8em; }
1115.article-list.photo-view .article-title-photo a { color: inherit; text-decoration: none; transition: color 0.2s ease; }
1116.article-list.photo-view .article-card-photo:hover .article-title-photo a { color: #595c5f; }
1117.article-list.photo-view .article-meta-photo { display: flex; flex-direction: column; gap: 0.125rem; }
1118.article-list.photo-view .article-author-photo { font-size: 12px; color: #6c757d; }
1119.article-list.photo-view .article-date-photo { font-size: 12px; color: #999999; }
1120.pagination { display: flex; justify-content: center; align-items: center; gap: 0.5rem; margin-top: 3rem; }
1121.pagination-btn { padding: 0.75rem 1rem; background: white; color: #6c757d; text-decoration: none; transition: all 0.2s ease; font-size: 0.875rem; }
1122.pagination-btn:hover { background: #595c5f; color: white; }
1123.pagination-btn.active { background: #595c5f; color: white; font-weight: 600; }
1124.pagination-btn:disabled { opacity: 0.5;
1124 cursor: not-allowed; }
1125.no-articles { text-align: center; padding: 4rem 0; color: #6c757d; }
1126.no-articles h3 { font-size: 1.5rem; margin-bottom: 1rem; color: #212529; }
1127.hidden { display: none !important; }
1128@media (max-width: 1024px) {
1129.article-list.photo-view { grid-template-columns: repeat(3, 1fr); }
1130}
1131@media (max-width: 768px) {
1132.article-list.photo-view { grid-template-columns: repeat(2, 1fr); gap: 1rem; }
1133.article-list-main { padding: 0 1rem; }
1134.view-mode-toggle { gap: 0.25rem; padding: 0.25rem; }
1135.view-mode-btn { padding: 0.4rem 0.625rem; font-size: 0.75rem; gap: 0.25rem; }
1136.view-mode-btn .material-symbols-outlined { font-size: 16px; }
1137.list-header { flex-direction: column; align-items: flex-start; }
1138.list-title { font-size: 1.5rem; }
1139.article-list.title-view .article-card-title { flex-wrap: wrap; gap: 0.5rem; padding: 0.75rem 0; }
1140.article-list.title-view .article-title-only { flex-basis: 100%; }
1141.article-list.title-view .article-author-info { padding: 0; }
1142}
1143@media (max-width: 640px) {
1144.view-mode-btn span:not(.material-symbols-outlined) { display: none; }
1145.view-mode-btn { padding: 0.5rem; }
1146}
1147@media (max-width: 480px) {
1148.article-list.photo-view { grid-template-columns: repeat(1, 1fr); }
1149}
1150</style>
1151<div class="article-list-container">
1152<div class="article-list-main">
1153<div class="list-header">
1154<h1 class="list-title">성동신문</h1>
1155<div class="view-mode-toggle">
1156<button class="view-mode-btn" data-mode="title" onclick="changeViewMode('title')">
1157<span class="material-symbols-outlined">format_list_bulleted</span>
1158<span>제목형</span>
1159</button>
1160<button class="view-mode-btn active" data-mode="summary" onclick="changeViewMode('summary')">
1161<span class="material-symbols-outlined">view_agenda</span>
1162<span>요약형</span>
1163</button>
1164<button class="view-mode-btn" data-mode="photo" onclick="changeViewMode('photo')">
1165<span class="material-symbols-outlined">grid_view</span>
1166<span>포토형</span>
1167</button>
1168</div>
1169</div>
1170<div class="article-list summary-view" id="summaryView"><article class="article-card-list"><div class="article-image">
1171<a href="/ko-kr/articles/54918">
1172<img src="https://cdn.www.sgilbo.kr/w210/q75/article-images/2026-10-01/0cf80589-57b5-43f6-b0d5-fd53d38fb274.png" alt="성동광진교육지원청, 「학원팀 카카오 채널」 5주년 기념“친구추가 이벤트”실시" loading="lazy" />
1173</a>
1174</div><div class="article-content-list">
1175<h2 class="article-title-list">
1176<a href="/ko-kr/articles/54918">성동광진교육지원청, 「학원팀 카카오 채널」 5주년 기념“친구추가 이벤트”실시</a>
1177</h2><a href="/ko-kr/articles/54918" style="text-decoration: none;">
1178<div class="article-subtitle-list">- 학원·교습소 운영자, 개인과외교습자, 학부모 등 맞춤형 행정 정보 제공<p>서울특별시성동광진교육지원청 이 카카오 채널 ‘성동광진교육지원청 학원팀’의 개설 5주년을 맞아 오는 9월 30일 부터 10월 12일 까지 13일간 ‘카카오 채널 친구추가 이벤트’를 실시한다.</p>
1179</div>
1180</a><div class="article-meta-list">
1181<span class="article-meta-author">이원주 </span>
1182<span class="article-meta-separator">|</span>
1183<time class="article-date-list">2026. 10. 01. 20:28</time>
1184</div>
1185</div>
1186</article><article class="article-card-list"><div class="article-image">
1187<a href="/ko-kr/articles/54910">
1188<img src="https://cdn.www.sgilbo.kr/w210/q75/article-images/2026-10-01/63127c7c-4abd-46cd-aa74-4fc590d36b32.png" alt="성동구, 아동시설부터 경로당까지… 동마다 이웃 나눔 이어져" loading="lazy" />
1189</a>
1190</div><div class="article-content-list">
1191<h2 class="article-title-list">
1192<a href="/ko-kr/articles/54910">성동구, 아동시설부터 경로당까지… 동마다 이웃 나눔 이어져</a>
1193</h2><a href="/ko-kr/articles/54910" style="text-decoration: none;">
1194<div class="article-subtitle-list">- 4개 동 직능단체와 후원 기관이 선물 꾸러미와 명절음식, 생필품 전달<p>성동구는 동 주민자치회와 지역사회보장협의체, 지역 후원 기관이 관내 아동과 어르신 등 도움이 필요한 이웃을 찾아 나눔을 잇달아 펼쳤다고 밝혔다. 먼저 왕십리제2동 주민자치회 는 지난 22일 지역 아동복지시설...</p>
1195</div>
1196</a><div class="article-meta-list">
1197<span class="article-meta-author">이원주 </span>
1198<span class="article-meta-separator">|</span>
1199<time class="article-date-list">2026. 10. 01. 15:05</time>
1200</div>
1201</div>
1202</article><article class="article-card-list"><div class="article-image">
1203<a href="/ko-kr/articles/54909">
1204<img src="https://cdn.www.sgilbo.kr/w210/q75/article-images/2026-10-01/b43f326a-c2c1-4f50-9d5d-34884afeae9b.png" alt="성동구, 차세대 '히어링루프'로 스마트쉼터 버스 안내 더 선명하게 듣는다" loading="lazy" />
1205</a>
1206</div><div class="article-content-list">
1207<h2 class="article-title-list">
1208<a href="/ko-kr/articles/54909">성동구, 차세대 '히어링루프'로 스마트쉼터 버스 안내 더 선명하게 듣는다</a>
1209</h2><a href="/ko-kr/articles/54909" style="text-decoration: none;">
1210<div class="article-subtitle-list">- 차세대 음성 전송 기술로 보청기에 일반 블루투스 이어폰까지 이용 확대, 스마트쉼터 50개소 개선 완료
1211- 청각약자와 구민 참여 현장 시연으로 성능 점검, 사물인터넷 기반 원격 관리 체계도 신규 구축
1212<p>성동구는 누구나 버스 안내 방송을 편리하게 들을 수 있도록 성동형 스마트쉼터 50개소의 ‘히어링루프’ 성능 개선을 완료하고 본격 운영에 들어갔다고 밝혔다.</p>
1213</div>
1214</a><div class="article-meta-list">
1215<span class="article-meta-author">이원주 </span>
1216<span class="article-meta-separator">|</span>
1217<time class="article-date-list">2026. 10. 01. 15:00</time>
1218</div>
1219</div>
1220</article><article class="article-card-list"><div class="article-image">
1221<a href="/ko-kr/articles/54908">
1222<img src="https://cdn.www.sgilbo.kr/w210/q75/article-images/2026-10-01/2c2ce673-299b-40de-acfa-1458f3cff489.png" alt="성동구,‘평생 살고 싶은 성동’공모전… 구정 아이디어 역대 최다" loading="lazy" />
1223</a>
1224</div><div class="article-content-list">
1225<h2 class="article-title-list">
1226<a href="/ko-kr/articles/54908">성동구,‘평생 살고 싶은 성동’공모전… 구정 아이디어 역대 최다</a>
1227</h2><a href="/ko-kr/articles/54908" style="text-decoration: none;">
1228<div class="article-subtitle-list">- 통합돌봄과 도시혁신 등 3개 분야 335건 접수, 지난해보다 약 70% 늘어<p>성동구는 구정 발전에 필요한 정책 아이디어를 발굴하기 위해 개최한 ‘2026 평생 살고 싶은 성동 아이디어 공모전’에 총 335건이 접수돼 역대 최다를 기록했다고 밝혔다.</p>
1229</div>
1230</a><div class="article-meta-list">
1231<span class="article-meta-author">이원주 </span>
1232<span class="article-meta-separator">|</span>
1233<time class="article-date-list">2026. 10. 01. 14:57</time>
1234</div>
1235</div>
1236</article><article class="article-card-list"><div class="article-image">
1237<a href="/ko-kr/articles/54907">
1238<img src="https://cdn.www.sgilbo.kr/w210/q75/article-images/2026-10-01/1c4fdd6d-30cb-459f-82a5-58c13a96f316.png" alt="성동구 왕십리2동노인복
1238지관, 개관 1주년‘왕이네 첫돌 잔치’열어" loading="lazy" />
1239</a>
1240</div><div class="article-content-list">
1241<h2 class="article-title-list">
1242<a href="/ko-kr/articles/54907">성동구 왕십리2동노인복지관, 개관 1주년‘왕이네 첫돌 잔치’열어</a>
1243</h2><a href="/ko-kr/articles/54907" style="text-decoration: none;">
1244<div class="article-subtitle-list">- 체력관리왕 대회부터 축하공연까지, 이틀간 어르신과 지역주민 200여 명 참여<p>성동구 왕십리2동노인복지관 은 개관 1주년을 맞아 지난 9월 17일부터 18일까지 이틀간 ‘왕이네 첫돌 잔치’를 개최했다고 밝혔다. 행사에는 그동안 복지관을 이용해 온 어르신과 지역주민 200여 명이 참여해 개관...</p>
1245</div>
1246</a><div class="article-meta-list">
1247<span class="article-meta-author">이원주 </span>
1248<span class="article-meta-separator">|</span>
1249<time class="article-date-list">2026. 10. 01. 14:57</time>
1250</div>
1251</div>
1252</article><article class="article-card-list"><div class="article-image">
1253<a href="/ko-kr/articles/54904">
1254<img src="https://cdn.www.sgilbo.kr/w210/q75/article-images/2026-10-01/18fc60eb-5f87-480f-859a-a422e3092487.png" alt="광진구, 취업 준비로 지친 청년에게 ‘2026년 4분기 청년도시락’지원" loading="lazy" />
1255</a>
1256</div><div class="article-content-list">
1257<h2 class="article-title-list">
1258<a href="/ko-kr/articles/54904">광진구, 취업 준비로 지친 청년에게 ‘2026년 4분기 청년도시락’지원</a>
1259</h2><a href="/ko-kr/articles/54904" style="text-decoration: none;">
1260<div class="article-subtitle-list">- 신규 대상자 우선 선발, 총 100명 지원… 10월 8일까지 이메일 접수
1261- 밀키트·간편식 지원뿐만 아니라 청년정책 상담 및 네트워킹 프로그램 병행<p>광진구가 홀로 취업 준비로 지친 관내 미취업 1인가구 청년들의 건강한 식생활과 사회적 교류를 지원하기 위해 ‘2026년 4분기 청년도시락’ 사업을 운영한다.</p>
1262</div>
1263</a><div class="article-meta-list">
1264<span class="article-meta-author">이원주 </span>
1265<span class="article-meta-separator">|</span>
1266<time class="article-date-list">2026. 10. 01. 14:45</time>
1267</div>
1268</div>
1269</article><article class="article-card-list"><div class="article-image">
1270<a href="/ko-kr/articles/54903">
1271<img src="https://cdn.www.sgilbo.kr/w210/q75/article-images/2026-10-01/c0a88ff5-39f0-4b5b-be62-12e55f5ffe5e.png" alt="성동구의회, 행정사무감사 대비 2차 교육 실시" loading="lazy" />
1272</a>
1273</div><div class="article-content-list">
1274<h2 class="article-title-list">
1275<a href="/ko-kr/articles/54903">성동구의회, 행정사무감사 대비 2차 교육 실시</a>
1276</h2><a href="/ko-kr/articles/54903" style="text-decoration: none;">
1277<div class="article-subtitle-list">- 제10대 의회 개원 후 첫 정례회 앞두고 행정사무감사 준비에 만전 기해<p>성동구의회는 내실 있는 제1차 정례회 운영을 위해 지난 9월 30일 행정사무감사 대비 2차 역량강화 교육을 실시했다고 밝혔다. 행정사무감사는 지방자치단체의 행정운영 성과와 정책 추진 과정의 절차적 합법성을 감사하는...</p>
1278</div>
1279</a><div class="article-meta-list">
1280<span class="article-meta-author">이원주 </span>
1281<span class="article-meta-separator">|</span>
1282<time class="article-date-list">2026. 10. 01. 14:43</time>
1283</div>
1284</div>
1285</article><article class="article-card-list"><div class="article-image">
1286<a href="/ko-kr/articles/54902">
1287<img src="https://cdn.www.sgilbo.kr/w210/q75/article-images/2026-09-30/66b7b3cd-933e-4363-b365-9dbc9fa18ba0.png" alt="성동구, 하반기 민방위 보충교육 실시" loading="lazy" />
1288</a>
1289</div><div class="article-content-list">
1290<h2 class="article-title-list">
1291<a href="/ko-kr/articles/54902">성동구, 하반기 민방위 보충교육 실시</a>
1292</h2><a href="/ko-kr/articles/54902" style="text-decoration: none;">
1293<div class="article-subtitle-list">- 미이수 대원 약 5,000명 대상, 10월 7일까지 구청 대강당에서 집합교육 <p>성동구는 상반기 민방위 교육을 이수하지 못한 대원 약 5,000명을 대상으로 2026년 하반기 민방위 보충교육을 진행하고 있다고 밝혔다. 이번 보충교육에서는 통장이 맡고 있는 지역민방위대장을 대상으로 한 특별교육도...</p>
1294</div>
1295</a><div class="article-meta-list">
1296<span class="article-meta-author">이원주 </span>
1297<span class="article-meta-separator">|</span>
1298<time class="article-date-list">2026. 09. 30. 14:33</time>
1299</div>
1300</div>
1301</article><article class="article-card-list"><div class="article-image">
1302<a href="/ko-kr/articles/54901">
1303<img src="https://cdn.www.sgilbo.kr/w210/q75/article-images/2026-09-30/60b3fc06-dd55-4fb2-9c14-1c7c2c3df8bf.png" alt="성동구, 바리스타 양ì
1303„±êµìœ¡ 확대 운영... 1급 자격증 과정 신설" loading="lazy" />
1304</a>
1305</div><div class="article-content-list">
1306<h2 class="article-title-list">
1307<a href="/ko-kr/articles/54901">성동구, 바리스타 양성교육 확대 운영... 1급 자격증 과정 신설</a>
1308</h2><a href="/ko-kr/articles/54901" style="text-decoration: none;">
1309<div class="article-subtitle-list">- 구민 수요 반영해 바리스타 1급 자격증 과정 첫 개설, 내달 1일부터 수강생 60명 선착순 모집
1310- 자격증 교육과 함께 카페 현장실습도 연계, 상반기 교육생 전원 자격증 취득 및 2명 취업 성공
1311<p>성동구가 구민들의 높은 수요에 맞춰 ‘바리스타 양성교육’ 규모를 확대하고, 올해 처음으로 1급 자격증 취득 과정을 신설해 운영한다고 밝혔다. 구는 오는 10월 1일 오전 10시부터 ‘2026년 제3기 바리스타...</p>
1312</div>
1313</a><div class="article-meta-list">
1314<span class="article-meta-author">이원주 </span>
1315<span class="article-meta-separator">|</span>
1316<time class="article-date-list">2026. 09. 30. 14:22</time>
1317</div>
1318</div>
1319</article><article class="article-card-list"><div class="article-image">
1320<a href="/ko-kr/articles/54899">
1321<img src="https://cdn.www.sgilbo.kr/w210/q75/article-images/2026-09-30/6135366d-93ed-415f-9d41-7a0ab2762a12.png" alt="성동구 성수1가제1동, 주민이 만든‘제3회 서울숲 축제’" loading="lazy" />
1322</a>
1323</div><div class="article-content-list">
1324<h2 class="article-title-list">
1325<a href="/ko-kr/articles/54899">성동구 성수1가제1동, 주민이 만든‘제3회 서울숲 축제’</a>
1326</h2><a href="/ko-kr/articles/54899" style="text-decoration: none;">
1327<div class="article-subtitle-list">- 19일 언더스탠드에비뉴에 주민 300여 명 참여, 뚝섬 국말이떡 등 먹거리와 체험 부스
1328<p>성동구 성수1가제1동 서울숲축제추진위원회 는 지난 19일 언더스탠드에비뉴 중앙광장에서 주민 300여 명이 참여한 가운데 ‘2026년 제3회 서울숲 축제’를 열었다고 밝혔다.</p>
1329</div>
1330</a><div class="article-meta-list">
1331<span class="article-meta-author">이원주 </span>
1332<span class="article-meta-separator">|</span>
1333<time class="article-date-list">2026. 09. 30. 14:10</time>
1334</div>
1335</div>
1336</article></div>
1337<div class="article-list title-view hidden" id="titleView"><article class="article-card-title">
1338<h2 class="article-title-only">
1339<a href="/ko-kr/articles/54918">성동광진교육지원청, 「학원팀 카카오 채널」 5주년 기념“친구추가 이벤트”실시</a>
1340</h2><span class="article-category-badge">성동신문</span><span class="article-separator">|</span>
1341<div class="article-author-info">이원주 </div>
1342<span class="article-separator">|</span>
1343<time class="article-date-title">2026. 10. 1.</time>
1344</article><article class="article-card-title">
1345<h2 class="article-title-only">
1346<a href="/ko-kr/articles/54910">성동구, 아동시설부터 경로당까지… 동마다 이웃 나눔 이어져</a>
1347</h2><span class="article-category-badge">성동신문</span><span class="article-separator">|</span>
1348<div class="article-author-info">이원주 </div>
1349<span class="article-separator">|</span>
1350<time class="article-date-title">2026. 10. 1.</time>
1351</article><article class="article-card-title">
1352<h2 class="article-title-only">
1353<a href="/ko-kr/articles/54909">성동구, 차세대 '히어링루프'로 스마트쉼터 버스 안내 더 선명하게 듣는다</a>
1354</h2><span class="article-category-badge">성동신문</span><span class="article-separator">|</span>
1355<div class="article-author-info">이원주 </div>
1356<span class="article-separator">|</span>
1357<time class="article-date-title">2026. 10. 1.</time>
1358</article><article class="article-card-title">
1359<h2 class="article-title-only">
1360<a href="/ko-kr/articles/54908">성동구,‘평생 살고 싶은 성동’공모전… 구정 아이디어 역대 최다</a>
1361</h2><span class="article-category-badge">성동신문</span><span class="article-separator">|</span>
1362<div class="article-author-info">이원주 </div>
1363<span class="article-separator">|</span>
1364<time class="article-date-title">2026. 10. 1.</time>
1365</article><article class="article-card-title">
1366<h2 class="article-title-only">
1367<a href="/ko-kr/articles/54907">
1367성동구 왕십리2동노인복지관, 개관 1주년‘왕이네 첫돌 잔치’열어</a>
1368</h2><span class="article-category-badge">성동신문</span><span class="article-separator">|</span>
1369<div class="article-author-info">이원주 </div>
1370<span class="article-separator">|</span>
1371<time class="article-date-title">2026. 10. 1.</time>
1372</article><article class="article-card-title">
1373<h2 class="article-title-only">
1374<a href="/ko-kr/articles/54904">광진구, 취업 준비로 지친 청년에게 ‘2026년 4분기 청년도시락’지원</a>
1375</h2><span class="article-category-badge">성동신문</span><span class="article-separator">|</span>
1376<div class="article-author-info">이원주 </div>
1377<span class="article-separator">|</span>
1378<time class="article-date-title">2026. 10. 1.</time>
1379</article><article class="article-card-title">
1380<h2 class="article-title-only">
1381<a href="/ko-kr/articles/54903">성동구의회, 행정사무감사 대비 2차 교육 실시</a>
1382</h2><span class="article-category-badge">성동신문</span><span class="article-separator">|</span>
1383<div class="article-author-info">이원주 </div>
1384<span class="article-separator">|</span>
1385<time class="article-date-title">2026. 10. 1.</time>
1386</article><article class="article-card-title">
1387<h2 class="article-title-only">
1388<a href="/ko-kr/articles/54902">성동구, 하반기 민방위 보충교육 실시</a>
1389</h2><span class="article-category-badge">성동신문</span><span class="article-separator">|</span>
1390<div class="article-author-info">이원주 </div>
1391<span class="article-separator">|</span>
1392<time class="article-date-title">2026. 9. 30.</time>
1393</article><article class="article-card-title">
1394<h2 class="article-title-only">
1395<a href="/ko-kr/articles/54901">성동구, 바리스타 양성교육 확대 운영... 1급 자격증 과정 신설</a>
1396</h2><span class="article-category-badge">성동신문</span><span class="article-separator">|</span>
1397<div class="article-author-info">이원주 </div>
1398<span class="article-separator">|</span>
1399<time class="article-date-title">2026. 9. 30.</time>
1400</article><article class="article-card-title">
1401<h2 class="article-title-only">
1402<a href="/ko-kr/articles/54899">성동구 성수1가제1동, 주민이 만든‘제3회 서울숲 축제’</a>
1403</h2><span class="article-category-badge">성동신문</span><span class="article-separator">|</span>
1404<div class="article-author-info">이원주 </div>
1405<span class="article-separator">|</span>
1406<time class="article-date-title">2026. 9. 30.</time>
1407</article></div>
1408<div class="article-list photo-view hidden" id="photoView"><article class="article-card-photo">
1409<a href="/ko-kr/articles/54918"><div class="article-image-photo">
1410<img src="https://cdn.www.sgilbo.kr/w300/q75/article-images/2026-10-01/20bde6e8-8c5c-4d13-8182-580d1e0232fc.png" alt="성동광진교육지원청, 「학원팀 카카오 채널」 5주년 기념“친구추가 이벤트”실시" loading="lazy" />
1411</div></a>
1412<div class="article-content-photo">
1413<h2 class="article-title-photo">
1414<a href="/ko-kr/articles/54918">성동광진교육지원청, 「학원팀 카카오 채널」 5주년 기념“친구추가 이벤트”실시</a>
1415</h2>
1416<div class="article-meta-photo">
1417<div class="article-author-photo">이원주 </div>
1418<time class="article-date-photo">2026. 10. 1.</time>
1419</div>
1420</div>
1421</article><article class="article-card-photo">
1422<a href="/ko-kr/articles/54910"><div class="article-image-photo">
1423<img src="https://cdn.www.sgilbo.kr/w300/q75/article-images/2026-10-01/030925c4-488a-4058-812b-c456a8b96a86.png" alt="성동구, 아동시설부터 경로당까지… 동마다 이웃 나눔 이어져" loading="lazy" />
1424</div></a>
1425<div class="article-content-photo">
1426<h2 class="article-title-photo">
1427<a href="/ko-kr/articles/54910">성동구, 아동시설부터 경로당까지… 동마다 이웃 나눔 이어져</a>
1428</h2>
1429<div class="article-meta-photo">
1430<div class="article-author-photo">이원주 </div>
1431<time class="article-date-photo">2026. 10. 1.</time>
1432</div>
1433</div>
1434</article><article class="article-card-photo">
1435<a href="/ko-kr/articles/54909"><div class="article-image-photo">
1436<img src="https://cdn.www.sgilbo.kr/w300/q75/article-images/2026-10-01/49218db6-715c-4863-acbd-5df053fa35d3.png" alt="성동구, 차세대 '히어링루프'로 스마트쉼터 버스 안내 더 선명하게 듣는다" loading="lazy" />
1437</div></a>
1438<div class="article-content-photo">
1439<h2 class="article-title-photo">
1440<a href="/ko-kr/articles/54909">성동구, 차세대 '히어링루프'로 스마트쉼터 버스 안내 더 선명하게 듣는다</a>
1441</h2>
1442<div class="article-meta-photo">
1443<div class="article-author-photo">이원주 </div>
1444<time class="article-date-photo">2026. 10. 1.</time>
1445</div>
1446</div>
1447</article><article class="article-card-photo">
1448<a href="/ko-kr/articles/54908"><div class="article-image-photo">
1449<img src="https://cdn.www.sgilbo.kr/w300/q75/article-images/2026-10-01/d889ae02-a7bd-466a-aec7-52f2eb6e083b.png" alt="성동구,‘평생 살고 싶은 성동’공모전… 구정 아이디어 역대 최다" loading="lazy" />
1450</div></a>
1451<div class="article-content-photo">
1452<h2 class="article-title-photo">
1453<a href="/ko-kr/articles/54908">성동구,‘평생 살고 싶은 성동’공모전… 구정 아이디어 역대 최다</a>
1454</h2>
1455<div class="article-meta-photo">
1456<div class="article-author-photo">이원주 </div>
1457<time class="article-date-photo">2026. 10. 1.</time>
1458</div>
1459</div>
1460</article><article class="article-card-photo">
1461<a href="/ko-kr/articles/54907"><div class="article-image-photo">
1462<img src="https://cdn.www.sgilbo.kr/w300/q75/article-images/2026-10-01/943d79ce-a60a-413b-a13a-f85e9097df4d.png" alt="성동구 왕십리2동노인복
1462지관, 개관 1주년‘왕이네 첫돌 잔치’열어" loading="lazy" />
1463</div></a>
1464<div class="article-content-photo">
1465<h2 class="article-title-photo">
1466<a href="/ko-kr/articles/54907">성동구 왕십리2동노인복지관, 개관 1주년‘왕이네 첫돌 잔치’열어</a>
1467</h2>
1468<div class="article-meta-photo">
1469<div class="article-author-photo">이원주 </div>
1470<time class="article-date-photo">2026. 10. 1.</time>
1471</div>
1472</div>
1473</article><article class="article-card-photo">
1474<a href="/ko-kr/articles/54904"><div class="article-image-photo">
1475<img src="https://cdn.www.sgilbo.kr/w300/q75/article-images/2026-10-01/9f860a6a-0c68-426d-8b48-5fd4cf9949d2.png" alt="광진구, 취업 준비로 지친 청년에게 ‘2026년 4분기 청년도시락’지원" loading="lazy" />
1476</div></a>
1477<div class="article-content-photo">
1478<h2 class="article-title-photo">
1479<a href="/ko-kr/articles/54904">광진구, 취업 준비로 지친 청년에게 ‘2026년 4분기 청년도시락’지원</a>
1480</h2>
1481<div class="article-meta-photo">
1482<div class="article-author-photo">이원주 </div>
1483<time class="article-date-photo">2026. 10. 1.</time>
1484</div>
1485</div>
1486</article><article class="article-card-photo">
1487<a href="/ko-kr/articles/54903"><div class="article-image-photo">
1488<img src="https://cdn.www.sgilbo.kr/w300/q75/article-images/2026-10-01/e77861c8-3b70-463e-95a8-7c8783fc9c35.png" alt="성동구의회, 행정사무감사 대비 2차 교육 실시" loading="lazy" />
1489</div></a>
1490<div class="article-content-photo">
1491<h2 class="article-title-photo">
1492<a href="/ko-kr/articles/54903">성동구의회, 행정사무감사 대비 2차 교육 실시</a>
1493</h2>
1494<div class="article-meta-photo">
1495<div class="article-author-photo">이원주 </div>
1496<time class="article-date-photo">2026. 10. 1.</time>
1497</div>
1498</div>
1499</article><article class="article-card-photo">
1500<a href="/ko-kr/articles/54902"><div class="article-image-photo">
1501<img src="https://cdn.www.sgilbo.kr/w300/q75/article-images/2026-09-30/e350712d-85bd-4021-a921-687bca95e69b.png" alt="성동구, 하반기 민방위 보충교육 실시" loading="lazy" />
1502</div></a>
1503<div class="article-content-photo">
1504<h2 class="article-title-photo">
1505<a href="/ko-kr/articles/54902">성동구, 하반기 민방위 보충교육 실시</a>
1506</h2>
1507<div class="article-meta-photo">
1508<div class="article-author-photo">이원주 </div>
1509<time class="article-date-photo">2026. 9. 30.</time>
1510</div>
1511</div>
1512</article><article class="article-card-photo">
1513<a href="/ko-kr/articles/54901"><div class="article-image-photo">
1514<img src="https://cdn.www.sgilbo.kr/w300/q75/article-images/2026-09-30/fbfdab79-b1bf-480f-b6d8-4182b2b847ba.png" alt="성동구, 바리스타 양성교육 확대 운영... 1급 자격증 과정 신설" loading="lazy" />
1515</div></a>
1516<div class="article-content-photo">
1517<h2 class="article-title-photo">
1518<a href="/ko-kr/articles/54901">성동구, 바리스타 양성교육 확대 운영... 1급 자격증 과정 신설</a>
1519</h2>
1520<div class="article-meta-photo">
1521<div class="article-author-photo">이원주 </div>
1522<time class="article-date-photo">2026. 9. 30.</time>
1523</div>
1524</div>
1525</article><article class="article-card-photo">
1526<a href="/ko-kr/articles/54899"><div class="article-image-photo">
1527<img src="https://cdn.www.sgilbo.kr/w300/q75/article-images/2026-09-30/633c299b-be41-45a8-b500-acdbd41b4257.png" alt="성동구 성수1가제1동, 주민이 만든‘제3회 서울숲 축제’" loading="lazy" />
1528</div></a>
1529<div class="article-content-photo">
1530<h2 class="article-title-photo">
1531<a href="/ko-kr/articles/54899">성동구 성수1가제1동, 주민이 만든‘제3회 서울숲 축제’</a>
1532</h2>
1533<div class="article-meta-photo">
1534<div class="article-author-photo">이원주 </div>
1535<time class="article-date-photo">2026. 9. 30.</time>
1536</div>
1537</div>
1538</article></div><div class="pagination"><span class="pagination-btn active">1</span><a href="/ko-kr/articles?page=2&category=S1N19&q=&sortBy=latest" class="pagination-btn">2</a><a href="/ko-kr/articles?page=3&category=S1N19&q=&sortBy=latest" class="pagination-btn">3</a><a href="/ko-kr/articles?page=2&category=S1N19&q=&sortBy=latest" class="pagination-btn">다음</a></div></div>
1539</div>
1540<script>
1541function changeViewMode(mode) {
1542// Hide all views
1543document.getElementById('summaryView').classList.add('hidden');
1544document.getElementById('titleView').classList.add('hidden');
1545document.getElementById('photoView').classList.add('hidden');
1546// Remove active class from all buttons
1547document.querySelectorAll('.view-mode-btn').forEach(btn => {
1548btn.classList.remove('active');
1549});
1550// Show selected view and activate button
1551if (mode === 'title') {
1552document.getElementById('titleView').classList.remove('hidden');
1553document.querySelector('[data-mode="title"]').classList.add('active');
1554} else if (mode === 'summary') {
1555document.getElementById('summaryView').classList.remove('hidden');
1556document.querySelector('[data-mode="summary"]').classList.add('active');
1557} else if (mode === 'photo') {
1558document.getElementById('photoView').classList.remove('hidden');
1559document.querySelector('[data-mode="photo"]').classList.add('active');
1560}
1561// Save to session storage
1562sessionStorage.setItem('articleViewMode', mode);
1563}
1564// Load saved view mode on page load
1565document.addEventListener('DOMContentLoaded', function() {
1566const savedMode = sessionStorage.getItem('articleViewMode') || 'summary';
1567changeViewMode(savedMode);
1568});
1569</script>
1569</div></div><div class="section-wrapper" style="grid-column:18 / 25;grid-row:1 / 21;width:100%;max-width:100%;box-sizing:border-box;position:relative"><div class="section-html-container"><style>
1570.section-popular-list {
1571padding: 40px 0;
1572background: transparent;
1573}
1574.section-popular-list .section-header {
1575margin-bottom: 24px;
1576}
1577.section-popular-list .section-title {
1578font-size: 1.5rem;
1579font-weight: 800;
1580color: #000000;
1581margin: 0;
1582}
1583.section-popular-list .news-list {
1584display: flex;
1585flex-direction: column;
1586gap: 24px;
1587}
1588.section-popular-list .news-item {
1589display: flex;
1590align-items: flex-start; 
1591text-decoration: none;
1592color: inherit;
1593gap: 20px;
1594padding-bottom: 24px;
1595border-bottom: 1px solid #eaeaea;
1596}
1597.section-popular-list .news-item:last-child {
1598border-bottom: none;
1599padding-bottom: 0;
1600}
1601.section-popular-list .rank-number {
1602flex: 0 0 30px; 
1603font-size: 2rem;
1604font-weight: 900;
1605color: #000000;
1606line-height: 1;
1607text-align: center;
1608margin-top: -4px; 
1609font-family: sans-serif; 
1610}
1611.section-popular-list .news-content {
1612flex: 1;
1613min-width: 0; 
1614display: flex;
1615flex-direction: column;
1616justify-content: center;
1617padding-top: 2px;
1618}
1619.section-popular-list .news-title {
1620font-size: 1.15rem;
1621font-weight: 600;
1622line-height: 1.5;
1623color: #000;
1624margin: 0;
1625display: -webkit-box;
1626-webkit-line-clamp: 2;
1627-webkit-box-orient: vertical;
1628overflow: hidden;
1629}
1630.section-popular-list .news-item:hover .news-title {
1631text-decoration: underline;
1632text-underline-offset: 4px;
1633}
1634.section-popular-list .thumbnail-container {
1635flex: 0 0 120px; 
1636aspect-ratio: 16/9;
1637background-color: #f0f0f0;
1638overflow: hidden;
1639border-radius: 0; 
1640}
1641.section-popular-list .thumbnail-img {
1642width: 100%;
1643height: 100%;
1644object-fit: cover;
1645transition: transform 0.3s ease;
1646}
1647.section-popular-list .news-item:hover .thumbnail-img {
1648transform: scale(1.05);
1649}
1650@media (max-width: 600px) {
1651.section-popular-list .rank-number {
1652font-size: 1.5rem;
1653flex: 0 0 24px;
1654}
1655.section-popular-list .news-title {
1656font-size: 1rem;
1657}
1658.section-popular-list .thumbnail-container {
1659flex: 0 0 100px; 
1660}
1661}
1662</style>
1663<div class="section-popular-list">
1664<div class="section-header">
1665<h2 class="section-title">많이 본 뉴스</h2>
1666</div>
1667<div class="news-list"><a href="/ko-kr/articles/54918" class="news-item">
1668<div class="rank-number">1</div>
1669<div class="news-content">
1670<h3 class="news-title">성동광진교육지원청, 「학원팀 카카오 채널」 5주년 기념“친구추가 이벤트”실시</h3>
1671</div>
1672<div class="thumbnail-container"><img src="https://cdn.www.sgilbo.kr/w600/q75/article-images/2026-10-01/0cf80589-57b5-43f6-b0d5-fd53d38fb274.png" alt="성동광진교육지원청, 「학원팀 카카오 채널」 5주년 기념“친구추가 이벤트”실시" class="thumbnail-img" loading="lazy" /></div>
1673</a><a href="/ko-kr/articles/54917" class="news-item">
1674<div class="rank-number">2</div>
1675<div class="news-content">
1676<h3 class="news-title">「광진구의회 AI정책연구회 발족...AI활용 의정역량 강화 및 지방행정 발전 방향 모색</h3>
1677</div>
1678<div class="thumbnail-container"><img src="https://cdn.www.sgilbo.kr/w600/q75/article-images/2026-10-01/79837be7-1642-40eb-b4e3-f6efc0fc8dac.jpg" alt="「광진구의회 AI정책연구회 발족...AI활용 의정역량 강화 및 지방행정 발전 방향 모색" class="thumbnail-img" loading="lazy" /></div>
1679</a><a href="/ko-kr/articles/54916" class="news-item">
1680<div class="rank-number">3</div>
1681<div class="news-content">
1682<h3 class="news-title">‘광진명품도시 정책연구회’발족식 및 착수보고회 개최</h3>
1683</div>
1684<div class="thumbnail-container"><img src="https://cdn.www.sgilbo.kr/w600/q75/article-images/2026-10-01/58b2331e-f7e7-4303-9be5-a46ecacf3696.png" alt="‘광진명품도시 정책연구회’발족식 및 착수보고회 개최" class="thumbnail-img" loading="lazy" /></div>
1685</a><a href="/ko-kr/articles/54915" class="news-item">
1686<div class="rank-number">4</div>
1687<div class="news-content">
1688<h3 class="news-title">청년의 열정으로 물든 광진구…청년문화축제 ‘2026 청춘대로’ 개최</h3>
1689</div>
1690<div class="thumbnail-container"><img src="https://cdn.www.sgilbo.kr/w600/q75/article-images/2026-10-01/3bfaf494-bedc-46c6-83b2-ce0ccf179ff1.png" alt="청년의 열정으로 물든 광진구…청년문화축제 ‘2026 청춘대로’ 개최" class="thumbnail-img" loading="lazy" /></div>
1691</a><a href="/ko-kr/articles/54914" class="news-item">
1692<div class="rank-number">5</div>
1693<div class="news-content">
1694<h3 class="news-title">양구 두타연서 15일 '금강산 가는 길 걷기' 행사…2천명 모집</h3>
1695</div>
1696<div class="thumbnail-container"><img src="https://cdn.www.sgilbo.kr/w600/q75/article-images/2026-10-01/0ae78fbd-9acd-45ee-9d2e-27be799a8e55.png" alt="양구 두타연서 15일 '금강산 가는 길 걷기' 행사…2천명 모집" class="thumbnail-img" loading="lazy" /></div>
1697</a></div>
1698</div></div></div><div class="section-wrapper" style="grid-column:18 / 25;grid-row:21 / 30;width:100%;max-width:100%;box-sizing:border-box;position:relative"><div class="section-html-container"><style>
1699.pango-full-banner {
1700width: 100%;
1701display: block;
1702overflow: hidden;
1703line-height: 0; 
1704}
1705.pango-full-banner a {
1706display: block;
1707width: 100%;
1708}
1709.pango-full-banner img {
1710width: 100% !important; 
1711height: auto;
1712max-width: none !important; 
1713display: block;
1714}
1715</style><div class="pango-full-banner" data-banner-id="14"><a href="https://www.sgilbo.kr/ko-kr/partnership" target="_blank" rel="noopener noreferrer">
1716<img src="https://cdn.www.sgilbo.kr/w600/q75/ads/2025-12-28/07e2660b-b4f0-4d1b-8848-0fa2e26519e0.jpg" 
1717alt="PC 기사목록 우측" loading="lazy" />
1718</a></div></div></div><div class="section-wrapper" style="grid-column:18 / 25;grid-row:30 / 43;width:100%;max-width:100%;box-sizing:border-box;position:relative"><div class="section-html-container"><style>
1719.section-carousel-single {
1720padding: 40px 0;
1721background: transparent;
1722overflow: hidden;
1723}
1724.section-carousel-single .container {
1725max-width: 800px; 
1726margin: 0 auto;
1727padding: 0 20px;
1728}
1729.section-carousel-single .section-header {
1730margin-bottom: 20px;
1731text-align: left;
1732}
1733.section-carousel-single .section-title {
1734font-size: 1.5rem;
1735font-weight: 800;
1736color: #000000;
1737margin: 0;
1738}
1739.section-carousel-single .carousel-viewport {
1740overflow: hidden;
1741width: 100%;
1742position: relative;
1743}
1744.section-carousel-single .carousel-track {
1745display: flex;
1746width: 100%;
1747}
1748.section-carousel-single .news-item {
1749flex: 0 0 100%; 
1750width: 100%;
1751display: block;
1752text-decoration: none;
1753color: inherit;
1754box-sizing: border-box;
1755}
1756.section-carousel-single .thumbnail-container {
1757width: 100%;
1758aspect-ratio: 3/2;
1759background-color: #f0f0f0;
1760overflow: hidden;
1761border-radius: 0; 
1762margin-bottom: 12px;
1763position: relative;
1764}
1765.section-carousel-single .thumbnail-img {
1766width: 100%;
1767height: 100%;
1768object-fit: cover;
1769transition: transform 0.3s ease;
1770}
1771.section-carousel-single .news-item:hover .thumbnail-img {
1772transform: scale(1.05);
1773}
1774.section-carousel-single .news-title {
1775font-size: 1.2rem;
1776font-weight: 700;
1777line-height: 1.4;
1778color: #000;
1779margin: 0;
1780text-align: center; 
1781display: -webkit-box;
1782-webkit-line-clamp: 1;
1783-webkit-box-orient: vertical;
1784overflow: hidden;
1785white-space: normal; 
1786}
1787.section-carousel-single .news-item:hover .news-title {
1788text-decoration: underline;
1789text-underline-offset: 4px;
1790}
1791.section-carousel-single .carousel-controls {
1792display: flex;
1793align-items: center;
1794justify-content: center;
1795gap: 20px;
1796margin-top: 20px;
1797font-family: sans-serif;
1798}
1799.section-carousel-single .control-btn {
1800background: none;
1801border: none;
1802font-size: 1.5rem;
1803cursor: pointer;
1804color: #333;
1805padding: 0 10px;
1806display: flex;
1807align-items: center;
1808justify-content: center;
1809transition: color 0.2s;
1810}
1811.section-carousel-single .control-btn:hover {
1812color: #000;
1813}
1814.section-carousel-single .page-indicator {
1815font-size: 1rem;
1816font-weight: 500;
1817color: #555;
1818letter-spacing: 1px;
1819}
1820.section-carousel-single .current-page {
1821font-weight: 800;
1822color: #000;
1823}
1824@media (max-width: 768px) {
1825.section-carousel-single .section-title {
1826font-size: 1.3rem;
1827}
1828.section-carousel-single .news-title {
1829font-size: 1.1rem;
1830}
1831}
1832</style>
1833<div class="section-carousel-single" id="carousel-single-ag3fg" data-autoplay-speed="3000">
1834<div class="container">
1835<div class="section-header">
1836<h2 class="section-title">포토뉴스</h2>
1837</div>
1838<div class="carousel-viewport">
1839<div class="carousel-track"><a href="/ko-kr/articles/54918" class="news-item">
1840<div class="thumbnail-container"><img src="https://cdn.www.sgilbo.kr/w600/q75/article-images/2026-10-01/0cf80589-57b5-43f6-b0d5-fd53d38fb274.png" alt="성동광진교육지원청, 「학원팀 카카오 채널」 5주년 기념“친구추가 이벤트”실시" class="thumbnail-img" loading="lazy" /></div>
1841<h3 class="news-title">성동광진교육지원청, 「학원팀 카카오 채널」 5주년 기념“친구추가 이벤트”실시</h3>
1842</a><a href="/ko-kr/articles/54917" class="news-item">
1843<div class="thumbnail-container"><img src="https://cdn.www.sgilbo.kr/w600/q75/article-images/2026-10-01/79837be7-1642-40eb-b4e3-f6efc0fc8dac.jpg" alt="「광진구의회 AI정책연구회 발족...AI활용 의정역량 강화 및 지방행정 발전 방향 모색" class="thumbnail-img" loading="lazy" /></div>
1844<h3 class="news-title">「광진구의회 AI정책연구회 발족...AI활용 의정역량 강화 및 지방행정 발전 방향 모색</h3>
1845</a><a href="/ko-kr/articles/54916" class="news-item">
1846<div class="thumbnail-container"><img src="https://cdn.www.sgilbo.kr/w600/q75/article-images/2026-10-01/58b2331e-f7e7-4303-9be5-a46ecacf3696.png" alt="‘광진명품도시 정책연구회’발족식 및 착수보고회 개최" class="thumbnail-img" loading="lazy" /></div>
1847<h3 class="news-title">‘광진명품도시 정책연구회’발족식 및 착수보고회 개최</h3>
1848</a><a href="/ko-kr/articles/54915" class="news-item">
1849<div class="thumbnail-container"><img src="https://cdn.www.sgilbo.kr/w600/q75/article-images/2026-10-01/3bfaf494-bedc-46c6-83b2-ce0ccf179ff1.png" alt="청년의 열정으로 물든 광진구…청년문화축제 ‘2026 청춘대로’ 개최" class="thumbnail-img" loading="lazy" /></div>
1850<h3 class="news-title">청년의 열정으로 물든 광진구…청년문화축제 ‘2026 청춘대로’ 개최</h3>
1851</a><a href="/ko-kr/articles/54914" class="news-item">
1852<div class="thumbnail-container"><img src="https://cdn.www.sgilbo.kr/w600/q75/article-images/2026-10-01/0ae78fbd-9acd-45ee-9d2e-27be799a8e55.png" alt="양구 두타연서 15일 '금강산 가는 길 걷기' 행사…2천명 모집" class="thumbnail-img" loading="lazy" /></div>
1853<h3 class="news-title">양구 두타연서 15일 '금강산 가는 길 걷기' 행사…2천명 모집</h3>
1854</a></div>
1855</div>
1856<div class="carousel-controls">
1857<button class="control-btn prev-btn" aria-label="Previous">‹</button>
1858<div class="page-indicator">
1859<span class="current-page">1</span> / <span class="total-page">5</span>
1860</div>
1861<button class="control-btn next-btn" aria-label="Next">›</button>
1862</div>
1863</div>
1864</div>
1865<script>
1866(function() {
1867const container = document.getElementById('carousel-single-ag3fg');
1868const track = container.querySelector('.carousel-track');
1869const items = Array.from(container.querySelectorAll('.news-item'));
1870const prevBtn = container.querySelector('.prev-btn');
1871const nextBtn = container.querySelector('.next-btn');
1872const currentPageEl = container.querySelector('.current-page');
1873const totalItems = items.length;
1874const intervalTime = parseInt(container.dataset.autoplaySpeed, 10) || 3000;
1875if (totalItems === 0) return;
1876// 무한 루프를 위한 클론 생성 (앞뒤로 1개씩이면 충분하지만 부드러움을 위해)
1877// 뒤에 복제
1878const cloneLast = items[0].cloneNode(true);
1879cloneLast.classList.add('clone');
1880track.appendChild(cloneLast);
1881// 앞에 복제
1882const cloneFirst = items[totalItems - 1].cloneNode(true);
1883cloneFirst.classList.add('clone');
1884track.insertBefore(cloneFirst, track.firstChild);
1885// 초기 설정
1886let currentIndex = 1; // 앞에 1개 복제되었으므로 실제 1번은 인덱스 1
1887let isTransitioning = false;
1888let autoPlayTimer;
1889function updatePosition(transition = true) {
1890if (transition) {
1891track.style.transition = 'transform 0.5s ease-in-out';
1892} else {
1893track.style.transition = 'none';
1894}
1895const movePercent = -(currentIndex * 100);
1896track.style.transform = `translateX(${movePercent}%)`;
1897// 페이지 번호 업데이트 (Clone 인덱스 보정)
1898let displayIndex = currentIndex;
1899if (currentIndex === 0) displayIndex = totalItems;
1900else if (currentIndex === totalItems + 1) displayIndex = 1;
1901currentPageEl.textContent = displayIndex;
1902}
1903// 초기 위치
1904setTimeout(() => updatePosition(false), 50);
1905function moveNext() {
1906if (isTransitioning) return;
1907isTransitioning = true;
1908currentIndex++;
1909updatePosition(true);
1910track.addEventListener('transitionend', () => {
1911isTransitioning = false;
1912// 마지막 클론(원본 1번 복제본)에 도달하면
1913if (currentIndex >= totalItems + 1) {
1914currentIndex = 1; // 실제 원본 1번 위치로 점프
1915updatePosition(false);
1916}
1917}, { once: true });
1918}
1919function movePrev() {
1920if (isTransitioning) return;
1921isTransitioning = true;
1922currentIndex--;
1923updatePosition(true);
1924track.addEventListener('transitionend', () => {
1925isTransitioning = false;
1926// 첫번째 클론(원본 마지막 복제본)에 도달하면
1927if (currentIndex <= 0) {
1928currentIndex = totalItems; // 실제 원본 마지막 위치로 점프
1929updatePosition(false);
1930}
1931}, { once: true });
1932}
1933// 자동 회전
1934function startAutoPlay() {
1935stopAutoPlay();
1936autoPlayTimer = setInterval(moveNext, intervalTime);
1937}
1938function stopAutoPlay() {
1939if (autoPlayTimer) clearInterval(autoPlayTimer);
1940}
1941// 이벤트 리스너
1942nextBtn.addEventListener('click', () => {
1943stopAutoPlay(); // 버튼 클릭 시 잠시 멈춤
1944moveNext();
1945startAutoPlay(); // 다시 시작
1946});
1947prevBtn.addEventListener('click', () => {
1948stopAutoPlay();
1949movePrev();
1950startAutoPlay();
1951});
1952// 마우스 오버 시 멈춤
1953container.addEventListener('mouseenter', stopAutoPlay);
1954container.addEventListener('mouseleave', startAutoPlay);
1955// 시작
1956startAutoPlay();
1957})();
1958</script>
1958</div></div><div class="section-wrapper" style="grid-column:18 / 25;grid-row:43 / 55;width:100%;max-width:100%;box-sizing:border-box;position:relative"><div class="section-html-container"><style>
1959.section-text-list {
1960padding: 30px 0;
1961background: transparent;
1962}
1963.section-text-list .section-header {
1964margin-bottom: 5px;
1965}
1966.section-text-list .section-title {
1967font-size: 1.4rem;
1968font-weight: 800;
1969color: #000000;
1970margin: 0;
1971}
1972.section-text-list .news-list {
1973display: flex;
1974flex-direction: column;
1975}
1976.section-text-list .news-item {
1977display: block;
1978text-decoration: none;
1979color: inherit;
1980padding: 16px 0;
1981border-bottom: 1px solid #eaeaea;
1982transition: background-color 0.2s;
1983}
1984.section-text-list .news-item:last-child {
1985border-bottom: 1px solid #eaeaea; 
1986}
1987.section-text-list .news-title {
1988font-size: 1.05rem;
1989font-weight: 500; 
1990line-height: 1.5;
1991color: #333;
1992margin: 0;
1993display: -webkit-box;
1994-webkit-line-clamp: 1;
1995-webkit-box-orient: vertical;
1996overflow: hidden;
1997text-overflow: ellipsis;
1998}
1999.section-text-list .news-item:hover .news-title {
2000text-decoration: underline;
2001text-underline-offset: 4px;
2002color: #000;
2003}
2004@media (max-width: 768px) {
2005.section-text-list .section-title {
2006font-size: 1.2rem;
2007}
2008.section-text-list .news-title {
2009font-size: 1rem;
2010}
2011}
2012</style>
2013<div class="section-text-list">
2014<div class="section-header">
2015<h2 class="section-title">최신뉴스</h2>
2016</div>
2017<div class="news-list"><a href="/ko-kr/articles/54918" class="news-item">
2018<h3 class="news-title">성동광진교육지원청, 「학원팀 카카오 채널」 5주년 기념“친구추가 이벤트”실시</h3>
2019</a><a href="/ko-kr/articles/54917" class="news-item">
2020<h3 class="news-title">「광진구의회 AI정책연구회 발족...AI활용 의정역량 강화 및 지방행정 발전 방향 모색</h3>
2021</a><a href="/ko-kr/articles/54916" class="news-item">
2022<h3 class="news-title">‘광진명품도시 정책연구회’발족식 및 착수보고회 개최</h3>
2023</a><a href="/ko-kr/articles/54915" class="news-item">
2024<h3 class="news-title">청년의 열정으로 물든 광진구…청년문화축제 ‘2026 청춘대로’ 개최</h3>
2025</a><a href="/ko-kr/articles/54914" class="news-item">
2026<h3 class="news-title">양구 두타연서 15일 '금강산 가는 길 걷기' 행사…2천명 모집</h3>
2027</a></div>
2028</div></div></div></div></div></div><div class="layout-sidebar-anchor"><aside data-sidebar="right" class="fixed-right-wing" aria-label="오른쪽 광고"><div class="layout-sidebar-item" style="width:fit-content"><div class="section-html-container"><style>
2029.pango-full-banner {
2030width: 100%;
2031display: block;
2032overflow: hidden;
2033line-height: 0; 
2034}
2035.pango-full-banner a {
2036display: block;
2037width: 100%;
2038}
2039.pango-full-banner img {
2040width: 100% !important; 
2041height: auto;
2042max-width: none !important; 
2043display: block;
2044}
2045</style><div class="pango-full-banner" data-banner-id="16"><a href="https://gaonedu.dreamcampus.co.kr/" target="_blank" rel="noopener noreferrer">
2046<img src="https://cdn.www.sgilbo.kr/w600/q75/ads/2026-06-22/2ccb3f57-91de-4f5b-8808-4f5b74e0afbc.png" 
2047alt="PC 오른쪽 세로형 광고" loading="lazy" />
2048</a></div></div></div></aside></div></main><footer id="footer-section" class="layout-section-full" style="background-color:#f8f8f8;padding-top:0;padding-bottom:0;--section-muted-fg:#666666"><div class="layout-section-inner"><div style="position:relative"><div class="grid-masonry-layout desktop-layout" style="display:grid;grid-template-columns:repeat(24, 1fr);gap:1rem;width:100%;max-width:100%;position:relative;min-height:0;margin:0 auto"><div class="section-wrapper" style="grid-column:1 / 25;grid-row:1 / 13;width:100%;max-width:100%;box-sizing:border-box;position:relative"><div class="section-html-container"><style>
2049.device-toggle-section {
2050padding: 16px 0;
2051background: transparent;
2052display: none; 
2053}
2054.device-toggle-section.visible {
2055display: block;
2056}
2057.device-toggle {
2058display: flex;
2059justify-content: center;
2060align-items: center;
2061gap: 12px;
2062}
2063.device-toggle a {
2064display: inline-flex;
2065align-items: center;
2066justify-content: center;
2067padding: 10px 200px;
2068background-color: #00a2ea;
2069color: #ffffff;
2070text-decoration: none;
2071border-radius: 6px;
2072font-size: 0.95rem;
2073font-weight: 500;
2074transition: all 0.3s ease;
2075cursor: pointer;
2076border: 2px solid #00a2ea;
2077}
2078.device-toggle a:hover {
2079background-color: transparent;
2080color: #00a2ea;
2081transform: translateY(-2px);
2082box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
2083}
2084.device-toggle a:active {
2085transform: translateY(0);
2086}
2087@media (max-width: 768px) {
2088.device-toggle-section {
2089padding: 12px 0;
2090}
2091.device-toggle a {
2092padding: 8px 16px;
2093font-size: 0.9rem;
2094}
2095}
2096</style>
2097<div class="device-toggle-section" id="deviceToggleSection">
2098<div class="device-toggle">
2099<a href="javascript:void(0)" onclick="toggleDevice('mobile')">모바일버전</a>
2100</div>
2101</div>
2102<script>
2103(function() {
2104// 쿠키 읽기 함수
2105function getCookie(name) {
2106const value = '; ' + document.cookie;
2107const parts = value.split('; ' + name + '=');
2108if (parts.length === 2) {
2109return parts.pop().split(';').shift();
2110}
2111return null;
2112}
2113// device-override 쿠키가 있는지 확인
2114const deviceOverride = getCookie('device-override');
2115const section = document.getElementById('deviceToggleSection');
2116if (deviceOverride) {
2117// 쿠키가 있으면 섹션 표시
2118section.classList.add('visible');
2119}
2120})();
2121// 디바이스 전환 함수
2122function toggleDevice(deviceType) {
2123document.cookie = 'device-override=' + deviceType + '; path=/; max-age=7200';
2124location.reload();
2125}
2126</script>
2126</div></div><div class="section-wrapper" style="grid-column:1 / 25;grid-row:13 / 22;width:100%;max-width:100%;box-sizing:border-box;position:relative"><div class="section-html-container"><style>
2127.footer-sample {
2128width: 100%;
2129background-color: #f8f8f8;
2130font-family: 'Helvetica Neue', Arial, sans-serif;
2131}
2132.footer-container {
2133max-width: 1200px;
2134margin: 0 auto;
2135padding: 0 20px;
2136}
2137.footer-top-links {
2138padding: 30px 0;
2139border-bottom: 1px solid #e0e0e0;
2140display: flex;
2141align-items: center;
2142gap: 40px;
2143}
2144.footer-top-logo {
2145flex-shrink: 0;
2146}
2147.footer-top-logo a {
2148display: inline-block;
2149text-decoration: none;
2150}
2151.footer-top-logo img {
2152max-height: 30px;
2153width: auto;
2154}
2155.footer-links-list {
2156display: flex;
2157justify-content: flex-end;
2158align-items: center;
2159flex-wrap: wrap;
2160gap: 10px 30px;
2161list-style: none;
2162margin: 0;
2163padding: 0;
2164flex: 1;
2165}
2166.footer-links-list li {
2167margin: 0;
2168padding: 0;
2169}
2170.footer-links-list a {
2171color: #333333;
2172text-decoration: none;
2173font-size: 0.95rem;
2174font-weight: 500;
2175transition: color 0.3s ease;
2176white-space: nowrap;
2177}
2178.footer-links-list a:hover {
2179color: #d0121b;
2180}
2181.footer-links-list a.highlight {
2182font-weight: 700;
2183}
2184.footer-logo-section {
2185padding: 40px 0;
2186border-bottom: 1px solid #e0e0e0;
2187}
2188.footer-logo-link {
2189display: inline-block;
2190text-decoration: none;
2191}
2192.footer-logo-link img {
2193width: 200px;
2194height: auto;
2195}
2196.footer-info-section {
2197padding: 30px 0;
2198border-bottom: 1px solid #e0e0e0;
2199}
2200.footer-info-list {
2201display: flex;
2202flex-wrap: wrap;
2203gap: 8px 0;
2204list-style: none;
2205margin: 0;
2206padding: 0;
2207font-size: 0.9rem;
2208color: #666;
2209line-height: 1.6;
2210}
2211.footer-info-list li {
2212margin: 0;
2213padding: 0;
2214display: flex;
2215align-items: center;
2216}
2217.footer-info-list li:not(:last-child)::after {
2218content: "|";
2219margin: 0 12px;
2220color: #ccc;
2221}
2222.footer-info-list li strong {
2223font-weight: 500;
2224color: #333;
2225}
2226.footer-text-section {
2227padding: 30px 0;
2228}
2229.footer-text-content {
2230font-size: 0.85rem;
2231color: #888;
2232line-height: 1.8;
2233}
2234.footer-text-content p {
2235margin: 0 0 0px 0;
2236}
2237.footer-text-content p:last-child {
2238margin-bottom: 0;
2239}
2240</style>
2241<div class="footer-sample">
2242<div class="footer-container">
2243<div class="footer-top-links">
2244<div class="footer-top-logo">
2245<a href="/ko-kr"><img src="https://cdn.www.sgilbo.kr/w400/q75/configs/2025-12-02/53c70b0b-d5bb-4bfd-a212-32096e493621.png" alt="성광일보" /></a>
2246</div>
2247<ul class="footer-links-list">
2248<li><a href="/ko-kr/about">매체소개</a></li>
2249<li><a href="/ko-kr/report">기사제보</a></li>
2250<li><a href="/ko-kr/partnership">광고문의</a></li>
2251<li><a href="/ko-kr/terms">이용약관</a></li>
2252<li><a href="/ko-kr/privacy" class="highlight">개인정보처리방침</a></li>
2253<li><a href="/ko-kr/youth-protection">청소년보호정책</a></li>
2254<li><a href="/ko-kr/copyright">저작권보호정책</a></li>
2255<li><a href="/ko-kr/email-protection">이메일무단수집거부</a></li>
2256</ul>
2257</div>
2258<div class="footer-info-section">
2259<ul class="footer-info-list"><li>법인명: 성광미디어(주)</li><li>주소: 서울특별시 광진구 용마산로 128, 원방빌딩 501호(중곡동)</li><li>대표전화: 02-2294-7322</li><li>청소년보호책임자: 이주연</li><li>제호: 성광일보</li><li>등록번호: 서울, 아01336</li><li>성동신문 등록번호 서울다 07825호</li>
2260<li>성동신문 창간 2001년 7월 22일</li>
2261<li>광진투데이 등록번호 서울다 10044호</li>
2262<li>광진투데이 창간 2010년 10월 12일</li><li>등록일: 2010-09-01</li><li>최초발행일: 2010-09-01</li><li>발행·편집인: 이원주</li><li>사업자등록번호: 206-86-18946</li><li>후원계좌번호: 우리은행 1005-002-021754 성광미디어(주)</li><li>기사제보: [email protected]</li></ul>
2263</div>
2264</div>
2265</div></div></div></div></div><div class="section-news-footer-copyright"><span class="section-news-footer-copyright-text"><a href="/admin" target="_blank" rel="nofollow">©</a> 2026 성광미디어(주). All Rights Reserved.</span><span class="section-news-footer-copyright-powered-by">Powered by <a href="https://pango-lingo.com" rel="noopener noreferrer" target="_blank"><img src="/images/pangolingo_logo_footer.v1.webp" alt="팡고링고" width="80" height="20" loading="lazy" decoding="async"></a></span></div></div></footer></div>
2266<script>(function(){
2267  var root=document.documentElement;
2268  var header=document.getElementById('header-section');
2269  var lastH=null;
2270  function setH(){
2271    if(!header)return;
2272    var h=Math.round(header.offsetHeight);
2273    if(h>0&&h!==lastH){
2274      lastH=h;
2275      root.style.setProperty('--header-height',h+'px');
2276      window.dispatchEvent(new CustomEvent('header-height-updated'));
2277    }
2278  }
2279  setH();
2280  requestAnimationFrame(setH);
2281  if(header&&window.ResizeObserver){
2282    var t;
2283    new ResizeObserver(function(){clearTimeout(t);t=setTimeout(setH,100);}).observe(header);
2284  }
2285
2286  var left=document.querySelector('[data-sidebar="left"]');
2287  var right=document.querySelector('[data-sidebar="right"]');
2288  if(!left&&!right)return;
2289  var footer=document.getElementById('footer-section');
2290  var ticking=false;
2291  function update(){
2292    if(!footer)return;
2293    var rect=footer.getBoundingClientRect();
2294    var wh=window.innerHeight;
2295    var visible=rect.top<wh;
2296    [left,right].forEach(function(el){
2297      if(!el)return;
2298      if(visible){
2299        el.style.top='auto';
2300        el.style.bottom=(wh-rect.top+16)+'px';
2301        el.style.maxHeight=Math.max(rect.top-16,100)+'px';
2302      }else{
2303        el.style.top='';
2304        el.style.bottom='';
2305        el.style.maxHeight='';
2306      }
2307    });
2308    ticking=false;
2309  }
2310  function onScroll(){if(!ticking){ticking=true;requestAnimationFrame(update);}}
2311  window.addEventListener('scroll',onScroll,{passive:true});
2312  window.addEventListener('resize',onScroll,{passive:true});
2313  update();
2314})();</script>
vendor: 1 bytes, line 2314
2314
2315<script>(function(){
2316  // 데스크톱 gap 1rem, 모바일 0.5rem — buildGrid 와 같은 값이어야 한다.
2317  var COLS=24, GAP_D=16, GAP_M=8;
2318
2319  function relayout(grid){
2320    // 모바일도 재배치한다.
2321    //
2322    // 1열이라 겹칠 일이 없어 처음엔 제외했는데, gap 누적을 놓쳤다. 섹션이 h 행을
2323    // 점유하면 그 안에 행 사이 gap 이 (h-1)개 들어간다. 모바일 헤더가 h=12 이면
2324    // gap 만 11×8=88px 라, 콘텐츠가 61px 여도 래퍼는 88px 가 되어 27px 가 빈다
2325    // (실측: 스마트투데이 모바일 헤더).
2326    var isMobile=grid.classList.contains("mobile-layout");
2327    var cols=isMobile?1:COLS;
2328    var gap=isMobile?GAP_M:GAP_D;
2329
2330    var wraps=grid.querySelectorAll(":scope > .section-wrapper");
2331    if(!wraps.length)return;
2332
2333    var total=grid.clientWidth;
2334    if(!total)return;
2335    var colW=cols===1?total:(total-gap*(cols-1))/cols;
2336
2337    // 재배치 전에 원래 그리드 좌표를 읽어둔다(두 번째 실행부터는 저장해둔 값 사용).
2338    var items=[];
2339    for(var i=0;i<wraps.length;i++){
2340      var w=wraps[i];
2341      if(!w.dataset.gcol){
2342        var gc=(w.style.gridColumn||"").split("/");
2343        if(gc.length<2)return;               // 좌표를 못 읽으면 손대지 않는다
2344        w.dataset.gcol=parseInt(gc[0],10)+","+parseInt(gc[1],10);
2345      }
2346      var p=w.dataset.gcol.split(",");
2347      var a0=parseInt(p[0],10)-1, a1=parseInt(p[1],10)-1;
2348      // 모바일 마크업은 항상 1/2 이지만, 방어적으로 열 수 안으로 자른다.
2349      if(a0<0)a0=0; if(a1>cols)a1=cols; if(a1<=a0)a1=a0+1;
2350      items.push({el:w,c0:a0,c1:a1});
2351    }
2352
2353    // 높이 측정.
2354    //
2355    // 재배치를 풀어 grid 로 되돌리되, align-self:start 를 걸고 잰다. 이걸 빼먹으면
2356    // 래퍼가 배정된 행 범위만큼 stretch 된 높이(예: 콘텐츠 302px 인데 938px)가 잡혀서
2357    // 원래 간격이 그대로 재현된다.
2358    for(var k=0;k<items.length;k++){
2359      var e=items[k].el;
2360      e.style.position="";e.style.top="";e.style.insetInlineStart="";e.style.width="";
2361      e.style.alignSelf="start";
2362    }
2363    grid.style.display="grid";grid.style.height="";
2364    void grid.offsetHeight;                 // 강제 리플로우
2365    for(var m=0;m<items.length;m++){
2366      items[m].h=items[m].el.getBoundingClientRect().height;
2367    }
2368
2369    // 열별 바닥을 추적하며 순서대로 쌓는다(구 MasonryGrid 와 같은 패킹).
2370    var bottom=new Array(cols);
2371    for(var c=0;c<cols;c++)bottom[c]=0;
2372    var maxB=0;
2373    for(var n=0;n<items.length;n++){
2374      var it=items[n],top=0;
2375      for(var a=it.c0;a<it.c1;a++)if(bottom[a]>top)top=bottom[a];
2376      var span=it.c1-it.c0;
2377      it.el.style.position="absolute";
2378      it.el.style.top=top+"px";
2379      it.el.style.insetInlineStart=(it.c0*(colW+gap))+"px";
2380      it.el.style.width=(span*colW+(span-1)*gap)+"px";
2381      var b=top+it.h+gap;
2382      for(var d=it.c0;d<it.c1;d++)bottom[d]=b;
2383      if(b>maxB)maxB=b;
2384    }
2385    grid.style.display="block";
2386    grid.style.height=Math.max(0,maxB-gap)+"px";
2387  }
2388
2389  var grids=[];
2390  function runAll(){for(var i=0;i<grids.length;i++)relayout(grids[i]);}
2391
2392  var pending=false;
2393  function schedule(){
2394    if(pending)return;pending=true;
2395    requestAnimationFrame(function(){pending=false;runAll();});
2396  }
2397
2398  function init(){
2399    grids=[].slice.call(document.querySelectorAll(".grid-masonry-layout"));
2400    if(!grids.length)return;
2401    runAll();
2402
2403    // 콘텐츠 높이가 변하면 다시 쌓는다(이미지 로드·폰트·광고 삽입·창 크기).
2404    if(window.ResizeObserver){
2405      var ro=new ResizeObserver(schedule);
2406      for(var i=0;i<grids.length;i++){
2407        var ws=grids[i].querySelectorAll(":scope > .section-wrapper");
2408        for(var j=0;j<ws.length;j++)ro.observe(ws[j]);
2409      }
2410    }
2411    window.addEventListener("resize",schedule);
2412    window.addEventListener("load",schedule);
2413    document.addEventListener("header-height-updated",schedule);
2414  }
2415
2416  if(document.readyState==="loading"){
2417    document.addEventListener("DOMContentLoaded",init);
2418  }else{init();}
2419})();</script>
vendor: 1 bytes, line 2419
2419
2420<script>(function(){
2421"use strict";
2422
2423// ── ErrorHandlerProvider: 광고 스크립트발 잡음 억제 ──
2424(function(){
2425  var IGNORE=["__PRIVATE_NEXTJS_INTERNALS_TREE","startTransition","Cannot read properties of null","ResizeObserver loop limit exceeded","Non-Error promise rejection captured","Script error","google","adsense","googlesyndication"];
2426  function ignorable(m){m=String(m||"");for(var i=0;i<IGNORE.length;i++){if(m.indexOf(IGNORE[i])>-1)return true}return false}
2427  window.addEventListener("unhandledrejection",function(e){
2428    var m=(e&&e.reason&&e.reason.message)||"";
2429    if(ignorable(m)){console.warn("무시된 promise rejection:",m);e.preventDefault()}
2430  });
2431  window.addEventListener("error",function(e){
2432    var m=(e&&e.message)||"";
2433    if(ignorable(m)){console.warn("무시된 전역 오류:",m);e.preventDefault();return true}
2434    return false
2435  });
2436  var orig=console.error;
2437  console.error=function(){
2438    var m=Array.prototype.join.call(arguments," ");
2439    if(ignorable(m)){console.warn("무시된 콘솔 오류:",m);return}
2440    orig.apply(console,arguments)
2441  };
2442})();
2443
2444// ── FixBodyAriaHidden ──
2445setInterval(function(){document.body.removeAttribute("aria-hidden")},500);
2446
2447// ── ClipboardHandler: 선택 텍스트 복사 시 출처 덧붙임 ──
2448(function(){
2449  var attribution="";
2450  if(!attribution)return;
2451  document.addEventListener("copy",function(e){
2452    var sel=document.getSelection();
2453    if(!sel)return;
2454    var text=sel.toString();
2455    if(!text.length)return;
2456    e.preventDefault();
2457    if(e.clipboardData)e.clipboardData.setData("text/plain",text+"\n\n"+attribution);
2458  });
2459})();
2460
2461// ── ViewportProvider: DESKTOP 모드에서 viewport 고정 ──
2462(function(){
2463  var vp=document.querySelector('meta[name="viewport"]');
2464  if(!vp){vp=document.createElement("meta");vp.setAttribute("name","viewport");document.head.appendChild(vp)}
2465  var CONTENT="width=1200, initial-scale=0.4";
2466  function apply(){if(vp.getAttribute("content")!==CONTENT)vp.setAttribute("content",CONTENT)}
2467  apply();
2468  new MutationObserver(function(ms){
2469    for(var i=0;i<ms.length;i++){
2470      var m=ms[i];
2471      if(m.type==="attributes"&&m.attributeName==="content"){
2472        var c=vp.getAttribute("content");
2473        if(c&&c.indexOf("initial-scale=0")===-1)apply();
2474      }
2475    }
2476  }).observe(vp,{attributes:true,attributeFilter:["content"]});
2477  // 초기 로드 경합 방지용 재적용
2478  var iv=setInterval(apply,200);
2479  setTimeout(function(){clearInterval(iv)},600);
2480})();
2481
2482// ── DisableMediaQueries: DESKTOP 모드에서 max-width 쿼리 무력화 ──
2483(function(){
2484  function disable(){
2485    try{
2486      for(var i=0;i<document.styleSheets.length;i++){
2487        var sheet=document.styleSheets[i];
2488        if(sheet.href&&sheet.href.indexOf(window.location.origin)!==0)continue;
2489        try{
2490          var rules=sheet.cssRules;
2491          if(!rules)continue;
2492          for(var k=rules.length-1;k>=0;k--){
2493            var r=rules[k];
2494            if(window.CSSMediaRule&&r instanceof CSSMediaRule){
2495              if(r.media.mediaText.indexOf("max-width")>-1)r.media.mediaText="(max-width: 0px)";
2496            }
2497          }
2498        }catch(e){/* CORS 스타일시트는 건너뜀 */}
2499      }
2500    }catch(e){}
2501  }
2502  disable();
2503  new MutationObserver(function(ms){
2504    var fresh=false;
2505    for(var i=0;i<ms.length;i++){
2506      ms[i].addedNodes.forEach(function(n){
2507        if(n.nodeName==="STYLE"||n.nodeName==="LINK")fresh=true
2508      });
2509    }
2510    if(fresh)setTimeout(disable,100);
2511  }).observe(document.head,{childList:true,subtree:true});
2512})();
2513
2514// ── ErrorReporterInit: 클라이언트 에러를 /api/error-report 로 배치 전송 ──
2515// (루트 layout 이 하던 일 — Route Handler 는 layout 을 타지 않는다)
2516(function(){
2517  var buffer=[],flushTimer=null,seen={};
2518  var FLUSH_INTERVAL=5000,MAX_BUFFER=20;
2519  function flush(){
2520    if(flushTimer){clearTimeout(flushTimer);flushTimer=null}
2521    if(!buffer.length)return;
2522    var batch=buffer;buffer=[];
2523    var body=JSON.stringify({errors:batch});
2524    try{
2525      if(navigator.sendBeacon){navigator.sendBeacon("/api/error-report",body)}
2526      else{fetch("/api/error-report",{method:"POST",body:body,headers:{"Content-Type":"application/json"},keepalive:true}).catch(function(){})}
2527    }catch(e){}
2528  }
2529  function enqueue(p){
2530    var key=p.message+"::"+String(p.stack||"").slice(0,100);
2531    if(seen[key])return;
2532    seen[key]=1;
2533    buffer.push(p);
2534    if(buffer.length>=MAX_BUFFER){flush();return}
2535    if(!flushTimer)flushTimer=setTimeout(flush,FLUSH_INTERVAL);
2536  }
2537  window.onerror=function(message,source,lineno,colno,error){
2538    enqueue({message:String(message),stack:error&&error.stack,source:"client",url:location.href,level:"error",extra:{file:source,line:lineno,col:colno}});
2539  };
2540  window.addEventListener("unhandledrejection",function(event){
2541    var err=event.reason;
2542    enqueue({message:(err&&err.message)||String(err),stack:err&&err.stack,source:"client",url:location.href,level:"error",extra:{type:"unhandledrejection"}});
2543  });
2544  window.addEventListener("beforeunload",flush);
2545})();
2546
2547// ── AuthSessionInterceptor: /api/* 401 → refresh 후 1회 재시도 ──
2548// (fetchInterceptor.ts 의 바닐라 이식. 댓글·게시판 등 로그인 fetch 의 세션 유지)
2549(function(){
2550  if(window.__authFetchPatched)return;
2551  window.__authFetchPatched=true;
2552  var EXCLUDED=["/api/auth/refresh","/api/auth/login","/api/auth/2fa/login-ver
2552ify","/api/auth/logout","/api/auth/logout-all"];
2553  var refreshPromise=null;
2554  var origFetch=window.fetch.bind(window);
2555  function pathOf(input){
2556    try{
2557      if(typeof input==="string")return input.indexOf("http")===0?new URL(input).pathname:input.split("?")[0];
2558      if(input instanceof URL)return input.pathname;
2559      if(input instanceof Request)return new URL(input.url).pathname;
2560    }catch(e){return null}
2561    return null;
2562  }
2563  function interceptable(input){
2564    var p=pathOf(input);
2565    if(!p||p.indexOf("/api/")!==0)return false;
2566    for(var i=0;i<EXCLUDED.length;i++){if(p.indexOf(EXCLUDED[i])===0)return false}
2567    return true;
2568  }
2569  function refreshOnce(){
2570    if(!refreshPromise){
2571      refreshPromise=origFetch("/api/auth/refresh",{method:"POST"})
2572        .then(function(r){return r.ok}).catch(function(){return false})
2573        .finally(function(){refreshPromise=null});
2574    }
2575    return refreshPromise;
2576  }
2577  window.fetch=function(input,init){
2578    // 재시도용으로 Request 바디를 미리 복제 (바디는 1회만 읽을 수 있다)
2579    var retryInput=(input instanceof Request)?input.clone():input;
2580    return origFetch(input,init).then(function(response){
2581      if(response.status!==401||!interceptable(input))return response;
2582      return refreshOnce().then(function(refreshed){
2583        if(!refreshed)return response; // 미디어 페이지에서는 로그인 리다이렉트 없음(관리자 전용 동작)
2584        return origFetch(retryInput,init);
2585      });
2586    });
2587  };
2588})();
2589
2590})();</script>
vendor: 1 bytes, line 2590
2590
2591<script type="application/json" id="__ga_data">{"ids":["G-GF4PCXNRDW","G-2RBHC2Y2WD"],"locale":"ko-kr","params":{"content_type":"category","page_number":1,"category_name":"성동신문"}}</script>
vendor: 1 bytes, line 2591
2591
2592<script src="/ga-tracker.js?v=1" defer></script>
2592
2593
2594
2595</body>
2596</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.