PageSourceSearch

https://songpasilbeot.or.kr/index.php

html songpasilbeot.or.kr collected 2026-10-08 12:38:46 UTC 342,396 bytes, 8,291 lines download raw bytes

1<!doctype html>
2<html lang="ko">
3<head>
4<meta charset="utf-8">
5<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=0,maximum-scale=10,user-scalable=yes">
6<meta name="HandheldFriendly" content="true">
7<meta name="format-detection" content="telephone=no">
8<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
9<meta name="subject" content="송파실벗뜨락 노인복지관">   
10<meta name="description" content="행복한 노후 행복한 송파 송파실벗뜨락 노인복지관">   
11<meta name="keywords" content=""> 
12
13<meta property="og:type" content="website">
14<meta property="og:title" content="송파실벗뜨락 노인복지관">
15<meta property="og:description" content="행복한 노후 행복한 송파 송파실벗뜨락 노인복지관 ">
16<meta property="og:image" content="/_img/img/SST/logo3.gif">
17<meta property="og:url" content="/">
18
19<meta name="twitter:card" content="summary"/>
20<meta name="twitter:title" content="송파실벗뜨락 노인복지관"/>
21<meta name="twitter:description" content="행복한 노후 행복한 송파 송파실벗뜨락 노인복지관"/>
22<meta name="twitter:domain" content=""/>
23<link rel="canonical" href="/">
24<title>송파실벗뜨락 노인복지관</title>
25<!-- skin-css-anchor: 이 주석은 지우지 말 것 (주석 안에 title/link 태그 문자열을 쓰지 말 것).
26     그누보드 html_process 는 add_stylesheet() CSS 를 "title 닫는 태그 바로 뒤의 첫 link 태그" 뒤에 끼워넣는다.
27     아래 파비콘 link 태그가 title 바로 뒤에 오면 latest/위젯 스킨 CSS 가 공통 템하 CSS 보다 앞에 실려
28     .cardset .cardset-body{padding} 같은 공통 규칙에 져서 카드가 밀린다(2026-10-07 dws-scf TOTAL_BBS4 라벨 위로 뜸).
29     이 주석이 title 뒤를 막으면 패턴이 실패해 스킨 CSS 는 원래대로 head 끝(공통 CSS 뒤)에 실린다. -->
30 <!-- ✅ hreflang 태그 위치 -->
31 <link rel="alternate" hreflang="ko" href="https://songpasilbeot.or.kr/index.php?lang=ko">
32<link rel="alternate" hreflang="en" href="https://songpasilbeot.or.kr/index.php?lang=en">
33<link rel="alternate" hreflang="ja" href="https://songpasilbeot.or.kr/index.php?lang=ja">
34<link rel="alternate" hreflang="zh" href="https://songpasilbeot.or.kr/index.php?lang=zh">
35<link rel="alternate" hreflang="x-default" href="https://songpasilbeot.or.kr/index.php">
36
37<link rel="stylesheet" href="https://songpasilbeot.or.kr/theme/hayan/css/mobile_shop.css?ver=2303229">
38<!--[if lte IE 8]>
39<script src="https://songpasilbeot.or.kr/js/html5.js"></script>
39
40<![endif]-->
41<script>
42// 자바스크립트에서 사용하는 전역변수 선언
43var g5_url       = "https://songpasilbeot.or.kr";
44var g5_bbs_url   = "https://songpasilbeot.or.kr/bbs";
45var g5_is_member = "";
46var g5_is_admin  = "";
47var g5_is_mobile = "1";
48var g5_bo_table  = "bbs_data";
49var g5_sca       = "";
50var g5_editor    = "";
51var g5_cookie_domain = "";
52var g5_theme_shop_url = "https://songpasilbeot.or.kr/theme/hayan/shop";
53var g5_shop_url = "https://songpasilbeot.or.kr/shop";
54
55
56</script>
56
57<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
58	
59<script src="https://songpasilbeot.or.kr/plugin/editor/summernote_lite/snl-view.js?v=20260907g" defer></script>
59
60	
61	
62<!-- 퀵메뉴 : 모바일 , 아코디언 메뉴 , 헤드 디자인에 따라 사용 여부 판단
63<script src="https://songpasilbeot.or.kr/_themeCom/themeAsset/basic_resources/js/mobile_accmenu.js" type="text/javascript"></script>
63 
64<script src='https://songpasilbeot.or.kr/_themeCom/themeAsset/basic_resources/js/jquery.museum.js'></script>
64	 -->
65<!--
66헤드 스킨에 따라 사용여부 
67	
67<script type="text/javascript">
68jQuery(document).ready(function () {
69	jQuery("#jquery-accordion-menu").jqueryAccordionMenu();
70	
71});
72
73$(function(){	
74	$("#demo-list li").click(function(){
75		$("#demo-list li.active").removeClass("active")
76		$(this).addClass("active");
77	})	
78})	
79</script>
79
80
81
82-->
83<!-- 아이콘-->	
84
85	
86<!-- Unicons -->
87<link rel="stylesheet" href="https://unicons.iconscout.com/release/v4.2.0/css/line.css">
88<link rel="stylesheet" href="https://unicons.iconscout.com/release-pro/v4.2.0/css/solid.css?key=0b042860-cc91-11ea-ab4a-0242ac140003">
89<link rel="stylesheet" href="https://unicons.iconscout.com/release-pro/v4.2.0/css/thinline.css?key=0b042860-cc91-11ea-ab4a-0242ac140003">
90<script src="https://unicons.iconscout.com/release-pro/v4.2.0/script/monochrome/bundle.js?key=0b042860-cc91-11ea-ab4a-0242ac140003"></script>
90
91<!--외부 설정  -->	
92	
93	
94	
95	
96	<!-- 어도비 폰트(lkk2wzv) 하드코딩 제거(2026-06-12): 폰트관리 ko16(adobe-myungjo-std)/en7(neulis-neue)/en8(optique-display) 활성 체크 시에만 레지스트리가 로드 -->
97
98
99	
100	 <!-- jQuery 추가 -->
101 <!-- head_스킨에 달 선택 
102<script type="text/javascript">
103$(document).ready(function(){
104    $(window).on("scroll", function(){
105        if ($(window).scrollTop() > 50) { 
106            $("header").removeClass("large").addClass("small");
107        } else {
108            $("header").removeClass("small").addClass("large");
109        }
110    });
111});		
112</script>
112-->
113  
114<!--공통템하 js  style.css은 각 스킨에-->
115<link rel="stylesheet" href="https://songpasilbeot.or.kr/_themeCom/themeAsset/temha_resources/css/templatehouse.css" />
116<link rel="stylesheet" href="https://songpasilbeot.or.kr/_themeCom/themeAsset/temha_resources/css/setting.css" />
117<link rel="stylesheet" href="https://songpasilbeot.or.kr/_themeCom/themeAsset/temha_resources/css/plugin.css" />
118	
119<link rel="stylesheet" href="https://songpasilbeot.or.kr/_themeCom/themeAsset/basic_resources/css/all.css">
120<!-- 외부설정 우선순위 -->
121
122<!-- 어도비 폰트(mem2roj) 하드코딩 제거(2026-06-12): 폰트관리 ko9(hooncaramel)/ko15(seoul-hangang) 활성 체크 시에만 레지스트리가 로드 -->
123
124
125<!-- ★ 활성 폰트 @font-face / @import 출력 (필요한 폰트만 로딩) -->
126<link rel="stylesheet" href="/_themeCom/themeAsset/basic_resources/css/font/pretendard.css">
127<style>@font-face{font-family:'JalnanGothic';src:url('https://fastly.jsdelivr.net/gh/projectnoonnu/[email protected]/JalnanGothic.woff') format('woff');font-weight:normal;font-display:swap}</style>
128
129<style>
130
131/* 구분 -----------------------------------*/
132
133/**** pc ****/	
134:root {
135
136
137--inner: 1440px;   /* pc  상단 메뉴 높이 , 삭제하기 */
138--inner-wide:calc(100% - 100px);   /* pc  와이드 양옆 최소 여백 , 삭제하기 */	
139	
140	
141--header-h: 130px;   /* pc  상단 메뉴 높이 */
142--header-h-open: 530px;   /* pc  상단  마우스 오버 높이 */	
143	
144
145--header-bg-default:rgba(255, 255, 255,0);   /* pc 상단 배경 디폴트 0.0 투명도 */
146--header-bg-opacity:rgba(255, 255, 255,0);   /* pc 상단 배경 디폴트 0.0 투명도 */
147--header-bg-scroll: rgba(255, 255, 255,1); /* pc 상단 배경 스크롤시 */
148--header-bg-line: 1px solid #eee; /* pc 상단  라인  */	
149	
150	
151	/* 로고  */	
152
153--logo-size-w:clamp(  162.5px,   calc(8.553vw + 165.789px),   325px) ;	
154	
155	
156--block-padding:30px 0px;
157	
158/* 로고  */	
159
160--logo-White: brightness(0) invert(1); /* 로고 화이트 : 필터 조절  */
161
162
163/* 상단 메뉴  */	
164/* --top1d-font-size: clamp(    18px,    1.875vw,    22px); 1뎁스 사이즈  */	
165	
166	
167 /* //////외국어 버전 대응 수정 ---------------------------------- */
168  --top1d-min-px: 18px;
169  --top1d-max-px: 22px;
170
171  /* 중간 지점(vw)도 변수화(원래 1.875vw) */
172  --top1d-vw: 1.875vw;
173
174  /* 언어별 배율(기본 1) */
175  --top1d-scale: 1;
176
177  /* 최종 폰트 크기: (min * scale) ~ (vw * scale) ~ (max * scale) */
178  --top1d-font-size: clamp(
179    calc(var(--top1d-min-px) * var(--top1d-scale)),
180    calc(var(--top1d-vw) * var(--top1d-scale)),
181    calc(var(--top1d-max-px) * var(--top1d-scale))
182  );
183
184  /* (선택) 자간/행간도 변수화 */
185  --top1d-letter: normal;
186  --top1d-lh: 1.2;	
187 /* //////외국어 버전 대응 수정 end ---------------------------------- */
188	
189	
190--top1d-font-color: #333; /* 1뎁스 디폴트 컬러 */	
191--top1d-font-color-opacity: #fff; /* 기본 배경이 투명일때 컬러 */		
192--top1d-font-color-point:var(--primary-500); /* 메뉴 포인트 컬러 */		
193--top1d-font-weight: 600; /* 1뎁스 두께  */	
194--top1d-margin-left: 3vw; /* 1뎁스 간격  */		
195--top1d-margin-right:  3vw; /* 1뎁스 간격  */		
196	
197	
198	
199	
200/* //////외국어 버전 대응 수정 ---------------------------------- */
201
202  --top1d-gap-base-x: 2vw;
203
204  /* 언어별 배율(기본 1) — 좌우를 따로 쓰고 싶으면 각각 조절 */
205  --top1d-gap-scale-left: 1;
206  --top1d-gap-scale-right: 1;
207
208  /* 최종 적용값 (언어배율 반영) */
209  --top1d-margin-left:  calc(var(--top1d-gap-base-x) * var(--top1d-gap-scale-left));
210  --top1d-margin-right: calc(var(--top1d-gap-base-x) * var(--top1d-gap-scale-right));
211	
212/* //////외국어 버전 대응 수정 end ---------------------------------- */
213	
214	
215	
216
217--top1d-over-min: clamp(120px, 7.895vw, 150px); /* 1뎁스 마우스 오버시 벌어짐 효과 , 최소사이즈 , 벌어짐 효과 없애겨 싶다면 auto */	
218--top1d-bg:  rgba(255, 255, 255, 0.9); /* 2뎁스 두께  */		
219		
220--top2d-font-size:   clamp(    11.9px,    1.875vw,   17px ); /* 2뎁스 사이즈  */	
221--top2d-font-color: #333; /* 2뎁스 디폴트 컬러 */		
222--top2d-font-color-point: #111; /*  메뉴 포인트 컬러 *  */		
223--top2d-font-weight: 400; /* 2뎁스 두께  */		
224--top2d-bg:  #111; /* 2뎁스 두께  */		
225	
226--top2d-pd: clamp(11px, 0.781vw, 15px) clamp(11px, 0.781vw, 15px) clamp(11px, 0.781vw, 15px) clamp(0px, 0.000vw, 0px);; /* 2뎁스 두께  */		
227--top2d-pd-hover:  clamp(11px, 0.781vw, 15px) clamp(0px, 0.000vw, 0px) clamp(11px, 0.781vw, 15px) clamp(11px, 0.781vw, 15px);; /* 2뎁스 두께  */		
228	
229	
230		
231--quick-menu-w:200px; /*  햄버거 메뉴 사이즈  */	
232
233--line-default: #333; /* 기본 배경이 투명일때 컬러 */			
234--line-opacity:  rgba(255, 255, 255,0.5); /* 기본 배경이 투명일때 컬러 */		
235
236	
237--gmenu-r-padding:0px;	
238	
239	
240
241
242/* ★ 폰트 CSS 변수 (활성 폰트만 출력) */
243 --ff-ko1: 'Pretendard', 'NanumSquare_ac', sans-serif;
244 --ff-ko6: 'JalnanGothic', sans-serif;
245 --ff-ko10: 'Pretendard', 'NanumSquare_ac', sans-serif;
246  --ff-ico: "Temha-Icon";
247
248  /* ★ 메인/서브 폰트 (사이트별 교체 가능 / 서브 '사용 안함' 시 메인을 따라감) */
249  --ff-main: 'Pretendard', 'NanumSquare_ac', sans-serif;
250  --ff-sub: 'Pretendard', 'NanumSquare_ac', sans-serif;
251
252
253/* 서브 메인 컬러 (main_color_switch off 시 Primary_color 사용) */
254--sub-color10:var(--primary);
255--sub-color20:var(--primary);
256--sub-color30:var(--primary);
257--sub-color40:var(--primary);
258--sub-color50:var(--primary);
259--sub-color60:var(--primary);
260--sub-color70:var(--primary);
261
262/* 서브 포인트 컬러 (main_color_switch off 시 Primary_color 사용) */
263--sub-point-color10:var(--primary);
264--sub-point-color20:var(--primary);
265--sub-point-color30:var(--primary);
266--sub-point-color40:var(--primary);
267--sub-point-color50:var(--primary);
268--sub-point-color60:var(--primary);
269--sub-point-color70:var(--primary);
270
271/*  인풋 셀렉트 박스 높이 */
272--h-com: 36px ;
273--from-tx :14px;		
274	
275	
276	
277--subtop-tx1:clamp(  0px,   calc(0.658vw + 13.368px),   clamp(30px, calc(1.563vw + 25px), 50px)px);		
278--subtop-tx2:clamp(  0px,   calc(0.658vw + 13.368px),   clamp(26px, calc(1.484vw + 21.25px), 45px)px) ;		
279--subtop-tx3:clamp(18px, calc(0.156vw + 17.5px), 20px)px;		
280--subtop-h: clamp(280px, calc(7.813vw + 255px), 380px)px;	
281	
282	
283--subtop-tx1-color:#ffffff;		
284--subtop-tx2-color:#000000;		
285--subtop-tx3-color:#3d3d3d	;
286	
287--sub-body-color:#ffffff	;
288	
289	
290	/* SCROLL */
291::-webkit-scrollbar { width:5px; height: 5px;;  }
292/* 스크롤바의 width*/
293::-webkit-scrollbar-track { background-color: rgba(244,247,252,1.24); border-radius: 10px; }
294/* 스크롤바의 전체 배경색 */
295::-webkit-scrollbar-thumb { 
296    background: linear-gradient(to bottom, var(--primary), var(--primary)); border-radius: 10px; 
297}
298/* 스크롤바 색 */
299::-webkit-scrollbar-button { display: none; }
300
301		
302	
303 --main_sp_size:clamp(  40px,   7.813vw,    150px);	
304
305	 --sp-com:clamp(40px, 7.813vw, 100px);	
306
307	/*템하 inner 사이즈 선언*/
308 --container-lg:calc(1600px);	
309 --container-md:calc(1560px);	
310 --container-sm: calc(1440px);	
311
312}
313
314
315	
316:root {
317/*  메인 본문 타이틀 크기 최소값 | 비율 | 최대값 */	
318 --main_big_tit_size:clamp(  28px,   calc(0.263vw + 12.947px),   40px );
319 --main_big_stit_size:clamp(  14px,   calc(0.263vw + 12.947px),    20px);	
320	
321
322 /*  서브 본문 타이틀 최소값 | 비율 | 최대값 */		
323  --subtop-tit-size: clamp(31.5px, calc(1.125vw + 27.45px), 45px);
324    /*  대타이틀 */
325  --tit-lg-size:      clamp(30px, calc(1.667vw + 24px), 50px);
326  /*  중간 타이틀 */
327  --tit-md-size:      clamp(24.5px, calc(0.875vw + 21.35px), 35px);
328  /*  소타이틀 */
329  --tit-mds-size:     clamp(21px, calc(0.75vw + 18.3px), 30px);
330  /*  소형 텍스트 */
331  --tx-sm-size:       clamp(14.4px, calc(0.3vw + 13.32px), 18px);
332	}
333
334
335:root {
336/*  서브 블록 상단 여백 및 블록 간 여백 */
337 --sp-block-00:0px;
338 --sp-block-01:clamp(30px, calc(2.344vw + 22.5px), 60px);
339 --sp-block-02:clamp(30px, calc(5.469vw + 12.5px), 100px);
340 --sp-block-03:clamp(30px, calc(5.469vw + 12.5px), 100px);
341 --sp-block-04:clamp(50px, calc(3.906vw + 37.5px), 100px);
342 --sp-block-05:clamp(30px, calc(5.469vw + 12.5px), 100px);
343 --sp-block-06:clamp(30px, calc(3.125vw + 20px), 70px);
344 --sp-block-07:clamp(30px, calc(1.316vw + 24.737px), 50px);
345 --sp-block-08:clamp(50px, calc(3.906vw + 37.5px), 100px);
346 --sp-block-09:0px;
347 --sp-block-10:0px;
348 --sp-block-11:0px;
349 --sp-block-12:clamp(49px, 7.813vw, 70px);
350 --sp-block-13:clamp(70px, 7.813vw, 100px);
351 --sp-block-14:0px;
352 --sp-block-15:0px;
353 --sp-block-16:0px;
354 --sp-block-17:0px;
355 --sp-block-18:0px;
356 --sp-block-19:0px;
357 --sp-block-20:0px;
358
359
360	}
361
362
363/**** pc2 ****/
364@media all and (max-width:1280px) and (min-width:981px) {
365:root {		
366--inner: calc(100% - 40px);   /* 테이블  상단 메뉴 높이 */
367--inner-wide:calc(100% - 40px);   /* 테이블  와이드 양옆 최소 여백  */	
368--header-h: 130px;   /* pc  상단 메뉴 높이 */
369--header-h-open: 530px;   /* pc  상단  마우스 오버 높이 */	
370	
371/* 로고  */	
372
373/* 상단 메뉴  */		
374--top1d-font-size: 19px; /* 테블릿 1뎁스 사이즈  */		
375--top2d-font-size:14px; /* 테블릿 2뎁스 사이즈  */	 }
376}
377/**** 모바일 ****/
378@media only all and (max-width:980px) {
379:root {	
380--inner: calc(100% - 40px);   /* 모바일 상단 메뉴 높이 */
381--inner-wide:calc(100% - 40px);   /* 모바일  와이드 양옆 최소 여백  */	
382		
383--header-h: 60px;   /* 모바일  상단 메뉴 높이 */
384--header-h-open: 60px;   /*모바일  상단  마우스 오버 높이 */	
385	
386/* 로고  */	
387--logo-size-w:180px; /* 모바일 로고 사이즈  */	
388
389/* 상단 메뉴  */	
390--top1d-font-size: 14px; /* 모바일 1뎁스 사이즈  */		
391--top2d-font-size: 12px; /* 모바일 2뎁스 사이즈  */	}
392}
393/**** 모바일2 ****/
394@media only all and (max-width:400px) {
395	
396}
397/* 구분 //end -----------------------------------*/
398
399
400
401</style>
402<link rel="stylesheet" href="https://songpasilbeot.or.kr/theme/hayan/_settingfile/setting_util.css">
403
404<style>
405.ff-ko1{font-family:var(--ff-ko1)!important}
406em.ff-ko1{font-family:var(--ff-ko1)!important}
407ul.ff-ko1 li{font-family:var(--ff-ko1)!important}
408ul.ff-ko1 li em{font-family:var(--ff-ko1)!important}
409.ff-ko6{font-family:var(--ff-ko6)!important}
410em.ff-ko6{font-family:var(--ff-ko6)!important}
411ul.ff-ko6 li{font-family:var(--ff-ko6)!important}
412ul.ff-ko6 li em{font-family:var(--ff-ko6)!important}
413.ff-ko10{font-family:var(--ff-ko10)!important}
414em.ff-ko10{font-family:var(--ff-ko10)!important}
415ul.ff-ko10 li{font-family:var(--ff-ko10)!important}
416ul.ff-ko10 li em{font-family:var(--ff-ko10)!important}
417</style>
418
419
420
421
422
423<style>
424/* 서브 레이아웃 관련  -----------------------------------*/
425
426/**** pc ****/
427:root {
428--sublayout-left-w:200px;/*skin/content/laout_lr/~ 왼쪽 영역 넓이 설정 */
429	
430}
431/* 구분 //end -----------------------------------*/
432
433
434	
435</style>
436
437
438<style>
439/* v폼크기 선언  -----------------------------------*/
440
441/**** pc ****/
442:root {
443--from-h: 36px;/* 입력폼, 셀렉트 박스 높이 */
444--from-tx: 14px;/* 입력폼, 셀렉트 박스 내부텍스트 크기*/
445--from-select-h: 36px;
446--from-select-tx: 14px;
447--from-date-h: 36px;
448--from-date-tx: 14px;
449--from-rd: 4px;
450--from-border: #d1d5db;
451--from-focus: var(--primary, #4f46e5);
452--from-chk: 18px;
453--from-rdo: 18px;
454--from-placeholder: #9ca3af;
455--from-textarea-fz: 14px;
456--from-textarea-rd: 4px;
457--from-select-rd: 4px;
458}
459
460/* ★ hycom 변수 + 폼 스타일 → setting_util.css로 이동됨 */
461
462	
463	/*컬러 우선 */
464
465</style>
466<link rel="stylesheet" href="https://songpasilbeot.or.kr/data/wing/setting_color.css?v=1782519867">
467
468<style>
469/* ===== 쇼핑몰 리스트 설정 CSS 변수 ===== */
470:root {
471  --shop-grid-pc: 4;
472  --shop-grid-tablet: 3;
473  --shop-grid-mobile: 2;
474  --shop-grid-gap: 20px;
475
476  --shop-img-radius: 20px;
477  --shop-img-border-width: 0px;
478  --shop-img-border-color: #eeeeee;
479  --shop-img-bg: #ffffff;
480  --shop-img-opacity: 0.5;
481  --shop-img-hover-opacity: 1;
482  --shop-img-hover-scale: 1.1;
483
484  --shop-title-size: 14px;
485  --shop-title-color: #333333;
486  --shop-price-size: 15px;
487  --shop-price-color: #111111;
488
489  --shop-icon-size: 16px;
490  --shop-cart-radius: 50px;
491  --shop-cart-size: 16px;
492  --shop-cart-bg: #333333;
493  --shop-cart-icon-color: #ffffff;
494
495  --shop-search-radius: 50px;
496  --shop-search-size: 16px;
497  --shop-search-bg: #333333;
498  --shop-search-icon-color: #ffffff;
499
500  --shop-label-size: 11px;
501  --shop-label-radius: 10px;
502  --shop-label-mt: 10px;
503  --shop-txt-overlay-pb: 20px;
504
505  --shop-cate-title-size: 20px;
506  --shop-cate-title-color: #222222;
507  --shop-cate-title-align: left;
508  --shop-cate-title-mb: 20px;
509  --shop-cate-tab-align: left;
510  --shop-cate-tab-size: 20px;
511  --shop-cate-tab-px: 18px;
512  --shop-cate-tab-py: 7px;
513  --shop-cate-sub-mb: 20px;
514
515  /* 상세페이지 */
516  --shop-detail-img-ratio: 1.5fr;
517  --shop-detail-info-ratio: 1fr;
518  --shop-detail-gap: 30px;
519  --shop-detail-thumb-ratio: 1 / 1;
520  --shop-detail-sticky-top: 200px;
521  --shop-detail-thumb-fit: cover;
522}
523/* 상세페이지 썸네일 비율 직접 적용 */
524.hayanshop_detail .sit_pvi_single > a,
525.hayanshop_detail .sit_pvi_main,
526.hayanshop_detail .sit_pvi_slide,
527.sit_pvi_empty {
528  aspect-ratio: 1 / 1 !important;
529}
530/* 장바구니/상세보기 라운드 직접 적용 */
531.sct.sct_10 .sct_btn .btn_cart { border-radius: 50px !important; }
532.sct.sct_10 .sct_btn_search .btn_search { border-radius: 50px !important; }
533</style>
534
535
536<style>/* 3뎁스/탭 공통 CSS */
537/* 3덱스/탭 공통 스타일 - 좌측정렬 */
538.hayan_tab_st1.tab_area .ht_list.tabs,
539.hayan_tab_st1 .ht_list {
540  display: flex !important;
541  flex-direction: row !important;
542  flex-wrap: nowrap !important;
543  gap: 10px;
544  justify-content: flex-start;
545  padding-bottom: clamp(20px, calc(1.974vw + 12.105px), 50px);
546  overflow-x: auto;
547  -webkit-overflow-scrolling: touch;
548  scrollbar-width: none;
549}
550.hayan_tab_st1.tab_area .ht_list.tabs::-webkit-scrollbar,
551.hayan_tab_st1 .ht_list::-webkit-scrollbar {
552  display: none;
553}
554.hayan_tab_st1.tab_area .ht_list .ht_btn.tab,
555.hayan_tab_st1 .ht_list .ht_btn {
556  flex: 0 0 auto !important;
557  width: auto !important;
558  padding: clamp(10px, calc(0.391vw + 8.75px), 15px) clamp(30px, calc(1.563vw + 25px), 50px) !important;
559  background: #ffffff!important;
560  border: 1px solid #e0e0e0 !important;
561  border-radius: 30px !important;
562  font-size: calc(var(--tit-mds-size) * 0.8) !important;
563  font-weight: 500 !important;
564  color: #157657!important;
565  cursor: pointer;
566  transition: all 0.2s;
567  white-space: nowrap !important;
568}
569.hayan_tab_st1 .ht_list .ht_btn p {
570  margin: 0 !important;
571  padding: 0 !important;
572  line-height: 1.2 !important;
573  font-size: inherit !important;
574}
575.hayan_tab_st1.tab_area .ht_list .ht_btn.tab:hover,
576.hayan_tab_st1 .ht_list .ht_btn:hover {
577  background: #ffffff!important;
578  color: #157657!important;
579}
580.hayan_tab_st1.tab_area .ht_list .ht_btn.tab.active,
581.hayan_tab_st1.tab_area .ht_list .ht_btn.tab.on,
582.hayan_tab_st1 .ht_list .ht_btn.active,
583.hayan_tab_st1 .ht_list .ht_btn.on {
584  background: var(--primary)!important;
585  border-color: #ffffff!important;
586  color: #fff !important;
587}</style>
588
589
590
591
592<!--lottie 마우스오버 재생/정지 (json-hover) — 동적 삽입/커스텀엘리먼트 지연 업그레이드까지 대응-->
593<script>
594(function () {
595  function jsonHoverInitOne(player) {
596    if (player.__jsonHoverInit) return;
597    player.__jsonHoverInit = true;
598    if (player.hasAttribute("autoplay")) player.removeAttribute("autoplay");
599    var stopIt = function () { try { player.stop(); } catch (e) {} };
600    // 데이터 로드/준비 완료 때마다 정지 (autoplay 잔재 차단)
601    player.addEventListener("load", stopIt);
602    player.addEventListener("ready", stopIt);
603    stopIt();
604    player.addEventListener("mouseenter", function () { try { player.play(); } catch (e) {} });
605    player.addEventListener("mouseleave", stopIt);
606    player.setAttribute("tabindex", "0");
607    player.addEventListener("focus", function () { try { player.play(); } catch (e) {} });
608    player.addEventListener("blur", stopIt);
609  }
610  function jsonHoverInitAll(root) {
611    var list = (root || document).querySelectorAll(".json-hover");
612    for (var i = 0; i < list.length; i++) jsonHoverInitOne(list[i]);
613  }
614  document.addEventListener("DOMContentLoaded", function () {
615    jsonHoverInitAll();
616    // lottie-player 컴포넌트가 늦게 정의된 경우: 업그레이드 직후 다시 정지
617    if (window.customElements && customElements.whenDefined) {
618      customElements.whenDefined("lottie-player").then(function () {
619        setTimeout(function () {
620          var list = document.querySelectorAll(".json-hover");
621          for (var i = 0; i < list.length; i++) { try { list[i].stop(); } catch (e) {} }
622        }, 0);
623      }).catch(function () {});
624    }
625    // 동적 삽입(인라인 편집/AJAX/스와이퍼 복제) 대응
626    if (window.MutationObserver && document.body) {
627      new MutationObserver(function (muts) {
628        for (var i = 0; i < muts.length; i++) {
629          var added = muts[i].addedNodes;
630          for (var j = 0; j < added.length; j++) {
631            var n = added[j];
632            if (n.nodeType !== 1) continue;
633            if (n.matches && n.matches(".json-hover")) jsonHoverInitOne(n);
634            if (n.querySelectorAll) jsonHoverInitAll(n);
635          }
636        }
637      }).observe(document.body, { childList: true, subtree: true });
638    }
639  });
640})();
641</script>
641
642
643<!-- ★ COM_TB 모바일 테이블: 세로 페이지 스크롤 허용 (tb_com.css의 pan-x만 적용 문제 오버라이드) -->
644<style>
645@media (max-width:1024px){
646  .COM_TB .table-wrap{ touch-action: pan-x pan-y; }
647}
648</style>
649
650
651<style>
652/* inner 좌우값 사이트 오버라이드 (날개 서브 Inner 사이즈) */
653@media (min-width:768px) and (max-width:1200px) { .contents-container.container-lg, .contents-container.container-md, .contents-container.container-sm, .contents-container.container-full, .contents-container.container-xl, .contents-container.container-xxl { padding-left: 30px !important; padding-right: 30px !important; } }
654</style>
655		
656<!-- animate.css 포함 -->
657<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
658
659<!-- wow.min.js 포함 -->
660<script src="https://cdnjs.cloudflare.com/ajax/libs/wow/1.1.2/wow.min.js"></script>
660
661
662<script>
663  new WOW().init(); // 활성화
664</script>
664
665	
666	
667	
668<script>
669document.addEventListener("DOMContentLoaded", function () {
670    document.querySelectorAll(".setting_admin_btn").forEach(btn => {
671        let title = '';
672        if (btn.dataset.widget) {
673            title = '위젯: ' + (btn.dataset.title || btn.dataset.widget);
674        } else if (btn.dataset.content) {
675            title = '내용관리: ' + (btn.dataset.title || btn.dataset.content);
676        } else if (btn.dataset.board) {
677            title = '게시판: ' + (btn.dataset.title || btn.dataset.board);
678        } else if (btn.dataset.etc) {
679            title = '기타정보: ' + (btn.dataset.title || btn.dataset.etc);
680        }
681
682        btn.innerHTML = `
683            <lottie-player 
684                src="https://songpasilbeot.or.kr/_themeCom/themeAsset/basic_resources/images/json/setting_icon.json"
685                background="transparent"
686                style="width:30px; height:30px;"
687                class="setting_admin_icon"
688                speed="1"
689                loop
690                autoplay>
691            </lottie-player>
692            <div class="tx">${title}</div>
693        `;
694    });
695});
696
697// 게시판 팝업 열기 함수
698function openBoardPopup(boardName) {
699    window.open('https://songpasilbeot.or.kr/adm2/widgetform.php?w=u&wid_id=' + boardName + '&adminpopup=on', 'myPopup', 'width=1000, height=800');
700}
701</script>
701
702
703
704<!--구글 언어 선택 
704<script type="text/javascript">
705function googleTranslateElementInit() {
706  new google.translate.TranslateElement({
707    pageLanguage: 'ko',
708    includedLanguages: 'en,ja,zh-CN,zh-TW,vi,th,es,fr,de,ru', // 원하는 언어코드만 설정 가능
709    layout: google.translate.TranslateElement.InlineLayout.SIMPLE
710  }, 'google_translate_element');
711}
712</script>
712-->
713<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>
713
714
715	
716<script>
717(function(){
718  var FORCE_ME_CODE = "";
719  var FORCE_LANG    = "ko";
720  var BO_MC_MAP = {"SST_401020":"401020","SST_401030":"401030","SST_403020":"403020","SST_3050":"3050","SST_5010":"5010","SST_5020":"5020","SST_5030":"5030","SST_5040":"5040","SST_5050":"5050","SST_6010":"6010","SST_6020":"6020","SST_6030":"6030","SST_6040":"6040","SST_6050":"6050"};
721
722  function sameOrigin(u){
723    try{ var a=document.createElement('a'); a.href=u; return a.host===location.host && a.protocol===location.protocol; }catch(e){return false;}
724  }
725  function hasParam(url,k){ return new RegExp('[?&]'+k+'=').test(url); }
726  function getParam(url,k){ var m=url.match(new RegExp('[?&]'+k+'=([^&#]*)')); return m ? decodeURIComponent(m[1]) : ''; }
727  function appendParam(url,k,v){
728    if(!v) return url; if(hasParam(url,k)) return url;
729    var i=url.indexOf('#'), hash=''; if(i>=0){hash=url.slice(i); url=url.slice(0,i);}
730    url += (url.indexOf('?')>=0?'&':'?') + encodeURIComponent(k)+'='+encodeURIComponent(v);
731    return url+hash;
732  }
733  function massage(url){
734    var out=url;
735    // ★ me_code 결정: 1) 이미 있으면 유지, 2) FORCE_ME_CODE, 3) bo_table로 매핑 조회
736    if(!hasParam(out,'me_code')){
737      var mc = FORCE_ME_CODE;
738      if(!mc){
739        var bt = getParam(out,'bo_table');
740        if(bt && BO_MC_MAP[bt]) mc = BO_MC_MAP[bt];
741      }
742      if(mc) out=appendParam(out,'me_code',mc);
743    }
744    if(FORCE_LANG) out=appendParam(out,'lang',FORCE_LANG);
745    return out;
746  }
747  function patchLinks(){
748    var as=document.getElementsByTagName('a');
749    for(var i=0;i<as.length;i++){
750      var a=as[i], h=a.getAttribute('href'); if(!h) continue;
751      if(h.indexOf('mailto:')===0||h.indexOf('tel:')===0||h.indexOf('javascript:')===0) continue;
752      var abs; try{abs=new URL(h,location.href).toString();}catch(e){continue;}
753      if(!sameOrigin(abs)) continue;
754      var nb=massage(abs);
755      if(nb!==abs){ a.setAttribute('href',nb); }
756    }
757  }
758  function ensureHidden(f,n,v){
759    if(!v) return;
760    var ex=f.querySelector('input[name="'+n+'"]');
761    if(ex && ex.value) return;
762    var i=document.createElement('input'); i.type='hidden'; i.name=n; i.value=v; f.appendChild(i);
763  }
764  function patchForms(){
765    var forms=document.getElementsByTagName('form');
766    for(var i=0;i<forms.length;i++){
767      var f=forms[i];
768      var act=f.getAttribute('action')||location.href;
769      var abs; try{abs=new URL(act,location.href).toString();}catch(e){continue;}
770      if(!sameOrigin(abs)) continue;
771      ensureHidden(f,'me_code',FORCE_ME_CODE);
772      ensureHidden(f,'lang',   FORCE_LANG);
773      if((f.method||'').toLowerCase()==='get'){
774        var nb=massage(abs); if(nb!==abs) f.setAttribute('action',nb);
775      }
776    }
777  }
778  if(document.readyState==='loading'){
779    document.addEventListener('DOMContentLoaded',function(){patchLinks();patchForms();});
780  }else{ patchLinks();patchForms(); }
781})();
782</script>
782
783
784
785
786
787<link rel="stylesheet" href="https://songpasilbeot.or.kr/js/font-awesome/css/font-awesome.min.css?ver=2303229">
788<link rel="stylesheet" href="https://songpasilbeot.or.kr/data/widget/MAIN/FREE/grid_free/resources/css/style.css?ver=2303229">
789<link rel="stylesheet" href="https://songpasilbeot.or.kr/data/widget/MAIN/STACK/stack_bbstabmix_v1/resources/css/style.css?ver=2303229">
790<link rel="stylesheet" href="https://songpasilbeot.or.kr/data/widget/MAIN/BBS_GALLERY/sw_tab_filter_v1/resources/css/style.css?ver=2303229">
791<link rel="stylesheet" href="https://songpasilbeot.or.kr/theme/hayan/mobile/skin/latest/TOTAL_BBS8/resources/css/style.css?ver=2303229">
792<link rel="stylesheet" href="https://songpasilbeot.or.kr/theme/hayan/mobile/skin/latest/TOTAL_SCHEDULE2/resources/css/style.css?ver=2303229">
793<link rel="stylesheet" href="https://songpasilbeot.or.kr/theme/hayan/mobile/skin/latest/TOTAL_IMG1_MV/resources/css/style.css?ver=2303229">
794<link rel="stylesheet" href="https://songpasilbeot.or.kr/data/widget/MAIN/SPECIAL/bg_deco_layer/resources/css/style.css?ver=2303229">
795<link rel="stylesheet" href="https://songpasilbeot.or.kr/data/widget/MAIN/PARTNER/partner_v1/resources/css/style.css?ver=2303229">
796<link rel="stylesheet" href="https://songpasilbeot.or.kr/theme/hayan/mobile/skin/latest/TOTAL_PARTNER2/resources/css/style.css?ver=2303229">
797<link rel="stylesheet" href="https://songpasilbeot.or.kr/data/widget/EM/em_ftmenu_001/resources/css/style.css?ver=2303229">
798<link rel="stylesheet" href="https://songpasilbeot.or.kr/data/widget/EM/em_free/resources/css/style.css?ver=2303229">
799<link rel="stylesheet" href="https://songpasilbeot.or.kr/data/widget/QUICK_floating/simple_sns/resources/css/style.css?ver=2303229">
800<link rel="stylesheet" href="https://songpasilbeot.or.kr/theme/hayan/mobile/skin/latest/hayan_popup6/resources/css/style.css?ver=2303229">
801<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css?ver=2303229">
802<script src="https://songpasilbeot.or.kr/js/jquery-1.12.4.min.js?ver=2304171"></script>
vendor: 1 bytes, line 802
802
803<script src="https://songpasilbeot.or.kr/js/jquery-migrate-1.4.1.min.js?ver=2304171"></script>
vendor: 1 bytes, line 803
803
804<script src="https://songpasilbeot.or.kr/js/common.js?ver=2304171"></script>
vendor: 1 bytes, line 804
804
805<script src="https://songpasilbeot.or.kr/js/wrest.js?ver=2304171"></script>
vendor: 1 bytes, line 805
805
806<script src="https://songpasilbeot.or.kr/js/placeholders.min.js?ver=2304171"></script>
vendor: 1 bytes, line 806
806
807<script src="https://songpasilbeot.or.kr/js/modernizr.custom.70111.js?ver=2304171"></script>
807
808</head>
809<body>
810
811
812
813	
813<script>
814// JS 함수: URL에 me_code 추가
815function add_me_code(url) {
816    var me_code = "";
817    if (!me_code) return url;
818    if (url.indexOf('me_code=') !== -1) return url;
819
820    var connector = url.indexOf('?') !== -1 ? '&' : '?';
821    return url + connector + 'me_code=' + me_code;
822}
823</script>
823
824<!--컬러 강제 설정 
824<script>
825document.addEventListener("DOMContentLoaded", function () {
826    const isColorSwitchOn = "no" === "yes";
827    const depth1Code = "";  // ex) 1010 → 10
828    const root = document.documentElement;
829
830    if (isColorSwitchOn) {
831        // 현재 메뉴의 1뎁스 서브컬러를 프라이머리로 설정
832        const subColorValue = getComputedStyle(root).getPropertyValue('--sub-color' + depth1Code).trim();
833        if (subColorValue) {
834            root.style.setProperty('--primary', subColorValue);
835        }
836    } else {
837        root.style.setProperty('--primary', '#f37368');
838    }
839});
840</script>
840
841-->
842<script>
843  const currentLang = 'ko';
844</script>
vendor: 2 bytes, line 844
844
845<script type="text/javascript">
846$(document).ready(function(){
847    $(window).on("scroll", function(){
848        if ($(window).scrollTop() > 50) { 
849            $("header").removeClass("large").addClass("small");
850        } else {
851            $("header").removeClass("small").addClass("large");
852        }
853    });
854});		
855</script>
855
856
857
858<script src="https://songpasilbeot.or.kr/_themeCom/themeAsset/basic_resources/js/wing.js?v=1"></script>
858
859
860
861<!-- SCoreDream 하드코딩 제거(2026-06-12): 폰트관리(ko2) 활성 체크로 일원화 -->
862
863<!-- unicons v4.0.8 중복 제거(2026-06-12): head.sub.php 의 v4.2.0 line.css 전역 로드 -->
864<link href="https://songpasilbeot.or.kr/theme/hayan/_head/COM_head_onlymenu/resources/css/style.css?v=1790119947" rel="stylesheet" />
865<link href="https://songpasilbeot.or.kr/theme/hayan/_head/COM_head_onlymenu/resources/css/dropdown2_submenu.css" rel="stylesheet" />
866<style>
867/* ★ 사이트맵 설정 CSS 변수 오버라이드 */
868:root {
869  --sm-backdrop: rgba(15,18,23,0.95);
870  --sm-gap: 24px;
871  --sm-ink: #ffffff;
872  --sm-ink-muted: #ffffff;
873  --sm-hover: #7ac762;
874}
875/* ★ 바탕 컬러 (최하단 레이어) */
876.gnb.sitemap .sm-backdrop {
877  -webkit-backdrop-filter: saturate(1.1) blur(2px);
878          backdrop-filter: saturate(1.1) blur(2px);
879}
880.gnb.sitemap .sm-backdrop::after {
881  content: '';
882  position: absolute; inset: 0;
883  background: url('/_img/img/SST/main_top_01.webp') center/cover no-repeat;
884  opacity: 0.3;
885  pointer-events: none;
886}
887.gnb.sitemap:not(.sm-style2) .sm-close {
888  top: 0px;
889  right: 0px;
890}
891.gnb.sitemap .sm-close svg {
892  width: 32px;
893  height: 32px;
894}
895.gnb.sitemap .sm-panel .gnb.sm {
896  padding: 16px;
897}
898.gnb.sitemap .sm-panel .gnb.sm .menu {
899  grid-template-columns: repeat(6, 1fr);
900}
901.gnb.sitemap .sm-panel .gnb.sm .menu > .cell > .depth1 {
902  font-size: 26px;
903}
904.gnb.sitemap .sm-panel .gnb.sm .subitem > .depth2 {
905  font-size: 18px;
906}
907
908/* ★ style2: 풀스크린 클린 디자인 (PABLO AIR 스타일) */
909.gnb.sitemap.sm-style2 .sm-panel {
910  width: 100% !important; height: 100vh !important;
911  border-radius: 0 !important;
912  left: 0; top: 0;
913  transform: translateY(0);
914  justify-content: flex-start;
915}
916.gnb.sitemap.sm-style2.active .sm-panel {
917  transform: translateY(0);
918}
919/* style2: 콘텐츠 영역 inner 제한 + 100%모드 좌우 여백 */
920/* style2 헤더: 로고 좌측 + X 우측 */
921.gnb.sitemap.sm-style2 .sm-head {
922  height: auto;
923  padding: clamp(20px, 3vw, 50px) 0;
924  justify-content: space-between;
925  align-items: center;
926  background: transparent;
927  position: relative; z-index: 10;
928  width: 100%; max-width: var(--sm-panel-w); margin: 0 auto;
929}
930.gnb.sitemap.sm-style2 .sm-head .sm-logo {
931  display: block; height: 50px; width: auto;
932}
933.gnb.sitemap.sm-style2 .sm-head .sm-logo img {
934  height: 100%; width: auto; object-fit: contain;
935}
936/* style2 닫기 버튼 */
937.gnb.sitemap.sm-style2 .sm-close {
938  position: relative !important; top: auto !important; right: auto !important;
939  width: 56px; height: 56px;
940  background: transparent; border: none; border-radius: 0;
941  color: var(--sm-ink); cursor: pointer;
942  display: inline-flex !important; align-items: center; justify-content: center;
943  margin-left: auto; /* ★ 로고가 없어도(빈 h2만 있어도) X를 항상 우측에 고정 */
944}
945/* style2 close svg: 크기는 공통 설정(.gnb.sitemap .sm-close svg)에서 적용 */
946.gnb.sitemap.sm-style2 .sm-close:hover { opacity: 0.6; }
947
948/* style2 헤드라인 */
949.gnb.sitemap.sm-style2 .sm-headline {
950  padding: 0;
951  margin-bottom: clamp(20px, 3vw, 50px);
952  position: relative; z-index: 10;
953  width: 100%; max-width: var(--sm-panel-w); margin-left: auto; margin-right: auto;
954}
955.gnb.sitemap.sm-style2 .sm-headline h3 {
956  font-size: clamp(28px, 4vw, 64px);
957  font-weight: 300; letter-spacing: -0.02em;
958  color: var(--sm-ink); line-height: 1.2;
959  margin: 0;
960}
961
962/* style2 메뉴 영역 */
963.gnb.sitemap.sm-style2 .sm-panel .gnb.sm {
964  padding: 0;
965  flex: 1 1 auto;
966  width: 100%; max-width: var(--sm-panel-w); margin: 0 auto;
967}
968/* style2: 카드 구분선 (연한 투명 흰색) */
969.gnb.sitemap.sm-style2 .sm-panel .gnb.sm .menu > .cell {
970  border-left: 1px solid var(--sm-divider, rgba(255,255,255,0.08)) !important; padding-left: 30px;
971  box-shadow: none !important;
972}
973.gnb.sitemap.sm-style2 .sm-panel .gnb.sm .menu > .cell:first-child {
974  border-left: none !important; padding-left: 0;
975}
976.gnb.sitemap.sm-style2 .sm-panel .gnb.sm .menu > .cell:hover {
977  box-shadow: none !important;
978}
979/* style2: 기존 밑줄 제거 */
980.gnb.sitemap.sm-style2 .sm-panel .gnb.sm .subitem > .depth2::before,
981.gnb.sitemap.sm-style2 .sm-panel .gnb.sm .subitem > .depth3::after {
982  display: none !important;
983}
984/* style2: hover 모션 — 대시 페이드인 + 텍스트 우측 슬라이드 */
985.gnb.sitemap.sm-style2 .sm-panel .gnb.sm .subitem > .depth2 {
986  transition: color .25s ease, padding-left .25s ease !important;
987  padding-left: 0 !important;
988}
989.gnb.sitemap.sm-style2 .sm-panel .gnb.sm .subitem > .depth2::after {
990  content: '–'; position: absolute; left: 0; top: 50%; transform: translateY(-50%);
991  opacity: 0; transition: opacity .25s ease;
992  color: var(--sm-hover); font-size: inherit; display: block !important;
993}
994.gnb.sitemap.sm-style2 .sm-panel .gnb.sm .subitem > .depth2:hover {
995  color: var(--sm-hover) !important;
996  padding-left: 20px !important;
997}
998.gnb.sitemap.sm-style2 .sm-panel .gnb.sm .subitem > .depth2:hover::after {
999  opacity: 1;
1000}
1001.gnb.sitemap.sm-style2 .sm-panel .gnb.sm .subitem > .depth3:hover {
1002  color: var(--sm-hover) !important;
1003}
1004/* style2 하단 영역 */
1005.gnb.sitemap.sm-style2 .sm-bottom-area {
1006  padding: clamp(15px, 2vw, 30px) 0;
1007  border-top: 1px solid var(--sm-divider, rgba(255,255,255,0.08));
1008  margin-top: auto;
1009  width: 100%; max-width: var(--sm-panel-w); margin-left: auto; margin-right: auto;
1010  display: flex; align-items: center; justify-content: space-between; gap: 20px;
1011}
1012.gnb.sitemap.sm-style2 .sm-bottom-copyright {
1013  flex: 1; min-width: 0;
1014}
1015.gnb.sitemap.sm-style2 .sm-bottom-widget {
1016  flex-shrink: 0;
1017}
1018
1019
1020/* ★ 자유위젯 - 사이드 메뉴 하단 영역 (요소설정 '사이드' 체크 시) */
1021.gnb.sitemap .sm-panel .sm-free-area {
1022  margin-top: auto;            /* 메뉴 아래 빈 공간 활용해 하단으로 밀기 */
1023  width: 100%;
1024  padding: clamp(15px, 2vw, 30px) clamp(20px, 4vw, 40px);
1025  display: flex;
1026  flex-direction: column;
1027  gap: 12px;
1028}
1029.gnb.sitemap .sm-panel .sm-free-widget {
1030  width: 100%;
1031}
1032.gnb.sitemap .sm-panel .sm-free-widget * {
1033  color: #fff;
1034}
1035.gnb.sitemap .sm-panel .sm-free-widget svg {
1036  stroke: #fff;
1037}
1038
1039/* ★ dropdown2: 서브메뉴 최소 너비 */
1040/* ★ dropdown2: 오버 컬러 모드 */
1041.header.dropdown2-menu { --dd2-hover-bg: #333333 !important; }
1042.header.dropdown2-menu .gnb:not(.tablet2):not(.mo) .menu > li.cell > a.depth1::before { background: #333333 !important; }
1043/* ★ fullopen: 개별 메뉴 너비 */
1044/* ★ v4: 글로벌 메뉴 아이템 디바이스별 표시/숨김 + 순서 */
1045@media screen and (min-width: 1700px) { .gmenu-search-btn, .gmenu-item-search { display: none !important; } }
1046@media screen and (min-width: 1024px) and (max-width: 1699px) { .gmenu-search-btn, .gmenu-item-search { display: none !important; } }
1047@media screen and (min-width: 768px) and (max-width: 1023px) { .gmenu-search-btn, .gmenu-item-search { display: none !important; } }
1048@media screen and (max-width: 767px) { .gmenu-search-btn, .gmenu-item-search { display: none !important; } }
1049@media screen and (min-width: 1700px) { .gmenu-search-btn, .gmenu-item-search { order: 1; } }
1050@media screen and (min-width: 1024px) and (max-width: 1699px) { .gmenu-search-btn, .gmenu-item-search { order: 1; } }
1051@media screen and (min-width: 768px) and (max-width: 1023px) { .gmenu-search-btn, .gmenu-item-search { order: 1; } }
1052@media screen and (max-width: 767px) { .gmenu-search-btn, .gmenu-item-search { order: 1; } }
1053@media screen and (min-width: 1700px) { .lang-select-wrap { display: none !important; } }
1054@media screen and (min-width: 1024px) and (max-width: 1699px) { .lang-select-wrap { display: none !important; } }
1055@media screen and (min-width: 768px) and (max-width: 1023px) { .lang-select-wrap { display: none !important; } }
1056@media screen and (max-width: 767px) { .lang-select-wrap { display: none !important; } }
1057@media screen and (min-width: 1700px) { .lang-select-wrap { order: 2; } }
1058@media screen and (min-width: 1024px) and (max-width: 1699px) { .lang-select-wrap { order: 2; } }
1059@media screen and (min-width: 768px) and (max-width: 1023px) { .lang-select-wrap { order: 2; } }
1060@media screen and (max-width: 767px) { .lang-select-wrap { order: 2; } }
1061@media screen and (max-width: 767px) { .gmenu-member-btns { display: none !important; } }
1062@media screen and (min-width: 1700px) { .gmenu-member-btns { order: 3; } }
1063@media screen and (min-width: 1024px) and (max-width: 1699px) { .gmenu-member-btns { order: 3; } }
1064@media screen and (min-width: 768px) and (max-width: 1023px) { .gmenu-member-btns { order: 3; } }
1065@media screen and (max-width: 767px) { .gmenu-member-btns { order: 3; } }
1066@media screen and (min-width: 1700px) { .gmenu-sns-group { display: none !important; } }
1067@media screen and (min-width: 1024px) and (max-width: 1699px) { .gmenu-sns-group { display: none !important; } }
1068@media screen and (min-width: 768px) and (max-width: 1023px) { .gmenu-sns-group { display: none !important; } }
1069@media screen and (max-width: 767px) { .gmenu-sns-group { display: none !important; } }
1070@media screen and (min-width: 1700px) { .gmenu-sns-group { order: 4; } }
1071@media screen and (min-width: 1024px) and (max-width: 1699px) { .gmenu-sns-group { order: 4; } }
1072@media screen and (min-width: 768px) and (max-width: 1023px) { .gmenu-sns-group { order: 4; } }
1073@media screen and (max-width: 767px) { .gmenu-sns-group { order: 4; } }
1074@media screen and (min-width: 768px) and (max-width: 1023px) { .sitemap { display: none !important; } }
1075@media screen and (max-width: 767px) { .sitemap { display: none !important; } }
1076@media screen and (min-width: 1700px) { .sitemap { order: 5; } }
1077@media screen and (min-width: 1024px) and (max-width: 1699px) { .sitemap { order: 5; } }
1078@media screen and (min-width: 768px) and (max-width: 1023px) { .sitemap { order: 5; } }
1079@media screen and (max-width: 767px) { .sitemap { order: 5; } }
1080@media screen and (min-width: 1700px) { .allmenu { display: none !important; } }
1081@media screen and (min-width: 1024px) and (max-width: 1699px) { .allmenu { display: none !important; } }
1082@media screen and (min-width: 1700px) { .allmenu { order: 6; } }
1083@media screen and (min-width: 1024px) and (max-width: 1699px) { .allmenu { order: 6; } }
1084@media screen and (min-width: 768px) and (max-width: 1023px) { .allmenu { order: 6; } }
1085@media screen and (max-width: 767px) { .allmenu { order: 6; } }
1086@media screen and (min-width: 1700px) { .popup-reopen-btn-wrap.pos-top { order: 7; } }
1087@media screen and (min-width: 1024px) and (max-width: 1699px) { .popup-reopen-btn-wrap.pos-top { order: 7; } }
1088@media screen and (min-width: 768px) and (max-width: 1023px) { .popup-reopen-btn-wrap.pos-top { order: 7; } }
1089@media screen and (max-width: 767px) { .popup-reopen-btn-wrap.pos-top { order: 7; } }
1090@media screen and (min-width: 1700px) { .gmenu-free1-wrap.gmenu-free1-wrap { display: none !important; } }
1091@media screen and (min-width: 1024px) and (max-width: 1699px) { .gmenu-free1-wrap.gmenu-free1-wrap { display: none !important; } }
1092@media screen and (min-width: 768px) and (max-width: 1023px) { .gmenu-free1-wrap.gmenu-free1-wrap { display: none !important; } }
1093@media screen and (max-width: 767px) { .gmenu-free1-wrap.gmenu-free1-wrap { display: none !important; } }
1094@media screen and (min-width: 1700px) { .gmenu-free1-wrap { order: 99; } }
1095@media screen and (min-width: 1024px) and (max-width: 1699px) { .gmenu-free1-wrap { order: 99; } }
1096@media screen and (min-width: 768px) and (max-width: 1023px) { .gmenu-free1-wrap { order: 99; } }
1097@media screen and (max-width: 767px) { .gmenu-free1-wrap { order: 99; } }
1098@media screen and (min-width: 1700px) { .gmenu-free2-wrap.gmenu-free2-wrap { display: none !important; } }
1099@media screen and (min-width: 1024px) and (max-width: 1699px) { .gmenu-free2-wrap.gmenu-free2-wrap { display: none !important; } }
1100@media screen and (min-width: 768px) and (max-width: 1023px) { .gmenu-free2-wrap.gmenu-free2-wrap { display: none !important; } }
1101@media screen and (max-width: 767px) { .gmenu-free2-wrap.gmenu-free2-wrap { display: none !important; } }
1102@media screen and (min-width: 1700px) { .gmenu-free2-wrap { order: 99; } }
1103@media screen and (min-width: 1024px) and (max-width: 1699px) { .gmenu-free2-wrap { order: 99; } }
1104@media screen and (min-width: 768px) and (max-width: 1023px) { .gmenu-free2-wrap { order: 99; } }
1105@media screen and (max-width: 767px) { .gmenu-free2-wrap { order: 99; } }
1106
1107/* ★ v4: 사이드 메뉴 글로벌 영역 스타일 */
1108.side-gmenu-area {
1109  padding: 15px 0;
1110  border-bottom: 1px solid rgba(255,255,255,0.1);
1111  display: flex;
1112  flex-wrap: wrap;
1113  gap: 12px;
1114  align-items: center;
1115}
1116.side-gmenu-area * {
1117  color: #fff !important;
1118}
1119.side-gmenu-area svg {
1120  stroke: #fff !important;
1121  fill: none !important;
1122}
1123.side-gmenu-btn {
1124  display: inline-flex;
1125  align-items: center;
1126  gap: 6px;
1127  padding: 8px 12px;
1128  background: rgba(255,255,255,0.1);
1129  border: none;
1130  border-radius: 6px;
1131  color: #fff;
1132  font-size: 13px;
1133  cursor: pointer;
1134  transition: background 0.2s;
1135  text-decoration: none;
1136}
1137.side-gmenu-btn:hover {
1138  background: rgba(255,255,255,0.2);
1139  color: #fff;
1140}
1141.side-gmenu-btn svg {
1142  width: 18px;
1143  height: 18px;
1144  stroke: #fff;
1145  fill: none;
1146}
1147.side-search-btn {
1148  background: rgba(102, 126, 234, 0.3);
1149}
1150.side-search-btn:hover {
1151  background: rgba(102, 126, 234, 0.5);
1152}
1153.side-lang-select {
1154  display: flex;
1155  align-items: center;
1156  gap: 4px;
1157}
1158.side-lang-btns {
1159  display: flex;
1160  gap: 4px;
1161}
1162.side-lang-btn {
1163  padding: 5px 10px;
1164  background: rgba(255,255,255,0.1);
1165  border: 1px solid rgba(255,255,255,0.3);
1166  border-radius: 4px;
1167  color: #fff;
1168  font-size: 12px;
1169  cursor: pointer;
1170  transition: all 0.2s;
1171}
1172.side-lang-btn:hover,
1173.side-lang-btn.active {
1174  background: rgba(255,255,255,0.25);
1175  border-color: rgba(255,255,255,0.5);
1176  color: #fff;
1177}
1178.side-member-btns {
1179  display: flex;
1180  gap: 8px;
1181  flex-wrap: wrap;
1182}
1183.side-sns-group {
1184  display: flex;
1185  gap: 8px;
1186}
1187.side-sns-group a {
1188  display: flex;
1189  align-items: center;
1190  justify-content: center;
1191  width: 36px;
1192  height: 36px;
1193  background: rgba(255,255,255,0.1);
1194  border-radius: 50%;
1195  color: #fff;
1196  transition: background 0.2s;
1197}
1198.side-sns-group a:hover {
1199  background: rgba(255,255,255,0.2);
1200}
1201.side-sns-group svg {
1202  width: 18px;
1203  height: 18px;
1204  stroke: currentColor;
1205  fill: none;
1206}
1207
1208/* 위젯 아이콘 버튼 (관리자용) */
1209.wg_icon_btn {
1210  position: absolute;
1211  top: 2px;
1212  right: 2px;
1213  width: 24px;
1214  height: 24px;
1215  padding: 4px;
1216  background: rgba(99, 102, 241, 0.9);
1217  border: none;
1218  border-radius: 4px;
1219  cursor: pointer;
1220  display: flex;
1221  align-items: center;
1222  justify-content: center;
1223  opacity: 0;
1224  transition: opacity 0.2s, background 0.2s;
1225  z-index: 100;
1226}
1227.wg_icon_btn svg { color: #fff; }
1228.wg_icon_btn:hover { background: rgba(79, 70, 229, 1); }
1229.admin_div:hover .wg_icon_btn,
1230.logo:hover .wg_icon_btn { opacity: 1; }
1231
1232/* 위젯 모달 오버레이 */
1233.wg_modal_overlay {
1234  position: fixed;
1235  top: 0; left: 0; right: 0; bottom: 0;
1236  background: rgba(0,0,0,0.6);
1237  z-index: 99999;
1238  display: flex;
1239  align-items: center;
1240  justify-content: center;
1241  opacity: 0;
1242  visibility: hidden;
1243  transition: opacity 0.25s, visibility 0.25s;
1244}
1245.wg_modal_overlay.active {
1246  opacity: 1;
1247  visibility: visible;
1248}
1249.wg_modal_box {
1250  background: #fff;
1251  border-radius: 8px;
1252  width: 95vw;
1253  max-width: 1200px;
1254  height: 90vh;
1255  max-height: 800px;
1256  display: flex;
1257  flex-direction: column;
1258  box-shadow: 0 8px 32px rgba(0,0,0,0.25);
1259  transform: scale(0.95);
1260  transition: transform 0.25s;
1261}
1262.wg_modal_overlay.active .wg_modal_box {
1263  transform: scale(1);
1264}
1265.wg_modal_header {
1266  display: flex;
1267  justify-content: space-between;
1268  align-items: center;
1269  padding: 12px 16px;
1270  border-bottom: 1px solid #e5e7eb;
1271  background: #f9fafb;
1272  border-radius: 8px 8px 0 0;
1273}
1274.wg_modal_header h3 {
1275  margin: 0;
1276  font-size: 16px;
1277  font-weight: 600;
1278  color: #111827;
1279}
1280.wg_modal_close {
1281  background: none;
1282  border: none;
1283  font-size: 24px;
1284  cursor: pointer;
1285  color: #6b7280;
1286  padding: 4px 8px;
1287  line-height: 1;
1288  border-radius: 4px;
1289  transition: background 0.15s, color 0.15s;
1290}
1291.wg_modal_close:hover {
1292  background: #f3f4f6;
1293  color: #111827;
1294}
1295.wg_modal_body {
1296  flex: 1;
1297  overflow: hidden;
1298}
1299.wg_modal_body iframe {
1300  width: 100%;
1301  height: 100%;
1302  border: none;
1303}
1304
1305/* ===== 글로벌 메뉴 스타일 ===== */
1306/* 헤더 컨테이너 position 설정 (inner 절대위치 기준) */
1307.header > .contents-container {
1308  position: relative;
1309}
1310/* 상단 inner 영역 (position: inner) - contents-container 기준 절대위치 */
1311.gmenu-area-inner {
1312  position: absolute;
1313  top: var(--gmenu-inner-top, 5px);
1314  right: var(--gmenu-inner-right, 0px);
1315  display: flex;
1316  align-items: center;
1317  gap: 10px;
1318  z-index: 100;
1319}
1320/* 태블릿 (768~1699px) - PC처럼 상단 배치 유지 */
1321@media screen and (max-width: 1699px) and (min-width: 768px) {
1322  .header > .contents-container {
1323    position: relative; /* PC처럼 relative 유지 */
1324  }
1325  .gmenu-area-inner {
1326    position: absolute;
1327    top: var(--gmenu-inner-top, 5px);
1328    right: var(--gmenu-inner-right, 30px);
1329    transform: none;
1330    height: auto;
1331  }
1332}
1333/* 모바일 (~767px) */
1334@media screen and (max-width: 767px) {
1335  .header > .contents-container {
1336    position: static;
1337  }
1338  .header .head_inner {
1339    position: relative;
1340  }
1341  .gmenu-area-inner {
1342    position: absolute;
1343    top: 50%;
1344    transform: translateY(-50%);
1345    right: var(--gmenu-inner-right, 45px);
1346    height: auto;
1347    padding-right: 0; /* 모바일 우측 패딩 제거 */
1348  }
1349}
1350
1351/* 메뉴~햄버거 사이 영역 (position: between) */
1352.gmenu-area-between {
1353  display: flex;
1354  align-items: center;
1355  gap: 4px;
1356  margin-left: auto;
1357  margin-right: 15px;
1358}
1359
1360/* 글로벌 메뉴 버튼 공통 */
1361.gmenu-btn {
1362  display: inline-flex;
1363  align-items: center;
1364  justify-content: center;
1365  gap: 3px;
1366  padding: 6px 10px;
1367  font-size: var(--gmenu-font-size, 13px);
1368  font-weight: 500;
1369  color: var(--top1d-font-color, #333);
1370  background: transparent;
1371  border: 1px solid transparent;
1372  border-radius: 30px;
1373  cursor: pointer;
1374  transition: all 0.2s ease;
1375  white-space: nowrap;
1376}
1377.gmenu-btn:hover {
1378  background: rgba(0,0,0,0.05);
1379}
1380
1381/* 비투명 헤더 (서브페이지 기본) - 검정 텍스트/아이콘 (bg-color 제외) */
1382.header:not(.opacity):not(.bg-color) .gmenu-btn {
1383  color: #333 !important;
1384}
1385.header:not(.opacity):not(.bg-color) .gmenu-btn svg {
1386  stroke: #333 !important;
1387}
1388
1389/* 투명 헤더일때 글로벌 메뉴 색상 - 흰색 */
1390.header.opacity:not(.scrolled):not(.hovered) .gmenu-btn {
1391  color: var(--top1d-font-color-opacity, #fff);
1392}
1393.header.opacity:not(.scrolled):not(.hovered) .gmenu-btn svg {
1394  stroke: var(--top1d-font-color-opacity, #fff);
1395}
1396.header.opacity:not(.scrolled):not(.hovered) .gmenu-btn:hover {
1397  background: rgba(255,255,255,0.1);
1398}
1399
1400/* 투명 헤더 스크롤/호버 후 - 검정 텍스트/아이콘 */
1401.header.opacity.scrolled .gmenu-btn,
1402.header.opacity.hovered .gmenu-btn {
1403  color: #333;
1404}
1405.header.opacity.scrolled .gmenu-btn svg,
1406.header.opacity.hovered .gmenu-btn svg {
1407  stroke: #333;
1408}
1409
1410/* 아이콘 버튼 */
1411.gmenu-icon-btn {
1412  width: 36px;
1413  height: 36px;
1414  padding: 0;
1415  border-radius: 50%;
1416}
1417.gmenu-icon-btn svg {
1418  width: 18px;
1419  height: 18px;
1420}
1421
1422/* 언어 선택 박스 */
1423.lang-select-wrap {
1424  position: relative;
1425}
1426.lang-select-wrap .lang-btn {
1427line-height: 100% !important; min-height: 30px; position: relative; padding-right: 30px
1428}
1429/* ★ [2026-09-07] 화살표 = unicons 아이콘(uil-angle-down). 구형 삼각형(::after) 제거, 열리면 180도 회전 */
1430.lang-select-wrap .lang-btn::after { content: none; }
1431.lang-select-wrap .lang-btn .lang-arrow {
1432  position: absolute; right: 9px; top: 50%;
1433  transform: translateY(-50%);
1434  font-size: 16px; line-height: 1; color: currentColor;
1435  transition: transform 0.2s ease;
1436  pointer-events: none;
1437}
1438.lang-select-wrap.open .lang-btn .lang-arrow {
1439  transform: translateY(-50%) rotate(180deg);
1440}
1441/* ★ [2026-09-07] 언어 레이어가 열리면 글로벌 메뉴 영역을 햄버거(.sitemap z-index:102~103)보다 위로 */
1442.header .gmenu-area-inner.lang-open,
1443.header .gmenu-area-between.lang-open {
1444  z-index: 100000 !important;
1445}
1446.header .gmenu-area-between.lang-open { position: relative; }
1447.lang-select-wrap .lang-options {
1448  position: absolute;
1449  top: 100%;
1450  left: 0;
1451  min-width: 100%;
1452  background: #fff;
1453  border: 1px solid #ddd;
1454  border-radius: 4px;
1455  box-shadow: 0 4px 12px rgba(0,0,0,0.05);
1456  opacity: 0;
1457  visibility: hidden;
1458  transform: translateY(-10px);
1459  transition: all 0.2s ease;
1460  z-index: 1000;
1461  list-style: none;
1462  padding: 4px 0;
1463  margin: 4px 0 0;
1464}
1465.lang-select-wrap.open .lang-options {
1466  opacity: 1;
1467  visibility: visible;
1468  transform: translateY(0);
1469}
1470.lang-select-wrap .lang-options li {
1471  padding: 8px 15px;
1472  font-size: 13px;
1473  color: #333;
1474  cursor: pointer;
1475  transition: all 0.15s ease;
1476}
1477.lang-select-wrap .lang-options li:hover {
1478  background: #333;
1479  color: #fff;
1480}
1481.lang-select-wrap .lang-options li.active {
1482  font-weight: 600;
1483  color: var(--primary-500, #4f46e5);
1484}
1485.lang-select-wrap .lang-options li.active:hover {
1486  color: #fff;
1487}
1488
1489/* ★ 구글 번역 스타일 */
1490.google-translate-wrap {
1491  display: flex;
1492  align-items: center;
1493}
1494.google-translate-wrap .goog-te-gadget {
1495  font-family: inherit !important;
1496  font-size: 13px !important;
1497}
1498/* ★ 커스텀 구글 번역 셀렉트 박스 스타일 */
1499.custom-translate-wrap {
1500  display: flex;
1501  align-items: center;
1502}
1503.custom-translate-select {
1504  appearance: none;
1505  -webkit-appearance: none;
1506  -moz-appearance: none;
1507  background-color: #fff;
1508  border: 1px solid rgba(0,0,0,0.05);
1509  border-radius: 4px;
1510  padding: 6px 32px 6px 12px;
1511  font-size: var(--gmenu-font-size, 13px);
1512  font-weight: 500;
1513  color: #333;
1514  cursor: pointer;
1515  outline: none;
1516  min-width: 90px;
1517  box-shadow: 0 1px 3px rgba(0,0,0,0.08);
1518  transition: all 0.2s ease;
1519  /* Unicons angle-down 라인 아이콘 (SVG) */
1520  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23333333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
1521  background-repeat: no-repeat;
1522  background-position: right 8px center;
1523  background-size: 14px;
1524}
1525.custom-translate-select:hover {
1526  border-color: rgba(0,0,0,0.25);
1527  box-shadow: 0 2px 6px rgba(0,0,0,0.12);
1528}
1529.custom-translate-select:focus {
1530  border-color: var(--primary-500, #4f46e5);
1531  box-shadow: 0 0 0 2px rgba(79, 70, 229, 0.15);
1532  outline: 2px solid var(--primary-500, #4f46e5);
1533  outline-offset: 1px;
1534}
1535.custom-translate-select option {
1536  color: #333;
1537  background: #fff;
1538  padding: 8px;
1539}
1540/* 사이드 메뉴용 셀렉트 스타일 */
1541.side-translate-select {
1542  background-color: rgba(255,255,255,0.1);
1543  border-color: rgba(255,255,255,0.2);
1544  color: #fff;
1545  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
1546}
1547.side-translate-select:hover {
1548  background-color: rgba(255,255,255,0.15);
1549  border-color: rgba(255,255,255,0.3);
1550}
1551/* 사이드 메뉴 구글 번역 */
1552.side-lang-select .goog-te-gadget-simple {
1553  background: rgba(255,255,255,0.1) !important;
1554  border: 1px solid rgba(255,255,255,0.2) !important;
1555}
1556.side-lang-select .goog-te-gadget-simple .goog-te-menu-value,
1557.side-lang-select .goog-te-gadget-simple .goog-te-menu-value span {
1558  color: #fff !important;
1559}
1560
1561/* 투명 헤더 초기 상태 (스크롤/호버 전) - 흰색 텍스트 */
1562.header.opacity:not(.scrolled):not(.hovered) .lang-select-wrap .lang-btn,
1563.header.opacity:not(.scrolled):not(.hovered) .gmenu-area-inner .lang-btn,
1564.header.opacity:not(.scrolled):not(.hovered) .gmenu-area-between .lang-btn {
1565  color: #fff !important;
1566  border-color: rgba(255,255,255,0.3) !important;
1567}
1568/* 투명 헤더 초기 - 구글 번역 셀렉트 흰색 */
1569.header.opacity:not(.scrolled):not(.hovered) .custom-translate-select {
1570  color: #fff !important;
1571  background-color: rgba(255,255,255,0.1) !important;
1572  border-color: rgba(255,255,255,0.3) !important;
1573  box-shadow: none !important;
1574  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23ffffff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") !important;
1575}
1576/* 투명 헤더 스크롤/호버 후 - 검정 텍스트 */
1577.header.opacity.scrolled .lang-select-wrap .lang-btn,
1578.header.opacity.hovered .lang-select-wrap .lang-btn,
1579.header.opacity.scrolled .gmenu-area-inner .lang-btn,
1580.header.opacity.hovered .gmenu-area-inner .lang-btn,
1581.header.opacity.scrolled .gmenu-area-between .lang-btn,
1582.header.opacity.hovered .gmenu-area-between .lang-btn {
1583  color: #333 !important;
1584  border-color: rgba(0,0,0,0.05) !important;
1585}
1586/* 투명 헤더 스크롤/호버 후 - 구글 번역 셀렉트 검정 */
1587.header.opacity.scrolled .custom-translate-select,
1588.header.opacity.hovered .custom-translate-select {
1589  color: #333 !important;
1590  background-color: #fff !important;
1591  border-color: rgba(0,0,0,0.05) !important;
1592  box-shadow: 0 1px 3px rgba(0,0,0,0.08) !important;
1593  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewB
1593ox='0 0 24 24' fill='none' stroke='%23333333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") !important;
1594}
1595/* 비투명 헤더 (기본) - 검정 텍스트 (bg-color 제외) */
1596.header:not(.opacity):not(.bg-color) .lang-select-wrap .lang-btn,
1597.header:not(.opacity):not(.bg-color) .gmenu-area-inner .lang-btn,
1598.header:not(.opacity):not(.bg-color) .gmenu-area-between .lang-btn {
1599  color: #333 !important;
1600  border-color: rgba(0,0,0,0.05) !important;
1601}
1602
1603/* SNS 버튼 그룹 */
1604.gmenu-sns-group {
1605  display: flex;
1606  align-items: center;
1607  gap: 5px;
1608}
1609.gmenu-sns-group a {
1610  display: flex;
1611  align-items: center;
1612  justify-content: center;
1613  width: 30px;
1614  height: 30px;
1615  border-radius: 50%;
1616  transition: all 0.2s ease;
1617}
1618.gmenu-sns-group a:hover {
1619  background: rgba(0,0,0,0.05);
1620}
1621.gmenu-sns-group svg {
1622  width: 18px;
1623  height: 18px;
1624  transition: all 0.2s ease;
1625}
1626.gmenu-sns-group .wg_img1 {
1627  width: 100%;
1628  height: 100%;
1629  display: flex;
1630  align-items: center;
1631  justify-content: center;
1632}
1633.gmenu-sns-group .wg_img1 img {
1634  width: 100%;
1635  height: 100%;
1636  object-fit: contain;
1637}
1638
1639/* 자유위젯 wrap */
1640.gmenu-free1-wrap,
1641.gmenu-free2-wrap {
1642  display: flex !important;
1643  align-items: center !important;
1644  min-width: 0 !important;
1645}
1646.gmenu-free1-wrap *,
1647.gmenu-free2-wrap * {
1648  float: none !important;
1649}
1650.gmenu-free1-wrap .em_free,
1651.gmenu-free2-wrap .em_free {
1652  display: flex !important;
1653  align-items: center !important;
1654  width: auto !important;
1655  min-width: 0 !important;
1656  padding: 0 !important;
1657  margin: 0 !important;
1658}
1659.gmenu-free1-wrap .com_f,
1660.gmenu-free2-wrap .com_f {
1661  padding: 0 !important;
1662  margin: 0 !important;
1663}
1664.gmenu-free1-wrap .wg_side,
1665.gmenu-free2-wrap .wg_side {
1666  display: flex !important;
1667  align-items: center !important;
1668  width: auto !important;
1669  min-width: 0 !important;
1670  padding: 0 !important;
1671  margin: 0 !important;
1672}
1673.gmenu-free1-wrap .wg_box,
1674.gmenu-free2-wrap .wg_box {
1675  display: flex !important;
1676  align-items: center !important;
1677  gap: 6px;
1678  width: auto !important;
1679  min-width: 0 !important;
1680  padding: 0 !important;
1681  margin: 0 !important;
1682}
1683.gmenu-free1-wrap .wg_box_in,
1684.gmenu-free2-wrap .wg_box_in {
1685  display: flex !important;
1686  align-items: center !important;
1687  gap: 6px;
1688  width: auto !important;
1689  min-width: 0 !important;
1690  padding: 0 !important;
1691  margin: 0 !important;
1692  border: none !important;
1693  background: none !important;
1694}
1695.gmenu-free1-wrap .wg_img_box,
1696.gmenu-free2-wrap .wg_img_box {
1697  display: flex !important;
1698  align-items: center !important;
1699  width: auto !important;
1700  min-width: 0 !important;
1701}
1702.gmenu-free1-wrap .wg_txt_box,
1703.gmenu-free2-wrap .wg_txt_box {
1704  display: flex !important;
1705  align-items: center !important;
1706  white-space: nowrap !important;
1707  width: auto !important;
1708  min-width: 0 !important;
1709  font-size: var(--gmenu-font-size, 13px);
1710}
1711.gmenu-free1-wrap .sub_stit_box,
1712.gmenu-free2-wrap .sub_stit_box {
1713  display: none !important;
1714}
1715.gmenu-free1-wrap .wg_txt1,
1716.gmenu-free1-wrap .wg_txt2,
1717.gmenu-free1-wrap .wg_txt3,
1718.gmenu-free2-wrap .wg_txt1,
1719.gmenu-free2-wrap .wg_txt2,
1720.gmenu-free2-wrap .wg_txt3 {
1721  display: inline-flex !important;
1722  align-items: center !important;
1723  width: auto !important;
1724  min-width: 0 !important;
1725  white-space: nowrap !important;
1726}
1727.gmenu-free1-wrap .COM_tit,
1728.gmenu-free2-wrap .COM_tit {
1729  width: auto !important;
1730  min-width: 0 !important;
1731  display: inline-flex !important;
1732  align-items: center !important;
1733  gap: 5px;
1734  white-space: nowrap !important;
1735  margin: 0 !important;
1736  padding: 0 !important;
1737}
1738.gmenu-free1-wrap .contents-container,
1739.gmenu-free2-wrap .contents-container {
1740  max-width: none !important;
1741  width: auto !important;
1742  min-width: 0 !important;
1743  padding: 0 !important;
1744  margin: 0 !important;
1745}
1746.gmenu-sns-group .tooltip {
1747  display: none;
1748}
1749
1750/* 자유위젯 - 비투명 헤더 (기본: 검정) */
1751.header:not(.opacity):not(.bg-color) .gmenu-free1-wrap,
1752.header:not(.opacity):not(.bg-color) .gmenu-free2-wrap {
1753  color: #333 !important;
1754}
1755.header:not(.opacity):not(.bg-color) .gmenu-free1-wrap *,
1756.header:not(.opacity):not(.bg-color) .gmenu-free2-wrap * {
1757  color: inherit !important;
1758}
1759.header:not(.opacity):not(.bg-color) .gmenu-free1-wrap svg,
1760.header:not(.opacity):not(.bg-color) .gmenu-free2-wrap svg {
1761  stroke: #333 !important;
1762}
1763/* 자유위젯 - 투명 헤더 초기 (흰색) */
1764.header.opacity:not(.scrolled):not(.hovered) .gmenu-free1-wrap,
1765.header.opacity:not(.scrolled):not(.hovered) .gmenu-free2-wrap {
1766  color: var(--top1d-font-color-opacity, #fff) !important;
1767}
1768.header.opacity:not(.scrolled):not(.hovered) .gmenu-free1-wrap *,
1769.header.opacity:not(.scrolled):not(.hovered) .gmenu-free2-wrap * {
1770  color: inherit !important;
1771}
1772.header.opacity:not(.scrolled):not(.hovered) .gmenu-free1-wrap svg,
1773.header.opacity:not(.scrolled):not(.hovered) .gmenu-free2-wrap svg {
1774  stroke: var(--top1d-font-color-opacity, #fff) !important;
1775}
1776/* 자유위젯 - 투명 헤더 스크롤/호버 후 (검정) */
1777.header.opacity.scrolled .gmenu-free1-wrap,
1778.header.opacity.hovered .gmenu-free1-wrap,
1779.header.opacity.scrolled .gmenu-free2-wrap,
1780.header.opacity.hovered .gmenu-free2-wrap {
1781  color: #333 !important;
1782}
1783.header.opacity.scrolled .gmenu-free1-wrap *,
1784.header.opacity.hovered .gmenu-free1-wrap *,
1785.header.opacity.scrolled .gmenu-free2-wrap *,
1786.header.opacity.hovered .gmenu-free2-wrap * {
1787  color: inherit !important;
1788}
1789.header.opacity.scrolled .gmenu-free1-wrap svg,
1790.header.opacity.hovered .gmenu-free1-wrap svg,
1791.header.opacity.scrolled .gmenu-free2-wrap svg,
1792.header.opacity.hovered .gmenu-free2-wrap svg {
1793  stroke: #333 !important;
1794}
1795
1796/* 비투명 헤더 (서브페이지 기본) - SNS 아이콘 검정 (bg-color 제외) */
1797.header:not(.opacity):not(.bg-color) .gmenu-sns-group svg {
1798  fill: none !important;
1799  stroke: #333 !important;
1800}
1801
1802/* 투명 헤더 초기 상태 - SNS 아이콘 흰색 */
1803.header.opacity:not(.scrolled):not(.hovered) .gmenu-sns-group svg {
1804  fill: none !important;
1805  stroke: #fff !important;
1806}
1807.header.opacity:not(.scrolled):not(.hovered) .gmenu-sns-group a:hover {
1808  background: rgba(255,255,255,0.1);
1809}
1810
1811/* 투명 헤더 스크롤/호버 후 - SNS 아이콘 검정 */
1812.header.opacity.scrolled .gmenu-sns-group svg,
1813.header.opacity.hovered .gmenu-sns-group svg {
1814  fill: none !important;
1815  stroke: #333 !important;
1816}
1817
1818/* ★ v5: 햄버거 버튼 view 설정 - JSON 설정이 제어 */
1819/* .allmenu = 모바일 사이드메뉴 햄버거 - 기본 표시, JSON이 숨김 제어 */
1820.header .allmenu { display: block; }
1821
1822/* .sitemap = PC 전체메뉴 햄버거 - 기본 표시, JSON이 숨김 제어 */
1823.header > .header_right > .sitemap { display: block; }
1824
1825/* 기존 allmenu-pcview 클래스 호환 (JSON 미설정시 fallback) */
1826
1827/* 메뉴 렌더링 전 깜빡임 방지 */
1828.gnb.pc .menu:empty {
1829  min-height: 60px;
1830}
1831.gnb.pc .menu {
1832  opacity: 0;
1833  transition: opacity 0.15s ease;
1834}
1835.gnb.pc .menu.rendered,
1836.gnb.pc .menu:not(:empty) {
1837  opacity: 1;
1838}
1839
1840/* 글로벌 메뉴 표시/숨김 클래스 */
1841.gmenu-hide { display: none !important; }
1842
1843/* ===== 팝업 다시열기 버튼 (통합) ===== */
1844/* 기본: 숨김 (팝업이 닫힌 후에만 표시) */
1845.popup-reopen-btn-wrap {
1846  display: none;
1847}
1848.popup-reopen-btn-wrap.show {
1849  display: flex;
1850}
1851
1852/* 위치 1: 글로벌 메뉴 옆 (top) - 글로벌 메뉴 내부, 함께 스크롤 */
1853.popup-reopen-btn-wrap.pos-top {
1854  position: relative;
1855  display: none;
1856  margin-left: 8px;
1857}
1858.popup-reopen-btn-wrap.pos-top.show {
1859  display: flex;
1860}
1861
1862/* 위치 1 fallback: 글로벌 메뉴가 없을 때 상단 고정 */
1863.popup-reopen-btn-wrap.pos-top-fallback {
1864  position: fixed;
1865  top: 15px;
1866  right: 15px;
1867  margin-left: 0;
1868  z-index: 9999999;
1869}
1870
1871/* 위치 2: 브라우저 전체 고정 (fixed) - 동적 위치값 */
1872.popup-reopen-btn-wrap.pos-fixed {
1873  position: fixed;
1874  top: 0px;  right: 0px;      z-index: 9999999;
1875}
1876
1877/* inner(컨테이너) 안 고정 anchor: head_inner 를 기준으로 */
1878.head_inner { position: relative; }
1879/* 위치 3: inner(컨테이너) 안 고정 (absolute) - 같은 위치값을 컨테이너 기준으로 사용 */
1880.popup-reopen-btn-wrap.pos-absolute {
1881  position: absolute;
1882  top: 0px;  right: 0px;      z-index: 100;
1883}
1884
1885/* 팝업 다시열기 버튼 스타일 */
1886.popup-reopen-btn-head {
1887  display: inline-flex;
1888  align-items: center;
1889  gap: 5px;
1890  padding: 6px 14px;
1891  background: var(--point, #667eea);
1892  color: #fff !important;
1893  font-size: 13px;
1894  font-weight: 500;
1895  border: none;
1896  border-radius: 20px;
1897  cursor: pointer;
1898  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
1899  transition: all 0.2s ease;
1900  white-space: nowrap;
1901}
1902/* 버튼 크기 - 소 */
1903.popup-reopen-btn-head.size-small {
1904  padding: 6px 12px;
1905  font-size: 12px;
1906  gap: 4px;
1907  min-height: 32px;
1908}
1909.popup-reopen-btn-head.size-small em {
1910  min-width: 18px;
1911  height: 18px;
1912  font-size: 11px;
1913  padding: 0 5px;
1914}
1915/* 버튼 크기 - 중 (기본) */
1916.popup-reopen-btn-head.size-medium {
1917  padding: 6px 14px;
1918  font-size: 13px;
1919}
1920/* 버튼 크기 - 대 */
1921.popup-reopen-btn-head.size-large {
1922  padding: 8px 18px;
1923  font-size: 14px;
1924  gap: 6px;
1925}
1926.popup-reopen-btn-head.size-large em {
1927  min-width: 24px;
1928  height: 24px;
1929  font-size: 13px;
1930  padding: 0 8px;
1931}
1932/* 버튼 크기 - 자체(custom): 관리자 입력 패딩/텍스트크기/모서리 적용 */
1933.popup-reopen-btn-head.size-custom {
1934  padding: 7px 18px;  font-size: 14px;  border-radius: 0px 0px 20px 20px;}
1935.popup-reopen-btn-head:hover {
1936  transform: translateY(-1px);
1937  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
1938}
1939.popup-reopen-btn-head em {
1940  display: inline-flex;
1941  align-items: center;
1942  justify-content: center;
1943  min-width: 20px;
1944  height: 20px;
1945  padding: 0 6px;
1946  background: rgba(255,255,255,0.25);
1947  border-radius: 10px;
1948  font-style: normal;
1949  font-size: 12px;
1950  font-weight: 600;
1951}
1952
1953/* 모바일 - top은 글로벌 메뉴 내에서 자연스럽게 배치 (fixed 해제) */
1954@media screen and (max-width: 1024px) {
1955  .popup-reopen-btn-wrap.pos-top {
1956    /* 글로벌 메뉴 안에 있으므로 position 그대로 유지 */
1957    position: relative !important;
1958    top: auto !important;
1959    right: auto !important;
1960    left: auto !important;
1961    bottom: auto !important;
1962    margin-left: 0 !important;
1963  }
1964  /* fallback (글로벌 메뉴 없을 때)만 상단 중앙 고정 */
1965  .popup-reopen-btn-wrap.pos-top-fallback {
1966    position: fixed !important;
1967    top: 8px !important;
1968    left: 0 !important;
1969    right: 0 !important;
1970    bottom: auto !important;
1971    justify-content: center !important;
1972    z-index: 9999999 !important;
1973    pointer-events: none !important;
1974  }
1975  .popup-reopen-btn-wrap.pos-top-fallback .popup-reopen-btn-head {
1976    pointer-events: auto !important;
1977  }
1978  /* fixed는 모바일 설정값 사용 */
1979  .popup-reopen-btn-wrap.pos-fixed {
1980    top: 15px !important;    right: 60px !important;    bottom: auto !important;    left: auto !important;      }
1981    /* absolute(inner 고정)도 모바일 설정값 사용 (값 없으면 PC값 유지) */
1982  .popup-reopen-btn-wrap.pos-absolute {
1983    top: 15px !important;    right: 60px !important;          }
1984      .popup-reopen-btn-head.size-custom {
1985    padding: 7px 10px !important;    font-size: 14px !important;    border-radius: 50px !important;  }
1986  }
1987
1988/* ★ 로고 전환: 위젯에 업로드된 이미지 사용 (filter 제거) */
1989/* 투명 배경 → logo-initial (항목1 이미지2) 표시 */
1990/* 흰색 배경 → logo-default (항목1 이미지1) 표시 */
1991
1992/* 투명 헤더 초기 상태에서 로고 전환 */
1993.header.opacity:not(.scrolled):not(.hovered) .logo img.logo-default { opacity: 0; }
1994.header.opacity:not(.scrolled):not(.hovered) .logo img.logo-initial { opacity: 1; }
1995.header.opacity.scrolled .logo img.logo-default,
1996.header.opacity.hovered .logo img.logo-default { opacity: 1; }
1997.header.opacity.scrolled .logo img.logo-initial,
1998.header.opacity.hovered .logo img.logo-initial { opacity: 0; }
1999
2000/* ===== 듀얼 로고 ===== */
2001.header .logo.logo-dual { display: flex; align-items: center; flex-direction: row-reverse; }
2002.header .logo.logo-dual.logo-dual-reverse { flex-direction: row; }
2003.logo-divider { width: 1px; height: 24px; background: rgba(0,0,0,0.12); margin: 0 12px; flex-shrink: 0; align-self: center; }
2004.logo-second { display: inline-flex; align-items: center; position: relative; }
2005.logo-second img,
2006.logo-second .logo-default img,
2007.logo-second .logo-initial img { max-height: var(--header-logo-width, 180px); width: auto; height: auto; }
2008.logo-second > img.logo-default,
2009.logo-second > .logo-default { position: relative; transition: opacity 0.3s ease; }
2010.logo-second > img.logo-initial,
2011.logo-second > .logo-initial { position: absolute; top: 50%; left: 0; transform: translateY(-50%); transition: opacity 0.3s ease; opacity: 0; }
2012.header.opacity:not(.scrolled):not(.hovered) .logo-divider { background: rgba(255,255,255,0.3); }
2013.header.opacity:not(.scrolled):not(.hovered) .logo-second .logo-default { opacity: 0; }
2014.header.opacity:not(.scrolled):not(.hovered) .logo-second .logo-initial { opacity: 1; }
2015.header.opacity.scrolled .logo-second .logo-default,
2016.header.opacity.hovered .logo-second .logo-default { opacity: 1; }
2017.header.opacity.scrolled .logo-second .logo-initial,
2018.header.opacity.hovered .logo-second .logo-initial { opacity: 0; }
2019/* 로고 영역 wg_edit_img 오버라이드 - 호버해도 위치 변화 없음 */
2020h1.logo .wg_edit_img { display: inline !important; }
2021h1.logo .wg_edit_img:hover { box-shadow: none !important; background-color: transparent !important; }
2022h1.logo.admin_div .wg_edit_img::before { display: none !important; }
2023h1.logo img.wg_edit_img.logo-default { position: relative !important; }
2024h1.logo img.wg_edit_img.logo-initial { position: absolute !important; }
2025
2026/* ===== 투명 헤더: 1뎁스 메뉴 색상 ===== */
2027/* 투명 헤더 초기 상태 - 메뉴 흰색 */
2028.header.opacity:not(.scrolled):not(.hovered) .gnb.pc > .menu > li > a,
2029.header.opacity:not(.scrolled):not(.hovered) .gnb.tablet1 > .menu > li > a,
2030.header.opacity:not(.scrolled):not(.hovered) .gnb.tablet2 > .menu > li > a {
2031  -webkit-text-fill-color: #fff !important;
2032  color: #fff !important;
2033}
2034/* 투명 헤더 스크롤/호버 후 - 메뉴 검정 */
2035.header.opacity.scrolled .gnb.pc > .menu > li > a,
2036.header.opacity.hovered .gnb.pc > .menu > li > a,
2037.header.opacity.scrolled .gnb.tablet1 > .menu > li > a,
2038.header.opacity.hovered .gnb.tablet1 > .menu > li > a,
2039.header.opacity.scrolled .gnb.tablet2 > .menu > li > a,
2040.header.opacity.hovered .gnb.tablet2 > .menu > li > a {
2041  -webkit-text-fill-color: var(--menu1d_color, #333) !important;
2042  color: var(--menu1d_color, #333) !important;
2043}
2044/* 비투명 헤더 - 메뉴 검정 (bg-color 제외) */
2045.header:not(.opacity):not(.bg-color) .gnb.pc > .menu > li > a,
2046.header:not(.opacity):not(.bg-color) .gnb.tablet1 > .menu > li > a,
2047.header:not(.opacity):not(.bg-color) .gnb.tablet2 > .menu > li > a {
2048  -webkit-text-fill-color: var(--menu1d_color, #333) !important;
2049  color: var(--menu1d_color, #333) !important;
2050}
2051
2052/* ===== 투명 헤더: 햄버거 버튼 색상 ===== */
2053/* 투명 헤더 초기 상태 - 햄버거 바 흰색 */
2054.header.opacity:not(.scrolled):not(.hovered) .btn-allmenu .bar {
2055  background-color: #fff !important;
2056}
2057/* 투명 헤더 스크롤/호버 후 - 햄버거 바 검정 */
2058.header.opacity.scrolled .btn-allmenu .bar,
2059.header.opacity.hovered .btn-allmenu .bar {
2060  background-color: var(--menu1d_color, #333) !important;
2061}
2062/* 비투명 헤더 - 햄버거 바 검정 (bg-color 제외) */
2063.header:not(.opacity):not(.bg-color) .btn-allmenu .bar {
2064  background-color: var(--menu1d_color, #333) !important;
2065}
2066
2067/* ===== 햄버거 메뉴 모션 ===== */
2068/* 모션4: 우정렬 → 호버 시 좌로 확장. 초기 길이는 계단식(아래>위>가운데), 호버 시 3개 다 100% */
2069.btn-allmenu { display: inline-flex !important; flex-direction: column !important; justify-content: center !important; align-items: flex-end !important; }
2070/* ★ [2026-09-23] flex-shrink:0 필수 — column flex 에서 바 마진 합(5px×6=30px)이 버튼 높이(22px)보다 커서 2px 바가 0px 로 축소돼 안 보이던 버그 */
2071.btn-allmenu .bar { transition: all .3s ease !important; margin-left: auto !important; margin-right: 0 !important; flex: 0 0 auto !important; min-height: 2px !important; }
2072.btn-allmenu .bar:nth-child(1) { width: 80% !important; }  /* 맨 위: 살짝 짧게 */
2073.btn-allmenu .bar:nth-child(2) { width: 55% !important; }  /* 가운데: 가장 짧게 */
2074.btn-allmenu .bar:nth-child(3) { width: 100% !important; } /* 맨 아래: 꽉 참 */
2075.btn-allmenu:hover .bar { width: 100% !important; }
2076
2077.btn-allmenu .bar { background-color: #ffffff !important; }
2078.header .btn-allmenu .bar,
2079.header.opacity .btn-allmenu .bar,
2080.header.opacity.scrolled .btn-allmenu .bar,
2081.header.opacity.hovered .btn-allmenu .bar,
2082.header:not(.opacity):not(.bg-color) .btn-allmenu .bar { background-color: #ffffff !important; }
2083
2084.btn-allmenu {
2085  background-color: #1d8b5a !important;
2086  border-radius: 100% !important;
2087  width: clamp(30px, calc(1.563vw + 25px), 50px) !important;
2088  height: clamp(30px, calc(1.563vw + 25px), 50px) !important;
2089  /* 좌우 여백 대칭(25%) → 바 묶음(50%)이 정확히 중앙. 우측 기준 정렬돼도 묶음 위치 고정 */
2090  padding: 0 calc(clamp(30px, calc(1.563vw + 25px), 50px) * 0.25) !important;
2091  box-sizing: border-box !important;
2092  display: inline-flex !important;
2093  flex-direction: column !important;
2094  align-items: flex-end !important;     /* 모든 바 우측 끝 정렬 (가지런) */
2095  justify-content: center !important;   /* 세로 중앙 */
2096}
2097/* 바 폭 고정 → 우측정렬 확장해도 박스 안에서 들쑥날쑥 X */
2098.btn-allmenu .bar { width: calc(clamp(30px, calc(1.563vw + 25px), 50px) * 0.5) !important; max-width: calc(clamp(30px, calc(1.563vw + 25px), 50px) * 0.5) !important; margin: calc(clamp(30px, calc(1.563vw + 25px), 50px) * 0.055) 0 !important; flex: 0 0 auto !important; }
2099.btn-allmenu .bar:nth-child(2) { width: calc(clamp(30px, calc(1.563vw + 25px), 50px) * 0.5) !important; }
2100/* 모션4 + 박스: 바영역(50%) 안에서 계단식 → 호버 시 3개 다 풀폭 */
2101.btn-allmenu .bar:nth-child(1) { width: calc(calc(clamp(30px, calc(1.563vw + 25px), 50px) * 0.5) * 0.8) !important; }
2102.btn-allmenu .bar:nth-child(2) { width: calc(calc(clamp(30px, calc(1.563vw + 25px), 50px) * 0.5) * 0.55) !important; }
2103.btn-allmenu .bar:nth-child(3) { width: calc(clamp(30px, calc(1.563vw + 25px), 50px) * 0.5) !important; }
2104.btn-allmenu:hover .bar { width: calc(clamp(30px, calc(1.563vw + 25px), 50px) * 0.5) !important; }
2105
2106/* hover 회색 배경 끄기 */
2107.gmenu-btn:hover { background: #ebebeb !important; }
2108.gmenu-btn { background: #ebebeb !important; }
2109.gmenu-btn { border: 1px solid #d6d6d6 !important; }
2110.gmenu-btn { padding: clamp(7px, calc(0.469vw  5.5px), 13px) clamp(15px, calc(0.781vw  12.5px), 25px) !important; }
2111/* 글로벌 메뉴 버튼 사이 간격 */
2112.gmenu-member-btns { gap: 20px !important; }
2113.gmenu-btn .gmenu-custom-icon {
2114  display: inline-flex;
2115  align-items: center;
2116  justify-content: center;
2117  color: inherit;
2118  font-size: 20px !important;
2119}
2120/* 커스텀 아이콘 안의 <img> 는 폰트크기 기준으로 정렬 */
2121.gmenu-btn .gmenu-custom-icon img {
2122  display: block;
2123  width: 20px;
2124  height: auto;
2125}
2126.gmenu-btn .gmenu-custom-icon i,
2127.gmenu-btn .gmenu-custom-icon svg {
2128  line-height: 1;
2129  font-size: 20px;
2130}
2131.gmenu-member-btns > a[title="회원정보"] { order: 1; }
2132.gmenu-member-btns > a[title="마이페이지"] { order: 2; }
2133.gmenu-member-btns > a[title="장바구니"] { order: 3; }
2134.gmenu-member-btns > a[title="로그아웃"] { order: 4; }
2135.gmenu-member-btns > .gmenu-member-dropdown { order: 5; }
2136.gmenu-member-btns > a[title="관리자모드"] { order: 6; }
2137.gmenu-member-btns > a[title="로그인"] { order: 7; }
2138.gmenu-member-btns > a[title="회원가입"] { order: 8; }
2139
2140/* ===== 글로벌 메뉴 버튼 스타일 변형 ===== */
2141/* 아이콘 SVG 기본 */
2142.gmenu-btn svg,
2143.gmenu-btn .gmenu-icon {
2144  width: 18px;
2145  height: 18px;
2146  flex-shrink: 0;
2147}
2148.gmenu-btn .gmenu-text {
2149  margin-left: 5px;
2150}
2151
2152/* 아이콘만 (icon) */
2153.header.gmenu-style-icon .gmenu-btn .gmenu-text { display: none; }
2154.header.gmenu-style-icon .gmenu-btn { padding: 8px; border-radius: 50%; }
2155
2156/* 텍스트만 (text) */
2157.header.gmenu-style-text .gmenu-btn svg,
2158.header.gmenu-style-text .gmenu-btn .gmenu-icon { display: none; }
2159.header.gmenu-style-text .gmenu-btn .gmenu-text { margin-left: 0; }
2160
2161/* 아이콘+텍스트 (icon_text) - 둘다 표시, 기본값 */
2162.header.gmenu-style-icon_text .gmenu-btn svg,
2163.header.gmenu-style-icon_text .gmenu-btn .gmenu-icon { display: inline-flex; }
2164.header.gmenu-style-icon_text .gmenu-btn .gmenu-text { display: inline; }
2165
2166/* 멤버 버튼 그룹 - 가로 배열 */
2167.gmenu-member-btns {
2168  display: flex;
2169  flex-direction: row;
2170  align-items: center;
2171  gap: 2px;
2172}
2173/* ★ 텍스트만 버전: 메뉴 사이 구분점 (2번째부터) */
2174.header.gmenu-style-text .gmenu-member-btns .gmenu-btn {
2175  position: relative;
2176}
2177.header.gmenu-style-text .gmenu-member-btns .gmenu-btn:not(:first-child)::before {
2178  content: '';
2179  position: absolute;
2180  left: -4px;
2181  top: 50%;
2182  transform: translateY(-50%);
2183  width: 3px;
2184  height: 3px;
2185  border-radius: 50%;
2186  background-color: #ccc;
2187}
2188/* 투명 헤더 초기 상태: 구분점 흰색 */
2189.header.opacity:not(.scrolled):not(.hovered).gmenu-style-text .gmenu-member-btns .gmenu-btn:not(:first-child)::before {
2190  background-color: rgba(255,255,255,0.5);
2191}
2192/* 컬러 배경 헤더: 구분점 흰색 */
2193.header.bg-color.gmenu-style-text .gmenu-member-btns .gmenu-btn:not(:first-child)::before {
2194  background-color: rgba(255,255,255,0.5);
2195}
2196
2197/* ★ 쇼핑몰 그룹 드롭다운 스타일 */
2198.gmenu-member-dropdown {
2199  position: relative;
2200}
2201.gmenu-member-trigger {
2202  display: flex;
2203  align-items: center;
2204  gap: 4px;
2205  padding: 4px 8px 4px 4px;
2206  background: transparent;
2207  border: none;
2208  cursor: pointer;
2209  border-radius: 20px;
2210  transition: all 0.2s ease;
2211}
2212.gmenu-member-trigger:hover {
2213  background: rgba(0,0,0,0.05);
2214}
2215.member-avatar {
2216  display: flex;
2217  align-items: center;
2218  justify-content: center;
2219  width: 28px;
2220  height: 28px;
2221  border-radius: 50%;
2222  background: linear-gradient(135deg, var(--point-color, #667eea) 0%, color-mix(in srgb, var(--point-color, #667eea) 70%, #000) 100%);
2223  color: #fff;
2224  font-size: 13px;
2225  font-weight: 600;
2226}
2227.member-arrow {
2228  font-size: 18px;
2229  color: var(--top1d-font-color, #333);
2230  transition: transform 0.2s ease;
2231}
2232.gmenu-member-dropdown.open .member-arrow {
2233  transform: rotate(180deg);
2234}
2235.gmenu-member-dropdown-menu {
2236  position: absolute;
2237  top: 100%;
2238  right: 0;
2239  min-width: 140px;
2240  background: #fff;
2241  border-radius: 8px;
2242  box-shadow: 0 4px 20px rgba(0,0,0,0.15);
2243  opacity: 0;
2244  visibility: hidden;
2245  transform: translateY(8px);
2246  transition: all 0.2s ease;
2247  z-index: 1000;
2248  padding: 6px 0;
2249  margin-top: 4px;
2250}
2251.gmenu-member-dropdown.open .gmenu-member-dropdown-menu {
2252  opacity: 1;
2253  visibility: visible;
2254  transform: translateY(0);
2255}
2256.dropdown-menu-item {
2257  display: block;
2258  padding: 10px 16px;
2259  color: #333;
2260  font-size: 13px;
2261  text-decoration: none;
2262  transition: background 0.15s ease;
2263}
2264.dropdown-menu-item:hover {
2265  background: #f5f5f5;
2266  color: #333;
2267}
2268.dropdown-menu-divider {
2269  height: 1px;
2270  background: #eee;
2271  margin: 6px 0;
2272}
2273.dropdown-menu-item.logout-item {
2274  color: #e74c3c;
2275}
2276.dropdown-menu-item.logout-item:hover {
2277  background: #fef2f2;
2278}
2279
2280/* 투명 헤더 드롭다운 트리거 */
2281.header.opacity:not(.scrolled):not(.hovered) .gmenu-member-trigger:hover {
2282  background: rgba(255,255,255,0.15);
2283}
2284.header.opacity:not(.scrolled):not(.hovered) .member-arrow {
2285  color: #fff;
2286}
2287/* 컬러 배경 헤더 드롭다운 트리거 */
2288.header.bg-color .gmenu-member-trigger:hover {
2289  background: rgba(255,255,255,0.15);
2290}
2291.header.bg-color .member-arrow {
2292  color: #fff;
2293}
2294
2295/* 검색 버튼 스타일 개선 */
2296.gmenu-search-btn {
2297  width: 36px;
2298  height: 36px;
2299  display: flex;
2300  align-items: center;
2301  justify-content: center;
2302  border-radius: 50%;
2303  background: transparent;
2304  border: none;
2305  cursor: pointer;
2306  transition: all 0.2s ease;
2307  aspect-ratio: 1 / 1;
2308}
2309.gmenu-search-btn:hover {
2310  background: rgba(0,0,0,0.05);
2311}
2312.gmenu-search-btn svg {
2313  width: 20px;
2314  height: 20px;
2315  stroke: var(--top1d-font-color, #333);
2316  fill: none;
2317  stroke-width: 2;
2318  transition: stroke 0.2s ease;
2319}
2320
2321/* 비투명 헤더 (서브페이지 기본) - 검색 아이콘 검정 (bg-color 제외) */
2322.header:not(.opacity):not(.bg-color) .gmenu-search-btn svg {
2323  stroke: #333 !important;
2324}
2325
2326/* 투명 헤더에서 검색 아이콘 흰색 */
2327.header.opacity:not(.scrolled):not(.hovered) .gmenu-search-btn svg {
2328  stroke: var(--top1d-font-color-opacity, #fff);
2329}
2330.header.opacity:not(.scrolled):not(.hovered) .gmenu-search-btn:hover {
2331  background: rgba(255,255,255,0.1);
2332}
2333
2334/* 투명 헤더 스크롤/호버 후 - 검색 아이콘 검정 */
2335.header.opacity.scrolled .gmenu-search-btn svg,
2336.header.opacity.hovered .gmenu-search-btn svg {
2337  stroke: #333;
2338}
2339
2340/* ===== 비투명 헤더 종합 스타일 (서브페이지 기본) - bg-color 제외 ===== */
2341/* 서브페이지에서 opacity 클래스 없을 때 모든 아이콘/텍스트 검정 강제 (bg-color 제외) */
2342header.header:not(.opacity):not(.bg-color) .gmenu-btn,
2343header.header:not(.opacity):not(.bg-color) .gmenu-area-inner .gmenu-btn,
2344header.header:not(.opacity):not(.bg-color) .gmenu-area-between .gmenu-btn,
2345header.header:not(.opacity):not(.bg-color) .gmenu-member-btns .gmenu-btn {
2346  color: #333 !important;
2347}
2348header.header:not(.opacity):not(.bg-color) .gmenu-btn svg,
2349header.header:not(.opacity):not(.bg-color) .gmenu-area-inner svg,
2350header.header:not(.opacity):not(.bg-color) .gmenu-area-between svg,
2351header.header:not(.opacity):not(.bg-color) .gmenu-sns-group svg,
2352header.header:not(.opacity):not(.bg-color) .gmenu-search-btn svg {
2353  stroke: #333 !important;
2354  fill: none !important;
2355}
2356header.header:not(.opacity):not(.bg-color) .lang-btn,
2357header.header:not(.opacity):not(.bg-color) .lang-select-wrap .lang-btn {
2358  color: #333 !important;
2359  border-color: rgba(0,0,0,0.15) !important;
2360}
2361
2362/* ===== 검색 오버레이 스타일 ===== */
2363.search-overlay {
2364  position: fixed;
2365  top: 0;
2366  left: 0;
2367  right: 0;
2368  bottom: 0;
2369  background: rgba(0, 0, 0, 0.92);
2370  z-index: 2147483647;
2371  display: flex;
2372  align-items: center;
2373  justify-content: center;
2374  opacity: 0;
2375  visibility: hidden;
2376  transition: opacity 0.3s ease, visibility 0.3s ease;
2377}
2378.search-overlay.active {
2379  opacity: 1;
2380  visibility: visible;
2381}
2382.search-overlay-close {
2383  position: absolute;
2384  top: 30px;
2385  right: 30px;
2386  width: 50px;
2387  height: 50px;
2388  background: transparent;
2389  border: none;
2390  cursor: pointer;
2391  display: flex;
2392  align-items: center;
2393  justify-content: center;
2394  transition: transform 0.2s ease;
2395}
2396.search-overlay-close:hover {
2397  transform: rotate(90deg);
2398}
2399.search-overlay-close svg {
2400  width: 32px;
2401  height: 32px;
2402  stroke: #fff;
2403  stroke-width: 2;
2404}
2405.search-overlay-content {
2406  width: 90%;
2407  max-width: 700px;
2408  text-align: center;
2409}
2410.search-overlay-title {
2411  color: #fff;
2412  font-size: 14px;
2413  font-weight: 400;
2414  letter-spacing: 2px;
2415  text-transform: uppercase;
2416  margin-bottom: 30px;
2417  opacity: 0.7;
2418}
2419.search-overlay-form {
2420  position: relative;
2421  display: flex;
2422  align-items: center;
2423  border-bottom: 2px solid rgba(255, 255, 255, 0.3);
2424  padding-bottom: 10px;
2425}
2426.search-overlay-form input[type="text"] {
2427  flex: 1;
2428  background: transparent !important;
2429  background-color: transparent !important;
2430  border: none !important;
2431  outline: none !important;
2432  box-shadow: none !important;
2433  color: #fff !important;
2434  font-size: clamp(20px, 4vw, 32px);
2435  font-weight: 300;
2436  padding: 10px 0;
2437  padding-right: 50px;
2438}
2439.search-overlay-form input[type="text"]:focus {
2440  background: transparent !important;
2441  background-color: transparent !important;
2442  border: none !important;
2443  outline: none !important;
2444  box-shadow: none !important;
2445  border-bottom: 2px solid #fff !important;
2446}
2447.search-overlay-form input[type="text"]::placeholder {
2448  color: rgba(255, 255, 255, 0.5);
2449}
2450.search-overlay-form button[type="submit"] {
2451  position: absolute;
2452  right: 0;
2453  top: 50%;
2454  transform: translateY(-50%);
2455  background: transparent;
2456  border: none;
2457  cursor: pointer;
2458  padding: 10px;
2459}
2460.search-overlay-form button[type="submit"] svg {
2461  width: 28px;
2462  height: 28px;
2463  stroke: #fff;
2464  stroke-width: 2;
2465}
2466.search-overlay-form button[type="submit"]:hover svg {
2467  stroke: var(--primary-500, #4f46e5);
2468}
2469/* 검색 오버레이 열릴 때 body 스크롤 방지 */
2470body.search-open {
2471  overflow: hidden;
2472}
2473</style>
2474<script>
2475  // 관리자모드에서 입력한 메뉴를 기반으로 생성된 MENU
2476  var MENU = [{"text":"이용안내","href":"/bbs/content.php?co_id=SST_3010&lang=ko&me_code=3010","target":"_self","children":[{"text":"회원가입 안내","href":"/bbs/content.php?co_id=SST_3010&lang=ko&me_code=3010","target":"_self"},{"text":"대관 안내","href":"/bbs/content.php?co_id=SST_302010&lang=ko&me_code=3020","target":"_self"},{"text":"뜨락 책방","href":"/bbs/content.php?co_id=SST_303010&lang=ko&me_code=3030","target":"_self"},{"text":"이달의 책","href":"/bbs/board.php?bo_table=SST_3050&lang=ko&me_code=3050","target":"_self"}]},{"text":"사업안내","href":"/bbs/content.php?co_id=SST_2040&lang=ko&me_code=2040","target":"_self","children":[{"text":"상담사업","href":"/bbs/content.php?co_id=SST_2040&lang=ko&me_code=2040","target":"_self"},{"text":"노년사회화교육사업","href":"/bbs/content.php?co_id=SST_201010&lang=ko&me_code=201010","target":"_self","children":[{"text":"이용안내","href":"/bbs/content.php?co_id=SST_201010&lang=ko&me_code=201010","target":"_self"},{"text":"프로그램 안내","href":"/bbs/content.php?co_id=SST_201020&lang=ko&me_code=201020","target":"_self"},{"text":"시간표","href":"/bbs/content.php?co_id=SST_201030&lang=ko&me_code=201030","target":"_self"}]},{"text":"건강생활지원사업","href":"/bbs/content.php?co_id=SST_2080&lang=ko&me_code=2080","target":"_self"},{"text":"지역복지사업","href":"/bbs/content.php?co_id=SST_2070&lang=ko&me_code=2070","target":"_self"},{"text":"노인맞춤돌봄서비스사업","href":"/bbs/content.php?co_id=SST_2020&lang=ko&me_code=2020","target":"_self"},{"text":"특화사업","href":"/bbs/content.php?co_id=SST_203020&lang=ko&me_code=203020","target":"_self","children":[{"text":"동행하는 집밥 남선생","href":"/bbs/content.php?co_id=SST_203020&lang=ko&me_code=203020","target":"_self"},{"text":"디지로그 골드 ON:","href":"/bbs/content.php?co_id=SST_203030&lang=ko&me_code=203030","target":"_self"},{"text":"우리 무대에 서다","href":"/bbs/content.php?co_id=SST_203010&lang=ko&me_code=203010","target":"_self"}]}]},{"text":"나눔봉사","href":"/bbs/content.php?co_id=SST_403010&lang=ko&me_code=403010","target":"_self","children":[{"text":"기부천사 후원안내","href":"/bbs/content.php?co_id=SST_403010&lang=ko&me_code=403010","target":"_self","children":[{"text":"후원안내","href":"/bbs/content.php?co_id=SST_403010&lang=ko&me_code=403010","target":"_self"},{"text":"후원신청","href":"/bbs/write.php?bo_table=SST_403020&lang=ko&me_code=403020","target":"_self"}]},{"text":"나눔천사 봉사안내","href":"/bbs/content.php?co_id=SST_401010&lang=ko&me_code=401010","target":"_self","children":[{"text":"자원봉사안내","href":"/bbs/content.php?co_id=SST_401010&lang=ko&me_code=401010","target":"_self"},{"text":"자원봉사신청","href":"/bbs/write.php?bo_table=SST_401020&lang=ko&me_code=401020","target":"_self"},{"text":"나눔천사 이야기","href":"/bbs/board.php?bo_table=SST_401030&lang=ko&me_code=401030","target":"_self"}]}]},{"text":"뜨락소식","href":"/bbs/board.php?bo_table=SST_5010&lang=ko&me_code=5010","target":"_self","children":[{"text":"사진으로 보는 복지관","href":"/bbs/board.php?bo_table=SST_5010&lang=ko&me_code=5010","target":"_self"},{"text":"기관 일정","href":"/bbs/board.php?bo_table=SST_5020&lang=ko&me_code=5020","target":"_self"},{"text":"홍보 영상","href":"/bbs/board.php?bo_table=SST_5030&lang=ko&me_code=5030","target":"_self"},{"text":"소식지","href":"/bbs/board.php?bo_table=SST_5040&lang=ko&me_code=5040","target":"_self"},{"text":"채용정보","href":"/bbs/board.php?bo_table=SST_5050&lang=ko&me_code=5050","target":"_self"}]},{"text":"소통참여","href":"/bbs/board.php?bo_table=SST_6010&lang=ko&me_code=6010","target":"_self","children":[{"text":"공지사항","href":"/bbs/board.php?bo_table=SST_6010&lang=ko&me_code=6010","target":"_self"},{"text":"어르신들의 이야기","href":"/bbs/board.php?bo_table=SST_6020&lang=ko&me_code=6020","target":"_self"},{"text":"복지뉴스","href":"/bbs/board.php?bo_table=SST_6030&lang=ko&me_code=6030","target":"_self"},{"text":"언론보도자료","href":"/bbs/board.php?bo_table=SST_6040&lang=ko&me_code=6040","target":"_self"},{"text":"재정보고","href":"/bbs/board.php?bo_table=SST_6050&lang=ko&me_code=6050","target":"_self"}]},{"text":"복지관 소개","href":"/bbs/content.php?co_id=SST_1010&lang=ko&me_code=1010","target":"_self","children":[{"text":"인사말","href":"/bbs/content.php?co_id=SST_1010&lang=ko&me_code=1010","target":"_self"},{"text":"법인소개","href":"/bbs/content.php?co_id=SST_1060&lang=ko&me_code=1060","target":"_self"},{"text":"미션·비젼","href":"/bbs/content.php?co_id=SST_1020&lang=ko&me_code=1020","target":"_self"},{"text":"연혁","href":"/bbs/content.php?co_id=SST_1070&lang=ko&me_code=1070","target":"_self"},{"text":"시설소개","href":"/bbs/content.php?co_id=SST_1030&lang=ko&me_code=1030","target":"_self"},{"text":"함께하는 사람들","href":"/bbs/content.php?co_id=SST_1040&lang=ko&me_code=1040","target":"_self"},{"text":"오시는길","href":"/bbs/content.php?co_id=SST_1050&lang=ko&me_code=1050","target":"_self"}]}];
2477</script>
2477
2478
2479<!-- (추가) JS에서도 방어: 렌더링 직전에 target 정규화 -->
2480<script>
2481function normalizeTargetJS(t){
2482  if(!t) return '';
2483  t = String(t).trim().toLowerCase();
2484  if (t === 'self')  return '_self';
2485  if (t === 'blank' || t === '_new') return '_blank';
2486  if (t === '_self' || t === '_blank' || t === '_parent' || t === '_top') return t;
2487  return ''; // 이상한 값은 제거
2488}
2489</script>
2489
2490
2491<style>
2492/* ★ 헤더 JSON 설정 CSS 변수 */
2493:root {
2494  --header-h: 130px;
2495  --header-h-tablet1: 100px;
2496  --header-h-tablet2: 80px;
2497  --header-h-mo: 60px;
2498  --header-padding-top: 0px;
2499  --header-right-gap: clamp(5px, calc(1.953vw + -1.25px), 30px);
2500  --gmenu-inner-top: 5px;
2501  --gmenu-inner-right: 0px;
2502  --gmenu-font-size: 18px;
2503  --logo-margin-top: 0px;
2504  --header-logo-width: 325px;
2505  --header-logo-width-pc: 325px;
2506  --header-logo-width-mo: 200px;
2507  --wide-padding-left: 20px;
2508  --wide-padding-right: 20px;
2509  --header-bg-color: #333333;
2510  --header-bg-color-rgb: 51,51,51;
2511  --header-bg-opacity: 0.85;
2512  --header-bg-blur: 10px;
2513  --header-white-opacity: 0.85;
2514  --header-white-blur: 10px;
2515  --header-white-rgb: 255,255,255;
2516  --header-white-opacity-scrolled: 0.85;
2517  /* 메뉴 설정 (새 변수명 + 기존 호환) */
2518  --menu-gap: clamp(0px, calc(4.688vw + -15px), 60px);
2519  --top1d-margin-right: clamp(0px, calc(4.688vw + -15px), 60px);
2520  --menu-gap-tablet1: 30px;
2521  --menu-gap-tablet2: 30px;
2522  --submenu-width: 250px;
2523  --submenu-gap: 0px;
2524  --depth1-font-size: clamp(15px, calc(0.00547 * 100vw + 13.25px), 22px);
2525  --top1d-font-size: clamp(15px, calc(0.00547 * 100vw + 13.25px), 22px);
2526  --depth2-font-size: clamp(13px, calc(0.00313 * 100vw + 12px), 17px);
2527  --top2d-font-size: clamp(13px, calc(0.00313 * 100vw + 12px), 17px);
2528}
2529/* 태블릿1 (1024~1699px) */
2530@media screen and (max-width: 1699px) and (min-width: 1024px) {
2531  :root {
2532    --header-h: 100px;
2533    --header-padding-top: 0px;
2534    --gmenu-inner-top: 5px;
2535    --gmenu-inner-right: 0px;
2536    --gmenu-font-size: 13px;
2537    --logo-margin-top: 0px;
2538    --header-logo-width: 300px;
2539  }
2540}
2541/* 태블릿2 (768~1023px) */
2542@media screen and (max-width: 1023px) and (min-width: 768px) {
2543  :root {
2544    --header-h: 80px;
2545    --header-padding-top: 0px;
2546    --gmenu-inner-top: 5px;
2547    --gmenu-inner-right: 30px;
2548    --gmenu-font-size: 12px;
2549    --logo-margin-top: 0px;
2550    --header-logo-width: 280px;
2551  }
2552}
2553/* 모바일 (~767px) */
2554@media screen and (max-width: 767px) {
2555  :root {
2556    --header-h: 60px;
2557    --header-padding-top: 0px;
2558    --gmenu-inner-right: 45px;
2559    --gmenu-font-size: 12px;
2560    --header-logo-width: 200px;
2561  }
2562}
2563
2564/* ★ 와이드 모드 좌우 패딩 */
2565.header > .contents-container.container-100 {
2566  padding-left: var(--wide-padding-left, 20px);
2567  padding-right: var(--wide-padding-right, 20px);
2568}
2569
2570/* ★ 메뉴 표시/숨김 (디바이스별) - PC:1700+, 태블릿1:1024~1700, 태블릿2:768~1023, 모바일:~767 */
2571@media screen and (max-width: 1023px) and (min-width: 768px) {
2572  .header .gnb_wrap, .header .gnb { display: none !important; }
2573}
2574@media screen and (max-width: 767px) {
2575  .header .gnb_wrap, .header .gnb { display: none !important; }
2576}
2577
2578
2579/* ★ 메뉴 폰트 크기 & 간격 (실제 HTML 구조에 맞춤) */
2580.head_inner .gnb.pc > .menu > li > a,
2581.head_inner .gnb.tablet1 > .menu > li > a,
2582.head_inner .gnb.tablet2 > .menu > li > a,
2583.head_inner .gnb.mo > .menu > li > a {
2584  font-size: var(--top1d-font-size) !important;
2585}
2586.head_inner .gnb.pc > .menu,
2587.head_inner .gnb.tablet1 > .menu,
2588.head_inner .gnb.tablet2 > .menu,
2589.head_inner .gnb.mo > .menu {
2590  gap: var(--top1d-margin-right);
2591}
2592/* ★ 메뉴 사이 간격 브레이크포인트별 적용 (JS가 .gnb 에 pc/tablet1/tablet2 부착)
2593   비워두면 PHP 단계에서 상위값(태블릿2<태블릿1<PC) 이 들어가므로 항상 유효 */
2594.head_inner .gnb.tablet1 > .menu { gap: var(--menu-gap-tablet1, var(--top1d-margin-right)); }
2595.head_inner .gnb.tablet2 > .menu { gap: var(--menu-gap-tablet2, var(--top1d-margin-right)); }
2596@media screen and (min-width:1024px) and (max-width:1700px) {
2597  header .header_right > .gnb.tablet1 > .menu,
2598  .head_inner .gnb.tablet1 > .menu {
2599    width: auto !important;
2600    justify-content: flex-end !important;
2601    gap: var(--menu-gap-tablet1) !important;
2602  }
2603}
2604@media screen and (min-width:768px) and (max-width:1023px) {
2605  header .header_right > .gnb.tablet2 > .menu,
2606  .head_inner .gnb.tablet2 > .menu {
2607    width: auto !important;
2608    justify-content: flex-end !important;
2609    gap: var(--menu-gap-tablet2) !important;
2610  }
2611}
2612.gnb.pc .menu > li > .sublist .subitem a,
2613.gnb.tablet1 .menu > li > .sublist .subitem a,
2614.gnb.tablet2 .menu > li > .sublist .subitem a,
2615.gnb.mo .menu > li > .sublist .subitem a {
2616  font-size: var(--top2d-font-size) !important;
2617}
2618.gnb.pc .menu > li > .sublist,
2619.gnb.tablet1 .menu > li > .sublist,
2620.gnb.tablet2 .menu > li > .sublist,
2621.gnb.mo .menu > li > .sublist {
2622  min-width: var(--submenu-width);
2623}
2624
2625/* ★ 서브메뉴 개별 너비 */
2626
2627/* ★ 1뎁스↔2뎁스 간격 */
2628.gnb.pc .menu > li > .sublist,
2629.gnb.tablet1 .menu > li > .sublist,
2630.gnb.tablet2 .menu > li > .sublist,
2631.gnb.mo .menu > li > .sublist {
2632  margin-top: var(--submenu-gap, 0px);
2633}
2634
2635
2636/* 로고 크기 적용 - 디바이스별 CSS 변수 사용 */
2637.header .logo img {
2638  max-width: var(--header-logo-width, 180px);
2639}
2640
2641/* ★ 로고 2개 겹침 처리 (모든 페이지) */
2642.header .logo {
2643  position: relative;
2644  margin-top: var(--logo-margin-top, 0px);
2645}
2646/* 두 로고 이미지 모두 동일한 위치에 겹치도록 설정 */
2647.header .logo > a { position: relative; display: inline-flex; align-items: center; }
2648.header .logo img.logo-default {
2649  position: relative;
2650  transition: opacity 0.3s ease;
2651}
2652.header .logo img.logo-initial {
2653  position: absolute;
2654  top: 0;
2655  left: 0;
2656  height: 100%;
2657  width: auto;
2658  transition: opacity 0.3s ease;
2659}
2660
2661/* 서브 페이지: opacity 방식 전환 (기본 - 흰색 배경용) */
2662body:not(.is-main) .header .logo img {
2663  transition: opacity 0.3s ease;
2664}
2665body:not(.is-main) .header .logo img.logo-default {
2666  opacity: 1;
2667}
2668body:not(.is-main) .header .logo img.logo-initial {
2669  opacity: 0;
2670}
2671/* 서브 페이지: 컬러 배경(1-4)일 때 logo-initial 표시 */
2672body:not(.is-main) .header.bg-color .logo img.logo-default {
2673  opacity: 0;
2674}
2675body:not(.is-main) .header.bg-color .logo img.logo-initial {
2676  opacity: 1;
2677}
2678
2679/* 메인 페이지: display 방식 유지 (기존 style.css와 호환) */
2680body.is-main .header .logo img.logo-default,
2681body.is-main .header .logo img.logo-initial {
2682  transition: none;
2683}
2684
2685/* ★ 연합 서브메인 로고: 1장만 출력하고 filter로 흰↔검 전환 (union-sub-logo)
2686   - 스크롤 전(투명 헤더): 흰색 (filter)
2687   - 스크롤/hover: 원본 색(검정) */
2688.header .logo .union-sub-logo {
2689  opacity: 1 !important;            /* 서브페이지 기본 토글 무시: 항상 보이게 */
2690  transition: filter 0.3s ease, color 0.3s ease;
2691}
2692/* 이미지 로고: 스크롤 전 흰색 filter */
2693.header .logo img.union-sub-logo {
2694  filter: var(--logo-White);
2695}
2696.header.scrolled .logo img.union-sub-logo,
2697.header.hovered .logo img.union-sub-logo,
2698.header.bg-color .logo img.union-sub-logo {
2699  filter: none;                    /* 스크롤·hover·컬러배경: 원본 검정 */
2700}
2701/* 텍스트 로고(span): 스크롤 전 흰 글씨 → 스크롤·hover 시 원본 색 */
2702.header .logo span.union-sub-logo,
2703.header .logo span.union-sub-logo * {
2704  color: #fff !important;
2705}
2706.header.scrolled .logo span.union-sub-logo,
2707.header.hovered .logo span.union-sub-logo,
2708.header.bg-color .logo span.union-sub-logo,
2709.header.scrolled .logo span.union-sub-logo *,
2710.header.hovered .logo span.union-sub-logo *,
2711.header.bg-color .logo span.union-sub-logo * {
2712  color: inherit !important;
2713}
2714
2715/* ★ 메뉴 정렬 */
2716/* 왼쪽 정렬: 로고 바로 옆에 메뉴 */
2717.header.menu-left .head_inner {
2718  justify-content: flex-start;
2719}
2720.header.menu-left .header_right {
2721  flex: 1;
2722  justify-content: flex-start;
2723}
2724.header.menu-left .gnb.pc {
2725  margin-left: clamp(20px, 3vw, 50px);
2726  margin-right: auto;
2727}
2728
2729/* 중앙 정렬: 화면 중앙에 메뉴 */
2730.header.menu-center .head_inner {
2731  position: relative;
2732}
2733.header.menu-center .gnb.pc {
2734  position: absolute;
2735  left: 50%;
2736  top: 0;
2737  height: 100%;
2738  transform: translateX(-50%);
2739  z-index: 1;
2740  pointer-events: none; /* 하위 요소 클릭 방해 방지 */
2741}
2742.header.menu-center .gnb.pc .menu {
2743  justify-content: center;
2744  pointer-events: auto; /* 메뉴 아이템은 클릭 가능 */
2745}
2746/* 중앙 정렬시 header_right: gnb가 absolute로 빠지므로 나머지를 우측 정렬 */
2747.header.menu-center .header_right {
2748  justify-content: flex-end !important;
2749}
2750/* 중앙 정렬시 로고/햄버거/사이트맵 버튼은 메뉴 위에 표시 */
2751.header.menu-center .logo {
2752  position: relative;
2753  z-index: 10;
2754}
2755.header.menu-center .allmenu,
2756.header.menu-center .sitemap {
2757  position: relative;
2758  z-index: 10; /* 메뉴 위에 표시 */
2759}
2760/* 중앙 정렬시 between 영역도 메뉴 위에 표시 */
2761.header.menu-center .gmenu-area-between {
2762  position: relative;
2763  z-index: 10;
2764}
2765/* inner 글로벌메뉴는 이미 absolute 배치 — z-index만 보강 */
2766.header.menu-center .gmenu-area-inner {
2767  z-index: 10;
2768}
2769
2770/* ★ 사이드바 좌측 모드: 모바일 전용 (햄버거 좌측, 로고 중앙, 글로벌 우측) */
2771@media (max-width: 1200px) {
2772  .header.sidebar-left .head_inner {
2773    position: relative;
2774    justify-content: center;
2775  }
2776  /* 햄버거를 header 기준으로 좌측 배치 (fixed 사용) */
2777  .header.sidebar-left .allmenu {
2778    position: fixed !important;
2779    left: 15px !important;
2780    right: auto !important;
2781    top: calc(var(--header-h, 60px) / 2);
2782    transform: translateY(-50%);
2783    z-index: 1000;
2784  }
2785  .header.sidebar-left .logo {
2786    margin: 0 auto;
2787  }
2788  .header.sidebar-left .header_right {
2789    position: static;
2790  }
2791  .header.sidebar-left .header_right .gnb.pc,
2792  .header.sidebar-left .header_right .gnb {
2793    display: none !important;
2794  }
2795  /* 글로벌 메뉴 영역은 우측에 배치 */
2796  .header.sidebar-left .gmenu-area-between {
2797    position: fixed !important;
2798    right: 15px !important;
2799    left: auto !important;
2800    top: calc(var(--header-h, 60px) / 2);
2801    transform: translateY(-50%);
2802    z-index: 1000;
2803  }
2804}
2805
2806/* ★ 투명 배경 헤더 (1-1, 1-2 타입) - JSON 설정 기반 */
2807.header.opacity {
2808  background-color: transparent !important;
2809}
2810/* 투명 배경: 스크롤/호버 시 흰색 배경 (투명도/블러) */
2811.header.opacity.scrolled,
2812.header.opacity.hovered {
2813  background-color: rgba(var(--header-white-rgb, 255,255,255), var(--header-white-opacity-scrolled, var(--header-white-opacity, 0.85))) !important;
2814  backdrop-filter: blur(var(--header-white-blur, 10px));
2815  -webkit-backdrop-filter: blur(var(--header-white-blur, 10px));
2816}
2817/* ★ 메인 페이지: 스크롤/호버 시 흰색 배경 (body.is-main 우선순위 높임) */
2818body.is-main .header.opacity.scrolled,
2819body.is-main .header.opacity.hovered {
2820  background-color: rgba(var(--header-white-rgb, 255,255,255), var(--header-white-opacity-scrolled, var(--header-white-opacity, 0.85))) !important;
2821  backdrop-filter: blur(var(--header-white-blur, 10px));
2822  -webkit-backdrop-filter: blur(var(--header-white-blur, 10px));
2823}
2824
2825/* 투명 배경: 흰색 로고/텍스트/아이콘 (logo-white 클래스) */
2826.header.logo-white .gnb.pc > .menu > li > a,
2827.header.logo-white .gnb.tablet1 > .menu > li > a,
2828.header.logo-white .gnb.tablet2 > .menu > li > a {
2829  -webkit-text-fill-color: #fff !important;
2830  color: #fff !important;
2831}
2832.header.logo-white .btn-allmenu .bar {
2833  background-color: #fff !important;
2834}
2835.header.logo-white .gmenu-btn {
2836  color: #fff !important;
2837}
2838.header.logo-white .gmenu-btn svg,
2839.header.logo-white .gmenu-search-btn svg,
2840.header.logo-white .gmenu-sns-group svg {
2841  stroke: #fff !important;
2842}
2843.header.logo-white .lang-select-wrap .lang-btn {
2844  color: #fff !important;
2845  border-color: rgba(255,255,255,0.3) !important;
2846}
2847/* 투명 배경: 로고 이미지 (logo-initial 표시) - opacity 방식 */
2848.header.logo-white .logo img.logo-default { opacity: 0; }
2849.header.logo-white .logo img.logo-initial { opacity: 1; }
2850
2851/* 투명 배경 스크롤/호버 후: 원래 색상으로 복귀 */
2852.header.opacity.scrolled .gnb.pc > .menu > li > a,
2853.header.opacity.hovered .gnb.pc > .menu > li > a,
2854.header.opacity.scrolled .gnb.tablet1 > .menu > li > a,
2855.header.opacity.hovered .gnb.tablet1 > .menu > li > a,
2856.header.opacity.scrolled .gnb.tablet2 > .menu > li > a,
2857.header.opacity.hovered .gnb.tablet2 > .menu > li > a {
2858  -webkit-text-fill-color: var(--menu1d_color) !important;
2859  color: var(--menu1d_color) !important;
2860}
2861.header.opacity.scrolled .btn-allmenu .bar,
2862.header.opacity.hovered .btn-allmenu .bar {
2863  background-color: var(--menu1d_color) !important;
2864}
2865.header.opacity.scrolled .gmenu-btn,
2866.header.opacity.hovered .gmenu-btn {
2867  color: var(--menu1d_color) !important;
2868}
2869.header.opacity.scrolled .gmenu-btn svg,
2870.header.opacity.hovered .gmenu-btn svg,
2871.header.opacity.scrolled .gmenu-search-btn svg,
2872.header.opacity.hovered .gmenu-search-btn svg {
2873  stroke: var(--menu1d_color) !important;
2874}
2875.header.opacity.scrolled .lang-select-wrap .lang-btn,
2876.header.opacity.hovered .lang-select-wrap .lang-btn {
2877  color: var(--menu1d_color) !important;
2878  border-color: rgba(51,51,51,0.3) !important;
2879}
2880/* 스크롤/호버 후 로고 전환 (logo-default 표시) - opacity 방식 */
2881.header.opacity.scrolled .logo img.logo-default,
2882.header.opacity.hovered .logo img.logo-default { opacity: 1; }
2883.header.opacity.scrolled .logo img.logo-initial,
2884.header.opacity.hovered .logo img.logo-initial { opacity: 0; }
2885
2886/* ★ 흰색 배경 헤더 (1-3 타입) - 투명도/블러 적용 */
2887.header.bg-white {
2888  background-color: rgba(var(--header-white-rgb, 255,255,255), var(--header-white-opacity, 0.85)) !important;
2889  backdrop-filter: blur(var(--header-white-blur, 10px));
2890  -webkit-backdrop-filter: blur(var(--header-white-blur, 10px));
2891}
2892.header.bg-white.scrolled,
2893.header.bg-white.hovered,
2894/* ★ bg-white 헤더는 스크롤 JS가 scrolled 클래스를 안 붙임(opacity/bg-color만) → 전 헤더 공통으로 붙는 .bg 기준 적용 */
2895.header.bg-white.bg {
2896  background-color: rgba(var(--header-white-rgb, 255,255,255), var(--header-white-opacity-scrolled, var(--header-white-opacity, 0.85))) !important;
2897  backdrop-filter: blur(var(--header-white-blur, 10px));
2898  -webkit-backdrop-filter: blur(var(--header-white-blur, 10px));
2899}
2900/* ★ cover 모드 스티키 헤더 = "스크롤 후" 상태 그 자체 — scrolled/bg 클래스가 안 붙으므로 항상 스크롤 후 투명도 적용 */
2901.header.header-sticky.bg-white {
2902  background-color: rgba(var(--header-white-rgb, 255,255,255), var(--header-white-opacity-scrolled, var(--header-white-opacity, 0.85))) !important;
2903}
2904/* 흰색 배경(1-3): 로고 전환 (logo-default 표시) - 배경이 흰색이므로 기본 로고 */
2905.header.bg-white .logo img.logo-default {
2906  opacity: 1 !important;
2907  display: block !important;
2908}
2909.header.bg-white .logo img.logo-initial {
2910  opacity: 0 !important;
2911  display: none !important;
2912}
2913
2914/* ★ 흰색 배경(1-3): 메뉴 색상 검은색 (PC, 태블릿1, 태블릿2 모두) */
2915.header.bg-white .gnb.pc > .menu > li > a,
2916.header.bg-white .gnb.tablet1 > .menu > li > a,
2917.header.bg-white .gnb.tablet2 > .menu > li > a,
2918.header.bg-white .gnb.mo > .menu > li > a {
2919  -webkit-text-fill-color: var(--menu1d_color, #333) !important;
2920  color: var(--menu1d_color, #333) !important;
2921}
2922
2923/* ★ 흰색 배경(1-3): 햄버거 버튼 바 검은색 */
2924.header.bg-white .btn-allmenu .bar {
2925  background-color: var(--menu1d_color, #333) !important;
2926}
2927
2928/* ★ 흰색 배경(1-3): 글로벌 메뉴 버튼/아이콘 검은색 */
2929.header.bg-white .gmenu-btn,
2930.header.bg-white .gmenu-area-inner .gmenu-btn,
2931.header.bg-white .gmenu-area-between .gmenu-btn {
2932  color: var(--menu1d_color, #333) !important;
2933}
2934.header.bg-white .gmenu-btn svg,
2935.header.bg-white .gmenu-search-btn svg,
2936.header.bg-white .gmenu-sns-group svg,
2937.header.bg-white .gmenu-area-inner svg,
2938.header.bg-white .gmenu-area-between svg {
2939  stroke: var(--menu1d_color, #333) !important;
2940}
2941.header.bg-white .lang-select-wrap .lang-btn,
2942.header.bg-white .gmenu-area-inner .lang-btn,
2943.header.bg-white .gmenu-area-between .lang-btn {
2944  color: var(--menu1d_color, #333) !important;
2945  border-color: rgba(0,0,0,0.2) !important;
2946}
2947
2948/* ★ 1-1 ~ 1-3 공통: hover/scroll 시 흰색 배경 (투명도/블러 적용) */
2949.header.header-type-11.hovered,
2950.header.header-type-11.scrolled,
2951.header.header-type-12.hovered,
2952.header.header-type-12.scrolled,
2953.header.header-type-13.hovered,
2954.header.header-type-13.scrolled {
2955  background-color: rgba(var(--header-white-rgb, 255,255,255), var(--header-white-opacity-scrolled, var(--header-white-opacity, 0.85))) !important;
2956  backdrop-filter: blur(var(--header-white-blur, 10px));
2957  -webkit-backdrop-filter: blur(var(--header-white-blur, 10px));
2958}
2959
2960
2961/* ★ 컬러 배경 헤더 (1-4 타입) */
2962.header.bg-color {
2963  background-color: rgba(var(--header-bg-color-rgb, 51,51,51), var(--header-bg-opacity, 0.85)) !important;
2964  backdrop-filter: blur(var(--header-bg-blur, 10px));
2965  -webkit-backdrop-filter: blur(var(--header-bg-blur, 10px));
2966}
2967.header.bg-color.scrolled,
2968.header.bg-color.hovered {
2969  background-color: rgba(var(--header-bg-color-rgb, 51,51,51), var(--header-bg-opacity, 0.85)) !important;
2970  backdrop-filter: blur(var(--header-bg-blur, 10px));
2971  -webkit-backdrop-filter: blur(var(--header-bg-blur, 10px));
2972}
2973
2974/* 컬러 배경(1-4): 기본 상태에서 글로벌 메뉴 흰색 */
2975.header.bg-color .gmenu-btn,
2976.header.bg-color .gmenu-area-inner .gmenu-btn,
2977.header.bg-color .gmenu-area-between .gmenu-btn {
2978  color: #fff !important;
2979}
2980.header.bg-color .gmenu-btn svg,
2981.header.bg-color .gmenu-search-btn svg,
2982.header.bg-color .gmenu-sns-group svg,
2983.header.bg-color .gmenu-area-inner svg,
2984.header.bg-color .gmenu-area-between svg {
2985  stroke: #fff !important;
2986}
2987.header.bg-color .lang-select-wrap .lang-btn,
2988.header.bg-color .gmenu-area-inner .lang-btn,
2989.header.bg-color .gmenu-area-between .lang-btn {
2990  color: #fff !important;
2991  border-color: rgba(255,255,255,0.3) !important;
2992}
2993/* 컬러 배경(1-4): 기본 상태에서 메뉴/햄버거 흰색 (PC, 태블릿, 모바일 모두) */
2994/* 평상시 (모든 상태 공통 base) — 헤더 전체 hover(.hovered)/스크롤(.scrolled) 시 검정 반전도 여기서 off색으로 막음 */
2995.header.bg-color .gnb.pc > .menu > li > a,
2996.header.bg-color .gnb.tablet1 > .menu > li > a,
2997.header.bg-color .gnb.tablet2 > .menu > li > a,
2998.header.bg-color .gnb.mo > .menu > li > a,
2999html body .head_inner .header.bg-color.hovered .gnb.pc > .menu > li > a,
3000html body .head_inner .header.bg-color.scrolled .gnb.pc > .menu > li > a,
3001html body .head_inner .header.bg-color.hovered .gnb.tablet1 > .menu > li > a,
3002html body .head_inner .header.bg-color.scrolled .gnb.tablet1 > .menu > li > a,
3003html body .head_inner .header.bg-color.hovered .gnb.tablet2 > .menu > li > a,
3004html body .head_inner .header.bg-color.scrolled .gnb.tablet2 > .menu > li > a {
3005  background: none !important;
3006  background-image: none !important;
3007  -webkit-text-fill-color: #fff !important;
3008  color: #fff !important;
3009}
3010/* ★ 개별 1뎁스 메뉴 hover 시 = 호버색 (지정 없으면 off색과 동일) */
3011html body .head_inner .header.bg-color .gnb.pc > .menu > li.cell:hover > a,
3012html body .head_inner .header.bg-color .gnb.pc > .menu > li:hover > a,
3013html body .head_inner .header.bg-color .gnb.pc > .menu > li:focus-within > a {
3014  background: none !important;
3015  background-image: none !important;
3016  -webkit-text-fill-color: #fff !important;
3017  color: #fff !important;
3018}
3019.header.bg-color .btn-allmenu .bar {
3020  background-color: #fff !important;
3021}
3022
3023/* 컬러 배경: 흰색 테마 (로고, 텍스트, 아이콘) - PC, 태블릿, 모바일 모두 */
3024.header.theme-white .gnb.pc > .menu > li > a,
3025.header.theme-white .gnb.tablet1 > .menu > li > a,
3026.header.theme-white .gnb.tablet2 > .menu > li > a,
3027.header.theme-white .gnb.mo > .menu > li > a {
3028  -webkit-text-fill-color: #fff !important;
3029  color: #fff !important;
3030}
3031.header.theme-white .btn-allmenu .bar {
3032  background-color: #fff !important;
3033}
3034.header.theme-white .gmenu-btn {
3035  color: #fff !important;
3036}
3037.header.theme-white .gmenu-btn svg,
3038.header.theme-white .gmenu-search-btn svg,
3039.header.theme-white .gmenu-sns-group svg {
3040  stroke: #fff !important;
3041}
3042.header.theme-white .lang-select-wrap .lang-btn {
3043  color: #fff !important;
3044  border-color: rgba(255,255,255,0.3) !important;
3045}
3046/* 컬러 배경(1-4): 로고 전환 (logo-initial 표시) - opacity 방식 */
3047.header.theme-white .logo img.logo-default { opacity: 0; }
3048.header.theme-white .logo img.logo-initial { opacity: 1; }
3049
3050/* 컬러 배경: 스크롤/호버 후에도 동일 유지 (PC, 태블릿, 모바일 모두) */
3051.header.bg-color.scrolled .gnb.pc > .menu > li > a,
3052.header.bg-color.hovered .gnb.pc > .menu > li > a,
3053.header.bg-color.scrolled .gnb.tablet1 > .menu > li > a,
3054.header.bg-color.hovered .gnb.tablet1 > .menu > li > a,
3055.header.bg-color.scrolled .gnb.tablet2 > .menu > li > a,
3056.header.bg-color.hovered .gnb.tablet2 > .menu > li > a,
3057.header.bg-color.scrolled .gnb.mo > .menu > li > a,
3058.header.bg-color.hovered .gnb.mo > .menu > li > a {
3059  -webkit-text-fill-color: #fff !important;
3060  color: #fff !important;
3061}
3062.header.bg-color.scrolled .btn-allmenu .bar,
3063.header.bg-color.hovered .btn-allmenu .bar {
3064  background-color: #fff !important;
3065}
3066.header.bg-color.scrolled .gmenu-btn,
3067.header.bg-color.hovered .gmenu-btn {
3068  color: #fff !important;
3069}
3070.header.bg-color.scrolled .gmenu-btn svg,
3071.header.bg-color.hovered .gmenu-btn svg,
3072.header.bg-color.scrolled .gmenu-search-btn svg,
3073.header.bg-color.hovered .gmenu-search-btn svg {
3074  stroke: #fff !important;
3075}
3076.header.bg-color.scrolled .lang-select-wrap .lang-btn,
3077.header.bg-color.hovered .lang-select-wrap .lang-btn {
3078  color: #fff !important;
3079  border-color: rgba(255,255,255,0.3) !important;
3080}
3081/* 컬러 배경 스크롤/호버: 로고 전환 (1-4 타입은 항상 컬러 배경이므로 logo-initial 유지) - opacity 방식 */
3082.header.bg-color.scrolled .logo img.logo-default,
3083.header.bg-color.hovered .logo img.logo-default { opacity: 0 !important; }
3084.header.bg-color.scrolled .logo img.logo-initial,
3085.header.bg-color.hovered .logo img.logo-initial { opacity: 1 !important; }
3086/* 컬러 배경 스크롤/호버: 로고 구분선 + 세컨드 로고 */
3087.header.bg-color.scrolled .logo-divider { background: rgba(255,255,255,0.3) !important; }
3088.header.bg-color.scrolled .logo-second .logo-default { opacity: 0 !important; }
3089.header.bg-color.scrolled .logo-second .logo-initial { opacity: 1 !important; }
3090
3091/* ★ 스티키 헤더: 본체 backdrop-filter 완전 제거 → ::before로 분리 */
3092#gnb-sticky,
3093#gnb-sticky.bg,
3094#gnb-sticky.bg-white,
3095#gnb-sticky.bg-white.bg,
3096#gnb-sticky.bg-white.hovered,
3097#gnb-sticky.bg-white.scrolled,
3098#gnb-sticky.bg-color,
3099#gnb-sticky.bg-color.bg,
3100#gnb-sticky.bg-color.hovered,
3101#gnb-sticky.bg-color.scrolled,
3102#gnb-sticky.hovered,
3103#gnb-sticky.scrolled {
3104  -webkit-backdrop-filter: none !important;
3105  backdrop-filter: none !important;
3106  position: relative;
3107}
3108#gnb-sticky > * { position: relative; z-index: 1; }
3109#gnb-sticky::before {
3110  content: ''; position: absolute; inset: 0; z-index: 0;
3111  -webkit-backdrop-filter: blur(var(--header-white-blur, 10px));
3112          backdrop-filter: blur(var(--header-white-blur, 10px));
3113  pointer-events: none;
3114}
3115#gnb-sticky.bg-color::before {
3116  -webkit-backdrop-filter: blur(var(--header-bg-blur, 10px));
3117          backdrop-filter: blur(var(--header-bg-blur, 10px));
3118}
3119</style>
3120<header class="header bg-white header-type-13 allmenu-pcview gmenu-style-icon_text dropdown2-menu dd2-depth3-inline gm-between" id="gnb" role="banner" style="--dd2-bg:var(--primary, #2563eb);--dd2-hover-bg:#333333">
3121  	<!-- ✅ 스킵링크 (접근성) -->
3122<style>.skiplinks{position:fixed;top:0;left:0;width:0;height:0;overflow:visible;z-index:2147483647;margin:0;padding:0;border:0}.skiplink{position:fixed;top:-9999px;left:10px;padding:10px 14px;background:#fff;color:#000;font-weight:700;text-decoration:none;border-radius:0 0 8px 8px;z-index:2147483647;white-space:nowrap;box-shadow:0 2px 8px rgba(0,0,0,.3)}.skiplink:focus{top:0}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}</style>
3123<nav class="skiplinks" aria-label="본문 바로가기">
3124  <a class="skiplink" href="#main">본문으로 바로가기</a>
3125  <a class="skiplink" href="#gnb">주요 메뉴로 바로가기</a>
3126  <a class="skiplink" href="#google_translate_element">언어선택으로 바로가기</a>
3127  <a class="skiplink" href="#footer">하단으로 바로가기</a>
3128</nav>
3129
3130  <div class="contents-container   container-lg contentContainer">
3131
3132
3133<div class="Display_com FD_row F_sbc head_inner">
3134<div class="popup-reopen-btn-wrap pos-absolute" id="popupReopenBtnWrap">
3135  <button type="button" class="popup-reopen-btn-head size-custom" id="popupReopenBtn" title="팝업 다시보기">
3136    팝업 <em id="popupReopenCount">0</em>
3137  </button>
3138</div>
3139      <h1 class="logo"> <!-- 상단 로고 영역-->
3140        <a href="https://songpasilbeot.or.kr/index.php">
3141                        <!-- 메인: 로고 2개 (항목1=스크롤/hover시, 항목2=첫등장시) -->
3142        <img src="/_img/img/SST/logo.png" class="logo-default" alt="송파실벗뜨락 노인복
3142지관">        <img src="/_img/img/SST/logo.png" class="logo-initial" alt="송파실벗뜨락 노인복지관">                </a>
3143                        <!-- //상단 로고 영역-->
3144      </h1>
3145            <style>
3146      /* ★ 글로벌 메뉴 보조요소 앞/뒤 순서 (inner/between 공통). 회원메뉴/커스텀=0 기준 */
3147      .gmenu-area-inner, .gmenu-area-between { }
3148      .gmenu-area-inner > .lang-select-wrap, .gmenu-area-between > .lang-select-wrap { order: -1; }
3149      .gmenu-area-inner > .gmenu-member-btns, .gmenu-area-between > .gmenu-member-btns { order: 0; }
3150      .gmenu-area-inner > .gmenu-btn-custom, .gmenu-area-between > .gmenu-btn-custom { order: 0; }
3151      .gmenu-area-inner > .gmenu-search-btn, .gmenu-area-between > .gmenu-search-btn { order: 1; }
3152      .gmenu-area-inner > .gmenu-item-popup-btn, .gmenu-area-between > .gmenu-item-popup-btn { order: 1; }
3153      </style>
3154      
3154<script>var _activeLangCodes = ["ko","en","ru"];</script>
3154
3155            
3155<script>var _langMenuLinks = []; var _langBoardMap = [];</script>
3155
3156
3157      
3158      <div class="header_right Display_com FD_row F_sbc GG_5">
3159        <!-- PC 상단 메뉴 -->
3160        <nav class="gnb " id="gnb-main" aria-label="주 메뉴">
3161                              <style>#menu-pc:not(.rendered){display:none !important}</style>
3162          <ul class="menu" id="menu-pc"><li class="cell has-sub"><a class="depth1" href="/bbs/content.php?co_id=SST_3010&amp;lang=ko&amp;me_code=3010" target="_self">이용안내</a><ul class="sublist"><li class="subitem"><a class="depth2" href="/bbs/content.php?co_id=SST_3010&amp;lang=ko&amp;me_code=3010" target="_self">회원가입 안내</a></li><li class="subitem"><a class="depth2" href="/bbs/content.php?co_id=SST_302010&amp;lang=ko&amp;me_code=3020" target="_self">대관 안내</a></li><li class="subitem"><a class="depth2" href="/bbs/content.php?co_id=SST_303010&amp;lang=ko&amp;me_code=3030" target="_self">뜨락 책방</a></li><li class="subitem"><a class="depth2" href="/bbs/board.php?bo_table=SST_3050&amp;lang=ko&amp;me_code=3050" target="_self">이달의 책</a></li></ul></li><li class="cell has-sub"><a class="depth1" href="/bbs/content.php?co_id=SST_2040&amp;lang=ko&amp;me_code=2040" target="_self">사업안내</a><ul class="sublist"><li class="subitem"><a class="depth2" href="/bbs/content.php?co_id=SST_2040&amp;lang=ko&amp;me_code=2040" target="_self">상담사업</a></li><li class="subitem has-sub"><a class="depth2" href="/bbs/content.php?co_id=SST_201010&amp;lang=ko&amp;me_code=201010" target="_self">노년사회화교육사업</a><ul class="sublist"><li class="subitem"><a class="depth3" href="/bbs/content.php?co_id=SST_201010&amp;lang=ko&amp;me_code=201010" target="_self">이용안내</a></li><li class="subitem"><a class="depth3" href="/bbs/content.php?co_id=SST_201020&amp;lang=ko&amp;me_code=201020" target="_self">프로그램 안내</a></li><li class="subitem"><a class="depth3" href="/bbs/content.php?co_id=SST_201030&amp;lang=ko&amp;me_code=201030" target="_self">시간표</a></li></ul></li><li class="subitem"><a class="depth2" href="/bbs/content.php?co_id=SST_2080&amp;lang=ko&amp;me_code=2080" target="_self">건강생활지원사업</a></li><li class="subitem"><a class="depth2" href="/bbs/content.php?co_id=SST_2070&amp;lang=ko&amp;me_code=2070" target="_self">지역복지사업</a></li><li class="subitem"><a class="depth2" href="/bbs/content.php?co_id=SST_2020&amp;lang=ko&amp;me_code=2020" target="_self">노인맞춤돌봄서비스사업</a></li><li class="subitem has-sub"><a class="depth2" href="/bbs/content.php?co_id=SST_203020&amp;lang=ko&amp;me_code=203020" target="_self">특화사업</a><ul class="sublist"><li class="subitem"><a class="depth3" href="/bbs/content.php?co_id=SST_203020&amp;lang=ko&amp;me_code=203020" target="_self">동행하는 집밥 남선생</a></li><li class="subitem"><a class="depth3" href="/bbs/content.php?co_id=SST_203030&amp;lang=ko&amp;me_code=203030" target="_self">디지로그 골드 ON:</a></li><li class="subitem"><a class="depth3" href="/bbs/content.php?co_id=SST_203010&amp;lang=ko&amp;me_code=203010" target="_self">우리 무대에 서다</a></li></ul></li></ul></li><li class="cell has-sub"><a class="depth1" href="/bbs/content.php?co_id=SST_403010&amp;lang=ko&amp;me_code=403010" target="_self">나눔봉사</a><ul class="sublist"><li class="subitem has-sub"><a class="depth2" href="/bbs/content.php?co_id=SST_403010&amp;lang=ko&amp;me_code=403010" target="_self">기부천사 후원안내</a><ul class="sublist"><li class="subitem"><a class="depth3" href="/bbs/content.php?co_id=SST_403010&amp;lang=ko&amp;me_code=403010" target="_self">후원안내</a></li><li class="subitem"><a class="depth3" href="/bbs/write.php?bo_table=SST_403020&amp;lang=ko&amp;me_code=403020" target="_self">후원신청</a></li></ul></li><li class="subitem has-sub"><a class="depth2" href="/bbs/content.php?co_id=SST_401010&amp;lang=ko&amp;me_code=401010" target="_self">나눔천사 봉사안내</a><ul class="sublist"><li class="subitem"><a class="depth3" href="/bbs/content.php?co_id=SST_401010&amp;lang=ko&amp;me_code=401010" target="_self">자원봉사안내</a></li><li class="subitem"><a class="depth3" href="/bbs/write.php?bo_table=SST_401020&amp;lang=ko&amp;me_code=401020" target="_self">자원봉사신청</a></li><li class="subitem"><a class="depth3" href="/bbs/board.php?bo_table=SST_401030&amp;lang=ko&amp;me_code=401030" target="_self">나눔천사 이야기</a></li></ul></li></ul></li><li class="cell has-sub"><a class="depth1" href="/bbs/board.php?bo_table=SST_5010&amp;lang=ko&amp;me_code=5010" target="_self">뜨락소식</a><ul class="sublist"><li class="subitem"><a class="depth2" href="/bbs/board.php?bo_table=SST_5010&amp;lang=ko&amp;me_code=5010" target="_self">사진으로 보는 복지관</a></li><li class="subitem"><a class="depth2" href="/bbs/board.php?bo_table=SST_5020&amp;lang=ko&amp;me_code=5020" target="_self">기관 일정</a></li><li class="subitem"><a class="depth2" href="/bbs/board.php?bo_table=SST_5030&amp;lang=ko&amp;me_code=5030" target="_self">홍보 영상</a></li><li class="subitem"><a class="depth2" href="/bbs/board.php?bo_table=SST_5040&amp;lang=ko&amp;me_code=5040" target="_self">소식지</a></li><li class="subitem"><a class="depth2" href="/bbs/board.php?bo_table=SST_5050&amp;lang=ko&amp;me_code=5050" target="_self">채용정보</a></li></ul></li><li class="cell has-sub"><a class="depth1" href="/bbs/board.php?bo_table=SST_6010&amp;lang=ko&amp;me_code=6010" target="_self">소통참여</a><ul class="sublist"><li class="subitem"><a class="depth2" href="/bbs/board.php?bo_table=SST_6010&amp;lang=ko&amp;me_code=6010" target="_self">공지사항</a></li><li class="subitem"><a class="depth2" href="/bbs/board.php?bo_table=SST_6020&amp;lang=ko&amp;me_code=6020" target="_self">어르신들의 이야기</a></li><li class="subitem"><a class="depth2" href="/bbs/board.php?bo_table=SST_6030&amp;lang=ko&amp;me_code=6030" target="_self">복지뉴스</a></li><li class="subitem"><a class="depth2" href="/bbs/board.php?bo_table=SST_6040&amp;lang=ko&amp;me_code=6040" target="_self">언론보도자료</a></li><li class="subitem"><a class="depth2" href="/bbs/board.php?bo_table=SST_6050&amp;lang=ko&amp;me_code=6050" target="_self">재정보고</a></li></ul></li><li class="cell has-sub"><a class="depth1" href="/bbs/content.php?co_id=SST_1010&amp;lang=ko&amp;me_code=1010" target="_self">복지관 소개</a><ul class="sublist"><li class="subitem"><a class="depth2" href="/bbs/content.php?co_id=SST_1010&amp;lang=ko&amp;me_code=1010" target="_self">인사말</a></li><li class="subitem"><a class="depth2" href="/bbs/content.php?co_id=SST_1060&amp;lang=ko&amp;me_code=1060" target="_self">법인소개</a></li><li class="subitem"><a class="depth2" href="/bbs/content.php?co_id=SST_1020&amp;lang=ko&amp;me_code=1020" target="_self">미션·비젼</a></li><li class="subitem"><a class="depth2" href="/bbs/content.php?co_id=SST_1070&amp;lang=ko&amp;me_code=1070" target="_self">연혁</a></li><li class="subitem"><a class="depth2" href="/bbs/content.php?co_id=SST_1030&amp;lang=ko&amp;me_code=1030" target="_self">시설소개</a></li><li class="subitem"><a class="depth2" href="/bbs/content.php?co_id=SST_1040&amp;lang=ko&amp;me_code=1040" target="_self">함께하는 사람들</a></li><li class="subitem"><a class="depth2" href="/bbs/content.php?co_id=SST_1050&amp;lang=ko&amp;me_code=1050" target="_self">오시는길</a></li></ul></li></ul>
3163        </nav>
3164
3165                <!-- 글로벌 메뉴 (between 위치: 메뉴~햄버거 사이) -->
3166        <div class="gmenu-area-between" id="gmenuBetween">
3167                    
3168                              <div class="gmenu-member-btns">
3169                                    <a href="https://songpasilbeot.or.kr/bbs/login.php" class="gmenu-btn" title="로그인">
3170              <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
3170<path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"/><polyline points="10 17 15 12 10 7"/><line x1="15" y1="12" x2="3" y2="12"/></svg>
3171              <span class="gmenu-text">로그인</span>
3172            </a>
3173                                    <a href="https://songpasilbeot.or.kr/bbs/register.php" class="gmenu-btn" title="회원가입">
3174              <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="8.5" cy="7" r="4"/><line x1="20" y1="8" x2="20" y2="14"/><line x1="23" y1="11" x2="17" y2="11"/></svg>
3175              <span class="gmenu-text">회원가입</span>
3176            </a>
3177                                                                      </div>
3178          
3179                    
3180                              <button type="button" class="gmenu-search-btn" id="headerSearchBtnBetween" title="검색">
3181            <svg xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/></svg>
3182          </button>
3183          
3184                    
3185                    
3186                            </div>
3187        
3188<!-- 햄버거 버튼 -->
3189        <div class="allmenu">
3190          <button class="btn-allmenu" id="menuToggle" aria-label="메뉴 열기/닫기" aria-expanded="false"> <span class="bar"></span> <span class="bar"></span> <span class="bar"></span> </button>
3191        </div>
3192        <!-- 사이트맵 버튼 -->
3193        <div class="sitemap"> 
3194          <!-- 사이트맵 토글 버튼 -->
3195          <button class="btn-allmenu" id="sitemapToggle" aria-label="사이트맵 열기/닫기" aria-expanded="false"> <span class="bar"></span><span class="bar"></span><span class="bar"></span> </button>
3196        </div>
3197        
3198        <!-- 전체 사이트맵 오버레이 -->
3199        <div class="gnb sitemap sm-style2" id="sitemapLayer" aria-hidden="true">
3200          <div class="sm-backdrop" id="sitemapBackdrop" aria-hidden="true"></div>
3201                    <div class="sm-panel" role="dialog" aria-modal="true" aria-labelledby="sitemapTitle">
3202            <div class="sm-head">
3203                            <div class="sm-logo">
3204                <img src='/_img/img/SST/logo.png' alt='이미지'/>              </div>
3205                            <button type="button" class="sm-close" id="sitemapClose" aria-label="닫기">
3206                                <svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><line x1="18" y1="6" x2="6" y2="18"></line><line x1="6" y1="6" x2="18" y2="18"></line></svg>
3207                              </button>
3208            </div>
3209
3210            
3211            <!-- 메뉴 -->
3212            <nav class="gnb sm" aria-label="사이트맵">
3213              <ul class="menu" id="menu-sitemap">
3214              </ul>
3215            </nav>
3216
3217                        
3218                      </div>
3219        </div>
3220                
3221      </div>
3222    </div>
3223  </div>
3224
3225</header>
3226
3227
3228<script>
3229window.initRollingText = function() {
3230  var header = document.getElementById('gnb');
3231  if (!header || !header.classList.contains('dropdown2-menu')) return;
3232
3233  // PC 메뉴의 1뎁스 링크들
3234  var depth1Links = document.querySelectorAll('#menu-pc > li.cell > a.depth1');
3235  if (!depth1Links.length) return;
3236
3237  depth1Links.forEach(function(a) {
3238    var text = a.textContent.trim();
3239    if (!text) return;
3240
3241    // 기존 텍스트 제거
3242    a.textContent = '';
3243
3244    // 마스크 래퍼 (overflow:hidden, 글자 1줄 높이)
3245    var mask = document.createElement('span');
3246    mask.className = 'rt-mask';
3247
3248    // 첫 번째 블록 (원본)
3249    var block1 = document.createElement('span');
3250    block1.className = 'rt-block';
3251
3252    for (var i = 0; i < text.length; i++) {
3253      var span = document.createElement('span');
3254      span.className = 'rt-letter';
3255      span.textContent = text[i] === ' ' ? '\u00a0' : text[i];
3256      block1.appendChild(span);
3257    }
3258
3259    // 두 번째 블록 (복제)
3260    var block2 = block1.cloneNode(true);
3261
3262    mask.appendChild(block1);
3263    mask.appendChild(block2);
3264    a.appendChild(mask);
3265  });
3266};
3267</script>
3267
3268
3269
3270
3271<!-- 우측 슬라이드 메뉴 (개선) -->
3272<style>
3273/* 개선된 사이드 메뉴 스타일 */
3274.side-menu.side-default {
3275  width: 320px;
3276  max-width: 85vw;
3277  background: #1a1a1a;
3278}
3279.side-menu.side-default .side-menu-inner {
3280  padding: 0;
3281  background: #1a1a1a;
3282  display: flex;
3283  flex-direction: column;
3284  height: 100%;
3285}
3286.side-menu.side-default .close-btn {
3287  position: absolute;
3288  top: 15px;
3289  right: 15px;
3290  z-index: 10;
3291  color: #fff;
3292  font-size: 28px;
3293  background: none;
3294  border: none;
3295  cursor: pointer;
3296  opacity: 0.7;
3297  transition: opacity 0.2s;
3298}
3299.side-menu.side-default .close-btn:hover {
3300  opacity: 1;
3301}
3302
3303/* 회원 헤더 */
3304.side-default-header {
3305  background: linear-gradient(135deg, var(--point-color, #667eea) 0%, color-mix(in srgb, var(--point-color, #667eea) 70%, #000) 100%);
3306  color: #fff;
3307  padding: 20px 20px 15px;
3308  flex-shrink: 0;
3309}
3310.side-default-header .user-info {
3311  display: flex;
3312  align-items: center;
3313  gap: 12px;
3314}
3315.side-default-header .user-avatar {
3316  width: 50px;
3317  height: 50px;
3318  border-radius: 50%;
3319  background: rgba(255,255,255,0.2);
3320  display: flex;
3321  align-items: center;
3322  justify-content: center;
3323  font-size: 20px;
3324  font-weight: 600;
3325}
3326.side-default-header .user-name {
3327  font-size: 16px;
3328  font-weight: 600;
3329}
3330.side-default-header .user-level {
3331  font-size: 12px;
3332  opacity: 0.8;
3333  margin-top: 2px;
3334}
3335
3336/* 퀵 메뉴 (아이콘 버튼 - 가로 배열) */
3337.side-default-quick {
3338  display: flex;
3339  justify-content: space-around;
3340  padding: 15px 10px;
3341  background: #222;
3342  border-bottom: 1px solid #333;
3343  flex-shrink: 0;
3344}
3345.side-default-quick.items-2 { justify-content: center; gap: 40px; }
3346.side-default-quick.items-3 { justify-content: space-around; }
3347.side-default-quick.items-4 { justify-content: space-around; }
3348
3349.side-default-quick a {
3350  display: flex;
3351  flex-direction: column;
3352  align-items: center;
3353  gap: 6px;
3354  color: #ccc;
3355  text-decoration: none;
3356  font-size: 11px;
3357  transition: color 0.2s;
3358  min-width: 60px;
3359}
3360.side-default-quick a:hover {
3361  color: var(--point-color, #667eea);
3362}
3363.side-default-quick a svg {
3364  width: 22px;
3365  height: 22px;
3366}
3367
3368/* 검색 영역 */
3369.side-default-search {
3370  padding: 15px;
3371  background: #222;
3372  border-bottom: 1px solid #333;
3373}
3374.side-default-search-form {
3375  display: flex;
3376  align-items: center;
3377  border: 1px solid #444;
3378  border-radius: 8px;
3379  background: #1a1a1a;
3380  overflow: hidden;
3381  transition: border-color 0.2s;
3382}
3383.side-default-search-form:focus-within {
3384  border-color: var(--point-color, #667eea);
3385}
3386.side-default-search-input {
3387  flex: 1;
3388  padding: 12px 15px;
3389  border: none;
3390  background: transparent;
3391  color: #fff;
3392  font-size: 14px;
3393  outline: none;
3394}
3395.side-default-search-input::placeholder {
3396  color: #666;
3397}
3398.side-default-search-btn {
3399  width: 44px;
3400  height: 44px;
3401  background: transparent;
3402  border: none;
3403  cursor: pointer;
3404  display: flex;
3405  align-items: center;
3406  justify-content: center;
3407  color: #888;
3408  transition: color 0.2s;
3409}
3410.side-default-search-btn:hover {
3411  color: var(--point-color, #667eea);
3412}
3413.side-default-search-btn svg {
3414  width: 20px;
3415  height: 20px;
3416}
3417
3418/* 언어 선택 */
3419.side-default-lang {
3420  padding: 10px 15px;
3421  background: #222;
3422  border-bottom: 1px solid #333;
3423}
3424.side-default-lang .side-translate-select {
3425  width: 100%;
3426  padding: 10px;
3427  background: #1a1a1a;
3428  border: 1px solid #444;
3429  border-radius: 6px;
3430  color: #ccc;
3431  font-size: 13px;
3432}
3433.side-default-lang .side-lang-btns {
3434  display: flex;
3435  flex-wrap: wrap;
3436  gap: 8px;
3437}
3438.side-default-lang .side-lang-btn {
3439  padding: 8px 12px;
3440  background: #333;
3441  border: none;
3442  border-radius: 4px;
3443  color: #ccc;
3444  font-size: 12px;
3445  cursor: pointer;
3446  transition: all 0.2s;
3447}
3448.side-default-lang .side-lang-btn:hover,
3449.side-default-lang .side-lang-btn.active {
3450  background: var(--primary, #667eea);
3451  color: #fff;
3452}
3453
3454/* SNS 영역 */
3455.side-default-sns {
3456  padding: 15px;
3457  background: #222;
3458  border-bottom: 1px solid #333;
3459  display: flex;
3460  justify-content: center;
3461  gap: 10px;
3462}
3463.side-default-sns .icon_btn,
3464.side-default-sns .sns_icon {
3465  width: 36px;
3466  height: 36px;
3467  display: flex;
3468  align-items: center;
3469  justify-content: center;
3470  border: none;
3471  border-radius: 50%;
3472  color: #fff;
3473  transition: all 0.2s;
3474}
3475.side-default-sns .icon_btn svg,
3476.side-default-sns .icon_btn img,
3477.side-default-sns .wg_img1 svg,
3478.side-default-sns .wg_img1 img,
3479.side-default-sns .sns_icon svg,
3480.side-default-sns .sns_icon img {
3481  filter: brightness(0) invert(1);
3482}
3483.side-default-sns .icon_btn:hover,
3484.side-default-sns .sns_icon:hover {
3485  background: var(--point-color, #667eea);
3486  border-color: var(--point-color, #667eea);
3487  color: #fff;
3488}
3489
3490/* 메뉴 영역 */
3491.side-default-nav {
3492  flex: 1;
3493  overflow-y: auto;
3494  padding: 10px 15px;
3495}
3496.side-default-nav .gnb.mo {
3497  background: transparent;
3498}
3499.side-default-nav .gnb.mo .menu {
3500  padding: 0 5px;
3501}
3502
3503/* 구글 번역 숨김 */
3504.side-default #gt-mobile {
3505  display: none;
3506}
3507
3508/* ★ [2026-09-23] 헤드박스 숨김 시 X 버튼 자리 확보 */
3509.side-menu.side-default.no-header .side-menu-inner { padding-top: 48px; }
3510/* ★ SNS 아이콘 스타일 circle = 원본 컬러 유지 + 흰 원형 정가운데 (기본 invert 는 위 filter 규칙 그대로) */
3511.side-default-sns.sns-circle .icon_btn { background: #fff; }
3512.side-default-sns.sns-circle .icon_btn svg,
3513.side-default-sns.sns-circle .icon_btn img,
3514.side-default-sns.sns-circle .wg_img1 svg,
3515.side-default-sns.sns-circle .wg_img1 img { filter: none; }
3516.side-default-sns.sns-circle .icon_btn .wg_img1 { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; }
3517.side-default-sns.sns-circle .icon_btn .wg_img1 img { width: auto; max-width: 20px !important; max-height: 20px !important; }
3518.side-default-sns.sns-circle .icon_btn i { color: #333; font-size: 18px; }
3519.side-default-sns.sns-circle .icon_btn:hover { background: #fff; transform: translateY(-2px); }
3520/* circle: 감싸는 배경·라인 제거 + 아이콘 사이 간격 (위젯 .em_topsns 가 gap 0 이라 래퍼에 직접) */
3521.side-default-sns.sns-circle { background: transparent; border-bottom: none; }
3522.side-default-sns.sns-circle .em_topsns { gap: 10px; }
3523/* ★ SNS 위치 below_menu = 메뉴 리스트 바로 아래(스크롤 흐름 안) */
3524.side-default-nav .side-default-sns.sns-below { background: transparent; border-bottom: none; margin-top: 10px; padding: 15px 0; }
3525/* ★ SNS 위치 bottom = 사이드바 맨 하단 고정 (메뉴만 스크롤, 작은 화면은 dvh + 안전영역으로 안 잘리게). 배경·라인 없음 */
3526.side-menu.side-default.sns-bottom { height: 100vh; height: 100dvh; }
3527.side-default-sns.sns-fixed-bottom { flex-shrink: 0; background: transparent; border: none; padding-bottom: calc(15px + env(safe-area-inset-bottom, 0px)); }
3528</style>
3529
3530<div class="side-menu side-default" id="sideMenu" aria-hidden="true">
3531  <div class="side-menu-inner">
3532    <button class="close-btn" id="closeMenu" aria-label="메뉴 닫기">&times;</button>
3533
3534        <!-- 회원 정보 헤더 -->
3535    <div class="side-default-header">
3536      <div class="user-info">
3537        <div class="user-avatar">
3538                      송                  </div>
3539        <div>
3540                      <div class="user-name">송파실벗뜨락 노인복지관</div>
3541            <div class="user-level">방문해주셔서 감사합니다</div>
3542                  </div>
3543      </div>
3544    </div>
3545
3546    
3547    <!-- 퀵 메뉴 (아이콘 가로 배열) -->
3548        <div class="side-default-quick items-2">
3549              <a href="https://songpasilbeot.or.kr/bbs/login.php">
3550          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"/><polyline points="10 17 15 12 10 7"/><line x1="15" y1="12" x2="3" y2="12"/></svg>
3551          로그인
3552        </a>
3553        <a href="https://songpasilbeot.or.kr/bbs/register.php">
3554          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/><circle cx="8.5" cy="7" r="4"/><line x1="20" y1="8" x2="20" y2="14"/><line x1="23" y1="11" x2="17" y2="11"/></svg>
3555          회원가입
3556        </a>
3557          </div>
3558    
3559    <!-- 검색 -->
3560    
3561    <!-- 언어선택 -->
3562    
3563    <!-- SNS (위치 top = 기존 자리) -->
3564    
3565    <!-- 구글 번역 (숨김) -->
3566    <div id="gt-mobile" lang="ko" aria-label="언어 선택" role="navigation"></div>
3567
3568    <!-- 메뉴 -->
3569    <div class="side-default-nav">
3570      <nav class="gnb mo">
3571        <ul class="menu" id="menu-mo">
3572        </ul>
3573      </nav>
3574                </div>
3575          </div>
3576</div>
3577<!-- //우측 슬라이드 메뉴 -->
3578
3579
3580<!-- 팝업 다시열기 버튼 제어 스크립트 -->
3581<script>
3582(function(){
3583  // 전역 변수 설정 (latest 스킨에서 접근 가능)
3584  window.POPUP_REOPEN_CONFIG = {
3585    position: 'absolute',
3586    wrapId: 'popupReopenBtnWrap',
3587    btnId: 'popupReopenBtn',
3588    countId: 'popupReopenCount'
3589  };
3590
3591  // 팝업 개수 업데이트 함수 (latest 스킨에서 호출)
3592  window.updatePopupReopenCount = function(count) {
3593    var countEl = document.getElementById(window.POPUP_REOPEN_CONFIG.countId);
3594    if (countEl) countEl.textContent = count;
3595  };
3596
3597  // 팝업 다시열기 버튼 표시 함수 (latest 스킨에서 호출)
3598  window.showPopupReopenBtn = function() {
3599    var wrap = document.getElementById(window.POPUP_REOPEN_CONFIG.wrapId);
3600    if (wrap) wrap.classList.add('show');
3601  };
3602
3603  // 팝업 다시열기 버튼 숨김 함수 (latest 스킨에서 호출)
3604  window.hidePopupReopenBtn = function() {
3605    var wrap = document.getElementById(window.POPUP_REOPEN_CONFIG.wrapId);
3606    if (wrap) wrap.classList.remove('show');
3607  };
3608
3609  // 팝업 다시열기 버튼 클릭 이벤트
3610  document.addEventListener('DOMContentLoaded', function() {
3611    var btn = document.getElementById(window.POPUP_REOPEN_CONFIG.btnId);
3612    if (!btn) return;
3613
3614    btn.addEventListener('click', function() {
3615      // 전역 함수 호출 (latest 스킨에서 정의)
3616      if (typeof window.reopenAllPopups === 'function') {
3617        window.reopenAllPopups();
3618        window.hidePopupReopenBtn();
3619      }
3620    });
3621  });
3622})();
3623</script>
3623
3624
3625<script>
3626(function() {
3627  var header = document.querySelector('.header');
3628  if (!header) return;
3629  var isMain = true;
3630
3631  // ★ 헤더 스크롤 그림자 설정
3632    var scrollShadow = '';
3633  var scrollMode = 'unified';
3634
3635  // ★ 동적 체크 함수 (스크롤/호버 시점에 현재 클래스 확인)
3636  function checkOpacity() { return header.classList.contains('opacity'); }
3637  function checkBgWhite() { return header.classList.contains('bg-white'); }
3638  function checkBgColor() { return header.classList.contains('bg-color'); }
3639
3640  // 메인 페이지면 body에 is-main 클래스 추가
3641  if (isMain) {
3642    document.body.classList.add('is-main');
3643  }
3644
3645  // ★ cover 모드: 스크롤 핸들러는 initCoverSticky 이후에 등록됨
3646  if (scrollMode === 'cover') {
3647    // ★ cover 모드: 스크롤/호버 핸들러는 initCoverSticky()에서 등록
3648    // primary 헤더의 hover (투명 모드일 때)
3649    if (checkOpacity() || checkBgColor()) {
3650      header.addEventListener('mouseenter', function() { header.classList.add('hovered'); });
3651      header.addEventListener('mouseleave', function(e) {
3652        if (header.classList.contains('horiz-submenu-open')) return;
3653        header.classList.remove('hovered');
3654      });
3655    }
3656
3657  } else {
3658    // ★ unified 모드: 기존 스크롤/호버 로직 (변경 없음)
3659
3660    // ★ bg-white(1-3)일 때 기존 인라인 스타일 제거 (CSS 변수로 처리)
3661    if (checkBgWhite()) {
3662      header.style.removeProperty('background-color');
3663      header.style.removeProperty('backdrop-filter');
3664      header.style.removeProperty('-webkit-backdrop-filter');
3665    }
3666
3667    // ★ unified 페이지 독립설정: 스크롤 전/후 레이아웃 클래스 교체 (배경 모드와 무관하게 sy>50 기준)
3668    var pgMode = header.classList.contains('unified-pg');
3669    var pgBefore = (header.getAttribute('data-pg-before') || '').split(' ').filter(
3669Boolean);
3670    var pgAfter = (header.getAttribute('data-pg-after') || '').split(' ').filter(Boolean);
3671    var pgState = null;
3672    function applyPgState(scrolled) {
3673      if (!pgMode || pgState === scrolled) return;
3674      pgState = scrolled;
3675      var add = scrolled ? pgAfter : pgBefore;
3676      var rem = scrolled ? pgBefore : pgAfter;
3677      rem.forEach(function(c) { if (add.indexOf(c) < 0) header.classList.remove(c); });
3678      add.forEach(function(c) { header.classList.add(c); });
3679      if (scrolled) header.classList.add('pg-scrolled'); else header.classList.remove('pg-scrolled');
3680    }
3681
3682    // 스크롤 이벤트 - scrolled 클래스 + 배경색 제어
3683    function onScrollHandler() {
3684      var sy = window.scrollY || window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;
3685      var curOpacity = checkOpacity();
3686      var curBgWhite = checkBgWhite();
3687      var curBgColor = checkBgColor();
3688      applyPgState(sy > 50);
3689
3690      if (sy > 50) {
3691        header.classList.add('bg');
3692        if (curOpacity || curBgColor) header.classList.add('scrolled');
3693        if ((isMain || curOpacity) && !curBgWhite && !curBgColor) {
3694          header.style.setProperty('background-color', 'rgba(255,255,255,1)', 'important');
3695          header.style.setProperty('backdrop-filter', 'blur(10px)', 'important');
3696          header.style.setProperty('-webkit-backdrop-filter', 'blur(10px)', 'important');
3697        }
3698        if (curBgColor) {
3699          header.style.removeProperty('background-color');
3700          header.style.removeProperty('backdrop-filter');
3701          header.style.removeProperty('-webkit-backdrop-filter');
3702        }
3703        if (scrollShadow) {
3704          header.style.setProperty('box-shadow', scrollShadow, 'important');
3705        }
3706      } else {
3707        header.classList.remove('bg');
3708        if (curOpacity || curBgColor) header.classList.remove('scrolled');
3709        if ((isMain || curOpacity) && !curBgWhite && !curBgColor) {
3710          header.style.removeProperty('background-color');
3711          header.style.removeProperty('backdrop-filter');
3712          header.style.removeProperty('-webkit-backdrop-filter');
3713        }
3714        if (scrollShadow) {
3715          header.style.removeProperty('box-shadow');
3716        }
3717      }
3718    }
3719    window.addEventListener('scroll', onScrollHandler, true);
3720    document.addEventListener('scroll', onScrollHandler, true);
3721    // ★ 새로고침 시 이미 스크롤된 상태면 레이아웃 클래스만 즉시 반영 (배경 인라인 스타일은 건드리지 않음)
3722    if (pgMode) applyPgState((window.scrollY || window.pageYOffset || document.documentElement.scrollTop || 0) > 50);
3723    // ★ 구글 번역 폴링
3724    var _gtScrollPoll = null;
3725    function startGoogleTranslatePoll() {
3726      if (_gtScrollPoll) return;
3727      _gtScrollPoll = setInterval(onScrollHandler, 200);
3728    }
3729    if (window.MutationObserver) {
3730      new MutationObserver(function(mutations) {
3731        if (document.documentElement.classList.contains('translated-ltr') ||
3732            document.documentElement.classList.contains('translated-rtl')) {
3733          startGoogleTranslatePoll();
3734        }
3735      }).observe(document.documentElement, { attributes: true, attributeFilter: ['class'] });
3736    }
3737    if (document.documentElement.classList.contains('translated-ltr') ||
3738        document.documentElement.classList.contains('translated-rtl')) {
3739      startGoogleTranslatePoll();
3740    }
3741
3742    // ★ hover 이벤트: opacity + bg-color 모드 모두 적용
3743    if (checkOpacity() || checkBgColor()) {
3744      header.addEventListener('mouseenter', function() {
3745        header.classList.add('hovered');
3746      });
3747      header.addEventListener('mouseleave', function(e) {
3748        if (header.classList.contains('horiz-submenu-open')) return;
3749        header.classList.remove('hovered');
3750      });
3751    }
3752  } // end unified mode
3753})();
3754</script>
3754
3755<!-- 언어 선택 스크립트 -->
3756<script>
3757(function(){
3758  // 새로운 HTML 구조에 맞게 수정
3759  var wrap = document.getElementById('langSelectWrap');
3760  var btn  = document.getElementById('currentLangBtn');
3761  var list = document.getElementById('langOptions');
3762  if(!btn || !list || !wrap) return;
3763
3764  var items = [].slice.call(list.querySelectorAll('[role="menuitem"]'));
3765  if(!items.length) return;
3766
3767  var justOpened = false;
3768
3769  // ★ [2026-09-07] 레이어 열림 동안 글로벌 메뉴 영역을 햄버거보다 위로 (CSS .lang-open)
3770  var area = wrap.closest ? wrap.closest('.gmenu-area-inner, .gmenu-area-between') : null;
3771  function openMenu(){
3772    wrap.classList.add('open');
3773    if (area) area.classList.add('lang-open');
3774    btn.setAttribute('aria-expanded','true');
3775    list.setAttribute('aria-hidden','false');
3776    justOpened = true;
3777    setTimeout(function(){ justOpened = false; }, 150);
3778  }
3779  function closeMenu(){
3780    wrap.classList.remove('open');
3781    if (area) area.classList.remove('lang-open');
3782    btn.setAttribute('aria-expanded','false');
3783    list.setAttribute('aria-hidden','true');
3784  }
3785  function isOpen(){ return wrap.classList.contains('open'); }
3786  function toggleMenu(){ isOpen() ? closeMenu() : openMenu(); }
3787
3788  // 버튼 클릭
3789  btn.addEventListener('click', function(e){
3790    e.stopPropagation();
3791    toggleMenu();
3792  });
3793
3794  // ★ 게시판 언어 전환: bo_table 접미사 교체
3795  function switchBoardLang(boTable, targetLang) {
3796    var codes = (typeof _activeLangCodes !== 'undefined') ? _activeLangCodes : [];
3797    var suffixes = codes.filter(function(c){ return c !== 'ko'; });
3798    if (!suffixes.length) return boTable;
3799    var regex = new RegExp('_(' + suffixes.join('|') + ')$', 'i');
3800    var base = boTable.replace(regex, '');
3801    return (targetLang === 'ko') ? base : base + '_' + targetLang;
3802  }
3803
3804  // ★ [2026-09-07] 언어 전환 URL 결정 — me_code 는 항상 유지 (지우면 서브페이지가 "없는 게시판"→메인으로 튕김)
3805  //   1) me_code 있고 메뉴에 그 언어 링크(_langMenuLinks)가 있으면:
3806  //      같은 게시판 → 현재 URL 유지(lang만 변경, wr_id 유지) / 다른 게시판 → 그 게시판 목록 / 게시판 아닌 페이지 → 메뉴 링크
3807  //   2) 그 외 게시판 페이지: 언어별 게시판(_en 등)이 실제로 존재할 때만(_langBoardMap) 전환, 없으면 같은 게시판 유지
3808  function buildLangUrl(lang) {
3809    var url = new URL(window.location.href);
3810    var meCode  = url.searchParams.get('me_code');
3811    var boTable = url.searchParams.get('bo_table');
3812    var links = (typeof _langMenuLinks !== 'undefined' && _langMenuLinks) ? _langMenuLinks : {};
3813    var bmap  = (typeof _langBoardMap  !== 'undefined' && _langBoardMap)  ? _langBoardMap  : {};
3814
3815    if (meCode && links[lang]) {
3816      var t = new URL(links[lang], window.location.origin);
3817      var tBo = t.searchParams.get('bo_table');
3818      if (boTable && tBo) {
3819        if (tBo !== boTable) {
3820          url.searchParams.set('bo_table', tBo);
3821          url.searchParams.delete('wr_id');
3822          url.searchParams.delete('page');
3823        }
3824        url.searchParams.set('lang', lang);
3825        return url.toString();
3826      }
3827      if (!boTable && t.pathname === url.pathname
3828          && (t.searchParams.get('co_id') || '') === (url.searchParams.get('co_id') || '')) {
3829        url.searchParams.set('lang', lang);
3830        return url.toString();
3831      }
3832      t.searchParams.set('lang', lang);
3833      if (!t.searchParams.get('me_code')) t.searchParams.set('me_code', meCode);
3834      return t.toString();
3835    }
3836
3837    if (boTable) {
3838      if (Object.keys(bmap).length) {
3839        var mapped = bmap[lang] || '';
3840        if (mapped && mapped !== boTable) {
3841          url.searchParams.set('bo_table', mapped);
3842          url.searchParams.delete('wr_id');
3843          url.searchParams.delete('page');
3844        }
3845      } else {
3846        var newBoTable = switchBoardLang(boTable, lang);
3847        if (newBoTable !== boTable) {
3848          url.searchParams.set('bo_table', newBoTable);
3849          url.searchParams.delete('wr_id');
3850        }
3851      }
3852    }
3853    url.searchParams.set('lang', lang);
3854    return url.toString();
3855  }
3856
3857  // 목록 아이템 클릭 - 언어 변경
3858  items.forEach(function(item){
3859    item.addEventListener('click', function(e){
3860      e.stopPropagation();
3861      var lang = this.getAttribute('data-lang');
3862      if(lang){
3863        window.location.href = buildLangUrl(lang);
3864      }
3865      closeMenu();
3866    });
3867  });
3868
3869  // 바깥 클릭시 닫기
3870  document.addEventListener('click', function(e){
3871    if(justOpened) return;
3872    if(!wrap.contains(e.target)){
3873      closeMenu();
3874    }
3875  });
3876
3877  // ESC 키 닫기
3878  document.addEventListener('keydown', function(e){
3879    if(e.key === 'Escape' && isOpen()) closeMenu();
3880  });
3881
3882  // 키보드 네비게이션
3883  btn.addEventListener('keydown', function(e){
3884    if(e.key === 'ArrowDown'){
3885      e.preventDefault();
3886      if(!isOpen()) openMenu();
3887      items[0].focus();
3888    }
3889  });
3890
3891  list.addEventListener('keydown', function(e){
3892    var i = items.indexOf(document.activeElement);
3893    if(e.key === 'ArrowDown'){
3894      e.preventDefault();
3895      items[(i+1) % items.length].focus();
3896    } else if(e.key === 'ArrowUp'){
3897      e.preventDefault();
3898      items[(i-1+items.length) % items.length].focus();
3899    } else if(e.key === 'Escape'){
3900      e.preventDefault();
3901      closeMenu();
3902      btn.focus();
3903    } else if(e.key === 'Enter' || e.key === ' '){
3904      e.preventDefault();
3905      document.activeElement.click();
3906    } else if(e.key === 'Tab'){
3907      if(e.shiftKey && document.activeElement === items[0]){
3908        e.preventDefault();
3909        closeMenu();
3910        btn.focus();
3911      } else if(!e.shiftKey && document.activeElement === items[items.length-1]){
3912        closeMenu();
3913      }
3914    }
3915  });
3916})();
3917</script>
vendor: 1 bytes, line 3917
3917
3918<script>
3919/* =========================================================
3920   GNB 통합 스크립트 (언어 셀렉트 + PC/MO + 사이드메뉴 + 사이트맵)
3921   - 전제: 전역에 MENU 배열이 선언되어 있음 (없으면 경고만 출력)
3922   - PC:   <ul id="menu-pc">
3923   - MO:   <ul id="menu-mo">
3924   - 사이드: #menuToggle(버튼), #sideMenu(패널), #closeMenu(닫기)
3925   - 사이트맵: #sitemapToggle(버튼, 선택), #sitemapLayer(오버레이),
3926               #sitemapBackdrop(배경), #sitemapClose(닫기), <ul id="menu-sitemap">
3927   ========================================================= */
3928(function () {
3929
3930  document.addEventListener('DOMContentLoaded', function () {
3931    /* ---------- 엘리먼트 캐시 ---------- */
3932    var menuToggle = document.getElementById('menuToggle');
3933    var sideMenu   = document.getElementById('sideMenu');
3934    var closeMenu  = document.getElementById('closeMenu');
3935    var pcMenuRoot = document.getElementById('menu-pc'); // UL
3936    var moMenuRoot = document.getElementById('menu-mo'); // UL
3937
3938    /* 사이트맵 요소 */
3939    var smToggle   = document.getElementById('sitemapToggle');   // 버튼(선택)
3940    var smLayer    = document.getElementById('sitemapLayer');    // 오버레이
3941    var smClose    = document.getElementById('sitemapClose');    // 닫기 버튼
3942    var smBackdrop = document.getElementById('sitemapBackdrop'); // ë°°ê²½
3943    var smRoot     = document.getElementById('menu-sitemap');    // UL
3944
3945    /* ---------- 사이드메뉴(햄버거) ---------- */
3946    initSideMenu(menuToggle, sideMenu, closeMenu);
3947
3948    /* ---------- 메뉴 렌더(데이터 → DOM) ---------- */
3949    if (typeof window.MENU !== 'undefined' && Array.isArray(window.MENU)) {
3950      if (pcMenuRoot) {
3951        renderMenu(MENU, pcMenuRoot, { idPrefix: 'pc', single: false });
3952        pcMenuRoot.classList.add('rendered');
3953      }
3954      if (moMenuRoot) {
3955        renderMenu(MENU, moMenuRoot, { idPrefix: 'mo', single: true  });
3956        moMenuRoot.classList.add('rendered');
3957      }
3958      if (smRoot) {
3959        renderMenu(MENU, smRoot, { idPrefix: 'sm', single: false });
3960        expandAllForSitemap(smRoot, false); // 사이트맵 펼침 (style2 3뎁스 토글이면 3뎁스만 접음)
3961              }
3962      /* ---------- GNB 뷰포트 클래스 동적 전환 (메뉴 초기화보다 먼저!) ---------- */
3963      initGnbViewportClass();
3964
3965      // ★ cover 모드: 메뉴 렌더링 완료 후 sticky 헤더 클론
3966      if (typeof window.initCoverSticky === 'function') {
3967        window.initCoverSticky();
3968      }
3969      // ★ 가로 하위메뉴 초기화 (PC 메뉴 렌더링 후)
3970      if (typeof window.initHorizSubmenu === 'function') {
3971        window.initHorizSubmenu();
3972      }
3973      // ★ 가로 하위 접근성 메뉴 초기화 (PC 메뉴 렌더링 후)
3974      if (typeof window.initHorizA11ySubmenu === 'function') {
3975        window.initHorizA11ySubmenu();
3976      }
3977      // ★ 전체 하위메뉴 펼침 초기화 (PC 메뉴 렌더링 후)
3978      if (typeof window.initFullopenSubmenu === 'function') {
3979        window.initFullopenSubmenu();
3980      }
3981      // ★ 드롭다운2 Rolling Text 초기화 (PC 메뉴 렌더링 후)
3982      if (typeof window.initRollingText === 'function') {
3983        window.initRollingText();
3984      }
3985    } else {
3986      console.warn('[GNB] MENU 배열이 없습니다. 메뉴 렌더를 건너뜁니다.');
3987    }
3988
3989    /* ---------- PC 전용: 터치 1회 열기 ---------- */
3990    initPcTouchOpen();
3991
3992    /* ---------- 사이트맵 오버레이 ---------- */
3993    initSitemap(smToggle, smLayer, smClose, smBackdrop, smRoot);
3994  });
3995
3996  /* =========================================================
3997     GNB 뷰포트 기반 클래스 동적 전환
3998     - PC: 1700px 이상
3999     - Tablet1: 1024px ~ 1700px
4000     - Tablet2: 768px ~ 1023px
4001     - Mobile: 767px 이하
4002     ========================================================= */
4003  function initGnbViewportClass() {
4004    var gnb = document.getElementById('gnb-main');
4005    if (!gnb) return;
4006
4007    var deviceClasses = ['pc', 'tablet1', 'tablet2', 'mo'];
4008
4009    function updateGnbClass() {
4010      var w = window.innerWidth;
4011      var newClass = '';
4012
4013      if (w >= 1700) {
4014        newClass = 'pc';
4015      } else if (w >= 1024) {
4016        newClass = 'tablet1';
4017      } else if (w >= 768) {
4018        newClass = 'tablet2';
4019      } else {
4020        newClass = 'mo';
4021      }
4022
4023      // 기존 디바이스 클래스 제거
4024      for (var i = 0; i < deviceClasses.length; i++) {
4025        gnb.classList.remove(deviceClasses[i]);
4026      }
4027      // 새 클래스 추가
4028      gnb.classList.add(newClass);
4029    }
4030
4031    // 초기 실행
4032    updateGnbClass();
4033
4034    // 리사이즈 시 업데이트 (디바운스 적용)
4035    var resizeTimer;
4036    window.addEventListener('resize', function() {
4037      clearTimeout(resizeTimer);
4038      resizeTimer = setTimeout(updateGnbClass, 100);
4039    });
4040  }
4041
4042  /* =========================================================
4043     사이드메뉴(햄버거)
4044     - leaf(하위 없는 링크) 클릭 시 자동 닫기
4045     ========================================================= */
4046  function initSideMenu(menuToggle, sideMenu, closeMenu){
4047    if (!menuToggle || !sideMenu) return;
4048
4049    function lockScroll(on){ document.documentElement.style.overflow = on ? 'hidden' : ''; }
4050
4051    function openSide(){
4052      menuToggle.classList.add('active');
4053      sideMenu.classList.add('active');
4054      menuToggle.setAttribute('aria-expanded','true');
4055      sideMenu.setAttribute('aria-hidden','false');
4056      lockScroll(true);
4057      var first = sideMenu.querySelector('a,button');
4058      if (first) first.focus();
4059      sideMenu.addEventListener('keydown', trapFocusSide);
4060    }
4061    function trapFocusSide(e){
4062      if(e.key!=='Tab')return;
4063      var focusable=sideMenu.querySelectorAll('a[href],button:not([disabled]),input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"])');
4064      if(!focusable.length)return;
4065      var first=focusable[0],last=focusable[focusable.length-1];
4066      if(e.shiftKey){if(document.activeElement===first){e.preventDefault();last.focus();}}
4067      else{if(document.activeElement===last){e.preventDefault();first.focus();}}
4068    }
4069    function closeSide(){
4070      sideMenu.removeEventListener('keydown', trapFocusSide);
4071      menuToggle.classList.remove('active');
4072      sideMenu.classList.remove('active');
4073      menuToggle.setAttribute('aria-expanded','false');
4074      sideMenu.setAttribute('aria-hidden','true');
4075      lockScroll(false);
4076      menuToggle.focus();
4077    }
4078
4079    menuToggle.addEventListener('click', function(e){
4080      e.stopPropagation();
4081      if (menuToggle.classList.contains('active')) closeSide(); else openSide();
4082    });
4083
4084    if (closeMenu){
4085      closeMenu.addEventListener('click', function(e){ e.stopPropagation(); closeSide(); });
4086    }
4087
4088    // 내부 클릭: 전파 막고, leaf면 닫기
4089    sideMenu.addEventListener('click', function(e){
4090      e.stopPropagation();
4091      var a = e.target.closest && e.target.closest('a');
4092      if (!a) return;
4093      var li = a.closest('li');
4094      var isHasSub = li && li.classList.contains('has-sub');
4095      if (!isHasSub) closeSide();
4096    });
4097
4098    // 바깥 클릭/ESC 닫기
4099    document.addEventListener('click', function(){ if (sideMenu.classList.contains('active')) closeSide(); });
4100    document.addEventListener('keydown', function(e){ if (e.key==='Escape') closeSide(); });
4101  }
4102
4103  /* =========================================================
4104     메뉴 렌더러 (ES5 / ID 충돌 방지 / 현재경로 자동 펼침 / 아코디언 지원)
4105     ========================================================= */
4106  function renderMenu(menu, root, opts) {
4107    opts = opts || {};
4108    var prefix = opts.idPrefix || ('inst-' + Math.random().toString(36).substr(2,5));
4109    var single = !!opts.single;
4110
4111    // 비우기
4112    while (root.firstChild) root.removeChild(root.firstChild);
4113
4114    var counter = 0;
4115    function nextId() {
4116      counter++;
4117      var n = counter < 10 ? '0' + counter : counter;
4118      return 'm-' + prefix + '-' + n;
4119    }
4120
4121    function make(items, depth) {
4122      var ul = document.createElement('ul');
4123      ul.className = (depth === 1 ? 'menu' : 'sublist');
4124      var hasActiveInUl = false;
4125
4126      for (var i = 0; i < items.length; i++) {
4127        var it = items[i];
4128        if (it.use === false) continue;
4129
4130        var li = document.createElement('li');
4131        li.className = (depth === 1 ? 'cell' : 'subitem');
4132        var hasChildren = it.children && it.children.length;
4133        if (hasChildren) li.className += ' has-sub';
4134
4135        var a = document.createElement('a');
4136        a.className = 'depth' + depth;
4137        a.href = it.href || '#';
4138        // (변경) target을 렌더링 직전에 정규화
4139        if (it.target) {
4140          var tgt = normalizeTargetJS(it.target);
4141          if (tgt) a.setAttribute('target', tgt);
4142        }
4143        if (it.rel) a.setAttribute('rel', it.rel);
4144        a.appendChild(document.createTextNode(it.text || ''));
4145
4146        var active = (it.href && it.href === location.pathname);
4147        if (active) a.setAttribute('aria-current', 'page');
4148
4149        if (hasChildren) {
4150          var id = nextId();
4151
4152          var inp = document.createElement('input');
4153          inp.type = 'checkbox';
4154          inp.id = id;
4155          inp.className = 'acc';
4156          inp.hidden = true;
4157			
4158          var lb = document.createElement('label');
4159          lb.htmlFor = id;
4160          lb.className = 'acc-toggle';
4161          lb.innerHTML = '<span class="visually-hidden">하위메뉴 열기/닫기</span>';
4162          lb.setAttribute('aria-expanded', inp.checked ? 'true' : 'false');
4163
4164          var child = make(it.children, depth + 1);
4165
4166          if (child.hasActive) inp.checked = true;
4167
4168          function syncAria(input, label) {
4169            label.setAttribute('aria-expanded', input.checked ? 'true' : 'false');
4170          }
4171          syncAria(inp, lb);
4172
4173          inp.addEventListener('change', (function (input, label) {
4174            return function () {
4175              syncAria(input, label);
4176              if (single && input.checked) {
4177                var parentUL = input.parentNode && input.parentNode.parentNode;
4178                if (!parentUL) return;
4179                var lis = parentUL.children;
4180                for (var j = 0; j < lis.length; j++) {
4181                  var li2 = lis[j];
4182                  if (li2 !== input.parentNode) {
4183                    var sibInp = li2.querySelector('input.acc');
4184                    var sibLabel = li2.querySelector('label.acc-toggle');
4185                    if (sibInp) sibInp.checked = false;
4186                    if (sibLabel && sibInp) syncAria(sibInp, sibLabel);
4187                  }
4188                }
4189              }
4190            };
4191          })(inp, lb));
4192
4193          li.appendChild(inp);
4194          li.appendChild(a);
4195          li.appendChild(lb);
4196          li.appendChild(child.ul);
4197          hasActiveInUl = hasActiveInUl || active || child.hasActive;
4198        } else {
4199          li.appendChild(a);
4200          hasActiveInUl = hasActiveInUl || active;
4201        }
4202
4203        ul.appendChild(li);
4204      }
4205
4206      return { ul: ul, hasActive: hasActiveInUl };
4207    }
4208
4209    var built = make(menu, 1);
4210    // root(UL)에 직접 자식만 붙임
4211    root.className = 'menu';
4212    var frag = document.createDocumentFragment();
4213    while (built.ul.firstChild) frag.appendChild(built.ul.firstChild);
4214    root.appendChild(frag);
4215  }
4216
4217  /* =========================================================
4218     PC 전용: 터치 1회 열기(같은 li 내 다른 링크 포커스 호환)
4219     ========================================================= */
4220  function initPcTouchOpen(){
4221    var items = document.querySelectorAll('#menu-pc > li.cell');
4222    if (!items.length) return;
4223
4224    for (var i=0;i<items.length;i++){
4225      (function(li){
4226        var a = li.querySelector(':scope > a');
4227        if (!a) return;
4228
4229        a.addEventListener('touchstart', function(e){
4230          var isOpen = li.classList.contains('open');
4231          for (var k=0;k<items.length;k++){ if (items[k]!==li) items[k].classList.remove('open'); }
4232          if (!isOpen) { e.preventDefault(); li.classList.add('open'); }
4233        }, { passive:false });
4234
4235        li.addEventListener('mouseleave', function(){ li.classList.remove('open'); });
4236        li.addEventListener('focusin', function(){
4237          for (var k=0;k<items.length;k++){ if (items[k]!==li) items[k].classList.remove('open'); }
4238          li.classList.add('open');
4239        });
4240        li.addEventListener('focusout', function(e){
4241          if (!li.contains(e.relatedTarget)) li.classList.remove('open');
4242        });
4243      })(items[i]);
4244    }
4245
4246    document.addEventListener('click', function(e){
4247      if (!e.target.closest || !e.target.closest('#menu-pc')) {
4248        var opens = document.querySelectorAll('#menu-pc > li.cell.open');
4249        for (var i=0;i<opens.length;i++) opens[i].classList.remove('open');
4250      }
4251    });
4252  }
4253
4254  /* =========================================================
4255     사이트맵: 항상 펼침 처리 (체크박스/라벨 상태 동기화)
4256     ========================================================= */
4257  function expandAllForSitemap(rootEl, depth3Collapsed){
4258    if (!rootEl) return;
4259    var inputs = rootEl.querySelectorAll('input.acc');
4260    for (var i=0;i<inputs.length;i++){
4261      var inp = inputs[i];
4262      // ★ depth3 접힘 모드: sublist(2뎁스 하위=3뎁스) 안의 토글은 접고, 그 외(2뎁스)는 펼침
4263      var isDepth3 = depth3Collapsed && inp.closest && inp.closest('.sublist');
4264      inp.checked = isDepth3 ? false : true;
4265      var lb = inp.parentNode ? inp.parentNode.querySelector(':scope > label.acc-toggle') : null;
4266      if (lb) lb.setAttribute('aria-expanded', inp.checked ? 'true' : 'false');
4267    }
4268  }
4269
4270  /* =========================================================
4271     사이트맵 오버레이
4272     ========================================================= */
4273  function initSitemap(toggleBtn, layer, closeBtn, backdrop, root){
4274    if (!layer || !root) return; // 버튼은 없어도 동작
4275
4276    // ★ header 안에 있으면 backdrop-filter 때문에 position:fixed가 깨짐 → body로 이동
4277    if (layer.closest('header')) {
4278      document.body.appendChild(layer);
4279    }
4280
4281    function lockScroll(on){ document.documentElement.style.overflow = on ? 'hidden' : ''; }
4282    function trapFocusMap(e){
4283      if(e.key!=='Tab')return;
4284      var panel=layer.querySelector('.sm-panel')||layer;
4285      var focusable=panel.querySelectorAll('a[href],button:not([disabled]),input:not([disabled]),[tabindex]:not([tabindex="-1"])');
4286      if(!focusable.length)return;
4287      var first=focusable[0],last=focusable[focusable.length-1];
4288      if(e.shiftKey){if(document.activeElement===first){e.preventDefault();last.focus();}}
4289      else{if(document.activeElement===last){e.preventDefault();first.focus();}}
4290    }
4291    function openMap(){
4292      layer.classList.add('active');
4293      layer.setAttribute('aria-hidden','false');
4294      if (toggleBtn){ toggleBtn.classList.add('active'); toggleBtn.setAttribute('aria-expanded','true'); }
4295
4296      lockScroll(true);
4297      var first = layer.querySelector('a,button,[tabindex]:not([tabindex="-1"])');
4298      if (first) first.focus();
4299      layer.addEventListener('keydown', trapFocusMap);
4300    }
4301    function closeMap(){
4302      layer.removeEventListener('keydown', trapFocusMap);
4303      layer.classList.remove('active');
4304      layer.setAttribute('aria-hidden','true');
4305      if (toggleBtn){ toggleBtn.classList.remove('active'); toggleBtn.setAttribute('aria-expanded','false'); toggleBtn.focus(); }
4306      lockScroll(false);
4307    }
4308
4309    if (toggleBtn){
4310      toggleBtn.addEventListener('click', function(e){
4311        e.stopPropagation();
4312        layer.classList.contains('active') ? closeMap() : openMap();
4313      });
4314    }
4315    if (closeBtn){
4316      closeBtn.addEventListener('click', function(e){ e.stopPropagation(); closeMap(); });
4317    }
4318    if (backdrop){
4319      backdrop.addEventListener('click', function(){ closeMap(); });
4320    }
4321
4322    // 패널 바깥(검은 배경/패널 여백) 클릭 시 닫기
4323    layer.addEventListener('click', function(e){
4324      if (!e.target.closest('.sm-panel')) closeMap();
4325    });
4326
4327    // 링크 클릭 시 닫기(사이트맵은 전체 닫기)
4328    root.addEventListener('click', function(e){
4329      var a = e.target.closest && e.target.closest('a');
4330      if (a) closeMap();
4331    });
4332
4333    // ESC 닫기
4334    document.addEventListener('keydown', function(e){
4335      if (e.key === 'Escape' && layer.classList.contains('active')) closeMap();
4336    });
4337
4338    // 외부 호출용(디버그)
4339    window.openSitemap  = openMap;
4340    window.closeSitemap = closeMap;
4341  }
4342
4343})();
4344</script>
4344
4345
4346
4347<!-- .wg_edit_img Shift+클릭 시 <a> 태그 새창 열기 방지 -->
4348
4349<!-- 위젯 아이콘 클릭 핸들러 (일반: 팝업, Shift+클릭: 모달) -->
4350
4351<!-- 검색 오버레이 -->
4352<div class="search-overlay" id="searchOverlay" aria-hidden="true" role="dialog" aria-modal="true" aria-label="검색">
4353  <button type="button" class="search-overlay-close" id="searchOverlayClose" aria-label="닫기">
4354    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false">
4355      <line x1="18" y1="6" x2="6" y2="18"></line>
4356      <line x1="6" y1="6" x2="18" y2="18"></line>
4357    </svg>
4358  </button>
4359  <div class="search-overlay-content">
4360    <div class="search-overlay-title">SEARCH</div>
4361    <form action="https://songpasilbeot.or.kr/bbs/search.php" method="get" class="search-overlay-form" id="searchOverlayForm">
4362      <input type="hidden" name="sfl" value="wr_subject||wr_content">
4363      <input type="hidden" name="sop" value="and">
4364      <input type="text" name="stx" id="searchOverlayInput" placeholder="검색어를 입력하세요" autocomplete="off" required>
4365      <button type="submit" aria-label="검색">
4366        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-linecap="round" stroke-linejoin="round">
4367          <circle cx="11" cy="11" r="8"></circle>
4368          <path d="m21 21-4.3-4.3"></path>
4369        </svg>
4370      </button>
4371    </form>
4372  </div>
4373</div>
4374
4375<!-- 검색 오버레이 스크립트 -->
4376<script>
4377(function(){
4378  var overlay = document.getElementById('searchOverlay');
4379  var closeBtn = document.getElementById('searchOverlayClose');
4380  var input = document.getElementById('searchOverlayInput');
4381  var form = document.getElementById('searchOverlayForm');
4382
4383  // 검색 버튼 (inner 위치 또는 between 위치)
4384  var searchBtns = document.querySelectorAll('#headerSearchBtn, #headerSearchBtnBetween, .gmenu-search-btn');
4385
4386  if (!overlay) return;
4387
4388  function trapFocusSearch(e){
4389    if(e.key!=='Tab')return;
4390    var focusable=overlay.querySelectorAll('a[href],button:not([disabled]),input:not([disabled]),[tabindex]:not([tabindex="-1"])');
4391    if(!focusable.length)return;
4392    var first=focusable[0],last=focusable[focusable.length-1];
4393    if(e.shiftKey){if(document.activeElement===first){e.preventDefault();last.focus();}}
4394    else{if(document.activeElement===last){e.preventDefault();first.focus();}}
4395  }
4396
4397  function openSearch() {
4398    overlay.classList.add('active');
4399    overlay.setAttribute('aria-hidden', 'false');
4400    document.body.classList.add('search-open');
4401    overlay.addEventListener('keydown', trapFocusSearch);
4402    // 입력 필드에 포커스
4403    setTimeout(function() {
4404      if (input) input.focus();
4405    }, 100);
4406  }
4407
4408  function closeSearch() {
4409    overlay.removeEventListener('keydown', trapFocusSearch);
4410    overlay.classList.remove('active');
4411    overlay.setAttribute('aria-hidden', 'true');
4412    document.body.classList.remove('search-open');
4413    // 입력값 초기화
4414    if (input) input.value = '';
4415    // 포커스 복귀
4416    var btn = document.querySelector('#headerSearchBtn, #headerSearchBtnBetween, .gmenu-search-btn');
4417    if (btn) btn.focus();
4418  }
4419
4420  // 검색 버튼 클릭
4421  searchBtns.forEach(function(btn) {
4422    btn.addEventListener('click', function(e) {
4423      e.preventDefault();
4424      e.stopPropagation();
4425      openSearch();
4426    });
4427  });
4428
4429  // 닫기 버튼 클릭
4430  if (closeBtn) {
4431    closeBtn.addEventListener('click', function(e) {
4432      e.preventDefault();
4433      closeSearch();
4434    });
4435  }
4436
4437  // 배경 클릭 시 닫기
4438  overlay.addEventListener('click', function(e) {
4439    if (e.target === overlay) {
4440      closeSearch();
4441    }
4442  });
4443
4444  // ESC 키로 닫기
4445  document.addEventListener('keydown', function(e) {
4446    if (e.key === 'Escape' && overlay.classList.contains('active')) {
4447      closeSearch();
4448    }
4449  });
4450
4451  // 폼 제출 시 빈 검색어 방지
4452  if (form) {
4453    form.addEventListener('submit', function(e) {
4454      if (!input || !input.value.trim()) {
4455        e.preventDefault();
4456        if (input) input.focus();
4457      }
4458    });
4459  }
4460
4461  // 전역 함수로 노출
4462  window.openSearchOverlay = openSearch;
4463  window.closeSearchOverlay = closeSearch;
4464})();
4465</script>
4465
4466
4467<!-- ★ v4: 사이드 메뉴 글로벌 버튼 스크립트 -->
4468<script>
4469(function(){
4470  // 사이드 검색 버튼
4471  var sideSearchBtn = document.getElementById('sideSearchBtn');
4472  if (sideSearchBtn) {
4473    sideSearchBtn.addEventListener('click', function() {
4474      // 사이드 메뉴 닫기
4475      var sideMenu = document.getElementById('sideMenu');
4476      if (sideMenu) {
4477        sideMenu.classList.remove('active');
4478        sideMenu.setAttribute('aria-hidden', 'true');
4479        document.body.classList.remove('menu-open');
4480      }
4481      // 검색 오버레이 열기
4482      if (typeof window.openSearchOverlay === 'function') {
4483        window.openSearchOverlay();
4484      }
4485    });
4486  }
4487
4488  // 사이드 언어 버튼
4489  var sideLangBtns = document.querySelectorAll('.side-lang-btn');
4490  sideLangBtns.forEach(function(btn) {
4491    btn.addEventListener('click', function() {
4492      var langCode = this.dataset.lang;
4493      if (langCode) {
4494        // 언어 변경 (세션 기반 또는 URL 파라미터)
4495        window.location.href = 'https://songpasilbeot.or.kr/?lang=' + langCode;
4496      }
4497    });
4498  });
4499})();
4500</script>
4500
4501
4502
4503<!-- ★ 쇼핑몰 그룹 드롭다운 토글 (구글번역 조건과 무관) -->
4504<script>
4505document.addEventListener('DOMContentLoaded', function() {
4506  var dropdowns = document.querySelectorAll('.gmenu-member-dropdown');
4507  if (!dropdowns.length) return;
4508
4509  dropdowns.forEach(function(dropdown) {
4510    var trigger = dropdown.querySelector('.gmenu-member-trigger');
4511    if (!trigger) return;
4512
4513    trigger.addEventListener('click', function(e) {
4514      e.preventDefault();
4515      e.stopPropagation();
4516      // 다른 드롭다운 닫기
4517      dropdowns.forEach(function(other) {
4518        if (other !== dropdown) other.classList.remove('open');
4519      });
4520      dropdown.classList.toggle('open');
4521    });
4522  });
4523
4524  // 외부 클릭 시 드롭다운 닫기
4525  document.addEventListener('click', function(e) {
4526    if (!e.target.closest('.gmenu-member-dropdown')) {
4527      dropdowns.forEach(function(d) { d.classList.remove('open'); });
4528    }
4529  });
4530});
4531</script>
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542      
4542<script src="https://songpasilbeot.or.kr/_themeCom/themeAsset/basic_resources/js/wing.js?v=2"></script>
4542
4543
4544  <!-- 배너 -->
4545  
4546<!-- Swiper CSS (CDN fallback) -->
4547<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css" />
4548<!-- MAIN_TOP_TOTAL CSS -->
4549<link rel="stylesheet" href="https://songpasilbeot.or.kr/theme/hayan/_main_top/MAIN_TOP_TOTAL/resources/css/style.css" />
4550<link rel="stylesheet" href="https://songpasilbeot.or.kr/theme/hayan/_main_top/MAIN_TOP_TOTAL/sw_1/resources/css/style.css" />
4551    
4552<style>
4553.MAIN_TOP_TOTAL {
4554    position: relative;
4555    width: 100%;
4556    overflow: hidden;
4557    background-color: #000000;
4558    }
4559.MAIN_TOP_TOTAL .slide_bg {
4560    opacity: 0.85;
4561}
4562.MAIN_TOP_TOTAL .slide_wrap {
4563    position: relative;
4564    width: 100%;
4565    height: 100vh;
4566}
4567/* 외부 배경색 영역이 슬라이드 높이를 항상 따라가도록 min-height 동기화 (fade 효과/absolute로 부모가 자식 높이를 못 받는 경우 대비) */
4568.MAIN_TOP_TOTAL { min-height: 100vh; }
4569@media screen and (max-width: 768px) {
4570    .MAIN_TOP_TOTAL .slide_wrap {
4571        height: 100vh;    }
4572    .MAIN_TOP_TOTAL { min-height: 100vh; }}
4573        /* 텍스트 가로 정렬 */
4574.MAIN_TOP_TOTAL .slide_text_wrap.text_align_left { text-align: left; }
4575.MAIN_TOP_TOTAL .slide_text_wrap.text_align_center { text-align: center; }
4576.MAIN_TOP_TOTAL .slide_text_wrap.text_align_right { text-align: right; }
4577/* 텍스트 세로 정렬 */
4578.MAIN_TOP_TOTAL .slide_text_wrap { align-items: center; padding-top: 0; padding-bottom: 0; }.MAIN_TOP_TOTAL .slide_text_inner { transform: translateY(-100px); }.MAIN_TOP_TOTAL .slide_txt > .txt_content { display: block; width: 100%; }
4579/* 텍스트 등장 애니메이션 */
4580.MAIN_TOP_TOTAL .slide_txt {
4581    opacity: 0;
4582    transform: translateY(50px);    transition: opacity 0.8s ease, transform 0.8s ease;
4583}
4584.MAIN_TOP_TOTAL .swiper-slide-active .slide_txt {
4585    opacity: 1;
4586    transform: translateY(0);}
4587.MAIN_TOP_TOTAL .swiper-slide-active .slide_txt1 { transition-delay: 0.1s; }
4588.MAIN_TOP_TOTAL .swiper-slide-active .slide_txt2 { transition-delay: 0.2s; }
4589.MAIN_TOP_TOTAL .swiper-slide-active .slide_txt3 { transition-delay: 0.3s; }
4590.MAIN_TOP_TOTAL .swiper-slide-active .slide_txt4 { transition-delay: 0.4s; }
4591.MAIN_TOP_TOTAL .swiper-slide-active .slide_link_wrap { transition-delay: 0.5s; }
4592.MAIN_TOP_TOTAL .slide_btn_group { flex-direction: row; gap: 10px; justify-content: center; }
4593.MAIN_TOP_TOTAL .slide_btn_group { transform: translateY(50px); transition: opacity 0.8s ease, transform 0.8s ease; }
4594.MAIN_TOP_TOTAL .swiper-slide-active .slide_btn_group { transform: translateY(0); transition-delay: 0.5s; }
4595/* 슬라이드 효과 */
4596.MAIN_TOP_TOTAL .swiper-slide-active .slide_bg {
4597    animation: zoomOut 5s ease-out forwards;
4598}
4599@keyframes zoomOut {
4600    from { transform: scale(1.1); }
4601    to { transform: scale(1); }
4602}
4603/* 이미지 가로값 */
4604.MAIN_TOP_TOTAL .slide_img_wrap img {
4605    width: clamp(200px, calc(15.625vw + 150px), 400px);
4606    height: auto;
4607}
4608
4609/* ★ 비디오 포스터 — 로드 후 자동 페이드아웃 */
4610.MAIN_TOP_TOTAL .video_poster_wrap {
4611    position: relative;
4612    overflow: hidden;
4613}
4614.MAIN_TOP_TOTAL .video_poster {
4615    position: absolute;
4616    top: 0;
4617    left: 0;
4618    width: 100%;
4619    height: 100%;
4620    background-size: cover;
4621    background-position: center;
4622    background-repeat: no-repeat;
4623    opacity: 1;
4624    transition: opacity 0.3s ease-out;
4625    z-index: 10;
4626    pointer-events: none;
4627}
4628/* iframe 로드되면 포스터 페이드아웃 */
4629.MAIN_TOP_TOTAL .video_poster_wrap iframe {
4630    position: relative;
4631    z-index: 2;
4632}
4633/* ★ 첫 슬라이드는 포스터 즉시 숨김 */
4634.MAIN_TOP_TOTAL .swiper-slide:nth-child(1) .video_poster {
4635    opacity: 0 !important;
4636    pointer-events: none;
4637}
4638
4639/* ★ 포스터 자동 페이드아웃: 즉시 시작 후 0.4초 페이드 (지연 없음) */
4640.MAIN_TOP_TOTAL .video_poster {
4641    animation: fadeOutPoster 0.4s ease-out 0s forwards;
4642}
4643
4644@keyframes fadeOutPoster {
4645    0% { opacity: 1; }
4646    99% { opacity: 0; }
4647    100% { opacity: 0; display: none; }
4648}
4649
4650/* ★ Vimeo 썸네일 오버레이: 기본은 보임, .thumb-fade 부여 시 천천히 사라짐 */
4651.MAIN_TOP_TOTAL .vimeo_thumb {
4652    opacity: 1;
4653}
4654.MAIN_TOP_TOTAL .vimeo_thumb.thumb-fade {
4655    animation: fadeOutPoster 2s ease-out 2.5s forwards;
4656}
4657
4658/* 첫 슬라이드는 포스터 즉시 숨김 */
4659.MAIN_TOP_TOTAL .swiper-slide:nth-child(1) .video_poster {
4660    animation: none !important;
4661    opacity: 0 !important;
4662}
4663/* 컨트롤 영역 - 슬라이드 위에 오버레이 (텍스트 영역보다 아래) */
4664.MAIN_TOP_TOTAL .control_wrap {
4665    position: absolute;
4666    top: 0;
4667    left: 0;
4668    right: 0;
4669    bottom: 0;
4670    pointer-events: none;
4671    z-index: 5;
4672    overflow: visible;
4673}
4674.MAIN_TOP_TOTAL .control_wrap .contents-container {
4675    position: relative;
4676    height: 100%;
4677    overflow: visible;
4678    pointer-events: none;
4679}
4680.MAIN_TOP_TOTAL .control_wrap .control_inner {
4681    position: relative;
4682    height: 100%;
4683    overflow: visible;
4684    pointer-events: none;
4685}
4686
4687/* ===== 화살표 위치 스타일 ===== */
4688.MAIN_TOP_TOTAL .arrows_wrap {
4689    pointer-events: none;
4690    display: flex;
4691    position: absolute;
4692    top: 0; right: 30px; bottom: 30px; left: -200px;
4693    z-index: 20;
4694    box-sizing: border-box;
4695    --arrow-size: 50px;
4696    --arrow-icon-size: 24px;
4697    gap: 8px;
4698    align-items: flex-end;
4699    justify-content: center;
4700}
4701/* 화살표 버튼 위치 초기화 (flex 레이아웃용) */
4702.MAIN_TOP_TOTAL .arrows_wrap .swiper-button-prev,
4703.MAIN_TOP_TOTAL .arrows_wrap .swiper-button-next {
4704    pointer-events: auto;
4705    position: static !important;
4706    margin: 0 !important;
4707    top: auto !important;
4708    left: auto !important;
4709    right: auto !important;
4710}
4711
4712/* ===== 화살표 반응형 (태블릿) ===== */
4713
4714/* ===== 화살표 반응형 (모바일) ===== */
4715
4716/* ===== 파츠 화면별 출력 여부 (화살표/페이징/플레이바 × PC/태블릿/모바일) =====
4717   ★ 2026-09-04 파츠/데코 탭 "출력" 행. PC=show/hide, 태블릿·모바일 ''=PC동일. 숨김이면 해당 화면대에서 display:none.
4718   브레이크포인트는 파츠 반응형과 동일 (PC ≥1281 / 태블릿 768~1280 / 모바일 ≤767) */
4719
4720/* ===== 페이징 위치 스타일 ===== */
4721.MAIN_TOP_TOTAL .pagination_wrap {
4722    pointer-events: none;
4723    display: flex;
4724    position: absolute;
4725    z-index: 20;
4726    box-sizing: border-box;
4727    top: 0; right: 0; bottom: 30px; left: 0;
4728    justify-content: center;
4729    align-items: flex-end;
4730}
4731/* Swiper 기본 absolute 리셋 → flex 레이아웃 참여 */
4732.MAIN_TOP_TOTAL .pagination_wrap .swiper-pagination {
4733    pointer-events: auto;
4734    position: static !important;
4735    width: auto !important;
4736    bottom: auto !important;
4737    left: auto !important;
4738    top: auto !important;
4739    margin: 0 !important;
4740}
4741
4742/* ===== 페이징 반응형 (태블릿) ===== */
4743
4744/* ===== 페이징 반응형 (모바일) ===== */
4745
4746/* ===== 플레이바 위치 스타일 ===== */
4747.MAIN_TOP_TOTAL .playbar_wrap {
4748    pointer-events: none;
4749    position: absolute;
4750    z-index: 20;
4751    box-sizing: border-box;
4752    display: flex;
4753    justify-content: flex-start;
4754    align-items: center;
4755    top: auto;
4756    right: auto;
4757    bottom: 0px;
4758    left: 0px;
4759}
4760.MAIN_TOP_TOTAL .playbar_wrap .playbar_inner {
4761    pointer-events: auto;
4762}
4763
4764/* ===== 플레이바 반응형 (태블릿) ===== */
4765
4766/* ===== 플레이바 반응형 (모바일) ===== */
4767
4768/* ===== 검색박스 데코 위치 ===== */
4769
4770/* ===== 데코레이션 Inner 래퍼 ===== */
4771.MAIN_TOP_TOTAL .deco_wrap {
4772    position: absolute;
4773    top: 0; left: 0; right: 0; bottom: 0;
4774    z-index: 30;
4775    pointer-events: none;
4776}
4777.MAIN_TOP_TOTAL .deco_wrap .contents-container {
4778    height: 100%;
4779}
4780.MAIN_TOP_TOTAL .deco_wrap .deco_inner {
4781    position: relative;
4782    width: 100%;
4783    height: 100%;
4784}
4785
4786/* ===== 데코레이션 위치 스타일 ===== */
4787
4788
4789
4790
4791
4792.MAIN_TOP_TOTAL .slide_bg {
4793    overflow: hidden;
4794}
4795/* 영상 wrapper div: 컨테이너 커버 (min-width + min-height로 빈공간 방지) */
4796.MAIN_TOP_TOTAL .slide_bg > div {
4797    padding: 0 !important;
4798    position: absolute !important;
4799    top: 50% !important;
4800    left: 50% !important;
4801    width: auto !important;
4802    height: auto !important;
4803    min-width: 100%;
4804    min-height: 100%;
4805    aspect-ratio: 16/9;
4806    transform: translate(-50%, -50%) !important;
4807}
4808/* iframe: wrapper 안에서 100% 채움 */
4809.MAIN_TOP_TOTAL .slide_bg iframe {
4810    position: absolute !important;
4811    top: 0 !important;
4812    left: 0 !important;
4813    width: 100% !important;
4814    height: 100% !important;
4815    border: 0 !important;
4816    pointer-events: none;
4817}
4818/* ★ 0927 add-only: 대체이미지 <video>(mp4 직접 재생) — iframe 과 같이 슬라이드 전체 커버 */
4819.MAIN_TOP_TOTAL .slide_bg > video {
4820    position: absolute;
4821    top: 0;
4822    left: 0;
4823    width: 100%;
4824    height: 100%;
4825    object-fit: cover;
4826    object-position: center;
4827    display: block;
4828    pointer-events: none;
4829}
4830/* iframe 직접 삽입 시 (wrapper 없음): 컨테이너 커버 */
4831.MAIN_TOP_TOTAL .slide_bg > iframe {
4832    top: 50% !important;
4833    left: 50% !important;
4834    width: auto !important;
4835    height: auto !important;
4836    min-width: 100%;
4837    min-height: 100%;
4838    aspect-ratio: 16/9;
4839    transform: translate(-50%, -50%) !important;
4840}
4841@media screen and (max-width: 1024px) {
4842    .MAIN_TOP_TOTAL .slide_bg > div {
4843        min-height: 130% !important;
4844    }
4845    .MAIN_TOP_TOTAL .slide_bg > iframe {
4846        min-height: 130% !important;
4847    }
4848}
4849
4850</style>
4851
4852
4853
4854<div class="MAIN_TOP_TOTAL" data-widget-id="MAIN_TOP">
4855            <!-- 슬라이드 영역 -->
4856    <div class="slide_wrap">
4857        
4858<div class="swiper sw_1_swiper" style="--btn-color:#fff;--btn-radius:50px;--btn-gap:15px;--btn-img-top:0;--btn-img-left:0;--btn-font-weight:600;--btn-bg-opacity:1;">
4859    <div class="swiper-wrapper">
4860                                <div class="swiper-slide">
4861                        <!-- 배경 이미지 (대체이미지 지원) -->
4862                                    <div class="slide_bg ">
4863                <img src='/_img/img/SST/main_top_01.webp' alt='이미지'/>            </div>
4864                                    
4865            <!-- 텍스트 영역 -->
4866            <div class="slide_text_wrap text_align_center">
4867                <div class="contents-container container-lg contentContainer">
4868                    <div class="slide_text_inner">
4869                                                                                                <div class="slide_txt slide_txt1" data-swiper-parallax="-800">
4870                                                        <span class="txt_content"><div class="COM_tit f_lg letter-2 lh110 scale-11 w700 mo-f95">지혜로운 노년으로</div></span>
4871                                                    </div>
4872                                                <div class="slide_txt slide_txt2" data-swiper-parallax="-900">
4873                                                        <span class="txt_content"><div class="COM_tit f_lg ff-ko1 letter-05 lh110 scale-13 fg-primary w700 mb_20 mo-f95">함께하는 조화로운 세상</div></span>
4874                                                    </div>
4875                                                <div class="slide_txt slide_txt3" data-swiper-parallax="-1000">
4876                                                        <span class="txt_content"><div class="COM_tit f_mds w500 letter-05 lh140 text-center scale-08 mo-f80">어르신과 지역주민이 함께하는 행복한 복합복지문화 공간<br>
4877송파실벗뜨락 노인복지관이 함께하겠습니다.
4878</div></span>
4879                                                    </div>
4880                        
4881                                            </div>
4882                </div>
4883            </div>
4884        </div>
4885                    </div>
4886</div>
4887    </div>
4888
4889    <!-- 컨트롤 영역 -->
4890    <div class="control_wrap control_center-bottom">
4891                    <!-- 토탈(세트) 스킨 모드 (slide_control_set OFF면 패키지 전체 미출력) -->
4892            
4893            <div class="contents-container container-lg contentContainer">
4894                <div class="control_inner">
4895                                    </div>
4896            </div>
4897            </div>
4898
4899    <!-- 데코레이션 영역 -->
4900    </div>
4901
4902<!-- Swiper JS (CDN) -->
4903<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
4903
4904<!-- Swiper 초기화 스크립트 -->
4905<script>
4906document.addEventListener('DOMContentLoaded', function() {
4907    var swiperEl = document.querySelector('.MAIN_TOP_TOTAL .swiper');
4908
4909    
4910    if (typeof Swiper !== 'undefined' && document.querySelector('.MAIN_TOP_TOTAL .swiper')) {
4911        var slideCount = 1;
4912
4913        // ★ Lazy iframe 활성화 헬퍼 함수
4914        // 현재 슬라이드의 data-src iframe을 실제 src로 복원 (lazy loading)
4915        function _activateLazyIframe(slideEl) {
4916            if (!slideEl) return;
4917            // ★ 이 슬라이드가 활성화되는 시점에 썸네일 fade-out 시작 (슬라이드별 독립 타이밍)
4918            var _thumbs = slideEl.querySelectorAll('.vimeo_thumb');
4919            _thumbs.forEach(function(t) { t.classList.add('thumb-fade'); });
4920            var lazyIframes = slideEl.querySelectorAll('iframe[data-src]');
4921            lazyIframes.forEach(function(iframe) {
4922                var dataSrc = iframe.getAttribute('data-src');
4923                if (dataSrc && iframe.src !== dataSrc) {
4924                    // iframe의 src를 실제 URL로 설정 (Vimeo/YouTube 로드 시작)
4925                    iframe.src = dataSrc;
4926                    iframe.classList.add('loaded');
4927
4928                    // ★ Vimeo/YouTube 로드 후 포스터 페이드아웃
4929                    // (load 이벤트 대신 readystatechange 모니터링)
4930                    var checkInterval = setInterval(function() {
4931                        try {
4932                            // iframe이 실제로 렌더링되었는지 확인
4933                            var iframeDoc = iframe.contentDocument || iframe.contentWindow?.document;
4934                            if (iframeDoc && iframeDoc.readyState === 'complete') {
4935                                clearInterval(checkInterval);
4936                                var posterWrap = iframe.closest('.video_poster_wrap');
4937                                if (posterWrap) {
4938                                    var poster = posterWrap.querySelector('.video_poster');
4939                                    if (poster) {
4940                                        poster.style.opacity = '0';
4941                                    }
4942                                }
4943                            }
4944                        } catch(e) {
4945                            // CORS 제약으로 contentDocument 접근 불가 → 시간 기반 처리
4946                            // 2초 후 자동으로 포스터 페이드아웃
4947                            if (!iframe.classList.contains('vimeo-ready')) {
4948                                setTimeout(function() {
4949                                    var posterWrap = iframe.closest('.video_poster_wrap');
4950                                    if (posterWrap) {
4951                                        var poster = posterWrap.querySelector('.video_poster');
4952                                        if (poster && poster.style.opacity !== '0') {
4953                                            poster.style.opacity = '0';
4954                                        }
4955                                    }
4956                                }, 2000);
4957                                iframe.classList.add('vimeo-ready');
4958                                clearInterval(checkInterval);
4959                            }
4960                        }
4961                    }, 200);
4962                }
4963            });
4964        }
4965
4966                // 토탈 스킨 모드
4967        var mainTopSwiper = new Swiper('.MAIN_TOP_TOTAL .swiper', {
4968            loop: slideCount > 1,
4969            slidesPerView: 1,
4970            spaceBetween: 0,
4971            effect: 'fade',
4972            fadeEffect: { crossFade: true },            speed: 800,
4973            // 터치/스와이프 설정 (최고관리자: 인라인편집 우선, 일반: 터치 활성)
4974            allowTouchMove: true,
4975            simulateTouch: true,
4976            touchRatio: 1,
4977            touchAngle: 45,
4978            grabCursor: true,
4979            threshold: 5,
4980            autoplay: {delay: 5000, disableOnInteraction: false, pauseOnMouseEnter: true},
4981            pagination: {el: ".MAIN_TOP_TOTAL .swiper-pagination", clickable: true, type: "bullets"},
4982            on: {
4983                init: function() {
4984                    updateProgressbar(this);
4985                    initControlSet(this);
4986                    // ★ 초기 슬라이드 lazy iframe 활성화
4987                    _activateLazyIframe(this.slides[this.activeIndex]);
4988                },
4989                slideChangeTransitionStart: function() {
4990                    updateProgressbar(this);
4991                    // ★ 슬라이드 변경 시 lazy iframe 활성화
4992                    _activateLazyIframe(this.slides[this.activeIndex]);
4993                },
4994                autoplayStart: function() {
4995                    var controlSet = document.querySelector('.MAIN_TOP_TOTAL .control_set');
4996                    if (controlSet) controlSet.classList.add('autoplay_running');
4997                    updateProgressbar(this);
4998                },
4999                autoplayStop: function() {
5000                    var controlSet = document.querySelector('.MAIN_TOP_TOTAL .control_set');
5001                    if (controlSet) controlSet.classList.remove('autoplay_running');
5002                                    }
5003            }
5004        });
5005        
5006        // 첫 번째 슬라이드 인터랙션 보장 (loop 모드 DOM 재구성 후)
5007        setTimeout(function() {
5008            var active = document.querySelector('.MAIN_TOP_TOTAL .swiper-slide-active');
5009            if (active) {
5010                active.style.pointerEvents = 'auto';
5011                active.style.zIndex = '1';
5012                // 내부 텍스트/버튼 영역 reflow 강제
5013                var textWrap = active.querySelector('.slide_text_wrap');
5014                if (textWrap) void textWrap.offsetHeight;
5015            }
5016        }, 150);
5017
5018        
5019        
5020        // 프로그레스바 업데이트 (슬라이드 변경 시마다 리셋)
5021        function updateProgressbar(swiper) {
5022                        // 토탈 스킨 모드
5023            var controlSet = document.querySelector('.MAIN_TOP_TOTAL .control_set');
5024                        // ctrl_bar_num / ctrl_dots_bar - CSS 애니메이션 재시작
5025            var progressbar = document.querySelector('.MAIN_TOP_TOTAL .ctrl_bar_num .playbar_progress, .MAIN_TOP_TOTAL .ctrl_dots_bar .playbar_progress');
5026            if (progressbar) {
5027                if (controlSet) {
5028                    controlSet.classList.remove('autoplay_running');
5029                    void controlSet.offsetWidth;
5030                    if (swiper.autoplay.running) {
5031                        controlSet.classList.add('autoplay_running');
5032                    }
5033                }
5034            }
5035                                }
5036
5037                // 토탈 스킨 초기화
5038        function initControlSet(swiper) {
5039            var controlSet = document.querySelector('.MAIN_TOP_TOTAL .control_set');
5040            var btnPrev = document.querySelector('.MAIN_TOP_TOTAL .ctrl_btn.btn_prev');
5041            var btnNext = document.querySelector('.MAIN_TOP_TOTAL .ctrl_btn.btn_next');
5042            var btnPlay = document.querySelector('.MAIN_TOP_TOTAL .ctrl_btn.btn_play');
5043            var btnPause = document.querySelector('.MAIN_TOP_TOTAL .ctrl_btn.btn_pause');
5044
5045            if (btnPrev) {
5046                btnPrev.addEventListener('click', function() { swiper.slidePrev(); });
5047            }
5048            if (btnNext) {
5049                btnNext.addEventListener('click', function() { swiper.slideNext(); });
5050            }
5051            if (btnPlay && btnPause) {
5052                btnPlay.addEventListener('click', function() {
5053                    swiper.autoplay.start();
5054                    btnPlay.style.display = 'none';
5055                    btnPause.style.display = 'flex';
5056                    if (controlSet) controlSet.classList.add('autoplay_running');
5057                    updateProgressbar(swiper);
5058                });
5059                btnPause.addEventListener('click', function() {
5060                    swiper.autoplay.stop();
5061                    btnPause.style.display = 'none';
5062                    btnPlay.style.display = 'flex';
5063                    if (controlSet) controlSet.classList.remove('autoplay_running');
5064                });
5065            }
5066            // 초기 상태
5067            if (controlSet && swiper.autoplay.running) {
5068                controlSet.classList.add('autoplay_running');
5069                if (btnPlay) btnPlay.style.display = 'none';
5070                if (btnPause) btnPause.style.display = 'flex';
5071            }
5072
5073                    }
5074        
5075        
5076        
5077        
5078        // YouTube 포스터 fade out (iframe 로드 완료 시)
5079        function initYoutubePoster() {
5080            document.querySelectorAll('.MAIN_TOP_TOTAL .yt_poster_wrap').forEach(function(wrap) {
5081                var iframe = wrap.querySelector('iframe[src*="youtube"]');
5082                var poster = wrap.querySelector('.video_poster');
5083                if (!iframe || !poster) return;
5084                iframe.addEventListener('load', function() {
5085                    setTimeout(function() {
5086                        poster.classList.add('loaded');
5087                    }, 800);
5088                });
5089            });
5090        }
5091
5092        
5093        // YouTube 포스터 초기화 (Vimeo 유무와 무관하게 독립 동작)
5094        if (document.querySelector('.MAIN_TOP_TOTAL .yt_poster_wrap')) {
5095            initYoutubePoster();
5096        }
5097
5098    } else {
5099        console.warn('Swiper library not found. Please include Swiper JS.');
5100    }
5101
5102    });
5103</script>
5103
5104
5105    <div id="block-container">
5106    <div class="block_box view" id="block_1">
5107<link rel="stylesheet" href="https://songpasilbeot.or.kr/theme/hayan/_main_block/MAIN_BLOCK_TOTAL/resources/css/style.css" />
5108
5109<div class="MAIN_BLOCK_TOTAL">
5110                            <div class="mbt_section mbt_section_1" data-section-idx="0" data-category="FREE" data-skin="grid_free" style="position:relative;background-color:transparent;z-index:99;">
5111                                                            <style data-widget-css="LB_pointicon1"> /*@stack_auto_start*/
5112/*@padding_top:clamp(50px, calc(3.906vw + 37.5px), 100px)*/
5113/*@padding_bottom:clamp(50px, calc(3.906vw + 37.5px), 100px)*/
5114/*@bg_color:transparent*/
5115/*@z_index:99*/
5116
5117/*@stack_auto_end*/
5118
5119/*@padding_top:0px*/
5120/*@padding_bottom:20px*/
5121/*@bg_color:transparent*/
5122
5123/* ===== SCF_quickservice : QUICK SERVICE 메인섹션 ===== */
5124.LB_pointicon1 { position: relative; z-index: 0; }
5125
5126/* wg_side : 좌측 타이틀 + 우측 항목4 컨테이너 + 데코 배경 기준 */
5127/* ★ 타이틀은 inner 왼쪽에 붙임(좌측 패딩 0), 우측 항목들은 inner 안쪽 우측 여백 확보 */
5128.LB_pointicon1 .wg_side {
5129  position: relative;
5130  z-index: 1;
5131  display: grid;
5132  grid-template-columns: 32% 1fr;
5133  align-items: center;
5134  grid-gap: clamp(20px, calc(2.34vw + 12.5px), 50px);
5135  padding: clamp(30px, calc(2.34vw + 22.5px), 60px) 0;
5136  padding-left: 0;
5137  padding-right: clamp(20px, calc(2.34vw + 12.5px), 50px);
5138}
5139
5140/* ===== 데코 배경 : inner 우측 끝까지, 왼쪽은 브라우저 끝까지 확장 ===== */
5141.LB_pointicon1 .wg_side::before {
5142  content: '';
5143  position: absolute;
5144  top: 0;
5145  bottom: 0;
5146  right: 0;
5147  left: calc(-50vw + 50%);
5148  background: #f4f4f4;
5149  border-radius: 0 16px 16px 0;
5150  z-index: -1;
5151  pointer-events: none;
5152}
5153
5154/* ===== 좌측 타이틀 영역 (sub_stit_box) ===== */
5155.LB_pointicon1 .sub_stit_box {
5156  position: relative;
5157  z-index: 1;
5158}
5159.LB_pointicon1 .sub_stit2 { margin-bottom: 4px; }
5160.LB_pointicon1 .sub_stit3 { margin-bottom: clamp(14px, calc(0.78vw + 11.5px), 24px); }
5161.LB_pointicon1 .sub_stit_box .COM_tit { color: #222; }
5162
5163/* QUICK SERVICE 포인트 라벨 */
5164.LB_pointicon1 .qs_label {
5165  display: block;
5166
5167  font-weight: 700;
5168  letter-spacing: 0.08em;
5169  color: #f00000;
5170  margin-bottom: 8px;
5171}
5172.LB_pointicon1 .qs_desc {
5173  margin-top: 4px;
5174  color: #777;
5175}
5176
5177/* ===== 우측 항목 4개 그리드 ===== */
5178.LB_pointicon1 .wg_box {
5179  width: 100%;
5180  float: left;
5181  display: grid;
5182  grid-template-columns: repeat(4, 1fr);
5183  grid-gap: clamp(10px, calc(1.17vw + 6.25px), 25px);
5184}
5185
5186.LB_pointicon1 .wg_box_in {
5187  display: flex;
5188  flex-direction: column;
5189  align-items: center;
5190  justify-content: flex-start;
5191  text-align: center;
5192  padding: clamp(14px, calc(0.78vw + 11.5px), 24px) clamp(8px, calc(0.62vw + 6px), 16px);
5193  background: transparent;
5194  position: relative;
5195}
5196
5197/* 아이콘 이미지 */
5198.LB_pointicon1 .wg_img_box {
5199  margin-bottom: clamp(12px, calc(0.62vw + 10px), 20px);
5200}
5201.LB_pointicon1 .wg_img1 {
5202  width: clamp(56px, calc(2.5vw + 48px), 88px);
5203  height: clamp(56px, calc(2.5vw + 48px), 88px);
5204  margin: 0 auto;
5205  display: flex;
5206  align-items: center;
5207  justify-content: center;
5208}
5209.LB_pointicon1 .wg_img1 img {
5210  width: 100%;
5211  height: 100%;
5212  object-fit: contain;
5213}
5214
5215/* 텍스트 */
5216.LB_pointicon1 .wg_txt_box { width: 100%; }
5217.LB_pointicon1 .wg_txt1 {
5218  font-size: clamp(16px, calc(0.47vw + 14.5px), 22px);
5219  font-weight: 700;
5220  color: #222;
5221  line-height: 1.3;
5222  margin-bottom: 8px;
5223}
5224.LB_pointicon1 .wg_txt2 {
5225  font-size: clamp(13px, calc(0.23vw + 12.25px), 16px);
5226  font-weight: 400;
5227  color: #888;
5228  line-height: 1.45;
5229  word-break: keep-all;
5230}
5231
5232/* ===== 태블릿 : 우측 2열 ===== */
5233@media screen and (max-width: 1024px) {
5234  .LB_pointicon1 .wg_side {
5235    grid-template-columns: 1fr;
5236    grid-gap: clamp(20px, calc(2.34vw + 12.5px), 40px);
5237    padding-left: clamp(20px, calc(2.34vw + 12.5px), 40px);
5238    padding-right: clamp(20px, calc(2.34vw + 12.5px), 40px);
5239  }
5240  .LB_pointicon1 .wg_box { grid-template-columns: repeat(2, 1fr); }
5241  .LB_pointicon1 .wg_side::before { border-radius: 16px; left: calc(-50vw + 50%); right: calc(-50vw + 50%); }
5242}
5243
5244/* ===== 모바일 : 우측 2열 유지, 타이틀 위로 ===== */
5245@media screen and (max-width: 640px) {
5246  .LB_pointicon1 .wg_box { grid-template-columns: repeat(2, 1fr); }
5247  .LB_pointicon1 .wg_box_in { padding: 12px 6px; }
5248}
5249
5250
5251/*@stack_deco*/
5252/* 데코 박스 (항상 출력됨, bg/position 자유 디자인) */
5253/*
5254.LB_pointicon1 .deco_box1 {
5255  position: absolute;
5256  top: 0; left: 0;
5257  width: 300px; height: auto;
5258  z-index: 0;
5259  pointer-events: none;
5260}
5261.LB_pointicon1 .deco_box2 {
5262  position: absolute;
5263  bottom: 0; right: 0;
5264  width: 200px; height: auto;
5265  z-index: 0;
5266  pointer-events: none;
5267}
5268*/ </style>
5269
5270
5271
5272
5273<div class="grid_free  LB_pointicon1 com_f " style="padding-top:clamp(50px, calc(3.906vw + 37.5px), 100px);padding-bottom:clamp(50px, calc(3.906vw + 37.5px), 100px);"  ><!--boxinfo_AD  : sk_홈위젯파일명 -->
5274
5275  <div class="contents-container container-lg  contentContainer ">
5276	  
5277    <!-- 위젯 구간-->
5278
5279<div class="wg_side ">
5280<div class="sub_stit_box">
5281  <div class="sub_stit2">
5282<div class="COM_tit f_sm w700 ff-ko1 lh130 scale-11"><span class="qs_label">QUICK SERVICE</span></div></div>
5283
5284<div class="sub_stit3">
5285<div class="COM_tit f_md w400 ff-ko1 letter-05 lh110 scale-13"> <em class="w700">송파실벗뜨락</em><br>이용안내</div></div>
5286
5287<div class="sub_stit4">
5288<div class="COM_tit f_sm w400 color-777 lh140 qs_desc">송파실벗뜨락은<br>지역사회와 지역주민이 소통하고,<br>함께 찾고, 나누는 구립 노인복지관입니다.</div></div>
5289
5290</div>
5291
5292
5293<div class="wg_box " data-widget-id="LB_pointicon1">
5294
5295  <!--반복문 시작-->
5296
5297    <a href="/bbs/content.php?co_id=SST_3010&lang=ko&me_code=3010"  class="wg_box_in ">
5298  
5299  <div class="wg_img_box">
5300<!-- 이미지 1~5 삽입 (widget_img.php에서 직접 편집 속성 처리) -->
5301
5302  <!-- 모바일 이미지가 없는 경우 PC 이미지를 공통으로 사용 -->
5303    <div id="img_6ac78ed605a1d_wrap" class="wg_img1">
5304          <img src='/_img/svg/SST/main_point_01.svg' alt='이미지'/>      </div>
5305  
5306
5307
5308
5309<!--// 이미지 1~5 삽입 end -->
5310</div>
5311
5312<div class="wg_txt_box">
5313<!--텍스트 반복 시작 (텍스트는 div로 래핑하여 레이아웃 영향 최소화) -->
5314<div class="wg_txt1"><div class="COM_tit f_mds scale-10 ff-ko1 letter-05 lh110 w600">이용안내</div></div>
5315<div class="wg_txt2">어르신의 행복한 일상을 위한 다양한 서비스를 제공합니다.</div>
5316<!--//텍스트 반복 끝-->
5317</div>
5318
5319    </a>
5320    <!--//반복문 끝-->
5321    <!--반복문 시작-->
5322
5323    <a href="/bbs/content.php?co_id=SST_201030&lang=ko&me_code=201030"  class="wg_box_in ">
5324  
5325  <div class="wg_img_box">
5326<!-- 이미지 1~5 삽입 (widget_img.php에서 직접 편집 속성 처리) -->
5327
5328  <!-- 모바일 이미지가 없는 경우 PC 이미지를 공통으로 사용 -->
5329    <div id="img_6ac78ed6061a7_wrap" class="wg_img1">
5330          <img src='/_img/svg/SST/main_point_02.svg' alt='이미지'/>      </div>
5331  
5332
5333
5334
5335<!--// 이미지 1~5 삽입 end -->
5336</div>
5337
5338<div class="wg_txt_box">
5339<!--텍스트 반복 시작 (텍스트는 div로 래핑하여 레이아웃 영향 최소화) -->
5340<div class="wg_txt1"><div class="COM_tit f_mds scale-10 ff-ko1 letter-05 lh110 w600">프로그램 시간표</div></div>
5341<div class="wg_txt2">다양한 프로그램에 참여하고 새로운 배움을 ê²½í—
5341˜í•˜ì„¸ìš”</div>
5342<!--//텍스트 반복 끝-->
5343</div>
5344
5345    </a>
5346    <!--//반복문 끝-->
5347    <!--반복문 시작-->
5348
5349    <a href="/bbs/write.php?bo_table=SST_401020&lang=ko&me_code=401020"  class="wg_box_in ">
5350  
5351  <div class="wg_img_box">
5352<!-- 이미지 1~5 삽입 (widget_img.php에서 직접 편집 속성 처리) -->
5353
5354  <!-- 모바일 이미지가 없는 경우 PC 이미지를 공통으로 사용 -->
5355    <div id="img_6ac78ed606a6f_wrap" class="wg_img1">
5356          <img src='/_img/svg/SST/main_point_03.svg' alt='이미지'/>      </div>
5357  
5358
5359
5360
5361<!--// 이미지 1~5 삽입 end -->
5362</div>
5363
5364<div class="wg_txt_box">
5365<!--텍스트 반복 시작 (텍스트는 div로 래핑하여 레이아웃 영향 최소화) -->
5366<div class="wg_txt1"><div class="COM_tit f_mds scale-10 ff-ko1 letter-05 lh110 w600">자원봉사신청</div></div>
5367<div class="wg_txt2">따뜻한 마음이 모여 더 큰 변화를 만듭니다.</div>
5368<!--//텍스트 반복 끝-->
5369</div>
5370
5371    </a>
5372    <!--//반복문 끝-->
5373    <!--반복문 시작-->
5374
5375    <a href="/bbs/content.php?co_id=SST_1050&lang=ko&me_code=1050"  class="wg_box_in ">
5376  
5377  <div class="wg_img_box">
5378<!-- 이미지 1~5 삽입 (widget_img.php에서 직접 편집 속성 처리) -->
5379
5380  <!-- 모바일 이미지가 없는 경우 PC 이미지를 공통으로 사용 -->
5381    <div id="img_6ac78ed607494_wrap" class="wg_img1">
5382          <img src='/_img/svg/SST/main_point_04.svg' alt='이미지'/>      </div>
5383  
5384
5385
5386
5387<!--// 이미지 1~5 삽입 end -->
5388</div>
5389
5390<div class="wg_txt_box">
5391<!--텍스트 반복 시작 (텍스트는 div로 래핑하여 레이아웃 영향 최소화) -->
5392<div class="wg_txt1"><div class="COM_tit f_mds scale-10 ff-ko1 letter-05 lh110 w600">찾아오시는길</div></div>
5393<div class="wg_txt2">송파실벗뜨락을 직접 방문해 <br>더 가까이 만나보세요</div>
5394<!--//텍스트 반복 끝-->
5395</div>
5396
5397    </a>
5398    <!--//반복문 끝-->
5399    </div>
5400</div>
5401
5402<script>
5403(function(){
5404  function setup(){
5405    var players = document.querySelectorAll('lottie-player');
5406    if (!players.length) return;
5407
5408    players.forEach(function(player){
5409      var style = player.getAttribute('style') || '';
5410      var hasDefault = style.indexOf('--default-color') !== -1;
5411      var hasHover = style.indexOf('--hover-color') !== -1;
5412      if (!hasDefault && !hasHover) return;
5413
5414      var parent = player.closest('.wg_box_in') || player.parentElement;
5415      if (!parent) return;
5416
5417      var injected = false;
5418      function inject(){
5419        if (injected) return;
5420        var sr = player.shadowRoot;
5421        if (!sr) return;
5422        injected = true;
5423        var st = document.createElement('style');
5424        st.textContent = 'svg *[fill]:not([fill="none"]),svg *[stroke]:not([stroke="none"]){transition:fill .3s ease,stroke .3s ease;}'
5425          + (hasDefault ? 'svg *[fill]:not([fill="none"]){fill:var(--default-color) !important;}svg *[stroke]:not([stroke="none"]){stroke:var(--default-color) !important;}' : '')
5426          + (hasHover ? ':host(.hovered) svg *[fill]:not([fill="none"]){fill:var(--hover-color) !important;}:host(.hovered) svg *[stroke]:not([stroke="none"]){stroke:var(--hover-color) !important;}' : '');
5427        sr.appendChild(st);
5428      }
5429
5430      player.addEventListener('ready', inject, { once:true });
5431      player.addEventListener('load', inject, { once:true });
5432      if (player.shadowRoot && player.shadowRoot.querySelector('svg')) inject();
5433
5434      if (hasHover){
5435        parent.addEventListener('mouseenter', function(){ player.classList.add('hovered'); });
5436        parent.addEventListener('mouseleave', function(){ player.classList.remove('hovered'); });
5437      }
5438    });
5439  }
5440
5441  if (document.readyState === 'loading'){
5442    document.addEventListener('DOMContentLoaded', setup);
5443  } else {
5444    setup();
5445  }
5446})();
5447</script>
5447
5448
5449	  <!-- //위젯 구간-->
5450
5451	    </div>
5452</div>
5453        </div>
5454                        <div class="mbt_section mbt_section_2" data-section-idx="1" data-category="STACK" data-skin="stack_bbstabmix_v1" style="position:relative;background-color:transparent;">
5455                                                            <style data-widget-css="LB_stack_tabmix_v1">.LB_stack_tabmix_v1 .widget-area{display: grid; grid-template-columns: 2fr 1fr; gap: clamp(30px, calc(3.906vw + 17.5px), 80px);}@media only all and (max-width: 991px){.LB_stack_tabmix_v1 .widget-area{grid-template-columns: 100%;}}</style>
5456
5457
5458<div class="stack_bbstabmix_v1 LB_stack_tabmix_v1 com_f " style="position:relative;padding-top:100px;padding-bottom:0px;">
5459
5460    <style>.w_deco{position: absolute; bottom: -0px; right: -10px ; width:250px; height: auto;z-index: 2 }</style>
5461    <div class="contents-container container-lg contentContainer">
5462    
5463        
5464        <div class="stack_content_wrap" style="position:relative;z-index:1;">
5465        
5466
5467<div class="stack_grid stack_v1 stackbm_grid" id="stackbm_a7de61cc" data-stack-skin="stack_bbstabmix_v1" style="display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);
5467gap:clamp(30px, calc(3.906vw + 17.5px), 80px);--stackbm-gap:clamp(30px, calc(3.906vw + 17.5px), 80px);">
5468    <style>.LB_stack_tabmix_v1 .stack_item_wrapper[data-slot-order="1"] .stackbm_more_custom{border:1px solid #ddd !important;color:#333 !important;background:#F3F3F3 !important;}.LB_stack_tabmix_v1 .stack_item_wrapper[data-slot-order="1"] .stackbm_more_custom i{color:#333 !important;}.LB_stack_tabmix_v1 .stack_item_wrapper[data-slot-order="1"] .stackbm_more_custom:hover{border-color:#f60 !important;color:#f60 !important;}.LB_stack_tabmix_v1 .stack_item_wrapper[data-slot-order="1"] .stackbm_more_custom:hover i{color:#f60 !important;}</style>        <div class="stack_item_wrapper" data-slot-order="1" data-widget-id="LB_stack_tabmix_v1">
5469        <div class="stack_item">
5470                                        <div class="stackbm_header">
5471                                <div class="stackbm_header_txt">
5472                    <div class="stackbm_title"><h2 class="COM_tit f_md scale-13 w700  letter-2 lh110 mb_10">공지사항
5473</h2></div>
5474                                        <div class="stackbm_subtitle"><div class="COM_tit f_sm w400 letter-1 lh110 mb_30 scale-11 gray333">복지관의 새로운 소식을 안내드립니다.</div></div>
5475                                    </div>
5476                                                <a href="#" class="stackbm_more stackbm_more_custom" style="border-radius:50px;padding:clamp(10px, calc(0.234vw + 9.25px), 13px) clamp(15px, calc(0.781vw + 12.5px), 25px);font-size:clamp(14px, calc(0.156vw + 13.5px), 16px);font-weight:700;"><span class="stackbm_more_txt">바로가기</span><i style="font-size:clamp(16px, calc(0.313vw + 15px), 20px);position:relative;top:-3px;" class="uil uil-plus"></i></a>                            </div>
5477                        <div class="stackbm_simple_slot stackbm_render_latest" data-widget-id="LB_stack_tabmix_v1" data-slot-order="1" data-latest-skin="TOTAL_BBS8">
5478                
5479<div class="TOTAL_BBS8" style="--bbs8-title-size:clamp(18px, calc(0.469vw + 16.5px), 24px);--bbs8-date-size:clamp(18px, calc(0.469vw + 16.5px), 24px);--bbs8-date-weight:800;">
5480  <ul>
5481    <li>
5482      <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_6010&wr_id=529&me_code=6010">
5483        <div class="text-box">
5484          <div class="subject">서울역사박물관 나들이 추첨 결과 안내</div>
5485                  </div>
5486        <span class="date">09.21</span>      </a>
5487    </li>
5488    <li>
5489      <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_6010&wr_id=527&me_code=6010">
5490        <div class="text-box">
5491          <div class="subject">2026년 4분기 송파구체육회 연계 짐볼을 활용한 코어 운동 무료 프로그…</div>
5492                  </div>
5493        <span class="date">09.14</span>      </a>
5494    </li>
5495    <li>
5496      <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_6010&wr_id=525&me_code=6010">
5497        <div class="text-box">
5498          <div class="subject">서울역사박물관 나들이 참여자 모집 안내</div>
5499                  </div>
5500        <span class="date">09.07</span>      </a>
5501    </li>
5502    <li>
5503      <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_6010&wr_id=523&me_code=6010">
5504        <div class="text-box">
5505          <div class="subject">2026년 하반기 웰다잉 교육 해피엔딩학교+ 자격증과정반 수강생 모집 안…</div>
5506                  </div>
5507        <span class="date">09.03</span>      </a>
5508    </li>
5509  </ul>
5510</div>
5511            </div>
5512            </div></div>            <div class="stack_item_wrapper" data-slot-order="2" data-widget-id="LB_stack_tabmix_v1">
5513        <div class="stack_item">
5514                                        <div class="stackbm_simple_slot stackbm_render_latest stackbm_full_height" data-widget-id="LB_stack_tabmix_v1" data-slot-order="2" data-latest-skin="TOTAL_SCHEDULE2" style="height:580px;">
5515                
5516<div class="TOTAL_SCHEDULE2 cal_460ee3ac14 ts_full_height ts2_detail_clamp" style="--ts-box-bg:#f7f7f7;--ts-box-radius:30px;--ts-box-padding:clamp(20px, calc(2.344vw + 12.5px), 50px);--ts2-title-color:#000;--ts2-title-size:clamp(26px, calc(1.094vw + 22.5px), 40px);--ts2-title-weight:700;--ts2-title-mb:15px;--ts2-ym-size:20px;--ts-cal-det-date:20px;--ts-cal-time:18px;--ts-cal-title:18px;--ts-cal-content:16px;--ts2-dot-color:#157657;--ts2-line-width:1px;--ts2-line-color:#157657;--ts2-deco-gap:30px;--ts2-detail-lh:1.4;--ts2-detail-lines:2;">
5517  <div class="ts_calendar_wrap">
5518    <!-- 달력 영역 (AJAX 로드: 헤더 + 그리드) -->
5519    <div class="ts_calendar_left" id="cal_460ee3ac14_left"></div>
5520
5521    <!-- 선택 날짜 일정 영역: 타임라인 -->
5522    <div class="ts_calendar_right" id="cal_460ee3ac14_right">
5523      <div class="ts_right_schedules">
5524        <div class="ts_no_schedule">일정을 확인하려면 날짜를 클릭하세요.</div>
5525      </div>
5526    </div>
5527  </div>
5528</div>
5529
5530<script>
5531(function(){
5532  var uid = 'cal_460ee3ac14';
5533  var boTable = 'SST_5020';
5534  var ajaxUrl = 'https://songpasilbeot.or.kr/theme/hayan/mobile/skin/latest/TOTAL_SCHEDULE2/calendar_ajax.php';
5535  var calTitle = "행사일정";
5536  var weekStart = 'sun';
5537
5538  // 달력 AJAX 로드
5539  window['tsCalView_' + uid] = function(day) {
5540    $.ajax({
5541      url: ajaxUrl,
5542      type: 'POST',
5543      data: { t: day, b: boTable, uid: uid, title: calTitle, ws: weekStart },
5544      dataType: 'text',
5545      cache: false,
5546      success: function(data) {
5547        $('#' + uid + '_left').html(data);
5548        // 오늘 날짜 자동 선택
5549        var todayEl = $('#' + uid + '_left .ts_day_li.ts_today');
5550        if (todayEl.length) todayEl.trigger('click');
5551      }
5552    });
5553  };
5554
5555  // 날짜 클릭 이벤트 (이벤트 위임)
5556  $(document).on('click', '.' + uid + ' .ts_day_li', function(){
5557    var $this = $(this);
5558    var tTitle = $this.attr('data-title');
5559
5560    // 선택 상태 변경
5561    $('.' + uid + ' .ts_day_li').removeClass('ts_active');
5562    $this.addClass('ts_active');
5563
5564    // 일정 영역 업데이트 (타임라인만)
5565    $('.' + uid + ' .ts_right_schedules').html(tTitle || '<div class="ts_no_schedule">등록된 일정이 없습니다.</div>');
5566  });
5567
5568  // 초기 로드
5569  $(function(){
5570    window['tsCalView_' + uid]('2026-10-08');
5571  });
5572})();
5573</script>
5573
5574            </div>
5575            </div></div></div><!-- //stack_grid -->
5576        </div>
5577
5578    </div>
5579
5580</div>
5581
5582        </div>
5583                        <div class="mbt_section mbt_section_3" data-section-idx="2" data-category="STACK" data-skin="stack_bbstabmix_v1" style="position:relative;background-color:transparent;">
5584                                                            <style data-widget-css="LB_stack_bbs_v1">.LB_stack_bbs_v1 .widget-area{display: grid; grid-template-columns: 0.85fr 1.15fr; gap: clamp(30px, calc(5.469vw + 12.5px), 100px); align-items: start;}@media only all and (max-width: 991px){.LB_stack_bbs_v1 .widget-area{grid-template-columns: 100%;}}</style>
5585
5586
5587<div class="stack_bbstabmix_v1 LB_stack_bbs_v1 com_f " style="position:relative;padding-top:clamp(20px, calc(6.25vw + 0px), 100px);padding-bottom:clamp(30px, calc(1.563vw + 25px), 50px);">
5588
5589    
5590    <div class="contents-container container-lg contentContainer">
5591    
5592        
5593        <div class="stack_content_wrap" style="position:relative;z-index:1;">
5594        
5595
5596<div class="stack_grid stack_v1 stackbm_grid" id="stackbm_25f1a37f" data-stack-skin="stack_bbstabmix_v1" style="display:grid;grid-template-columns:minmax(0,0.85fr) minmax(0,1.15fr);gap:clamp(30px, calc(5.469vw + 12.5px), 100px);--stackbm-gap:clamp(30px, calc(5.469vw + 12.5px), 100px);align-items:start;">
5597    <style>.LB_stack_bbs_v1 .stack_item_wrapper[data-slot-order="1"] .stackbm_more_custom{border:1px solid #ddd !important;color:#333 !important;background:#F3F3F3 !important;}.LB_stack_bbs_v1 .stack_item_wrapper[data-slot-order="1"] .stackbm_more_custom i{color:#333 !important;}.LB_stack_bbs_v1 .stack_item_wrapper[data-slot-order="1"] .stackbm_more_custom:hover{border-color:#f60 !important;background:#F3F3F3 !important;color:#f60 !important;}.LB_stack_bbs_v1 .stack_item_wrapper[data-slot-order="1"] .stackbm_more_custom:hover i{color:#f60 !important;}</style>        <div class="stack_item_wrapper" data-slot-order="1" data-widget-id="LB_stack_bbs_v1">
5598        <div class="stack_item">
5599                                        <div class="stackbm_header" style="margin-bottom:30px;">
5600                                <div class="stackbm_header_txt">
5601                    <div class="stackbm_title"><div class="COM_tit f_md scale-13 w700  letter-2 lh110 mb_10">홍보영상
5602</div></div>
5603                                        <div class="stackbm_subtitle"><div class="COM_tit f_sm w400 letter-1 gray666 lh110 scale-12">바른 마음으로 올곧게 실천하며 <br class="mobile_view">끊임없이 성장하는 기관
5604</div></div>
5605                                    </div>
5606                                                <a href="#" class="stackbm_more stackbm_more_custom stackbm_more_v_center" style="border-radius:50px;padding:clamp(10px, calc(0.234vw + 9.25px), 13px) clamp(15px, calc(0.781vw + 12.5px), 25px);font-size:clamp(14px, calc(0.156vw + 13.5px), 16px);font-weight:700;--stackbm-more-tx:0px;"><span class="stackbm_more_txt">바로가기</span><i style="font-size:clamp(16px, calc(0.313vw + 15px), 20px);position:relative;top:-3px;" class="uil uil-plus"></i></a>                            </div>
5607                        <div class="stackbm_simple_slot stackbm_render_latest" data-widget-id="LB_stack_bbs_v1" data-slot-order="1" data-latest-skin="TOTAL_IMG1_MV">
5608                
5609<style>
5610@media screen and (min-width: 992px) {
5611    #imgmv_c43d60 .imgmv_grid { grid-template-columns: repeat(1, 1fr) !important; }
5612}
5613@media screen and (min-width: 768px) and (max-width: 991px) {
5614    #imgmv_c43d60 .imgmv_grid { grid-template-columns: repeat(1, 1fr) !important; }
5615}
5616@media screen and (max-width: 767px) {
5617    #imgmv_c43d60 .imgmv_grid { grid-template-columns: repeat(1, 1fr) !important; }
5618}
5619</style>
5620<div class="TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_overlay imgmv_overlay_hover" id="imgmv_c43d60" style="--imgmv-title-size:20px;--imgmv-content-size:16px;--imgmv-date-size:16PX;--imgmv-img-ratio:1/0.55;--imgmv-img-radius:30PX;--imgmv-ov-align:left;" data-view-mode="video">
5621<ul class="imgmv_grid">
5622<li class="imgmv_item">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5030&wr_id=65&me_code=5030" class="imgmv_card" data-wr-id="65" data-bo-table="SST_5030" data-video-url="https://www.youtube.com/embed/Y0_nUxsQAFA?autoplay=1">
5623        <div class="imgmv_thumb">
5624            <img src="https://img.youtube.com/vi/Y0_nUxsQAFA/hqdefault.jpg" alt="2026년 송파실벗뜨락 건강한 노후를 위한 힐링 어버이데이 : 반계탕 나…" loading="lazy">
5625                        <div class="imgmv_play_overlay"><i class="uil uil-play"></i></div>
5626                    </div>
5627        <div class="imgmv_info">
5628                                    <div class="imgmv_title">2026년 송파실벗뜨락 건강한 노후를 위한 힐링 어버이데이 : 반계탕 나…</div>
5629                                                <span class="imgmv_date">2026-06-04</span>
5630                    </div>
5631    </a>
5632</li></ul>
5633</div>
5634
5635<script>
5636(function(){
5637    // 모달 HTML 생성
5638    if (document.getElementById('imgmvModal')) return;
5639    var modal = document.createElement('div');
5640    modal.id = 'imgmvModal';
5641    modal.className = 'imgmv_modal_overlay';
5642    modal.style.display = 'none';
5643    modal.innerHTML = '<div class="imgmv_modal"><div class="imgmv_modal_header"><span class="imgmv_modal_title"></span><button type="button" class="imgmv_modal_close" onclick="imgmvCloseModal()">&times;</button></div><div class="imgmv_modal_body"></div></div>';
5644    document.body.appendChild(modal);
5645    modal.addEventListener('click', function(e) { if (e.target === modal) imgmvCloseModal(); });
5646
5647    // 모달 열기
5648    window.imgmvOpenModal = function(title, bodyHtml) {
5649        var m = document.getElementById('imgmvModal');
5650        m.querySelector('.imgmv_modal_title').textContent = title;
5651        m.querySelector('.imgmv_modal_body').innerHTML = bodyHtml;
5652        m.style.display = 'flex';
5653        document.body.style.overflow = 'hidden';
5654    };
5655    // 모달 닫기
5656    window.imgmvCloseModal = function() {
5657        var m = document.getElementById('imgmvModal');
5658        m.style.display = 'none';
5659        m.querySelector('.imgmv_modal_body').innerHTML = '';
5660        document.body.style.overflow = '';
5661    };
5662    // ESC 닫기
5663    document.addEventListener('keydown', function(e) {
5664        if (e.key === 'Escape') imgmvCloseModal();
5665    });
5666
5667    // 이벤트 위임: view_mode가 있는 카드 클릭 캐치
5668    document.addEventListener('click', function(e) {
5669        var card = e.target.closest('.TOTAL_IMG1_MV[data-view-mode] .imgmv_card');
5670        if (!card) return;
5671        var wrap = card.closest('.TOTAL_IMG1_MV');
5672        var mode = wrap.getAttribute('data-view-mode');
5673        if (!mode) return;
5674
5675        e.preventDefault();
5676        var title = card.querySelector('.imgmv_title') ? card.querySelector('.imgmv_title').textContent.trim() : '';
5677        var boTable = card.getAttribute('data-bo-table');
5678        var wrId = card.getAttribute('data-wr-id');
5679
5680        if (mode === 'video') {
5681            // ★ data-video-url이 있으면 직접 사용 (AJAX 불필요)
5682            var videoUrl = card.getAttribute('data-video-url');
5683            if (videoUrl) {
5684                imgmvOpenModal(title, '<div class="imgmv_video_wrap"><iframe src="' + videoUrl + '" frameborder="0" allowfullscreen allow="autoplay"></iframe></div>');
5685            } else {
5686                // fallback: AJAX로 본문에서 영상 URL 추출
5687                imgmvOpenModal(title, '<div style="text-align:center;padding:40px;color:#999;">로딩 중...</div>');
5688                fetch('/bbs/board.php?bo_table=' + encodeURIComponent(boTable) + '&wr_id=' + encodeURIComponent(wrId))
5689                    .then(function(r) { return r.text(); })
5690                    .then(function(html) {
5691                        var parser = new DOMParser();
5692                        var doc = parser.parseFromString(html, 'text/html');
5693                        var content = doc.querySelector('#bo_v_con') || doc.querySelector('.view-content') || doc.querySelector('#writeContents');
5694                        var contentHtml = content ? content.innerHTML : '';
5695                        var iframeMatch = contentHtml.match(/<iframe[^>]*src=["\']([^"\']*(?:youtube|youtu\.be|vimeo)[^"\']*)["\'][^>]*>/i);
5696                        if (iframeMatch) {
5697                            imgmvOpenModal(title, '<div class="imgmv_video_wrap"><iframe src="' + iframeMatch[1] + '" frameborder="0" allowfullscreen allow="autoplay"></iframe></div>');
5698                        } else {
5699                            var videoMatch = contentHtml.match(/<video[^>]*>[\s\S]*?<\/video>/i);
5700                            if (videoMatch) {
5701                                imgmvOpenModal(title, '<div class="imgmv_video_wrap">' + videoMatch[0] + '</div>');
5702                            } else {
5703                                imgmvOpenModal(title, '<div class="imgmv_modal_content">' + contentHtml + '</div>');
5704                            }
5705                        }
5706                    });
5707            }
5708        } else if (mode === 'modal') {
5709            // 게시물 모달: AJAX로 본문 로드
5710            var imgSrc = card.querySelector('.imgmv_thumb img') ? card.querySelector('.imgmv_thumb img').src : '';
5711            imgmvOpenModal(title, '<div style="text-align:center;padding:40px;color:#999;">로딩 중...</div>');
5712            fetch('/bbs/board.php?bo_table=' + encodeURIComponent(boTable) + '&wr_id=' + encodeURIComponent(wrId))
5713                .then(function(r) { return r.text(); })
5714                .then(function(html) {
5715                    var parser = new DOMParser();
5716                    var doc = parser.parseFromString(html, 'text/html');
5717                    var content = doc.querySelector('#bo_v_con') || doc.querySelector('.view-content') || doc.querySelector('#writeContents');
5718                    var bodyHtml = '';
5719                    if (imgSrc) bodyHtml += '<div class="imgmv_modal_img"><img src="' + imgSrc + '" alt=""></div>';
5720                    bodyHtml += '<div class="imgmv_modal_content">' + (content ? content.innerHTML : '') + '</div>';
5721                    imgmvOpenModal(title, bodyHtml);
5722                });
5723        }
5724    });
5725})();
5726</script>
5726
5727            </div>
5728            </div></div>    <style>.LB_stack_bbs_v1 .stack_item_wrapper[data-slot-order="2"] .stackbm_more_custom{border:1px solid #ddd !important;color:#333 !important;background:#F3F3F3 !important;}.LB_stack_bbs_v1 .stack_item_wrapper[data-slot-order="2"] .stackbm_more_custom i{color:#333 !important;}.LB_stack_bbs_v1 .stack_item_wrapper[data-slot-order="2"] .stackbm_more_custom:hover{border-color:#f60 !important;background:#F3F3F3 !important;color:#f60 !important;}.LB_stack_bbs_v1 .stack_item_wrapper[data-slot-order="2"] .stackbm_more_custom:hover i{color:#f60 !important;}</style>        <div class="stack_item_wrapper" data-slot-order="2" data-widget-id="LB_stack_bbs_v1">
5729        <div class="stack_item">
5730            
5731                        <div class="stackbm_header" style="margin-bottom:30px;">
5732                        <div class="stackbm_header_txt">
5733                <div class="stackbm_title"><div class="COM_tit f_md w700 letter-2 lh110 mb_10 scale-13">사진으로보는 복지관</div></div>
5734                                <div class="stackbm_subtitle"><div class="COM_tit f_sm w400 letter-1 gray666 lh110 scale-12">
5734지역주민과 함께하는 노인복지관이 되겠습니다. </div></div>
5735                            </div>
5736                                                <a href="#" class="stackbm_more stackbm_more_custom stackbm_more_v_center" style="border-radius:50px;padding:clamp(10px, calc(0.234vw + 9.25px), 13px) clamp(15px, calc(0.781vw + 12.5px), 25px);font-size:clamp(14px, calc(0.156vw + 13.5px), 16px);font-weight:700;--stackbm-more-tx:0px;"><span class="stackbm_more_txt">바로가기</span><i style="font-size:clamp(16px, calc(0.313vw + 15px), 20px);position:relative;top:-3px;" class="uil uil-plus"></i></a>                    </div>
5737        
5738        <div class="sw_tab_filter_v1_inner stackbm_slot_inner" id="stackbm_25f1a37f_2" data-widget-id="LB_stack_bbs_v1" data-slot-order="2" data-latest-skin="TOTAL_IMG1_MV">
5739
5740                        <!-- 탭 헤더 (하단 모드일 때만 슬롯 안에 출력 / 우측 모드는 헤더 안에서 이미 출력됨) -->
5741            
5742            <!-- 탭 패널 -->
5743            <div class="swtf_panels">
5744                                <div class="swtf_panel sw_tab_freelink_panel active"
5745                     id="stackbm_25f1a37f_2_panel_0"
5746                     role="tabpanel"                      data-index="0">
5747                    <div class="sw_tab_filter_swiper_wrap sw_tab_freelink_swiper_wrap swctrl_bottom swarrow_inline swpaging_bar">
5748                        <div class="content-swiper">
5749                            <div class="swiper-wrapper">
5750                                
5751<div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=681&me_code=5010" class="imgmv_card" data-wr-id="681" data-bo-table="SST_5010">
5752        <div class="imgmv_thumb">
5753            <img src="https://songpasilbeot.or.kr/data/editor/2610/thumb-dd9738a59a70b7cfb1a741b74136e548_1791269996_524_400x480.png" alt="2026년 노인맞춤돌봄서비스 함께하는사랑밭X센스맘 후원물품(냉감이불) 전…" loading="lazy">
5754                    </div>
5755        <div class="imgmv_info">
5756                                    <div class="imgmv_title">2026년 노인맞춤돌봄서비스 함께하는사랑밭X센스맘 후원물품(냉감이불) 전…</div>
5757                                            </div>
5758    </a>
5759</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=679&me_code=5010" class="imgmv_card" data-wr-id="679" data-bo-table="SST_5010">
5760        <div class="imgmv_thumb">
5761            <img src="https://songpasilbeot.or.kr/data/editor/2610/thumb-0a64a1792f52297a269205530f395b2e_1791260862_7659_400x480.png" alt="2026년 세계교육문화원 지원사업 해피엔딩학교+ 시즌3 오리엔테이션 및 …" loading="lazy">
5762                    </div>
5763        <div class="imgmv_info">
5764                                    <div class="imgmv_title">2026년 세계교육문화원 지원사업 해피엔딩학교+ 시즌3 오리엔테이션 및 …</div>
5765                                            </div>
5766    </a>
5767</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=677&me_code=5010" class="imgmv_card" data-wr-id="677" data-bo-table="SST_5010">
5768        <div class="imgmv_thumb">
5769            <img src="https://songpasilbeot.or.kr/data/editor/2610/thumb-cd39b90042e564de5be6399c1e70d412_1790905142_5338_400x480.png" alt="2026년 노인맞춤돌봄서비스 노인의 날 맞이 장수사진 촬영" loading="lazy">
5770                    </div>
5771        <div class="imgmv_info">
5772                                    <div class="imgmv_title">2026년 노인맞춤돌봄서비스 노인의 날 맞이 장수사진 촬영</div>
5773                                            </div>
5774    </a>
5775</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=675&me_code=5010" class="imgmv_card" data-wr-id="675" data-bo-table="SST_5010">
5776        <div class="imgmv_thumb">
5777            <img src="https://songpasilbeot.or.kr/data/editor/2609/thumb-c347c53a02cd64271f2f48cc63132d66_1790144573_2738_400x480.jpg" alt="2026년 3분기 운영위원회" loading="lazy">
5778                    </div>
5779        <div class="imgmv_info">
5780                                    <div class="imgmv_title">2026년 3분기 운영위원회</div>
5781                                            </div>
5782    </a>
5783</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=673&me_code=5010" class="imgmv_card" data-wr-id="673" data-bo-table="SST_5010">
5784        <div class="imgmv_thumb">
5785            <img src="https://songpasilbeot.or.kr/data/editor/2609/thumb-aed306f52d7d4ba9c30c9ec3dda86723_1789955538_2617_400x480.png" alt="2026년 「사랑의 열매 송파나눔네트워크」 지원사업 &#039;동행하는 집밥 남(…" loading="lazy">
5786                    </div>
5787        <div class="imgmv_info">
5788                                    <div class="imgmv_title">2026년 「사랑의 열매 송파나눔네트워크」 지원사업 '동행하는 집밥 남(…</div>
5789                                            </div>
5790    </a>
5791</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=671&me_code=5010" class="imgmv_card" data-wr-id="671" data-bo-table="SST_5010">
5792        <div class="imgmv_thumb">
5793            <img src="https://songpasilbeot.or.kr/data/editor/2609/thumb-b564755dcd8f654f6b5cf3549686b5e6_1789625621_6982_400x480.png" alt="2026년 송파구보건소와 함께하는 전염병(결핵) 예방을 위한 보건위생교육" loading="lazy">
5794                    </div>
5795        <div class="imgmv_info">
5796                                    <div class="imgmv_title">2026년 송파구보건소와 함께하는 전염병(결핵) 예방을 위한 보건위생교육</div>
5797                                            </div>
5798    </a>
5799</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=669&me_code=5010" class="imgmv_card" data-wr-id="669" data-bo-table="SST_5010">
5800        <div class="imgmv_thumb">
5801            <img src="https://songpasilbeot.or.kr/data/editor/2609/thumb-6831ac741bbbc71fd52e8e68fb593796_1789542115_0401_400x480.png" alt="서울석병원과 함께하는 3분기 건강특강: 무릎관절염 바로알기!" loading="lazy">
5802                    </div>
5803        <div class="imgmv_info">
5804                                    <div class="imgmv_title">서울석병원과 함께하는 3분기 건강특강: 무릎관절염 바로알기!</div>
5805                                            </div>
5806    </a>
5807</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=667&me_code=5010" class="imgmv_card" data-wr-id="667" data-bo-table="SST_5010">
5808        <div class="imgmv_thumb">
5809            <img src="https://songpasilbeot.or.kr/data/editor/2609/thumb-b7fb11d58080c006a527c189073aab97_1789531431_4659_400x480.png" alt="2026년 잠실자생한방병원 잠실자생봉사단 후원물품(송편) 전달식" loading="lazy">
5810                    </div>
5811        <div class="imgmv_info">
5812                                    <div class="imgmv_title">2026년 잠실자생한방병원 잠실자생봉사단 후원물품(송편) 전달식</div>
5813                                            </div>
5814    </a>
5815</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=663&me_code=5010" class="imgmv_card" data-wr-id="663" data-bo-table="SST_5010">
5816        <div class="imgmv_thumb">
5817            <img src="https://songpasilbeot.or.kr/data/editor/2609/thumb-5b2fa8de64261eb228c6971718c75a5a_1789370062_5035_400x480.png" alt="2026년 노인맞춤돌봄서비스 AI반려로봇 효손이와 행복을 그리다 7회기" loading="lazy">
5818                    </div>
5819        <div class="imgmv_info">
5820                                    <div class="imgmv_title">2026년 노인맞춤돌봄서비스 AI반려로봇 효손이와 행복을 그리다 7회기</div>
5821                                            </div>
5822    </a>
5823</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=661&me_code=5010" class="imgmv_card" data-wr-id="661" data-bo-table="SST_5010">
5824        <div class="imgmv_thumb">
5825            <img src="https://songpasilbeot.or.kr/data/editor/2609/thumb-906ee65d8400bc417be8c2146867076e_1789085206_8838_400x480.png" alt="2026년 건강생활지원사업 전립선암 무료검진 및 건강특강" loading="lazy">
5826                    </div>
5827        <div class="imgmv_info">
5828                                    <div class="imgmv_title">2026년 건강생활지원사업 전립선암 무료검진 및 건강특강</div>
5829                                            </div>
5830    </a>
5831</div>
5832                            </div>
5833                        </div>
5834                        <div class="paging-wrap">
5835                            <div class="btn-wrap">
5836                                <button type="button" class="btn-prev"><i class="uil uil-angle-left-b"></i><span class="blind">이전</span></button>
5837                                <button type="button" class="btn-next"><i class="uil uil-angle-right-b"></i><span class="blind">다음</span></button>
5838                            </div>
5839                            <div class="swiper-pagination"></div>
5840                        </div>
5841                    </div>
5842                </div>
5843                                <div class="swtf_panel sw_tab_freelink_panel"
5844                     id="stackbm_25f1a37f_2_panel_1"
5845                     role="tabpanel" hidden                     data-index="1">
5846                    <div class="sw_tab_filter_swiper_wrap sw_tab_freelink_swiper_wrap swctrl_bottom swarrow_inline swpaging_bar">
5847                        <div class="content-swiper">
5848                            <div class="swiper-wrapper">
5849                                
5850<div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=681&me_code=5010" class="imgmv_card" data-wr-id="681" data-bo-table="SST_5010">
5851        <div class="imgmv_thumb">
5852            <img src="https://songpasilbeot.or.kr/data/editor/2610/thumb-dd9738a59a70b7cfb1a741b74136e548_1791269996_524_400x480.png" alt="2026년 노인맞춤돌봄서비스 함께하는사랑밭X센스맘 후원물품(냉감이불) 전…" loading="lazy">
5853                    </div>
5854        <div class="imgmv_info">
5855                                    <div class="imgmv_title">2026년 노인맞춤돌봄서비스 함께하는사랑밭X센스맘 후원물품(냉감이불) 전…</div>
5856                                            </div>
5857    </a>
5858</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=679&me_code=5010" class="imgmv_card" data-wr-id="679" data-bo-table="SST_5010">
5859        <div class="imgmv_thumb">
5860            <img src="https://songpasilbeot.or.kr/data/editor/2610/thumb-0a64a1792f52297a269205530f395b2e_1791260862_76
586059_400x480.png" alt="2026년 세계교육문화원 지원사업 해피엔딩학교+ 시즌3 오리엔테이션 및 …" loading="lazy">
5861                    </div>
5862        <div class="imgmv_info">
5863                                    <div class="imgmv_title">2026년 세계교육문화원 지원사업 해피엔딩학교+ 시즌3 오리엔테이션 및 …</div>
5864                                            </div>
5865    </a>
5866</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=677&me_code=5010" class="imgmv_card" data-wr-id="677" data-bo-table="SST_5010">
5867        <div class="imgmv_thumb">
5868            <img src="https://songpasilbeot.or.kr/data/editor/2610/thumb-cd39b90042e564de5be6399c1e70d412_1790905142_5338_400x480.png" alt="2026년 노인맞춤돌봄서비스 노인의 날 맞이 장수사진 촬영" loading="lazy">
5869                    </div>
5870        <div class="imgmv_info">
5871                                    <div class="imgmv_title">2026년 노인맞춤돌봄서비스 노인의 날 맞이 장수사진 촬영</div>
5872                                            </div>
5873    </a>
5874</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=675&me_code=5010" class="imgmv_card" data-wr-id="675" data-bo-table="SST_5010">
5875        <div class="imgmv_thumb">
5876            <img src="https://songpasilbeot.or.kr/data/editor/2609/thumb-c347c53a02cd64271f2f48cc63132d66_1790144573_2738_400x480.jpg" alt="2026년 3분기 운영위원회" loading="lazy">
5877                    </div>
5878        <div class="imgmv_info">
5879                                    <div class="imgmv_title">2026년 3분기 운영위원회</div>
5880                                            </div>
5881    </a>
5882</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=673&me_code=5010" class="imgmv_card" data-wr-id="673" data-bo-table="SST_5010">
5883        <div class="imgmv_thumb">
5884            <img src="https://songpasilbeot.or.kr/data/editor/2609/thumb-aed306f52d7d4ba9c30c9ec3dda86723_1789955538_2617_400x480.png" alt="2026년 「사랑의 열매 송파나눔네트워크」 지원사업 &#039;동행하는 집밥 남(…" loading="lazy">
5885                    </div>
5886        <div class="imgmv_info">
5887                                    <div class="imgmv_title">2026년 「사랑의 열매 송파나눔네트워크」 지원사업 '동행하는 집밥 남(…</div>
5888                                            </div>
5889    </a>
5890</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=671&me_code=5010" class="imgmv_card" data-wr-id="671" data-bo-table="SST_5010">
5891        <div class="imgmv_thumb">
5892            <img src="https://songpasilbeot.or.kr/data/editor/2609/thumb-b564755dcd8f654f6b5cf3549686b5e6_1789625621_6982_400x480.png" alt="2026년 송파구보건소와 함께하는 전염병(결핵) 예방을 위한 보건위생교육" loading="lazy">
5893                    </div>
5894        <div class="imgmv_info">
5895                                    <div class="imgmv_title">2026년 송파구보건소와 함께하는 전염병(결핵) 예방을 위한 보건위생교육</div>
5896                                            </div>
5897    </a>
5898</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=669&me_code=5010" class="imgmv_card" data-wr-id="669" data-bo-table="SST_5010">
5899        <div class="imgmv_thumb">
5900            <img src="https://songpasilbeot.or.kr/data/editor/2609/thumb-6831ac741bbbc71fd52e8e68fb593796_1789542115_0401_400x480.png" alt="서울석병원과 함께하는 3분기 건강특강: 무릎관절염 바로알기!" loading="lazy">
5901                    </div>
5902        <div class="imgmv_info">
5903                                    <div class="imgmv_title">서울석병원과 함께하는 3분기 건강특강: 무릎관절염 바로알기!</div>
5904                                            </div>
5905    </a>
5906</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=667&me_code=5010" class="imgmv_card" data-wr-id="667" data-bo-table="SST_5010">
5907        <div class="imgmv_thumb">
5908            <img src="https://songpasilbeot.or.kr/data/editor/2609/thumb-b7fb11d58080c006a527c189073aab97_1789531431_4659_400x480.png" alt="2026년 잠실자생한방병원 잠실자생봉사단 후원물품(송편) 전달식" loading="lazy">
5909                    </div>
5910        <div class="imgmv_info">
5911                                    <div class="imgmv_title">2026년 잠실자생한방병원 잠실자생봉사단 후원물품(송편) 전달식</div>
5912                                            </div>
5913    </a>
5914</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=663&me_code=5010" class="imgmv_card" data-wr-id="663" data-bo-table="SST_5010">
5915        <div class="imgmv_thumb">
5916            <img src="https://songpasilbeot.or.kr/data/editor/2609/thumb-5b2fa8de64261eb228c6971718c75a5a_1789370062_5035_400x480.png" alt="2026년 노인맞춤돌봄서비스 AI반려로봇 효손이와 행복을 그리다 7회기" loading="lazy">
5917                    </div>
5918        <div class="imgmv_info">
5919                                    <div class="imgmv_title">2026년 노인맞춤돌봄서비스 AI반려로봇 효손이와 행복을 그리다 7회기</div>
5920                                            </div>
5921    </a>
5922</div><div class="swiper-slide imgmv_item TOTAL_IMG1_MV imgmv_no_hover_shadow imgmv_slide_root" style="--imgmv-title-size:20px;--imgmv-content-size:20px;--imgmv-img-ratio:1/0.8;--imgmv-img-radius:30PX;--imgmv-ov-align:left;--imgmv-ov-padding:20px;" data-view-mode="">    <a href="https://songpasilbeot.or.kr/bbs/board.php?bo_table=SST_5010&wr_id=661&me_code=5010" class="imgmv_card" data-wr-id="661" data-bo-table="SST_5010">
5923        <div class="imgmv_thumb">
5924            <img src="https://songpasilbeot.or.kr/data/editor/2609/thumb-906ee65d8400bc417be8c2146867076e_1789085206_8838_400x480.png" alt="2026년 건강생활지원사업 전립선암 무료검진 및 건강특강" loading="lazy">
5925                    </div>
5926        <div class="imgmv_info">
5927                                    <div class="imgmv_title">2026년 건강생활지원사업 전립선암 무료검진 및 건강특강</div>
5928                                            </div>
5929    </a>
5930</div>
5931                            </div>
5932                        </div>
5933                        <div class="paging-wrap">
5934                            <div class="btn-wrap">
5935                                <button type="button" class="btn-prev"><i class="uil uil-angle-left-b"></i><span class="blind">이전</span></button>
5936                                <button type="button" class="btn-next"><i class="uil uil-angle-right-b"></i><span class="blind">다음</span></button>
5937                            </div>
5938                            <div class="swiper-pagination"></div>
5939                        </div>
5940                    </div>
5941                </div>
5942                            </div>
5943
5944            
5944<script>
5945            (function(){
5946                var root = document.getElementById('stackbm_25f1a37f_2');
5947                if (!root) return;
5948                // ★ 탭은 슬롯 wrapper 단위로 찾기 (우측 위치 모드에서 탭이 헤더 안 = inner 바깥에 있으므로)
5949                var wrapper = root.closest('.stack_item_wrapper') || root.parentNode;
5950                var tabs = wrapper ? wrapper.querySelectorAll('.swtf_tab') : root.querySelectorAll('.swtf_tab');
5951                var panels = root.querySelectorAll('.swtf_panel');
5952                var swipers = {};
5953                function initSwiper(i) {
5954                    if (swipers[i]) return swipers[i];
5955                    var panel = panels[i];
5956                    if (!panel) return null;
5957                    var wrap = panel.querySelector('.sw_tab_filter_swiper_wrap');
5958                    var swEl = panel.querySelector('.content-swiper');
5959                    if (!wrap || !swEl || typeof Swiper === 'undefined') return null;
5960                    var slidesPC = 2;
5961                    var slidesTablet2 = 2; // 태블릿가로 1024~1365
5962                    var slidesTablet = 2;
5963                    var slidesMobile = 1;
5964                    var spaceBetween = 24;
5965                    // ★ clamp()/calc() 간격 — 현재 뷰포트 기준 px 실측 (Swiper 는 숫자만 받음)
5966                    var spaceBetweenCss = "";
5967                    function cssToPx(v) {
5968                        var d = document.createElement('div');
5969                        d.style.cssText = 'position:absolute;visibility:hidden;height:0;padding:0;border:0;width:' + v;
5970                        wrap.appendChild(d);
5971                        var px = d.getBoundingClientRect().width;
5972                        wrap.removeChild(d);
5973                        return px;
5974                    }
5975                    if (spaceBetweenCss) spaceBetween = Math.round(cssToPx(spaceBetweenCss));
5976                    // clamp 모드는 값 자체가 반응형이므로 브레이크포인트 축소 배율 없이 그대로 사용
5977                    var sbMo  = spaceBetweenCss ? spaceBetween : Math.max(8,  Math.round(spaceBetween * 0.6));
5978                    var sb576 = spaceBetweenCss ? spaceBetween : Math.max(10, Math.round(spaceBetween * 0.7));
5979                    var sb768 = spaceBetweenCss ? spaceBetween : Math.max(12, Math.round(spaceBetween * 0.85));
5980                    swipers[i] = new Swiper(swEl, {
5981                        slidesPerView: slidesMobile,
5982                        slidesPerGroup: 1,
5983                        spaceBetween: sbMo,
5984                        watchOverflow: true,
5985                        observer: true,
5986                        observeParents: true,
5987                        breakpoints: {
5988                            576:  { slidesPerView: Math.min(slidesTablet, slidesMobile + 1), slidesPerGroup: 1, spaceBetween: sb576 },
5989                            768:  { slidesPerView: slidesTablet, slidesPerGroup: 1, spaceBetween: sb768 },
5990                            1024: { slidesPerView: slidesTablet2, slidesPerGroup: 1, spaceBetween: spaceBetween },
5991                            1366: { slidesPerView: slidesPC, slidesPerGroup: 1, spaceBetween: spaceBetween }
5992                        },
5993                        navigation: { prevEl: wrap.querySelector('.btn-prev'), nextEl: wrap.querySelector('.btn-next') },
5994                        pagination: {
5995                            el: wrap.querySelector('.swiper-pagination'),
5996                            type: 'progressbar',
5997                            clickable: false                        }
5998                    });
5999
6000                    // ★ clamp 간격 — 리사이즈 시 현재 뷰포트 기준으로 재실측해 Swiper 파라미터 갱신
6001                    if (spaceBetweenCss && swipers[i] && swipers[i].on) {
6002                        var _updSpaceGap = function() {
6003                            var v = Math.round(cssToPx(spaceBetweenCss));
6004                            var sw = swipers[i];
6005                            if (!sw || v === sw.params.spaceBetween) return;
6006                            sw.params.spaceBetween = v;
6007                            if (sw.params.breakpoints) {
6008                                for (var bk in sw.params.breakpoints) {
6009                                    if (sw.params.breakpoints[bk]) sw.params.breakpoints[bk].spaceBetween = v;
6010                                }
6011                            }
6012                            sw.update();
6013                        };
6014                        swipers[i].on('resize', _updSpaceGap);
6015                        swipers[i].on('breakpoint', _updSpaceGap);
6016                    }
6017                    // ★ 좌우(sides) 화살표를 이미지(마스크) 기준 상하 중앙으로 보정
6018                    //   wrap 전체(페이징바 포함) 기준 40% 고정이라 살짝 위로 틀어지던 문제 해결
6019                    if (wrap.classList.contains('swarrow_sides')) {
6020                        var centerSideArrows = function() {
6021                            var t = swEl.offsetTop + (swEl.offsetHeight / 2);
6022                            if (t > 0) wrap.style.setProperty('--swctl-side-top', Math.round(t) + 'px');
6023                        };
6024                        centerSideArrows();
6025                        setTimeout(centerSideArrows, 300);            // 이미지 로드 직후 높이 변동 대응
6026                        window.addEventListener('load', centerSideArrows);
6027                        window.addEventListener('resize', centerSideArrows);
6028                        if (swipers[i] && swipers[i].on) swipers[i].on('resize', centerSideArrows);
6029                    }
6030
6031                    return swipers[i];
6032                }
6033                tabs.forEach(function(tab, i){
6034                    tab.addEventListener('click', function(){
6035                        tabs.forEach(function(t, j){
6036                            t.classList.toggle('on', i === j);
6037                            t.setAttribute('aria-selected', i === j ? 'true' : 'false');
6038                        });
6039                        panels.forEach(function(p, j){
6040                            if (i === j) { p.removeAttribute('hidden'); p.classList.add('active'); }
6041                            else         { p.setAttribute('hidden', ''); p.classList.remove('active'); }
6042                        });
6043                        initSwiper(i);
6044                        if (swipers[i] && swipers[i].update) swipers[i].update();
6045                    });
6046                });
6047                initSwiper(0);
6048            })();
6049            </script>
6049
6050            
6051        </div><!-- //stackbm_slot_inner -->
6052            </div><!-- //stack_item -->
6053    </div><!-- //stack_item_wrapper -->
6054</div><!-- //stack_grid -->
6055        </div>
6056
6057    </div>
6058
6059</div>
6060
6061        </div>
6062                        <div class="mbt_section mbt_section_6" data-section-idx="5" data-category="SPECIAL" data-skin="bg_deco_layer" style="position:relative;background-color:#ffffff;">
6063                                                            <div class="bg_deco_layer_wrap bgd-mobile-off" id="bgd_f9b942b0" role="presentation" aria-hidden="true" data-end="page_end" data-smooth="0.1" style="--bgd-visual-pc:100vh;--bgd-visual-mo:100vh;">
6064<div class="bgd_deco bgd_deco_1" data-speed="0.1" style="--d-left:-100px;--d-right:auto;--d-top:55vh;--d-size:600px;--d-opacity:0.1;--d-rotate:0deg;background-image:url('/_img/img/SST/main_back.png');" aria-hidden="true"></div>
6065<div class="bgd_deco bgd_deco_2" data-speed="0.2" style="--d-left:auto;--d-right:-100px;--d-top:40vh;--d-size:600px;--d-opacity:0.1;--d-rotate:90deg;background-image:url('/_img/img/SST/main_back.png');" aria-hidden="true"></div>
6066</div>
6067
6068<script>
6069(function(){
6070    console.log('[bg_deco_layer] script start, uid=bgd_f9b942b0');
6071    try {
6072        // 웹접근성 차단 (진단 콘솔 로그 추가)
6073        if (window.matchMedia) {
6074            var reduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
6075            var hc = window.matchMedia('(forced-colors: active)').matches;
6076            if (reduced) console.warn('[bg_deco_layer] prefers-reduced-motion 활성 → 패럴랙스 비활성. OS설정에서 동작효과 켜야 함');
6077            if (hc)      console.warn('[bg_deco_layer] forced-colors 활성 → 패럴랙스 비활성');
6078            if (reduced || hc) return;
6079        }
6080
6081        // ★ 뒤/앞 레이어 wrap 수집 (front 데코만 있으면 뒤 wrap 이 없을 수도 있음)
6082        var _uids = [];
6083        ['bgd_f9b942b0', 'bgd_f9b942b0_f'].forEach(function(u){
6084            if (document.getElementById(u)) _uids.push(u);
6085        });
6086        if (!_uids.length) { console.warn('[bg_deco_layer] wrap not found'); return; }
6087        if (window.matchMedia('(max-width: 768px)').matches) {
6088            var _hidden = 0;
6089            _uids.forEach(function(u){
6090                var w = document.getElementById(u);
6091                if (w.classList.contains('bgd-mobile-off')) { w.style.display = 'none'; _hidden++; }
6092            });
6093            if (_hidden === _uids.length) { console.log('[bg_deco_layer] mobile-off'); return; }
6094        }
6095        console.log('[bg_deco_layer] passed all checks, loading GSAP...');
6096
6097        // ★ GSAP 없이 순수 JS로 패럴랙스 (더 가볍고 확실)
6098        function loadScript(src) {
6099            return new Promise(function(resolve, reject){
6100                var existing = document.querySelector('script[src="' + src + '"]');
6101                if (existing) {
6102                    existing.addEventListener('load', resolve);
6103                    existing.addEventListener('error', reject);
6104                    return;
6105                }
6106                var s = document.createElement('script');
6107                s.src = src;
6108                s.async = false;
6109                s.onload = resolve;
6110                s.onerror = reject;
6111                document.head.appendChild(s);
6112            });
6113        }
6114        loadScript('https://songpasilbeot.or.kr/data/widget/MAIN/SPECIAL/bg_deco_layer/resources/js/parallax.js?v=3')
6115            .then(function(){
6116                console.log('[bg_deco_layer] parallax.js loaded, init:', typeof window.bgdInitParallax, _uids);
6117                if (typeof window.bgdInitParallax === 'function') {
6118                    _uids.forEach(function(u){ window.bgdInitParallax(u); });
6119                }
6120            })
6121            .catch(function(e){
6122                console.error('[bg_deco_layer] parallax load failed:', e);
6123            });
6124    } catch(e) {
6125        console.warn('[bg_deco_layer] init error:', e);
6126    }
6127})();
6128</script>
6128
6129
6130        </div>
6131                        <div class="mbt_section mbt_section_8" data-section-idx="7" data-category="PARTNER" data-skin="partner_v1" style="position:relative;background-color:#f7f7f7;">
6132                                                            <style data-widget-css="LB_PARTNER2">/*@stack_auto_start*/
6133/*@dt_1_show_title:0*/
6134/*@dt_1_inner_padding:0px*/
6135/*@dt_1_thumb_ratio:3/1*/
6136/*@dt_1_img_opacity:1*/
6137/*@dt_1_img_bg:#fff*/
6138/*@dt_1_box_shadow: 0 2px 8px rgba(0,0,0,0.0)*/
6139/*@dt_1_box_hover_shadow: 0 2px 8px rgba(0,0,0,0.0)*/
6140/*@padding_top:clamp(30px, calc(1.563vw + 25px), 50px)*/
6141/*@padding_bottom:clamp(30px, calc(1.563vw + 25px), 50px)*/
6142/*@bg_color:#f7f7f7*/
6143
6144/*@stack_auto_end*/
6145
6146
6147
6148/*@stack_deco*/
6149/* 데코 박스 (항상 출력됨, bg/position 자유 디자인) */
6150/*
6151.LB_PARTNER2 .deco_box1 {
6152  position: absolute;
6153  top: 0; left: 0;
6154  width: 300px; height: auto;
6155  z-index: 0;
6156  pointer-events: none;
6157}
6158.LB_PARTNER2 .deco_box2 {
6159  position: absolute;
6160  bottom: 0; right: 0;
6161  width: 200px; height: auto;
6162  z-index: 0;
6163  pointer-events: none;
6164}
6165*/</style>
6166
6167<div class="partner_v1 LB_PARTNER2 com_f pv1_no_title " style="--pv1-inner-padding:0px;--pv1-thumb-ratio:3/1;--p2-thumb-ratio:3/1;--pv1-img-bg:#fff;--p2-img-bg:#fff;--pv1-img-opacity:1;--p2-img-opacity:1;--pv1-box-shadow:0 2px 8px rgba(0,0,0,0.0);--p2-box-shadow:0 2px 8px rgba(0,0,0,0.0);--pv1-box-hover-shadow:0 2px 8px rgba(0,0,0,0.0);--p2-box-hover-shadow:0 2px 8px rgba(0,0,0,0.0);padding-top:clamp(30px, calc(1.563vw + 25px), 50px);padding-bottom:clamp(30px, calc(1.563vw + 25px), 50px);" data-slides-pc="5" data-slides-tablet="3" data-slides-mobile="2" data-arrow-style="circle">
6168
6169      
6170<div class="partner_v1_inner">
6171  <div class="contents-container container-lg">
6172    <div class="partner_v1_layout">
6173
6174      <!-- 좌측: 타이틀 영역 -->
6175            
6176      <!-- 우측: 스와이퍼 영역 -->
6177      <div class="partner_v1_right">
6178                <div class="partner_v1_swiper_wrap">
6179          <div class="swiper partner_v1_swiper" id="pv1_sw_6ac78ed617e50">
6180            <div class="swiper-wrapper">
6181              <div class="swiper-slide">
6182  <div class="p2_card">
6183        <a href="https://www.mohw.go.kr/" target="_blank" rel="noopener noreferrer" class="p2_card_link" title="보건복지부">
6184          <div class="p2_thumb">
6185                <img src="https://songpasilbeot.or.kr/data/editor/2607/thumb-6adb49f8ae43e545aacafb346c949fbe_1782995291_5683_400x0.jpg" alt="보건복지부">
6186              </div>
6187        </a>
6188      </div>
6189</div>
6190<div class="swiper-slide">
6191  <div class="p2_card">
6192        <a href="https://www.seoul.go.kr/main/index.jsp" target="_blank" rel="noopener noreferrer" class="p2_card_link" title="서울특별시">
6193          <div class="p2_thumb">
6194                <img src="https://songpasilbeot.or.kr/data/editor/2607/thumb-6adb49f8ae43e545aacafb346c949fbe_1782995173_5927_400x0.jpg" alt="서울특별시">
6195              </div>
6196        </a>
6197      </div>
6198</div>
6199<div class="swiper-slide">
6200  <div class="p2_card">
6201        <a href="https://www.nhis.or.kr/" target="_blank" rel="noopener noreferrer" class="p2_card_link" title="국민건강보험">
6202          <div class="p2_thumb">
6203                <img src="https://songpasilbeot.or.kr/data/editor/2607/thumb-6adb49f8ae43e545aacafb346c949fbe_1782995149_0488_400x0.jpg" alt="국민건강보험">
6204              </div>
6205        </a>
6206      </div>
6207</div>
6208<div class="swiper-slide">
6209  <div class="p2_card">
6210        <a href="https://www.songpa.go.kr/www/index.do" target="_blank" rel="noopener noreferrer" class="p2_card_link" title="송파구청">
6211          <div class="p2_thumb">
6212                <img src="https://songpasilbeot.or.kr/data/editor/2607/thumb-6adb49f8ae43e545aacafb346c949fbe_1782995125_1588_400x0.jpg" alt="송파구청">
6213              </div>
6214        </a>
6215      </div>
6216</div>
6217<div class="swiper-slide">
6218  <div class="p2_card">
6219        <a href="https://www.scsongpa.or.kr/" target="_blank" rel="noopener noreferrer" class="p2_card_link" title="송파시니어클럽">
6220          <div class="p2_thumb">
6221                <img src="https://songpasilbeot.or.kr/data/editor/2607/thumb-6adb49f8ae43e545aacafb346c949fbe_1782995104_8555_400x0.jpg" alt="송파시니어클럽">
6222              </div>
6223        </a>
6224      </div>
6225</div>
6226<div class="swiper-slide">
6227  <div class="p2_card">
6228        <a href="https://www.kasm.co.kr/" target="_blank" rel="noopener noreferrer" class="p2_card_link" title="미래복지경영">
6229          <div class="p2_thumb">
6230                <img src="https://songpasilbeot.or.kr/data/editor/2607/thumb-6adb49f8ae43e545aacafb346c949fbe_1782995078_8037_400x0.jpg" alt="미래복지경영">
6231              </div>
6232        </a>
6233      </div>
6234</div>
6235<div class="swiper-slide">
6236  <div class="p2_card">
6237        <a href="https://kordi.or.kr/main.do" target="_blank" rel="noopener noreferrer" class="p2_card_link" title="한국노인인력개발원">
6238          <div class="p2_thumb">
6239                <img src="https://songpasilbeot.or.kr/data/editor/2607/thumb-6adb49f8ae43e545aacafb346c949fbe_1782995053_0981_400x0.jpg" alt="한국노인인력개발원">
6240              </div>
6241        </a>
6242      </div>
6243</div>
6244<div class="swiper-slide">
6245  <div class="p2_card">
6246        <a href="https://www.welfare.net/" class="p2_card_link" title="한국사회복지사협회">
6247          <div class="p2_thumb">
6248                <img src="https://songpasilbeot.or.kr/data/editor/2607/thumb-6adb49f8ae43e545aacafb346c949fbe_1782995014_3704_400x0.jpg" alt="한국사회복지사협회">
6249              </div>
6250        </a>
6251      </div>
6252</div>
6253            </div>
6254          </div>
6255                    <button type="button" class="partner_v1_arrow partner_v1_prev" data-target="pv1_sw_6ac
625578ed617e50"><i class="uil uil-angle-left"></i></button>
6256          <button type="button" class="partner_v1_arrow partner_v1_next" data-target="pv1_sw_6ac78ed617e50"><i class="uil uil-angle-right"></i></button>
6257                  </div>
6258              </div>
6259
6260    </div>
6261  </div>
6262</div>
6263
6264
6265<script>
6266(function(){
6267    var container = document.getElementById('pv1_sw_6ac78ed617e50');
6268    if (!container || typeof Swiper === 'undefined') return;
6269    var root = container.closest('.partner_v1');
6270    var pc = parseInt(root ? root.getAttribute('data-slides-pc') : '5') || 5;
6271    var tb = parseInt(root ? root.getAttribute('data-slides-tablet') : '3') || 3;
6272    var mo = parseInt(root ? root.getAttribute('data-slides-mobile') : '2') || 2;
6273
6274    var totalSlides = container.querySelectorAll('.swiper-slide').length;
6275    // ★ 화살표가 타이틀 행에 있을 수도 있으므로 위젯 inner 전체에서 탐색
6276    var innerEl = container.closest('.partner_v1_inner') || container.parentNode;
6277    var prevBtn = innerEl.querySelector('.partner_v1_prev');
6278    var nextBtn = innerEl.querySelector('.partner_v1_next');
6279    var needLoop = totalSlides > mo; // 기본(모바일) 기준 loop 판단
6280
6281    var swiper = new Swiper(container, {
6282        slidesPerView: mo,
6283        slidesPerGroup: 1,
6284        spaceBetween: 16,
6285        loop: needLoop,
6286        speed: 500,
6287        navigation: {
6288            prevEl: prevBtn,
6289            nextEl: nextBtn
6290        },
6291        breakpoints: {
6292            768: { slidesPerView: tb, spaceBetween: 20 },
6293            1024: { slidesPerView: pc, spaceBetween: 24 }
6294        }
6295    });
6296
6297    // 슬라이드 수 ≤ 현재 보이는 수이면 화살표 숨김 (정한 수보다 게시물 적으면 화살표 X)
6298    function toggleArrows() {
6299        var perView = swiper.params.slidesPerView;
6300        if (typeof perView !== 'number') perView = mo;
6301        var hide = totalSlides <= perView;
6302        if (prevBtn) prevBtn.style.display = hide ? 'none' : '';
6303        if (nextBtn) nextBtn.style.display = hide ? 'none' : '';
6304    }
6305    toggleArrows();
6306    swiper.on('breakpoint', toggleArrows);
6307    window.addEventListener('resize', toggleArrows);
6308
6309    // 마우스 오버 시 멈춤
6310    container.addEventListener('mouseenter', function(){ swiper.autoplay && swiper.autoplay.stop && swiper.autoplay.stop(); });
6311    container.addEventListener('mouseleave', function(){ swiper.autoplay && swiper.autoplay.start && swiper.autoplay.start(); });
6312})();
6313</script>
6313
6314  </div>
6315        </div>
6316            </div>
6317
6318
6319
6320<!-- 섹션 배경이미지 CSS (모든 사용자 공통) -->
6321<style>
6322/* 섹션 래퍼 */
6323.mbt_section {
6324    position: relative;
6325}
6326/* 섹션 배경이미지 오버레이 */
6327.mbt_section_bg {
6328    position: absolute;
6329    inset: 0;
6330    z-index: -1;
6331    overflow: hidden;
6332    pointer-events: none;
6333}
6334.mbt_section_bg img,
6335.mbt_section_bg video,
6336.mbt_section_bg lottie-player {
6337    width: 100%;
6338    height: 100%;
6339    object-fit: cover;
6340    object-position: center center;
6341    display: block;
6342}
6343.mbt_sbg_pc { position: absolute; inset: 0; }
6344.mbt_sbg_mo { position: absolute; inset: 0; display: none; }
6345@media (max-width: 767px) {
6346    .mbt_section_bg:has(.mbt_sbg_mo) .mbt_sbg_pc { display: none; }
6347    .mbt_sbg_mo { display: block; }
6348}
6349/* 스크롤 고정 (clip-path 기법) */
6350.mbt_sbg_fixed {
6351    position: fixed;
6352    inset: 0;
6353}
6354</style>
6355
6356
6357<script>
6358(function(){
6359    var els = document.querySelectorAll('.mbt_section[data-overlap-pc]');
6360    if (!els.length) return;
6361    function parseOv(val, h) {
6362        if (!val) return 0;
6363        val = val.trim();
6364        // calc() 표현식 지원: calc(100% + 20px), calc(50% - 10px) 등
6365        var calcMatch = val.match(/^calc\(\s*(.+)\s*\)$/i);
6366        if (calcMatch) {
6367            var expr = calcMatch[1];
6368            var result = 0;
6369            // +/- 로 분리 (연산자 앞에 공백 필수: CSS calc 규칙)
6370            var parts = expr.match(/[+-]?\s*[\d.]+\s*(%|px|rem|vh|vw)?/gi);
6371            if (parts) {
6372                for (var p = 0; p < parts.length; p++) {
6373                    var part = parts[p].replace(/\s/g, '');
6374                    var num = parseFloat(part) || 0;
6375                    if (part.indexOf('%') !== -1) result += h * num / 100;
6376                    else if (part.indexOf('vh') !== -1) result += window.innerHeight * num / 100;
6377                    else if (part.indexOf('vw') !== -1) result += window.innerWidth * num / 100;
6378                    else if (part.indexOf('rem') !== -1) result += num * parseFloat(getComputedStyle(document.documentElement).fontSize);
6379                    else result += num;
6380                }
6381            }
6382            return result;
6383        }
6384        if (val.indexOf('%') !== -1) return h * (parseFloat(val) || 0) / 100;
6385        return parseFloat(val) || 0;
6386    }
6387    function applyOverlap() {
6388        var w = window.innerWidth;
6389        els.forEach(function(el) {
6390            var pc = el.getAttribute('data-overlap-pc') || '';
6391            var tb = el.getAttribute('data-overlap-tablet') || '';
6392            var mo = el.getAttribute('data-overlap-mo') || '';
6393            // 모바일 ≤767 / 태블릿 ≤1024 / PC
6394            var val;
6395            if (w <= 767) val = mo || tb || pc;
6396            else if (w <= 1024) val = tb || pc;
6397            else val = pc;
6398            var h = el.offsetHeight;
6399            var px = parseOv(val, h);
6400            el.style.marginTop = px > 0 ? '-' + px + 'px' : '';
6401        });
6402    }
6403    applyOverlap();
6404    setTimeout(applyOverlap, 100);
6405    setTimeout(applyOverlap, 300);
6406    setTimeout(applyOverlap, 800);
6407    window.addEventListener('load', applyOverlap);
6408    window.addEventListener('resize', (function(){
6409        var timer;
6410        return function(){ clearTimeout(timer); timer = setTimeout(applyOverlap, 200); };
6411    })());
6412    els.forEach(function(el) {
6413        el.querySelectorAll('img').forEach(function(img) {
6414            if (!img.complete) img.addEventListener('load', applyOverlap);
6415        });
6416    });
6417})();
6418</script>
6418
6419</div>  </div>
6420  
6421  
6422<link rel="stylesheet" href="https://songpasilbeot.or.kr/theme/hayan/_footer/FOOTER_TOTAL/resources/css/style.css?v=1789964705" />
6423
6424
6425<!-- [FT-TOPBAR DEBUG] json=EXISTS path=/home/dws_host015/www/data/wing/footer_settings.json | is_main=Y show_topbar=N show_custom2=N | GET[me_code]=[(no-get)] GLOBALS[me_code]=[] resolved=[] | margin_top=[0px] mt_matched=N mt_rows=0 | base_mb=[] tmb_rows=0 -->
6426<style>.FOOTER_TOTAL.FOOTER_TOTAL {--ft-font-menu: clamp(15px, calc(0.234vw + 14.25px), 18px);--ft-sns-size: 30px;--ft-sns-gap: 10px;--ft-menu-gap: clamp(15px, calc(0.781vw + 12.5px), 25px);--ft-menu-box-pt: 20px;--ft-menu-box-pb: 20px;--ft-menu-box-mb: 0px;--ft-menu-line-display: block;--ft-menu-line-color: #dadaed;--ft-menu-full-width: 100%;--ft-logo-height: 4.5rem;--ft-pad-top: 40px;--ft-pad-bottom: 80px;--ft-topline-color: #dadaed;--ft-topline-spacing: 20px;--ft-bg-custom: #fff;--ft-logo-area-width: 350px;--ft-mo-pad-top: 40px;--ft-mo-pad-bottom: 40px;--ft-custom-box-width: clamp(200px, calc(7.813vw + 175px), 300px);--ft-mo-custom-position: absolute;--ft-mo-right-position: static;--ft-mo-custom-top: -100px;--ft-mo-custom-right: 0px;--ft-mo-admin-position: absolute;--ft-mo-admin-top: 0px;--ft-mo-admin-right: 0px;--ft-mo-order-menu: 1;--ft-mo-order-logo: 2;--ft-mo-order-text: 4;--ft-mo-order-right: 3;--ft-mo-align-right: flex-end;--ft-mo-talign-right: right;}</style><style>.ft-menu-band {--ft-font-menu: clamp(15px, calc(0.234vw + 14.25px), 18px);--ft-sns-size: 30px;--ft-sns-gap: 10px;--ft-menu-gap: clamp(15px, calc(0.781vw + 12.5px), 25px);--ft-menu-box-pt: 20px;--ft-menu-box-pb: 20px;--ft-menu-box-mb: 0px;--ft-menu-line-display: block;--ft-menu-line-color: #dadaed;--ft-menu-full-width: 100%;--ft-logo-height: 4.5rem;--ft-pad-top: 40px;--ft-pad-bottom: 80px;--ft-topline-color: #dadaed;--ft-topline-spacing: 20px;--ft-bg-custom: #fff;--ft-logo-area-width: 350px;--ft-mo-pad-top: 40px;--ft-mo-pad-bottom: 40px;--ft-custom-box-width: clamp(200px, calc(7.813vw + 175px), 300px);--ft-mo-custom-position: absolute;--ft-mo-right-position: static;--ft-mo-custom-top: -100px;--ft-mo-custom-right: 0px;--ft-mo-admin-position: absolute;--ft-mo-admin-top: 0px;--ft-mo-admin-right: 0px;--ft-mo-order-menu: 1;--ft-mo-order-logo: 2;--ft-mo-order-text: 4;--ft-mo-order-right: 3;--ft-mo-align-right: flex-end;--ft-mo-talign-right: right;}</style>
6427
6428
6429
6430<div class="ft-menu-band" data-footer-theme="white" style="--ft-band-bg:#ffffff;--ft-band-top-line-display:block;--ft-band-top-line-color:#dadaed;--ft-band-bottom-line-display:block;--ft-band-bottom-line-color:#dadaed;margin-top:0px;">
6431    <div class="ft-menu-band-inner container-lg contentContainer">
6432                <div class="ft-menu-band-left">
6433            <ul class="footer-menulist  ft-menu-wrap ft-menu-wrap-band">
6434                
6435<li class="footer-menulink">
6436            <a href="/bbs/content.php?co_id=All_USE_1010&me_code=7010">
6437            <span class="setting_icon">이용약관</span>
6438            </a>
6439      </li>
6440
6441
6442<li class="footer-menulink">
6443            <a href="/bbs/content.php?co_id=All_USE_1020&me_code=7020&lang=ko">
6444            <span class="setting_icon">개인정보처리방침</span>
6445            </a>
6446      </li>
6447
6448
6449<li class="footer-menulink">
6450            <a href="/bbs/content.php?co_id=All_USE_1030&me_code=7030&lang=ko">
6451            <span class="setting_icon"></span>
6452            </a>
6453      </li>
6454
6455
6456<li class="footer-menulink">
6457            <a href="/bbs/content.php?co_id=All_USE_1040&me_code=7040&lang=ko">
6458            <span class="setting_icon"></span>
6459            </a>
6460      </li>
6461
6462
6463<li class="footer-menulink">
6464            <span class="setting_icon"></span>
6465      </li>
6466
6467
6468<!------ //관리자 버튼 ( 위젯 폼 연결) ----------->                            </ul>
6469                        
6469<script>
6470            (function(){
6471                var ul = document.querySelector('.ft-menu-band .footer-menulist.ft-menu-wrap-band');
6472                if (!ul) return;
6473                var items = ul.querySelectorAll(':scope > .footer-menulink');
6474                var wPC = 0;
6475                var wTablet = 0;
6476                var wMobile = 2;
6477
6478                function applyWrap() {
6479                    ul.querySelectorAll('.ft-menu-break').forEach(function(el){ el.remove(); });
6480                    var w = window.innerWidth;
6481                    var n = 0;
6482                    if (w <= 767) n = wMobile;
6483                    else if (w <= 1280) n = wTablet;
6484                    else n = wPC;
6485                    if (n > 0 && items.length > n) {
6486                        var br = document.createElement('li');
6487                        br.style.cssText = 'flex-basis:100%;height:0;padding:0;margin:0;border:0;list-style:none;';
6488                        br.className = 'ft-menu-break';
6489                        items[n - 1].after(br);
6490                    }
6491                }
6492                applyWrap();
6493                var _wt;
6494                window.addEventListener('resize', function(){ clearTimeout(_wt); _wt = setTimeout(applyWrap, 150); });
6495            })();
6496            </script>
6496
6497                    </div>
6498                        <div class="ft-menu-band-right">
6499                        <ul class="footer-snslist ">
6500                <style data-widget-css="LB_ftsns"> /* 구분 start -----------------------------------*/
6501/**** pc ****/
6502@media only all and (min-width:768px) {
6503/* 기본 3단계 박스 선언 */
6504.LB_ftsns .wg_side{width: 100%; float: left; position:relative}
6505.LB_ftsns .wg_box{width: 100%; float: left; position:relative;  display: flex; flex-direction: row;}
6506/* wg_box_in - 가로배열 */
6507.LB_ftsns .wg_box_in{width: 100%; float: left; position: relative; display: flex; flex-direction: row; grid-gap:10px}
6508/* 이미지1 - 100% 기본 중앙 */
6509.LB_ftsns  .wg_img_box .wg_img1{width: 30PX; float: left; text-align: center; order:1}
6510.LB_ftsns  .wg_img_box .wg_img1 img{width:100%; }
6511
6512}
6513/**** pc2 ****/
6514@media all and (max-width:1280px) and (min-width:768px) {
6515}
6516/**** 모바일 ****/
6517@media only all and (max-width:767px) {
6518/* 기본 3단계 박스 선언 */
6519.LB_ftsns .wg_side{width:auto; float: left; position:relative}
6520.LB_ftsns .wg_box{width: 100%; float: left; position:relative;  display: flex; flex-direction: row;}
6521/* wg_box_in - 가로배열 */
6522.LB_ftsns .wg_box_in{width: 100%; float: left; position: relative; display: flex; flex-direction: row; grid-gap:10px}
6523/* 이미지1 - 100% 기본 중앙 */
6524.LB_ftsns  .wg_img_box .wg_img1{width: 22PX; float: left; text-align: center; order:1}
6525.LB_ftsns  .wg_img_box .wg_img1 img{width:100%; }
6526
6527}
6528/**** 모바일2 ****/
6529@media only all and (max-width:400px) {
6530}
6531/* 구분 //end -----------------------------------*/ </style>
6532
6533
6534
6535<div class="em_free  LB_ftsns com_f "  ><!--boxinfo_AD  : sk_홈위젯파일명 -->
6536
6537
6538	  
6539    <!-- 위젯 구간-->
6540
6541<div class="wg_side ">
6542<div class="sub_stit_box">
6543  
6544
6545
6546</div>
6547
6548
6549<div class="wg_box " data-widget-id="LB_ftsns">
6550
6551  <!--반복문 시작-->
6552
6553    <a href="#123"  class="wg_box_in ">
6554    <div class="wg_img_box">
6555<!-- 이미지 1~5 삽입 (widget_img.php에서 직접 편집 속성 처리) -->
6556
6557  <!-- 모바일 이미지가 없는 경우 PC 이미지를 공통으로 사용 -->
6558    <div id="img_6ac78ed61bea1_wrap" class="wg_img1">
6559          <img src='/_img/svg/SNS/blacksns_youtube.svg' alt='유튜브'/>      </div>
6560  
6561
6562
6563
6564<!--// 이미지 1~5 삽입 end -->
6565</div>
6566<div class="wg_txt_box">
6567<!--텍스트 반복 시작 (텍스트는 div로 래핑하여 레이아웃 영향 최소화) -->
6568<!--//텍스트 반복 끝-->
6569</div>
6570    </a>
6571    <!--//반복문 끝-->
6572    <!--반복문 시작-->
6573
6574    <a href="#123"  class="wg_box_in ">
6575    <div class="wg_img_box">
6576<!-- 이미지 1~5 삽입 (widget_img.php에서 직접 편집 속성 처리) -->
6577
6578  <!-- 모바일 이미지가 없는 경우 PC 이미지를 공통으로 사용 -->
6579    <div id="img_6ac78ed61c698_wrap" class="wg_img1">
6580          <img src='/_img/svg/SNS/blacksns_twitter.svg' alt='트위터'/>      </div>
6581  
6582
6583
6584
6585<!--// 이미지 1~5 삽입 end -->
6586</div>
6587<div class="wg_txt_box">
6588<!--텍스트 반복 시작 (텍스트는 div로 래핑하여 레이아웃 영향 최소화) -->
6589<!--//텍스트 반복 끝-->
6590</div>
6591    </a>
6592    <!--//반복문 끝-->
6593    <!--반복문 시작-->
6594
6595    <a href="#123"  class="wg_box_in ">
6596    <div class="wg_img_box">
6597<!-- 이미지 1~5 삽입 (widget_img.php에서 직접 편집 속성 처리) -->
6598
6599  <!-- 모바일 이미지가 없는 경우 PC 이미지를 공통으로 사용 -->
6600    <div id="img_6ac78ed61ce1e_wrap" class="wg_img1">
6601          <img src='/_img/svg/SNS/blacksns_instagram.svg' alt='인스타그'/>      </div>
6602  
6603
6604
6605
6606<!--// 이미지 1~5 삽입 end -->
6607</div>
6608<div class="wg_txt_box">
6609<!--텍스트 반복 시작 (텍스트는 div로 래핑하여 레이아웃 영향 최소화) -->
6610<!--//텍스트 반복 끝-->
6611</div>
6612    </a>
6613    <!--//반복문 끝-->
6614    <!--반복문 시작-->
6615
6616    <a href="#123"  class="wg_box_in ">
6617    <div class="wg_img_box">
6618<!-- 이미지 1~5 삽입 (widget_img.php에서 직접 편집 속성 처리) -->
6619
6620  <!-- 모바일 이미지가 없는 경우 PC 이미지를 공통으로 사용 -->
6621    <div id="img_6ac78ed61d50c_wrap" class="wg_img1">
6622          <img src='/_img/svg/SNS/blacksns_facebook.svg' alt='페이스북'/>      </div>
6623  
6624
6625
6626
6627<!--// 이미지 1~5 삽입 end -->
6628</div>
6629<div class="wg_txt_box">
6630<!--텍스트 반복 시작 (텍스트는 div로 래핑하여 레이아웃 영향 최소화) -->
6631<!--//텍스트 반복 끝-->
6632</div>
6633    </a>
6634    <!--//반복문 끝-->
6635    </div>
6636</div>
6637	  <!-- //위젯 구간-->
6638
6639	  
6640</div>
6641            </ul>
6642        </div>
6643            </div>
6644</div>
6645
6646<div class="FOOTER_TOTAL    ft-mo-admin-abs " data-footer-theme="white">
6647    <div class="footer-container container-lg contentContainer ">
6648
6649        <!-- ★ 레이아웃: layout_2 -->
6650        <div class="footer-wrap ft-layout_2">
6651
6652            <div class="footer-left">
6653                
6654                
6655                <div class="indiv">
6656                                                            <h2 class="footer-logo ">
6657                                                <a href="https://songpasilbeot.or.kr/index.php">
6658                                                        <img src="/_img/img/SST/logo.png" class="" alt="">
6659                                                                                </a>
6660                                                                    </h2>
6661                    
6662                                        <div class="set" style="display:flex; justify-content:flex-start; align-items:center; flex-direction:row; box-sizing:border-box; gap:10px">
6663                                                                                <a href="https://songpasilbeot.or.kr/bbs/login.php" class="setting_icon">관리자모드 <i class="uis uis-setting"></i></a>
6664                                                                                                                                                </div>
6665                                    </div>
6666
6667                
6668                                <div class="footer-txtgroup ">
6669                    <style data-widget-css="em_address"> .st{color: rgba(255, 255, 255, 0.9);} </style>
6670
6671
6672
6673<div class="em_free  em_address com_f "  ><!--boxinfo_AD  : sk_홈위젯파일명 -->
6674
6675
6676	  
6677    <!-- 위젯 구간-->
6678
6679<div class="wg_side ">
6680<div class="sub_stit_box">
6681  
6682
6683
6684</div>
6685
6686
6687<div class="wg_box " data-widget-id="em_address">
6688
6689  <!--반복문 시작-->
6690
6691    <div class="wg_box_in ">
6692    <div class="wg_img_box">
6693<!-- 이미지 1~5 삽입 (widget_img.php에서 직접 편집 속성 처리) -->
6694
6695
6696
6697
6698
6699<!--// 이미지 1~5 삽입 end -->
6700</div>
6701<div class="wg_txt_box">
6702<!--텍스트 반복 시작 (텍스트는 div로 래핑하여 레이아웃 영향 최소화) -->
6703<div class="wg_txt1"><div class="COM_tit f_sm scale-08 w400 mt_10 mb_10">
6704서울시 송파구 송파동 백제고분로 42길 5, 6층(구주소 : 송파동 113-2) <br>  
6705고유번호 : 308-82-69914  /  TEL : 02-413-9999  /  FAX : 02-413-9927<br>  
6706Copyrightⓒ송파실벗뜨락. All right reserved.</div></div>
6707<!--//텍스트 반복 끝-->
6708</div>
6709    </div>
6710    <!--//반복문 끝-->
6711    </div>
6712</div>
6713	  <!-- //위젯 구간-->
6714
6715	  
6716</div>
6717                </div>
6718
6719                            </div>
6720
6721                        <div class="footer-right ft-right-column">
6722                
6723                
6724                
6725                                <div class="footer-custom-box " style="order:3;">
6726                    <style data-widget-css="em_free_custom"> /* ===== LB_telinfo1 : 말풍선 아이콘 + 전화번호 + 운영시간 (inner 없는 em 부분삽입형) ===== */
6727.em_free_custom { display: inline-block; width: 100%; }
6728
6729/* wg_side : 가로 100%, 아이콘 좌 + 텍스트 우 */
6730.em_free_custom .wg_side {
6731  width: 100%;
6732  float: left;
6733}
6734
6735.em_free_custom .wg_box { width: 100%; float: left; }
6736
6737.em_free_custom .wg_box_in {
6738  width: 100%;
6739  position: relative;
6740  padding-left: clamp(58px, calc(2.34vw + 50.5px), 88px);
6741  min-height: clamp(48px, calc(1.56vw + 43px), 68px);
6742  display: flex;
6743  flex-direction: column;
6744  justify-content: center;
6745}
6746
6747/* 앞 아이콘 (첨부 이미지 1번) — 좌측 절대배치 */
6748.em_free_custom .wg_img_box {
6749  position: absolute;
6750  left: 0;
6751  top: 50%;
6752  transform: translateY(-50%);
6753  width: clamp(46px, calc(1.95vw + 39.75px), 71px);
6754  height: clamp(46px, calc(1.95vw + 39.75px), 71px);
6755}
6756.em_free_custom .wg_img1 {
6757  width: 100%;
6758  height: 100%;
6759  display: flex;
6760  align-items: center;
6761  justify-content: center;
6762}
6763.em_free_custom .wg_img1 img {
6764  width: 100%;
6765  height: 100%;
6766  object-fit: contain;
6767}
6768
6769/* 텍스트 영역 */
6770.em_free_custom .wg_txt_box { width: 100%; }
6771
6772/* 전화번호 */
6773.em_free_custom .wg_txt1 {
6774  font-size: clamp(20px, calc(0.78vw + 17.5px), 30px);
6775  font-weight: 700;
6776  color: #222;
6777  line-height: 1.2;
6778  letter-spacing: -0.01em;
6779  margin-bottom: clamp(2px, calc(0.16vw + 1.5px), 4px);
6780}
6781
6782/* 운영시간 */
6783.em_free_custom .wg_txt2 {
6784  font-size: clamp(13px, calc(0.23vw + 12.25px), 16px);
6785  font-weight: 400;
6786  color: #888;
6787  line-height: 1.4;
6788} </style>
6789
6790
6791
6792<div class="em_free  em_free_custom com_f "  ><!--boxinfo_AD  : sk_홈위젯파일명 -->
6793
6794
6795	  
6796    <!-- 위젯 구간-->
6797
6798<div class="wg_side ">
6799<div class="sub_stit_box">
6800  
6801
6802
6803</div>
6804
6805
6806<div class="wg_box " data-widget-id="em_free_custom">
6807
6808  <!--반복문 시작-->
6809
6810    <div class="wg_box_in ">
6811    <div class="wg_img_box">
6812<!-- 이미지 1~5 삽입 (widget_img.php에서 직접 편집 속성 처리) -->
6813
6814  <!-- 모바일 이미지가 없는 경우 PC 이미지를 공통으로 사용 -->
6815    <div id="img_6ac78ed6200a3_wrap" class="wg_img1">
6816          <img src='/_img/svg/SST/main_point_05.svg' alt='이미지'/>      </div>
6817  
6818
6819
6820
6821<!--// 이미지 1~5 삽입 end -->
6822</div>
6823<div class="wg_txt_box">
6824<!--텍스트 반복 시작 (텍스트는 div로 래핑하여 레이아웃 영향 최소화) -->
6825<div class="wg_txt1">02-413-9999</div>
6826<div class="wg_txt2">오전 9:00~오후 6:00</div>
6827<!--//텍스트 반복 끝-->
6828</div>
6829    </div>
6830    <!--//반복문 끝-->
6831    </div>
6832</div>
6833	  <!-- //위젯 구간-->
6834
6835	  
6836</div>
6837                                    </div>
6838                            </div>
6839
6840        </div>
6841    </div>
6842</div>
6843
6844<!-- ★ 메뉴 모달 (동적 생성) -->
6845<div class="modalset modalset-md" data-modal-id="test">
6846    <div class="modalset-content">
6847        <div class="modalset-header">
6848            <h2 class="modalset-title">이용약관</h2>
6849            <button class="modalset-close" data-modal-close="modalset"></button>
6850        </div>
6851        <div class="modalset-body">
6852            <div class="modalset-textarea">test</div>
6853        </div>
6854    </div>
6855</div>
6856<div class="modalset modalset-md" data-modal-id="privacy">
6857    <div class="modalset-content">
6858        <div class="modalset-header">
6859            <h2 class="modalset-title"></h2>
6860            <button class="modalset-close" data-modal-close="modalset"></button>
6861        </div>
6862        <div class="modalset-body">
6863            <div class="modalset-textarea"><span class="point">『강릉시립노인요양센터는 이메일무단수집을 거부합니다.</span>
6864
6865강릉시립노인요양센터 웹사이트에 등록된 이메일 주소가 전자우편수집 프로그램이나 그 밖의 수단들로 무단 수집되는 것을 거부합니다. 이를 위반 시 정보보호 등에 관한 법률 제50조의 2와 65조의 2에 따라 형사처벌 됨을 유의하시기 바랍니다.』</div>
6866        </div>
6867    </div>
6868</div>
6869</div>
6870</div>
6871
6872
6873<style>
6874/* 플로팅 래퍼 - 클릭 통과 */
6875.quick_floating_wrap {
6876    pointer-events: none;
6877}
6878/* 플로팅 위치 오버라이드 */
6879.quick_floating_wrap .quick_floating {
6880    position: fixed;
6881    z-index: 99999;
6882    pointer-events: none;
6883}
6884/* 내부 클릭 가능 요소 */
6885.quick_floating_wrap .quick_floating .quick-area,
6886.quick_floating_wrap .quick_floating .menu-list,
6887.quick_floating_wrap .quick_floating .quick-menu,
6888.quick_floating_wrap .quick_floating .btn-wrap,
6889.quick_floating_wrap .quick_floating .contents-container > * {
6890    pointer-events: auto;
6891}
6892
6893/* floating_quick 위치 */
6894.quick_floating_wrap .quick_floating.floating_quick {
6895    right: clamp(15px, calc(1.172vw + 11.25px), 30px); left: auto; bottom: clamp(15px, calc(1.172vw + 11.25px), 30px); top: auto; transform: none;}
6896</style>
6897
6898<div class="quick_floating_wrap">
6899
6900
6901<div class="quick_floating simple_sns floating_quick " id="simple_sns_floating_quick">
6902
6903
6904<div class="contents-container" style="--ss-circle: clamp(40px, calc(1.563vw + 35px), 60px); --ss-top-icon-size: clamp(30px, calc(0.781vw + 27.5px), 40px); --ss-icon-off: #ffffff; --ss-icon-hover: #2563eb; --ss-bg-off: #279b6e; --ss-bg-hover: #10704b; --ss-top-icon-off: #ffffff; --ss-top-bg-off: #279b6e; --ss-top-bg-hover: #10704b">
6905  
6906  <ul class="sns-list no-border">
6907    
6908    
6909        <!-- 상단 이동 버튼 (선택) -->
6910    <li class="sns-item sns-top">
6911      <button type="button" class="btn-top sns-asset">
6912        <i class="uil uil-arrow-up"></i>
6913        <span class="blind">상단으로이동</span>
6914      </button>
6915    </li>
6916      </ul>
6917</div>
6918
6919</div>
6920<script src="https://songpasilbeot.or.kr/data/widget/QUICK_floating/simple_sns/resources/js/style.js"></script>
6920
6921</div>
6922
6923<!-- 공통 모달 컨테이너 -->
6924<div id="floating_modal_container"></div>
6925
6926<!-- 공통 게시판 폼 모달 -->
6927<div class="floating_board_modal" id="floating_board_modal">
6928    <div class="floating_board_overlay" onclick="closeFloatingBoardModal()"></div>
6929    <div class="floating_board_content">
6930        <div class="floating_board_header">
6931            <h4 id="floating_board_title">문의하기</h4>
6932            <button type="button" class="btn_close" onclick="closeFloatingBoardModal()">&times;</button>
6933        </div>
6934        <div class="floating_board_body">
6935            <form id="floating_board_form" onsubmit="return submitFloatingBoard(event)">
6936                <input type="hidden" name="bo_table" id="flt_bo_table" value="">
6937                <div id="floating_board_fields"></div>
6938                <div class="floating_board_agree">
6939                    <label>
6940                        <input type="checkbox" name="agree" required>
6941                        <span>개인정보 수집 및 이용에 동의합니다</span>
6942                    </label>
6943                </div>
6944                <div class="floating_board_submit">
6945                    <button type="submit" class="btn_submit">문의하기</button>
6946                </div>
6947            </form>
6948        </div>
6949    </div>
6950</div>
6951
6952<style>
6953/* 공통 모달 스타일 */
6954.floating_common_modal {
6955    display: none;
6956    position: fixed;
6957    top: 0;
6958    left: 0;
6959    right: 0;
6960    bottom: 0;
6961    background: rgba(0,0,0,0.6);
6962    z-index: 999999;
6963    align-items: center;
6964    justify-content: center;
6965    pointer-events: auto;
6966}
6967.floating_common_modal.active {
6968    display: flex;
6969}
6970.floating_common_modal .modal_content {
6971    width: 90%;
6972    max-width: 500px;
6973    max-height: 80vh;
6974    background: #fff;
6975    border-radius: 12px;
6976    overflow: hidden;
6977    box-shadow: 0 10px 40px rgba(0,0,0,0.3);
6978}
6979.floating_common_modal .modal_header {
6980    padding: 16px 20px;
6981    background: var(--primary, #4075bd);
6982    color: #fff;
6983    display: flex;
6984    justify-content: space-between;
6985    align-items: center;
6986}
6987.floating_common_modal .modal_header h4 {
6988    margin: 0;
6989    font-size: 16px;
6990    font-weight: 600;
6991}
6992.floating_common_modal .modal_header .btn_close {
6993    background: none;
6994    border: none;
6995    color: #fff;
6996    font-size: 24px;
6997    cursor: pointer;
6998    line-height: 1;
6999}
7000.floating_common_modal .modal_body {
7001    padding: 20px;
7002    max-height: calc(80vh - 60px);
7003    overflow-y: auto;
7004}
7005
7006/* 게시판 폼 모달 */
7007.floating_board_modal {
7008    display: none;
7009    position: fixed;
7010    top: 0;
7011    left: 0;
7012    right: 0;
7013    bottom: 0;
7014    z-index: 999999;
7015    pointer-events: auto;
7016}
7017.floating_board_modal.active {
7018    display: block;
7019}
7020.floating_board_overlay {
7021    position: absolute;
7022    top: 0;
7023    left: 0;
7024    right: 0;
7025    bottom: 0;
7026    background: rgba(0,0,0,0.6);
7027}
7028.floating_board_content {
7029    position: absolute;
7030    top: 50%;
7031    left: 50%;
7032    transform: translate(-50%, -50%);
7033    width: 90%;
7034    max-width: 420px;
7035    background: #fff;
7036    border-radius: 12px;
7037    overflow: hidden;
7038    box-shadow: 0 10px 40px rgba(0,0,0,0.3);
7039}
7040.floating_board_header {
7041    padding: 16px 20px;
7042    background: var(--primary, #4075bd);
7043    color: #fff;
7044    display: flex;
7045    justify-content: space-between;
7046    align-items: center;
7047}
7048.floating_board_header h4 {
7049    margin: 0;
7050    font-size: 16px;
7051    font-weight: 600;
7052}
7053.floating_board_header .btn_close {
7054    background: none;
7055    border: none;
7056    color: #fff;
7057    font-size: 24px;
7058    cursor: pointer;
7059    line-height: 1;
7060}
7061.floating_board_body {
7062    padding: 20px;
7063    max-height: calc(80vh - 120px);
7064    overflow-y: auto;
7065}
7066.floating_board_field {
7067    margin-bottom: 15px;
7068}
7069.floating_board_field label {
7070    display: block;
7071    font-size: 13px;
7072    font-weight: 500;
7073    color: #333;
7074    margin-bottom: 6px;
7075}
7076.floating_board_field label .required {
7077    color: #dc2626;
7078    font-size: 14px;
7079    vertical-align: middle;
7080}
7081.floating_board_field input,
7082.floating_board_field textarea {
7083    width: 100%;
7084    padding: 10px 12px;
7085    border: 1px solid #ddd;
7086    border-radius: 6px;
7087    font-size: 14px;
7088    transition: border-color 0.2s;
7089}
7090.floating_board_field input:focus,
7091.floating_board_field textarea:focus {
7092    outline: none;
7093    border-color: var(--primary, #4075bd);
7094}
7095.floating_board_field textarea {
7096    min-height: 100px;
7097    resize: vertical;
7098}
7099.floating_board_agree {
7100    margin: 15px 0;
7101    font-size: 13px;
7102}
7103.floating_board_agree label {
7104    display: flex;
7105    align-items: center;
7106    gap: 8px;
7107    cursor: pointer;
7108}
7109.floating_board_agree input {
7110    width: 18px;
7111    height: 18px;
7112}
7113.floating_board_submit {
7114    margin-top: 20px;
7115}
7116.floating_board_submit .btn_submit {
7117    width: 100%;
7118    padding: 14px;
7119    background: var(--primary, #4075bd);
7120    color: #fff;
7121    border: none;
7122    border-radius: 8px;
7123    font-size: 15px;
7124    font-weight: 600;
7125    cursor: pointer;
7126    transition: background 0.2s;
7127}
7128.floating_board_submit .btn_submit:hover {
7129    opacity: 0.9;
7130}
7131</style>
7132
7133<script>
7134(function() {
7135    // 모달 저장소 (다중 모달 지원)
7136    var floatingModals = {};
7137
7138    // DOM 로드 후 실행
7139    $(function() {
7140        // 모든 플로팅 위젯의 링크 처리
7141        $('.quick_floating_wrap').on('click', 'a[href^="#modal"], button[data-href^="#modal"]', function(e) {
7142            e.preventDefault();
7143            var href = $(this).attr('href') || $(this).data('href');
7144            var modalId = href.replace('#', '');
7145            openFloatingModal(modalId, $(this));
7146        });
7147
7148        // 게시판 연동 링크 처리 (cs1_modal 스킨은 자체 핸들러 사용)
7149        $('.quick_floating_wrap').on('click', 'a[href^="#board:"], button[data-href^="#board:"]', function(e) {
7150            if ($(this).hasClass('cs1-btn-contact') || $(this).hasClass('cs2-btn-contact') || $(this).closest('.cs1-wrap').length || $(this).closest('.cs2-wrap').length) return;
7151            e.preventDefault();
7152            var href = $(this).attr('href') || $(this).data('href');
7153            openFloatingBoardModal(href);
7154        });
7155
7156        // TOP 버튼 처리
7157        $('.quick_floating_wrap').on('click', 'a[href="#top"], button[data-href="#top"]', function(e) {
7158            e.preventDefault();
7159            $('html, body').animate({ scrollTop: 0 }, 500);
7160        });
7161
7162        // ESC 키로 모달 닫기
7163        $(document).on('keydown', function(e) {
7164            if (e.key === 'Escape') {
7165                closeAllFloatingModals();
7166                closeFloatingBoardModal();
7167            }
7168        });
7169    });
7170
7171    // 모달 열기 (다중 지원)
7172    window.openFloatingModal = function(modalId, $trigger) {
7173        var $container = $('#floating_modal_container');
7174
7175        // 이미 열린 모달이면 닫기
7176        if (floatingModals[modalId] && floatingModals[modalId].hasClass('active')) {
7177            floatingModals[modalId].removeClass('active');
7178            return;
7179        }
7180
7181        // 모달 내용 찾기 (같은 wg_box_in 내의 txt2)
7182        var $boxIn = $trigger.closest('.wg_box_in');
7183        var content = '';
7184        var title = '';
7185
7186        // txt2에서 모달 내용 가져오기
7187        var $txt2 = $boxIn.find('.wg_txt2');
7188        if ($txt2.length) {
7189            content = $txt2.html();
7190        }
7191
7192        // 제목은 txt1에서
7193        var $txt1 = $boxIn.find('.wg_txt1');
7194        if ($txt1.length) {
7195            title = $txt1.text().trim();
7196        }
7197
7198        if (!content) {
7199            console.warn('Modal content not found for:', modalId);
7200            return;
7201        }
7202
7203        // 모달이 없으면 생성
7204        if (!floatingModals[modalId]) {
7205            var modalHtml = '<div class="floating_common_modal" data-modal-id="' + modalId + '">' +
7206                '<div class="modal_content">' +
7207                '<div class="modal_header">' +
7208                '<h4>' + (title || '안내') + '</h4>' +
7209                '<button type="button" class="btn_close" onclick="closeFloatingModal(\'' + modalId + '\')">&times;</button>' +
7210                '</div>' +
7211                '<div class="modal_body">' + content + '</div>' +
7212                '</div>' +
7213                '</div>';
7214
7215            $container.append(modalHtml);
7216            floatingModals[modalId] = $container.find('[data-modal-id="' + modalId + '"]');
7217
7218            // 오버레이 클릭으로 닫기
7219            floatingModals[modalId].on('click', function(e) {
7220                if ($(e.target).is(floatingModals[modalId])) {
7221                    closeFloatingModal(modalId);
7222                }
7223            });
7224        }
7225
7226        // 모달 열기
7227        floatingModals[modalId].addClass('active');
7228    };
7229
7230    // 특정 모달 닫기
7231    window.closeFloatingModal = function(modalId) {
7232        if (floatingModals[modalId]) {
7233            floatingModals[modalId].removeClass('active');
7234        }
7235    };
7236
7237    // 모든 모달 닫기
7238    window.closeAllFloatingModals = function() {
7239        for (var id in floatingModals) {
7240            floatingModals[id].removeClass('active');
7241        }
7242    };
7243
7244    // 게시판 폼 모달 열기
7245    window.openFloatingBoardModal = function(href) {
7246        // #board:게시판ID:필드매핑 파싱
7247        var parts = href.replace('#board:', '').split(':');
7248        var boTable = parts[0];
7249        var fieldMapping = parts[1] || '';
7250
7251        if (!boTable) {
7252            alert('게시판 ID가 지정되지 않았습니다.');
7253            return;
7254        }
7255
7256        // 기본 필드 (필드매핑이 없을 경우)
7257        var defaultFields = [
7258            { label: '성함', name: 'wr_name', type: 'text', required: true },
7259            { label: '연락처', name: 'wr_1', type: 'tel', required: true },
7260            { label: '이메일', name: 'wr_email', type: 'email', required: false },
7261            { label: '문의내용', name: 'wr_content', type: 'textarea', required: true }
7262        ];
7263
7264        var fields = defaultFields;
7265
7266        // 커스텀 필드 매핑 파싱 (라벨=필드명,라벨=필드명)
7267        if (fieldMapping && fieldMapping !== 'all') {
7268            fields = [];
7269            var mappings = fieldMapping.split(',');
7270            mappings.forEach(function(mapping) {
7271                var pair = mapping.split('=');
7272                if (pair.length === 2) {
7273                    var label = pair[0].trim();
7274                    var fieldName = pair[1].trim();
7275                    var type = 'text';
7276                    var required = true;
7277
7278                    // 필드명에 따른 타입 추론
7279                    if (fieldName === 'wr_content' || fieldName === 'content') type = 'textarea';
7280                    else if (fieldName.indexOf('email') !== -1) type = 'email';
7281                    else if (fieldName.indexOf('tel') !== -1 || fieldName.indexOf('phone') !== -1) type = 'tel';
7282
7283                    // 필드명 변환
7284                    if (fieldName === 'name') fieldName = 'wr_name';
7285                    else if (fieldName === 'email') fieldName = 'wr_email';
7286                    else if (fieldName === 'content') fieldName = 'wr_content';
7287                    else if (fieldName === 'subject') fieldName = 'wr_subject';
7288
7289                    fields.push({ label: label, name: fieldName, type: type, required: required });
7290                }
7291            });
7292        }
7293
7294        // 폼 필드 생성
7295        var fieldsHtml = '';
7296        fields.forEach(function(field) {
7297            var inputHtml = '';
7298            if (field.type === 'textarea') {
7299                inputHtml = '<textarea name="' + field.name + '" placeholder="' + field.label + '을(를) 입력해주세요"' + (field.required ? ' required' : '') + '></textarea>';
7300            } else {
7301                inputHtml = '<input type="' + field.type + '" name="' + field.name + '" placeholder="' + field.label + '을(를) 입력해주세요"' + (field.required ? ' required' : '') + '>';
7302            }
7303
7304            fieldsHtml += '<div class="floating_board_field">' +
7305                '<label>' + field.label + (field.required ? ' <span class="required">*</span>' : '') + '</label>' +
7306                inputHtml +
7307                '</div>';
7308        });
7309
7310        $('#flt_bo_table').val(boTable);
7311        $('#floating_board_fields').html(fieldsHtml);
7312        $('#floating_board_modal').addClass('active');
7313    };
7314
7315    // 게시판 폼 모달 닫기
7316    window.closeFloatingBoardModal = function() {
7317        $('#floating_board_modal').removeClass('active');
7318        $('#floating_board_form')[0].reset();
7319    };
7320
7321    // 게시판 글쓰기 제출
7322    window.submitFloatingBoard = function(e) {
7323        e.preventDefault();
7324
7325        var $form = $('#floating_board_form');
7326        var $btn = $form.find('.btn_submit');
7327        var boTable = $('#flt_bo_table').val();
7328
7329        if (!boTable) {
7330            alert('게시판 정보가 없습니다.');
7331            return false;
7332        }
7333
7334        // 필수 필드 검증
7335        var hasName = false;
7336        $form.find('input[name="wr_name"]').each(function() {
7337            if ($(this).val().trim()) hasName = true;
7338        });
7339
7340        if (!hasName) {
7341            alert('성함을 입력해주세요.');
7342            return false;
7343        }
7344
7345        // 동의 체크 확인
7346        if (!$form.find('input[name="agree"]').is(':checked')) {
7347            alert('개인정보 수집 및 이용에 동의해주세요.');
7348            return false;
7349        }
7350
7351        // 버튼 비활성화 (중복 제출 방지)
7352        $btn.prop('disabled', true).text('처리중...');
7353
7354        var formData = $form.serializeArray();
7355        var postData = {
7356            bo_table: boTable
7357        };
7358
7359        formData.forEach(function(item) {
7360            if (item.name !== 'agree') {
7361                postData[item.name] = item.value;
7362            }
7363        });
7364
7365        // 제목 자동 생성 (없으면)
7366        if (!postData.wr_subject) {
7367            postData.wr_subject = '[플로팅문의] ' + (postData.wr_name || '문의');
7368        }
7369
7370        // AJAX 글쓰기 (별도 처리 파일)
7371        $.ajax({
7372            url: '/_themeCom/_chiefadmin/floating_board_ajax.php',
7373            type: 'POST',
7374            data: postData,
7375            dataType: 'json',
7376            success: function(res) {
7377                $btn.prop('disabled', false).text('문의하기');
7378                if (res.success) {
7379                    alert(res.message || '문의가 접수되었습니다.');
7380                    closeFloatingBoardModal();
7381                } else {
7382                    alert(res.message || '문의 접수에 실패했습니다.');
7383                }
7384            },
7385            error: function(xhr, status, error) {
7386                $btn.prop('disabled', false).text('문의하기');
7387                console.error('Error:', xhr.responseText);
7388                alert('문의 접수 중 오류가 발생했습니다.');
7389            }
7390        });
7391
7392        return false;
7393    };
7394})();
7395</script>
7395
7396
7397<!--공통템하 js  style.js은 각 스킨에--> 
7398<script src="https://songpasilbeot.or.kr/_themeCom/themeAsset/temha_resources/js/setting.js"></script>
7398 
7399<script src="https://songpasilbeot.or.kr/_themeCom/themeAsset/temha_resources/js/plugin.js"></script>
7399 
7400<script src="https://songpasilbeot.or.kr/_themeCom/themeAsset/temha_resources/js/templatehouse.js"></script>
7400 
7401<script src="https://songpasilbeot.or.kr/_themeCom/themeAsset/basic_resources/js/lottie-player.js"></script>
vendor: 2 bytes, line 7401
7401
7402<script>
7403/* lottie-player 공통 호버 제어: json-hover(호버재생) + --default-color(호버색상전환) */
7404document.addEventListener('DOMContentLoaded', function(){
7405  var allPlayers = document.querySelectorAll('lottie-player');
7406  if (!allPlayers.length) return;
7407  document.querySelectorAll('.json-hover').forEach(function(box){
7408    var lotties = box.querySelectorAll('lottie-player');
7409    if (!lotties.length) return;
7410    lotties.forEach(function(el){
7411      el.removeAttribute('autoplay');
7412      el.dataset.lottieHandled = '1';
7413      el.addEventListener('ready', function(){ try{ el.stop(); }catch(e){} });
7414    });
7415    box.addEventListener('mouseenter', function(){
7416      lotties.forEach(function(el){ try{ el.play(); }catch(e){} });
7417    });
7418    box.addEventListener('mouseleave', function(){
7419      lotties.forEach(function(el){ try{ el.stop(); }catch(e){} });
7420    });
7421  });
7422  allPlayers.forEach(function(player){
7423    if (player.dataset.lottieHandled) return;
7424    var hasColorVar = getComputedStyle(player).getPropertyValue('--default-color').trim();
7425    if (!hasColorVar) return;
7426    player.dataset.lottieHandled = '1';
7427    var parent = player.closest('.wg_box_in') || player.closest('a') || player.parentElement;
7428    if (!parent) return;
7429    function onReady(){
7430      var sr = player.shadowRoot;
7431      if (!sr) return;
7432      if (sr.getElementById('tint-style')) return;
7433      var style = document.createElement('style');
7434      style.id = 'tint-style';
7435      style.textContent =
7436        'svg *[fill]:not([fill="none"]),svg *[stroke]:not([stroke="none"]){transition:fill .4s ease,stroke .4s ease;}' +
7437        'svg *[fill]:not([fill="none"]){fill:var(--default-color)!important;}' +
7438        'svg *[stroke]:not([stroke="none"]){stroke:var(--default-color)!important;}' +
7439        ':host(.hovered) svg *[fill]:not([fill="none"]){fill:var(--hover-color,#fff)!important;}' +
7440        ':host(.hovered) svg *[stroke]:not([stroke="none"]){stroke:var(--hover-color,#fff)!important;}';
7441      sr.appendChild(style);
7442      try{ player.stop(); }catch(e){}
7443    }
7444    player.addEventListener('ready', onReady, { once: true });
7445    if (player.shadowRoot && player.shadowRoot.querySelector('svg')) onReady();
7446    parent.addEventListener('mouseenter', function(){
7447      player.classList.add('hovered');
7448      try{ player.play(); }catch(e){}
7449    });
7450    parent.addEventListener('mouseleave', function(){
7451      player.classList.remove('hovered');
7452      try{ player.stop(); }catch(e){}
7453    });
7454  });
7455});
7456</script>
7456
7457<!-- 메인블럭 js모음: 하단  --> 
7458
7459<script src="https://songpasilbeot.or.kr/js/sns.js"></script>
7459 
7460<script src="https://songpasilbeot.or.kr/theme/hayan/js/css3-animate-it.js"></script>
7460
7461<link rel="stylesheet" href="https://songpasilbeot.or.kr/theme/hayan/css/animate.css"> 
7462<script>
7463function refresh_admin_view() {
7464    location.reload(); // 또는 특정 영역만 리로드해도 됨
7465}
7466</script>
7466 
7467<!--wing 오버효과 1--> 
7468<script>
7469document.addEventListener("DOMContentLoaded", function () {
7470  for (let i = 1; i <= 12; i++) {
7471    const icon = document.querySelector(`.iconview_${i}`);
7472    const block = document.querySelector(`#block_${i}`);
7473
7474    if (icon && block) {
7475      icon.addEventListener("mouseenter", function () {
7476        block.classList.add("ov");
7477      });
7478
7479      icon.addEventListener("mouseleave", function () {
7480        block.classList.remove("ov");
7481      });
7482    }
7483  }
7484});
7485	
7486	
7487</script>
7487
7488
7489
7490<!--테이블 모바일 날개 화살표 js-->
7491<script>
7492(function(){
7493  var frame = document.querySelector('[data-role="frame"]') || document.querySelector('.frame');
7494  if(!frame) return;
7495  var wrap = frame.querySelector('.table-wrap');
7496  var arrL = frame.querySelector('[data-role="arrL"]');
7497  var arrR = frame.querySelector('[data-role="arrR"]');
7498  var hbar = frame.querySelector('[data-role="hbar"] .bar');
7499  var hinner = frame.querySelector('[data-role="hinner"]');
7500  if(!wrap||!arrL||!arrR||!hbar||!hinner) return;
7501
7502  function syncHbar(){ hinner.style.width = wrap.scrollWidth + 'px'; }
7503  function updateArrows(){
7504    var over = wrap.scrollWidth > wrap.clientWidth + 1;
7505    arrL.style.display = over ? 'flex' : 'none';
7506    arrR.style.display = over ? 'flex' : 'none';
7507  }
7508  syncHbar(); updateArrows();
7509
7510  var lock=false;
7511  hbar.addEventListener('scroll', function(){
7512    if(lock) return; lock=true; wrap.scrollLeft = hbar.scrollLeft; lock=false; updateArrows();
7513  });
7514  wrap.addEventListener('scroll', function(){
7515    if(lock) return; lock=true; hbar.scrollLeft = wrap.scrollLeft; lock=false; updateArrows();
7516  });
7517
7518  var step = function(){ return Math.max(160, wrap.clientWidth * 0.35); };
7519  arrL.addEventListener('click', function(){ wrap.scrollBy({left:-step(), behavior:'smooth'}); });
7520  arrR.addEventListener('click', function(){ wrap.scrollBy({left: step(), behavior:'smooth'}); });
7521
7522  window.addEventListener('resize', function(){ syncHbar(); updateArrows(); });
7523})();
7524</script>
7524
7525<!--admin 일때만 점선보이기-->
7526<script>
7527document.addEventListener('DOMContentLoaded', function() {
7528            document.querySelectorAll('.admin_div').forEach(function(el) {
7529            el.classList.remove('admin_div');
7530            el.classList.add('admin_div_no');
7531        });
7532    });
7533</script>
7533
7534
7535<script>
7536document.addEventListener("DOMContentLoaded", function() {
7537  var header = document.getElementById("gnb");
7538
7539  function toggleHeaderLang() {
7540    if (!header) return;
7541
7542    // 구글 번역 iframe이 있으면 실행중 → lang 추가
7543    if (document.querySelector("iframe.goog-te-banner-frame")) {
7544      header.classList.add("lang");
7545    } else {
7546      header.classList.remove("lang");
7547    }
7548  }
7549
7550  // 처음 실행
7551  toggleHeaderLang();
7552
7553  // 1초마다 체크 (iframe은 MutationObserver로 잘 안 잡혀서 setInterval 사용)
7554  setInterval(toggleHeaderLang, 1000);
7555});
7556</script>
7556
7557
7558<script>
7559/* =========================================================
7560   ALT Keeper v1.2
7561   - 초기 로드 + 동적 변경(MutationObserver)까지 감시
7562   - alt 비었거나 삭제되면 안전한 값으로 복구
7563   - 장식용 이미지는 예외 처리(aria-hidden="true", role="presentation", data-decorative)
7564   ========================================================= */
7565(function () {
7566  'use strict';
7567
7568  // 1) alt 후보값 만들기
7569  function deriveAlt(img) {
7570    // 1순위: 명시적 데이터/접근성 속성
7571    var v = img.getAttribute('data-alt')
7572         || img.getAttribute('aria-label')
7573         || img.getAttribute('title');
7574
7575    // 2순위: figure > figcaption 텍스트
7576    if (!v) {
7577      var fig = img.closest && img.closest('figure');
7578      if (fig) {
7579        var cap = fig.querySelector('figcaption');
7580        if (cap && cap.textContent) v = cap.textContent.trim();
7581      }
7582    }
7583
7584    // 3순위: 부모 링크의 텍스트(썸네일 등)
7585    if (!v && img.parentElement && img.parentElement.tagName === 'A') {
7586      var at = img.parentElement.textContent.trim();
7587      if (at) v = at;
7588    }
7589
7590    // 4순위: 파일명 추출
7591    if (!v) {
7592      var src = img.currentSrc || img.src || img.getAttribute('data-src') || '';
7593      try {
7594        // 쿼리스트링 제거
7595        var clean = src.split('?')[0].split('#')[0];
7596        var name = clean.split('/').pop() || '';
7597        name = name.replace(/\.[a-z0-9]+$/i, '').replace(/[_\-]+/g, ' ').trim();
7598        if (name) v = name;
7599      } catch (e) {}
7600    }
7601
7602    // 5순위: 최후의 기본값
7603    if (!v) v = '이미지';
7604
7605    // 너무 길면 잘라주기(접근성 고려)
7606    if (v.length > 120) v = v.slice(0, 117) + '...';
7607    return v;
7608  }
7609
7610  // 2) 장식용 예외
7611  function isDecorative(img) {
7612    return img.hasAttribute('aria-hidden') && img.getAttribute('aria-hidden') === 'true'
7613        || img.getAttribute('role') === 'presentation'
7614        || img.hasAttribute('data-decorative');
7615  }
7616
7617  // 3) alt 강제 세팅(비거나 null일 때만)
7618  function ensureAlt(img) {
7619    if (!(img && img.tagName === 'IMG')) return;
7620    if (isDecorative(img)) return;
7621
7622    var alt = img.getAttribute('alt');
7623    if (alt === null || alt.trim() === '') {
7624      var val = deriveAlt(img);
7625      img.setAttribute('alt', val);
7626      img.dataset.altKeeper = 'locked'; // 잠금표시
7627    }
7628  }
7629
7630  // 4) alt가 나중에 빈 값으로 바뀌면 복구
7631  function relockIfCleared(mutation) {
7632    var target = mutation.target;
7633    if (target && target.tagName === 'IMG' && !isDecorative(target)) {
7634      // alt 속성이 제거되었거나 빈 문자열로 바뀐 경우
7635      var altAttr = target.getAttribute('alt');
7636      if (altAttr === null || altAttr.trim() === '') {
7637        // data-alt-keeper-original 이 있으면 우선
7638        var orig = target.dataset.altKeeperOriginal;
7639        target.setAttribute('alt', (orig && orig.trim()) ? orig : deriveAlt(target));
7640        target.dataset.altKeeper = 'locked';
7641      }
7642    }
7643  }
7644
7645  // 5) 초기 로드 시 전체 점검
7646  function sweep() {
7647    document.querySelectorAll('img').forEach(function (img) {
7648      if (!isDecorative(img)) {
7649        // 최초 alt 값 보관(나중에 복구용)
7650        if (!img.dataset.altKeeperOriginal) {
7651          var a = img.getAttribute('alt');
7652          if (a && a.trim() !== '') img.dataset.altKeeperOriginal = a.trim();
7653        }
7654        ensureAlt(img);
7655      }
7656    });
7657  }
7658
7659  // 6) DOM 변경 감시(지연로딩, 프레임워크 렌더 대응)
7660  var obs = new MutationObserver(function (mutations) {
7661    mutations.forEach(function (m) {
7662      // 새로 추가된 노드 점검
7663      m.addedNodes && m.addedNodes.forEach(function (node) {
7664        if (!node) return;
7665        if (node.nodeType !== 1) return;
7666
7667        if (node.tagName === 'IMG') {
7668          // 새로 추가된 이미지
7669          // 원래 alt 저장
7670          if (!node.dataset.altKeeperOriginal) {
7671            var a = node.getAttribute('alt');
7672            if (a && a.trim() !== '') node.dataset.altKeeperOriginal = a.trim();
7673          }
7674          ensureAlt(node);
7675        } else {
7676          // 하위에 img가 있을 수 있음
7677          node.querySelectorAll && node.querySelectorAll('img').forEach(function (img) {
7678            if (!img.dataset.altKeeperOriginal) {
7679              var a2 = img.getAttribute('alt');
7680              if (a2 && a2.trim() !== '') img.dataset.altKeeperOriginal = a2.trim();
7681            }
7682            ensureAlt(img);
7683          });
7684        }
7685      });
7686
7687      // 속성 변경으로 alt가 비워진 경우 복구
7688      if (m.type === 'attributes' && m.attributeName === 'alt') {
7689        relockIfCleared(m);
7690      }
7691    });
7692  });
7693
7694  // 7) 시작!
7695  if (document.readyState === 'loading') {
7696    document.addEventListener('DOMContentLoaded', start);
7697  } else {
7698    start();
7699  }
7700
7701  function start() {
7702    sweep();
7703    obs.observe(document.documentElement, {
7704      subtree: true,
7705      childList: true,
7706      attributes: true,
7707      attributeFilter: ['alt'] // alt가 바뀌는 것만 추적
7708    });
7709  }
7710
7711})();
7712</script>
7712
7713
7714
7715
7716<style>
7717.popup6-pc-wrap, .popup6-tablet-wrap, .popup6-mobile-wrap { display: none !important; }
7718@media (min-width: 1025px) { .popup6-pc-wrap { display: block !important; } }
7719@media (min-width: 461px) and (max-width: 1024px) { .popup6-tablet-wrap { display: block !important; } }
7720@media (max-width: 460px) { .popup6-mobile-wrap { display: block !important; } }
7721@media (max-width: 460px) { .popup6-overlay { display: block; } }
7722</style><style>
7723.popup6-pc-wrap .popup-content img,
7724.popup6-tablet-wrap .popup-content img,
7725.popup6-mobile-wrap .popup-content img {
7726  width: 100% !important; height: auto !important; max-width: 100% !important; display: block;
7727}
7728</style><div class="popup6-pc-wrap">
7729    <div id="popup_5_pc" class="popup6-individual" data-cookie-id="popup_5"
7730         style="left:100px;top:140px;width:500px;">
7731      <div class="popup6-header">
7732        <span class="popup6-title">10월 휴관안내</span>
7733        <button class="popup6-close" onclick="popup6_close('popup_5_pc', 'popup_5')">×</button>
7734      </div>
7735      <div class="popup6-body" >
7736                          <div class="popup-content"><p><img src="https://songpasilbeot.or.kr/data/editor/2610/9044f659dc591c154846a33b19ee7a87_1791359269_1575.jpg" title="9044f659dc591c154846a33b19ee7a87_1791359269_1575.jpg" alt="9044f659dc591c154846a33b19ee7a87_1791359269_1575.jpg" /></p></div>
7737                      </div>
7738      <div class="popup6-footer">
7739        <button type="button" class="popup6-today-btn" onclick="popup6_todayClose('popup_5_pc', 'popup_5')">하루 동안 보지 않기</button>
7740      </div>
7741    </div>
7742    </div>
7743
7744<div class="popup6-tablet-wrap">
7745    <div id="popup_5_tablet" class="popup6-individual" data-cookie-id="popup_5"
7746         style="left:100px;top:140px;width:500px;">
7747      <div class="popup6-header">
7748        <span class="popup6-title">10월 휴관안내</span>
7749        <button class="popup6-close" onclick="popup6_close('popup_5_tablet', 'popup_5')">×</button>
7750      </div>
7751      <div class="popup6-body" >
7752                          <div class="popup-content"><p><img src="https://songpasilbeot.or.kr/data/editor/2610/9044f659dc591c154846a33b19ee7a87_1791359269_1575.jpg" title="9044f659dc591c154846a33b19ee7a87_1791359269_1575.jpg" alt="9044f659dc591c154846a33b19ee7a87_1791359269_1575.jpg" /></p></div>
7753                      </div>
7754      <div class="popup6-footer">
7755        <button type="button" class="popup6-today-btn" onclick="popup6_todayClose('popup_5_tablet', 'popup_5')">하루 동안 보지 않기</button>
7756      </div>
7757    </div>
7758    </div>
7759
7760<div class="popup6-mobile-wrap">
7761    <div id="popup6_swiper_mobile" class="popup6-swiper-wrap popup6-bottom" data-titles='[&quot;10\uc6d4 \ud734\uad00\uc548\ub0b4&quot;]'>
7762      <div class="popup6-header">
7763        <span class="popup6-title">POPUPZONE</span>
7764        <button class="popup6-close" onclick="popup6_close_swiper('popup6_swiper_mobile')">×</button>
7765      </div>
7766      <div class="popup6-body">
7767        <div class="swiper popup6-swiper" id="swiper_popup6_swiper_mobile">
7768          <div class="swiper-wrapper">
7769                        <div class="swiper-slide" data-cookie-id="popup_5" >
7770                                            <div class="popup-content"><p><img src="https://songpasilbeot.or.kr/data/editor/2610/9044f659dc591c154846a33b19ee7a87_1791359269_1575.jpg" title="9044f659dc591c154846a33b19ee7a87_1791359269_1575.jpg" alt="9044f659dc591c154846a33b19ee7a87_1791359269_1575.jpg" /></p></div>
7771                                        </div>
7772                      </div>
7773          <div class="swiper-button-prev popup6-hide-ui"></div>
7774          <div class="swiper-button-next popup6-hide-ui"></div>
7775        </div>
7776      </div>
7777      <div class="popup6-pagination-wrap">
7778        <div class="swiper-pagination popup6-hide-ui"></div>
7779      </div>
7780      <div class="popup6-footer">
7781        <button type="button" class="popup6-today-btn" onclick="popup6_todayCloseSwiper('popup6_swiper_mobile')">하루 동안 보지 않기</button>
7782      </div>
7783    </div>
7784    </div>
7785
7786
7787<!-- JS -->
7788<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
vendor: 1 bytes, line 7788
7788
7789<script>
7790(function(){
7791  var allPopupIds = ["popup_5"];
7792
7793  // head.php 통합 "다시열기" 버튼 표시 (재시도 포함 - head 스크립트 로드 대기)
7794  function popup6_forceShowReopenBtn() {
7795    if (typeof window.showPopupReopenBtn === 'function') {
7796      window.showPopupReopenBtn();
7797    } else {
7798      setTimeout(popup6_forceShowReopenBtn, 100);
7799    }
7800  }
7801  // 현재 화면(미디어쿼리)에서 실제 보이는 popup6 팝업이 남아있는지 (offsetParent 기준)
7802  // ※ popup6는 PC/태블릿/모바일 wrap을 모두 출력하고 CSS로 숨기므로,
7803  //    인라인 display:none 셀렉터로는 판정 불가 → offsetParent 로 실제 렌더 여부 확인
7804  function popup6_maybeShowReopenBtn() {
7805    var items = document.querySelectorAll('.popup6-individual, .popup6-swiper-wrap');
7806    var stillVisible = false;
7807    for (var i = 0; i < items.length; i++) {
7808      var el = items[i];
7809      // 인라인으로 닫힌(display:none) 것 제외, 그리고 현재 화면에서 렌더되는 것만 카운트
7810      if (el.style.display !== 'none' && el.offsetParent !== null) { stillVisible = true; break; }
7811    }
7812    console.log('[popup6] maybeShowReopenBtn - stillVisible:', stillVisible,
7813      '/ showPopupReopenBtn 존재:', typeof window.showPopupReopenBtn,
7814      '/ wrap:', document.getElementById('popupReopenBtnWrap'));
7815    if (!stillVisible) popup6_forceShowReopenBtn();
7816  }
7817
7818  // 팝업 닫기 (개별)
7819  window.popup6_close = function(elId, cookieId) {
7820    var el = document.getElementById(elId);
7821    if (!el) return;
7822    el.style.transition = 'opacity 0.3s';
7823    el.style.opacity = '0';
7824    setTimeout(function() { el.style.display = 'none'; popup6_maybeShowReopenBtn(); }, 350);
7825  };
7826
7827  // 하루 동안 보지 않기 (개별) — 확인 경고
7828  window.popup6_todayClose = function(elId, cookieId) {
7829    if (!confirm('오늘 하루 팝업창이 다시 뜨지 않게 설정하시겠습니까?')) return;
7830    document.cookie = cookieId + '=1; path=/; max-age=86400; SameSite=Lax';
7831    popup6_close(elId, cookieId);
7832  };
7833
7834  // 스와이퍼 닫기
7835  window.popup6_close_swiper = function(wrapId) {
7836    var el = document.getElementById(wrapId);
7837    if (!el) return;
7838    el.style.transition = 'opacity 0.3s';
7839    el.style.opacity = '0';
7840    var overlay = document.getElementById('popup6_overlay');
7841    if (overlay) { overlay.style.opacity = '0'; }
7842    setTimeout(function() {
7843      el.style.display = 'none';
7844      if (overlay) overlay.style.display = 'none';
7845      popup6_maybeShowReopenBtn();
7846    }, 350);
7847  };
7848
7849  // 하루 동안 보지 않기 (스와이퍼) — 확인 경고
7850  window.popup6_todayCloseSwiper = function(wrapId) {
7851    if (!confirm('오늘 하루 팝업창이 다시 뜨지 않게 설정하시겠습니까?')) return;
7852    allPopupIds.forEach(function(id) {
7853      document.cookie = id + '=1; path=/; max-age=86400; SameSite=Lax';
7854    });
7855    popup6_close_swiper(wrapId);
7856  };
7857
7858  // Swiper 초기화
7859  document.addEventListener('DOMContentLoaded', function() {
7860    document.querySelectorAll('.popup6-swiper').forEach(function(el) {
7861      // 부모가 display:none이면 나중에 resize에서 초기화
7862      if (el.offsetParent !== null) {
7863        var wrap = el.closest('.popup6-swiper-wrap');
7864        var hasTab = wrap && wrap.classList.contains('popup6-has-tab');
7865        var titles = [];
7866        if (hasTab && wrap.dataset.titles) {
7867          try { titles = JSON.parse(wrap.dataset.titles); } catch(e) {}
7868        }
7869        var paginationEl = wrap ? wrap.querySelector('.popup6-pagination-wrap .swiper-pagination') : el.querySelector('.swiper-pagination');
7870        var paginationOpt = { el: paginationEl, clickable: true };
7871        if (hasTab && titles.length > 0) {
7872          paginationOpt.renderBullet = function(index, className) {
7873            return '<span class="' + className + '">' + (titles[index] || '') + '</span>';
7874          };
7875        }
7876        new Swiper(el, {
7877          slidesPerView: 1,
7878          spaceBetween: 0,
7879          loop: true,
7880          autoplay: { delay: 3000 },
7881          observer: true,
7882          observeParents: true,
7883          pagination: paginationOpt,
7884          navigation: { prevEl: el.querySelector('.swiper-button-prev'), nextEl: el.querySelector('.swiper-button-next') }
7885        });
7886      }
7887    });
7888
7889    // PC/태블릿 스와이퍼 + 개별 팝업 드래그
7890    document.querySelectorAll('.popup6-pc-wrap .popup6-swiper-wrap, .popup6-tablet-wrap .popup6-swiper-wrap, .popup6-pc-wrap .popup6-individual, .popup6-tablet-wrap .popup6-individual').forEach(function(popup) {
7891      var header = popup.querySelector('.popup6-header');
7892      if (!header) return;
7893      var isDown = false, ox = 0, oy = 0;
7894      header.style.cursor = 'move';
7895      header.addEventListener('mousedown', function(e) {
7896        isDown = true;
7897        ox = e.clientX - popup.offsetLeft;
7898        oy = e.clientY - popup.offsetTop;
7899        function onMove(e) {
7900          if (!isDown) return;
7901          popup.style.left = (e.clientX - ox) + 'px';
7902          popup.style.top = (e.clientY - oy) + 'px';
7903        }
7904        function onUp() {
7905          isDown = false;
7906          document.removeEventListener('mousemove', onMove);
7907          document.removeEventListener('mouseup', onUp);
7908        }
7909        document.addEventListener('mousemove', onMove);
7910        document.addEventListener('mouseup', onUp);
7911      });
7912    });
7913
7914    // 리사이즈 시 보이는 Swiper 재초기화
7915    var rTimer;
7916    window.addEventListener('resize', function() {
7917      clearTimeout(rTimer);
7918      rTimer = setTimeout(function() {
7919        document.querySelectorAll('.popup6-swiper').forEach(function(el) {
7920          if (el.offsetParent !== null && !el.swiper) {
7921            new Swiper(el, {
7922              slidesPerView: 1,
7923              spaceBetween: 0,
7924              observer: true,
7925              observeParents: true,
7926              pagination: { el: el.querySelector('.swiper-pagination'), clickable: true }
7927            });
7928          }
7929        });
7930      }, 300);
7931    });
7932  });
7933
7934  // 팝업 다시열기 연동
7935  var popupCount = 1;
7936  function tryUpdate() {
7937    if (typeof window.updatePopupReopenCount === 'function') {
7938      window.updatePopupReopenCount(popupCount);
7939    } else { setTimeout(tryUpdate, 100); }
7940  }
7941  if (document.readyState === 'complete') tryUpdate();
7942  else window.addEventListener('load', tryUpdate);
7943
7944  window.reopenAllPopups = function() {
7945    // PC
7946    document.querySelectorAll('.popup6-pc-wrap .popup6-individual, .popup6-pc-wrap .popup6-swiper-wrap').forEach(function(el) {
7947      el.style.display = ''; el.style.opacity = '1';
7948    });
7949    // 태블릿
7950    document.querySelectorAll('.popup6-tablet-wrap .popup6-individual, .popup6-tablet-wrap .popup6-swiper-wrap').forEach(function(el) {
7951      el.style.display = ''; el.style.opacity = '1';
7952    });
7953    // 모바일
7954    document.querySelectorAll('.popup6-mobile-wrap .popup6-swiper-wrap, .popup6-mobile-wrap .popup6-individual').forEach(function(el) {
7955      el.style.display = ''; el.style.opacity = '1';
7956    });
7957    var overlay = document.getElementById('popup6_overlay');
7958    if (overlay) { overlay.style.display = ''; overlay.style.opacity = '1'; }
7959  };
7960})();
7961</script>
7961
7962
7963
7964
7965<!--모바일 테이블 화살표 js-->
7966<script>
7967(function(){
7968  "use strict";
7969
7970  /* ===== 옵션 ===== */
7971  var MOBILE_ONLY = false; // 모바일에서만 화살표 스크롤을 허용하려면 true
7972  var MOBILE_BP   = 767;   // 모바일 기준 폭(px)
7973
7974  function isMobile(){ return window.innerWidth <= MOBILE_BP; }
7975  function raf(fn){ return requestAnimationFrame(fn); }
7976
7977  function initFrame(frame){
7978    if (!frame || frame.__tb_inited) return;
7979
7980    var wrap   = frame.querySelector('.table-wrap');
7981    var arrL   = frame.querySelector('[data-role="arrL"]');
7982    var arrR   = frame.querySelector('[data-role="arrR"]');
7983    var hbar   = frame.querySelector('[data-role="hbar"] .bar');
7984    var hinner = frame.querySelector('[data-role="hinner"]');
7985
7986    if(!wrap || !arrL || !arrR || !hbar || !hinner) return;
7987
7988    frame.__tb_inited = true;
7989
7990    // 초기 숨김(점프 방지)
7991    frame.classList.remove('tb-ready');
7992    arrL.style.visibility = 'hidden';
7993    arrR.style.visibility = 'hidden';
7994
7995    var lock = false;
7996
7997    function step(){
7998      // 한 번에 보이는 영역의 35%만큼 이동(최소 160px)
7999      return Math.max(160, wrap.clientWidth * 0.35);
8000    }
8001
8002    function syncWidths(){
8003      // 가로 스크롤바(inner) 길이를 실제 스크롤 폭에 맞춤
8004      hinner.style.width = wrap.scrollWidth + 'px';
8005    }
8006
8007    function overflows(){
8008      return wrap.scrollWidth > wrap.clientWidth + 1;
8009    }
8010
8011    function atStart(){
8012      return wrap.scrollLeft <= 0;
8013    }
8014
8015    function atEnd(){
8016      return (wrap.scrollLeft + wrap.clientWidth) >= (wrap.scrollWidth - 1);
8017    }
8018
8019    function applyArrowState(){
8020      var over = overflows();
8021      // 오버플로우 없으면 화살표 숨김
8022      arrL.style.display = over ? 'flex' : 'none';
8023      arrR.style.display = over ? 'flex' : 'none';
8024      if (!over) return;
8025
8026      // 시작/끝 상태에 따라 비활성화
8027      if (atStart()){
8028        arrL.classList.add('is-disabled');
8029        arrL.style.pointerEvents = 'none';
8030        arrL.style.opacity = '0.35';
8031      } else {
8032        arrL.classList.remove('is-disabled');
8033        arrL.style.pointerEvents = 'auto';
8034        arrL.style.opacity = '';
8035      }
8036
8037      if (atEnd()){
8038        arrR.classList.add('is-disabled');
8039        arrR.style.pointerEvents = 'none';
8040        arrR.style.opacity = '0.35';
8041      } else {
8042        arrR.classList.remove('is-disabled');
8043        arrR.style.pointerEvents = 'auto';
8044        arrR.style.opacity = '';
8045      }
8046    }
8047
8048    function centerArrows(){
8049      // wrap의 세로 중앙에 화살표 위치
8050      var host = frame.getBoundingClientRect();
8051      var wr   = wrap.getBoundingClientRect();
8052      var h    = wr.height || host.height;
8053      var top  = (wr.top - host.top) + (h / 2);
8054
8055      // translate 없이 픽셀 고정(다른 스타일 간섭 방지)
8056      arrL.style.top = top + 'px';
8057      arrR.style.top = top + 'px';
8058      arrL.style.transform = 'translateY(-50%)';
8059      arrR.style.transform = 'translateY(-50%)';
8060    }
8061
8062    function syncHdr1(){
8063      // thead 첫 줄 높이를 --hdr1로 반영(2줄 sticky 헤더용)
8064      var table = wrap.querySelector('table');
8065      if(!table) return;
8066      var firstRow = table.querySelector('thead tr:first-child');
8067      if(!firstRow) return;
8068      var h = Math.round(firstRow.getBoundingClientRect().height);
8069      table.style.setProperty('--hdr1', h + 'px');
8070    }
8071
8072    function doRecalc(){
8073      raf(function(){
8074        syncWidths();
8075        applyArrowState();
8076        syncHdr1();
8077        centerArrows();                 // ← 수직 중앙 JS 계산 유지
8078        // 최초 계산이 끝난 시점에 arrow 표시
8079        frame.classList.add('tb-ready');
8080        arrL.style.visibility = 'visible';
8081        arrR.style.visibility = 'visible';
8082      });
8083    }
8084
8085    // 스크롤 동기화: 하단 가로바 ↔ 실제 테이블
8086    hbar.addEventListener('scroll', function(){
8087      if (lock) return;
8088      lock = true;
8089      wrap.scrollLeft = hbar.scrollLeft;
8090      lock = false;
8091      applyArrowState();
8092    }, { passive:true });
8093
8094    wrap.addEventListener('scroll', function(){
8095      if (lock) return;
8096      lock = true;
8097      hbar.scrollLeft = wrap.scrollLeft;
8098      lock = false;
8099      applyArrowState();
8100    }, { passive:true });
8101
8102    function handleArrow(dir){
8103      if (MOBILE_ONLY && !isMobile()) return; // 모바일 전용 옵션
8104
8105      var delta = dir === 'L' ? -step() : step();
8106      wrap.scrollBy({ left: delta, behavior: 'smooth' });
8107      // 스무스 스크롤 중에도 상태 갱신(약간의 지연 후)
8108      setTimeout(applyArrowState, 50);
8109    }
8110
8111    arrL.addEventListener('click', function(e){
8112      e.preventDefault();
8113      if (arrL.classList.contains('is-disabled')) return;
8114      handleArrow('L');
8115    });
8116
8117    arrR.addEventListener('click', function(e){
8118      e.preventDefault();
8119      if (arrR.classList.contains('is-disabled')) return;
8120      handleArrow('R');
8121    });
8122
8123    // 접근성: 프레임에 포커스가 있을 때 좌/우 화살표 키로 이동
8124    frame.setAttribute('tabindex', frame.getAttribute('tabindex') || '0');
8125    frame.addEventListener('keydown', function(e){
8126      if (e.key === 'ArrowLeft'){
8127        handleArrow('L');
8128      } else if (e.key === 'ArrowRight'){
8129        handleArrow('R');
8130      }
8131    });
8132
8133    // 초기 계산
8134    doRecalc();
8135
8136    // 리사이즈/로드/폰트/이미지 로딩/DOM 변경에도 재계산
8137    window.addEventListener('resize', doRecalc);
8138    window.addEventListener('load', doRecalc);
8139
8140    if ('fonts' in document){
8141      document.fonts.ready.then(doRecalc).catch(function(){});
8142    }
8143
8144    Array.prototype.forEach.call(wrap.querySelectorAll('img'), function(img){
8145      if (img.complete) return;
8146      img.addEventListener('load', doRecalc, { once:true });
8147      img.addEventListener('error', doRecalc, { once:true });
8148    });
8149
8150    if ('MutationObserver' in window){
8151      var mo = new MutationObserver(function(){ doRecalc(); });
8152      mo.observe(wrap, { childList:true, subtree:true, attributes:true, attributeFilter:['style','class'] });
8153    }
8154
8155    // 레이아웃 안정화용 안전망
8156    setTimeout(doRecalc, 80);
8157    setTimeout(doRecalc, 200);
8158  }
8159
8160  function initAll(){
8161    var frames = document.querySelectorAll('.frame[data-role="frame"], [data-role="frame"]');
8162    if (!frames.length){
8163      var alt = document.currentScript && document.currentScript.previousElementSibling;
8164      if (alt && (alt.matches('.frame') || alt.hasAttribute('data-role'))){
8165        initFrame(alt);
8166      }
8167    }
8168    Array.prototype.forEach.call(frames, initFrame);
8169  }
8170
8171  if (document.readyState === 'loading'){
8172    document.addEventListener('DOMContentLoaded', initAll);
8173  } else {
8174    initAll();
8175  }
8176})();
8177</script>
8177
8178
8179
8180
8181
8182
8183
8184
8185</body>
8186</html>
8187
8188
8189
8190
8191<!-- ie6,7에서 사이드뷰가 게시판 목록에서 아래 사이드뷰에 가려지는 현상 수정 -->
8192<!--[if lte IE 7]>
8193<script>
8194$(function() {
8195    var $sv_use = $(".sv_use");
8196    var count = $sv_use.length;
8197
8198    $sv_use.each(function() {
8199        $(this).css("z-index", count);
8200        $(this).css("position", "relative");
8201        count = count - 1;
8202    });
8203});
8204</script>
8204
8205<![endif]-->
8206
8207
8208
8209<script type="text/javascript">
8210$(function() {
8211  
8212    //반응형 테이블 만들기
8213    $('.table.table-bordered').each(function() {
8214        var _th = $(this);
8215        if (!_th.parent().is('div.table-responsive') && !_th.parents('.note-editing-area').length) {
8216            _th.wrap('<div class="table-responsive">');
8217        }
8218    });
8219    //팝업 링크 동작 시키기
8220    $('.popup-link').each(function(i) {
8221        var _th = $(this), w = 800, h = 600;
8222        $.each(_th.attr('class').split(' '), function(i, v) {
8223            if (_m = v.match(/[wh][0-9]+/)) {
8224                switch (_m[0].charAt(0)) {
8225                    case 'w': w = _m[0].substring(1); break;
8226                    case 'h': h = _m[0].substring(1); break;
8227                }
8228            }
8229        });
8230       // $('a', _th).on('click', function(e) {
8231          //  e.preventDefault();
8232           // window.open($(this).attr('href'),'','width='+w+',height='+h+',toolbar=no,menubar=no,status=no,scrollbars=yes,resizable=no');
8233       // });
8234		$('a', _th).on('click', function(e) {
8235    e.preventDefault();
8236
8237    var href = $(this).attr('href');
8238
8239    // 이미 ? 가 있는 경우는 &adminpopup=on 추가, 없으면 ?adminpopup=on 추가
8240    if (href.indexOf('?') > -1) {
8241        href += '&adminpopup=on';
8242    } else {
8243        href += '?adminpopup=on';
8244    }
8245
8246    window.open(href, '', 'width=' + w + ',height=' + h + ',toolbar=no,menubar=no,status=no,scrollbars=yes,resizable=no');
8247});
8248    });
8249    //팝업 이미지 동작 시키기
8250    $('.pop-image img').wrap(function() {
8251        return '<a href="' + $(this).attr('src') + '" target="_blank"></a>';
8252    });
8253    //YOUTUBE 동영상 가로 100%
8254    $('.auto-full-video iframe').each(function() {
8255        var _th = $(this);
8256        if (_th.attr('src').indexOf('youtube') > -1) {
8257            _th.wrap('<div class="ytb-auto-wrap">');
8258        }
8259    });
8260    //WOW js 동작 시키기
8261    var $WoW = new WOW({ boxClass: ($(document).width() < 768 ? 'm' : 'w')+'ow', animateClass:'animate__animated' });
8262    $WoW.init();
8263    //hover 색상 처리
8264    $('[on-color]').each(function() {
8265        var _th = $(this), _oc = _th.attr('on-color'), _fc = _th.attr('off-color')||_th.css('background-color')||'transparent';
8266        _th.on('mouseenter', function() { _th.css('background-color', _oc); }).on('mouseleave', function() { _th.css('background-color', _fc); });
8267    });
8268    //FLOWCHART 높이값 자동으로 최대값으로 맞추기
8269    $('.flowchart .cs-body-list').each(function() {
8270        var AH = $('.unit-body', $(this));
8271        AH.css('height', Math.max.apply(Math, jQuery.map(AH, function(e) { return $(e).outerHeight() * 1; })) + 'px');
8272    });
8273    //갤러리 타이틀 노출 시키기
8274    $('.gallery .unit-photo img').on('mouseenter', function(e) {
8275        $('.unit-subj', $(this).parents('.unit')).css('height', '0').show().animate({ height:'40px' }, 300);
8276    }).on('mouseleave', function(e) {
8277        $('.unit-subj', $(this).parents('.unit')).css('height', '0').hide();
8278    });
8279
8280    // 아이콘 폰트 웹접근성 자동 처리
8281    document.querySelectorAll('i[class*="uis"]:not([aria-hidden]), i[class*="uil"]:not([aria-hidden]), i[class*="fa-"]:not([aria-hidden]), i[class*="fa "]:not([aria-hidden])').forEach(function(el){
8282        el.setAttribute('aria-hidden','true');
8283    });
8284
8285});
8286</script>
8286
8287
8288
8289
8290</body>
8291</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.