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

<channel>
	<title>비계작업안전 &#8211; 산업안전지원센터 주식회사</title>
	<atom:link href="https://safetysupport.co.kr/tag/%eb%b9%84%ea%b3%84%ec%9e%91%ec%97%85%ec%95%88%ec%a0%84/feed/" rel="self" type="application/rss+xml" />
	<link>https://safetysupport.co.kr</link>
	<description>안전관리위탁부터 위험성평가, 중대재해예방까지 — 사업장 맞춤 안전보건 컨설팅</description>
	<lastBuildDate>Sun, 17 May 2026 09:33:33 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://safetysupport.co.kr/wp-content/uploads/2026/03/cropped-파비콘1-32x32.png</url>
	<title>비계작업안전 &#8211; 산업안전지원센터 주식회사</title>
	<link>https://safetysupport.co.kr</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>건설작업 안전보건교육</title>
		<link>https://safetysupport.co.kr/edu-construction-safety-education/</link>
		
		<dc:creator><![CDATA[mangjil]]></dc:creator>
		<pubDate>Sun, 17 May 2026 09:15:32 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[개인보호구]]></category>
		<category><![CDATA[거푸집동바리]]></category>
		<category><![CDATA[건설근로자교육]]></category>
		<category><![CDATA[건설기계안전]]></category>
		<category><![CDATA[건설안전교육]]></category>
		<category><![CDATA[건설업안전]]></category>
		<category><![CDATA[건설현장안전]]></category>
		<category><![CDATA[굴착기안전]]></category>
		<category><![CDATA[떨어짐예방]]></category>
		<category><![CDATA[밀폐공간안전]]></category>
		<category><![CDATA[법정안전교육]]></category>
		<category><![CDATA[비계작업안전]]></category>
		<category><![CDATA[안전보건교육PPT]]></category>
		<category><![CDATA[추락예방]]></category>
		<guid isPermaLink="false">https://safetysupport.co.kr/?p=3964</guid>

					<description><![CDATA[광고 EDUCATION MATERIAL 교육 자료 EDU 본 교육자료를 활용하여 관련 교육을 실시하시기 바랍니다. 광고 × 광고 × EDUCATION LOG 교육일지 작성 LOG 교육 실시 후 아래 양식에 교육일지를 작성하여 보관하시기 바랍니다. 안전보건교육일지 📋 안전보건교육일지 🔒 워터마크 ON 📥 PDF 저장 🔐 워터마크 해제 워터마크를 끄려면 관리자 비밀번호를입력하세요. 취소 확인 산업안전지원센터㈜ 산업안전지원센터㈜safetysupport.co.kr 안전보건교육일지 산업안전보건법에 따른 안전보건교육 [&#8230;]]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3964" class="elementor elementor-3964" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-ae40aeb e-flex e-con-boxed e-con e-parent" data-id="ae40aeb" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-6de3a92 elementor-widget elementor-widget-html" data-id="6de3a92" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<style>
.smart-top-banner{
  max-width:1060px;
  margin:24px auto 16px;
  padding:0;
  font-family:'NanumSquareNeo','Noto Sans KR',sans-serif;
}
.smart-top-banner__label{
  display:flex;
  align-items:center;
  gap:6px;
  margin-bottom:6px;
  padding:0 4px;
  font-size:10px;
  font-weight:700;
  letter-spacing:0.06em;
  color:#9ca3af;
  text-transform:uppercase;
}
.smart-top-banner__label::before{
  content:'AD';
  display:inline-block;
  padding:1px 5px;
  border-radius:3px;
  background:#0D4444;
  color:#fff;
  font-size:9px;
  letter-spacing:0.06em;
  font-weight:800;
}
.smart-top-banner__inner{
  width:100%;
  min-height:90px;        /* CLS 방지 */
  background:#fafbfc;
  border-radius:8px;
  overflow:hidden;
  display:flex;
  align-items:center;
  justify-content:center;
}
.smart-top-banner__inner ins.adsbygoogle{
  display:block;
  width:100%;
  height:90px;            /* 슬림 리더보드 높이 */
}
/* 모바일: 광고가 너무 작게 안 잡히도록 약간 키움 */
@media (max-width:768px){
  .smart-top-banner{
    margin:16px auto 12px;
    padding:0 16px;
  }
  .smart-top-banner__inner,
  .smart-top-banner__inner ins.adsbygoogle{
    height:100px;
  }
}
@media (max-width:480px){
  .smart-top-banner__inner,
  .smart-top-banner__inner ins.adsbygoogle{
    height:50px;          /* 320×50 모바일 배너 */
    min-height:50px;
  }
  .smart-top-banner__inner{ min-height:50px; }
}
</style>

<div class="smart-top-banner" aria-label="광고 영역">
  <div class="smart-top-banner__label">
    <span>광고</span>
  </div>
  <div class="smart-top-banner__inner">
    <ins class="adsbygoogle"
         style="display:block; width:100%; height:90px;"
         data-ad-client="ca-pub-3106752057307696"
         data-ad-slot="2206462755"
         data-ad-format="horizontal"
         data-full-width-responsive="false"></ins>
    <script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
  </div>
</div>				</div>
				<div class="elementor-element elementor-element-17425de elementor-widget elementor-widget-html" data-id="17425de" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<!-- =====================================================
  섹션 구분자 - 교육 자료 (EDUCATION MATERIAL)
  용도: WordPress Elementor HTML 위젯
  위치: 이북/자료 콘텐츠 상단
  컬러: 딥그린 (#0D3321) 계열
====================================================== -->

<div id="education-material" style="
  border-radius: 12px;
  overflow: hidden;
  font-family: 'Pretendard', 'Noto Sans KR', 'Apple SD Gothic Neo', sans-serif;
  margin: 8px 0 20px;
">

  <!-- 상단 배너 -->
  <div style="
    background: linear-gradient(100deg, #0D3321 0%, #1a5c35 60%, #226b3f 100%);
    padding: 16px 28px;
    display: flex;
    align-items: center;
    gap: 18px;
  ">
    <!-- 아이콘 원형 -->
    <div style="
      width: 42px; height: 42px;
      background: rgba(255,255,255,0.12);
      border: 1px solid rgba(255,255,255,0.18);
      border-radius: 50%;
      display: flex; align-items: center; justify-content: center;
      flex-shrink: 0;
    ">
      <svg viewBox="0 0 24 24" style="width:19px;height:19px;fill:#a8debb;">
        <path d="M12 3L1 9l11 6 9-4.91V17h2V9M5 13.18v4L12 21l7-3.82v-4L12 17l-7-3.82z"/>
      </svg>
    </div>

    <!-- 텍스트 -->
    <div style="display:flex; flex-direction:column; gap:3px;">
      <span style="
        font-size: 10px; font-weight: 600; letter-spacing: 0.16em;
        color: #7dc49b; text-transform: uppercase;
      ">EDUCATION MATERIAL</span>
      <span style="
        font-size: 17px; font-weight: 700; color: #e8f5ed; letter-spacing: -0.01em;
      ">교육 자료</span>
    </div>

    <!-- 우측 태그 -->
    <div style="
      margin-left: auto;
      background: rgba(255,255,255,0.1);
      border: 0.5px solid rgba(255,255,255,0.22);
      color: #c5e8d0;
      font-size: 10px; font-weight: 600; letter-spacing: 0.12em;
      text-transform: uppercase;
      padding: 5px 14px;
      border-radius: 20px;
      flex-shrink: 0;
      white-space: nowrap;
    ">EDU</div>
  </div>

  <!-- 하단 서브텍스트 -->
  <div style="
    background: #f0f8f3;
    border: 0.5px solid #b8d9c4;
    border-top: none;
    border-radius: 0 0 12px 12px;
    padding: 9px 28px;
    display: flex;
    align-items: center;
    gap: 8px;
  ">
    <div style="
      width: 5px; height: 5px;
      border-radius: 50%;
      background: #3a7a50;
      flex-shrink: 0;
    "></div>
    <span style="
      font-size: 12px; color: #2d6043; font-weight: 500; letter-spacing: 0.01em;
    ">본 교육자료를 활용하여 관련 교육을 실시하시기 바랍니다.</span>
  </div>

</div>				</div>
				<div class="elementor-element elementor-element-7ed6396 elementor-widget elementor-widget-shortcode" data-id="7ed6396" data-element_type="widget" data-e-type="widget" data-widget_type="shortcode.default">
							<div class="elementor-shortcode"><div class="_df_book df-lite" id="df_3962"  _slug="3962" data-title="" wpoptions="true" thumbtype="" ></div><script class="df-shortcode-script" nowprocket type="application/javascript">window.option_df_3962 = {"outline":[],"autoEnableOutline":"false","autoEnableThumbnail":"false","overwritePDFOutline":"false","enableDownload":"false","direction":"1","pageSize":"1","pageMode":"1","singlePageMode":"0","source":"https:\/\/safetysupport.co.kr\/wp-content\/uploads\/2026\/05\/construction-work-safety-health-education.pdf","wpOptions":"true"}; if(window.DFLIP && window.DFLIP.parseBooks){window.DFLIP.parseBooks();}</script></div>
						</div>
				<div class="elementor-element elementor-element-7c84601 elementor-widget elementor-widget-html" data-id="7c84601" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<style>
.smart-float-ad {
  position: fixed;
  right: 50%;
  margin-right: 630px;          /* ★ 수정: 1140/2 + 60 = 630px */
  top: 50%;
  transform: translateY(-50%);
  z-index: 9998;
  width: 180px;
  padding: 10px 10px 8px;
  border-radius: 18px;
  background: rgba(255,255,255,0.88);
  border: 1px solid rgba(13,68,68,0.12);
  box-shadow: 0 12px 32px rgba(13,68,68,0.14);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  font-family: 'NanumSquareNeo', 'Noto Sans KR', sans-serif;
  transition: opacity 0.4s ease, transform 0.4s ease;
  opacity: 1;
}
.smart-float-ad.is-hidden {
  opacity: 0;
  pointer-events: none;
  transform: translateY(-50%) translateX(-20px);
}
.smart-float-ad__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
  padding: 0 2px;
}
.smart-float-ad__label {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: #0D4444;
  opacity: .65;
}
.smart-float-ad__label::before {
  content: 'AD';
  display: inline-block;
  padding: 2px 6px;
  border-radius: 4px;
  background: #0D4444;
  color: #fff;
  font-size: 9.5px;
  letter-spacing: 0.06em;
}
.smart-float-ad__close {
  width: 22px;
  height: 22px;
  border: 1.5px solid rgba(13,68,68,0.25);
  background: rgba(13,68,68,0.06);
  color: #0D4444;
  font-size: 13px;
  line-height: 1;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  transition: background 0.15s ease, border-color 0.15s ease;
  flex-shrink: 0;
}
.smart-float-ad__close:hover {
  background: rgba(13,68,68,0.15);
  border-color: rgba(13,68,68,0.5);
}
.smart-float-ad__inner {
  min-height: 600px;
  width: 160px;
  margin: 0 auto;
  background: #fff;
  border-radius: 10px;
  overflow: hidden;
}
.smart-float-ad__inner ins.adsbygoogle {
  display: block;
  width: 160px;
  height: 600px;
}
/* ★ 수정: 1140(콘텐츠) + 360(광고2개) + 60(여백) = 1560px */
@media (max-width: 1560px) {
  .smart-float-ad { display: none !important; }
}
</style>

<div class="smart-float-ad" id="smart-float-ad-left" aria-label="광고 영역">
  <div class="smart-float-ad__header">
    <div class="smart-float-ad__label">광고</div>
    <button class="smart-float-ad__close"
            aria-label="광고 닫기"
            onclick="smartLeftAdClose()">×</button>
  </div>
  <div class="smart-float-ad__inner">
    <ins class="adsbygoogle"
         style="display:block;"
         data-ad-client="ca-pub-3106752057307696"
         data-ad-slot="9893381088"
         data-ad-format="auto"
         data-full-width-responsive="false"></ins>
    <script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
  </div>
</div>

<script>
(function(){
  var el = document.getElementById('smart-float-ad-left');
  if(!el) return;
  function checkScroll(){
    var scrolled = window.scrollY + window.innerHeight;
    var total    = document.documentElement.scrollHeight;
    if((scrolled / total) > 0.82){
      el.classList.add('is-hidden');
    } else {
      el.classList.remove('is-hidden');
    }
  }
  window.addEventListener('scroll', checkScroll, { passive: true });
  checkScroll();
  function smartLeftAdClose(){
    el.style.opacity = '0';
    el.style.pointerEvents = 'none';
    el.style.transform = 'translateY(-50%) translateX(-20px)';
    try { sessionStorage.setItem('smart_left_ad_closed','1'); } catch(e){}
  }
  window.smartLeftAdClose = smartLeftAdClose;
  try {
    if(sessionStorage.getItem('smart_left_ad_closed') === '1'){
      el.style.display = 'none';
    }
  } catch(e){}
})();
</script>
				</div>
				<div class="elementor-element elementor-element-1531e05 elementor-widget elementor-widget-html" data-id="1531e05" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<style>
.smart-static-ad-right {
  position: fixed;
  left: 50%;
  margin-left: 680px;           /* ★ 수정: 1140/2 + 60 = 630px */
  top: 50%;
  transform: translateY(-50%);
  z-index: 9997;
  width: 180px;
  padding: 10px 10px 8px;
  border-radius: 18px;
  background: rgba(255,255,255,0.88);
  border: 1px solid rgba(13,68,68,0.12);
  box-shadow: 0 12px 32px rgba(13,68,68,0.14);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  font-family: 'NanumSquareNeo', 'Noto Sans KR', sans-serif;
  transition: opacity 0.4s ease, transform 0.4s ease;
  opacity: 1;
}
.smart-static-ad-right.is-hidden {
  opacity: 0;
  pointer-events: none;
  transform: translateY(-50%) translateX(20px);
}
.smart-static-ad-right__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 6px;
  padding: 0 2px;
}
.smart-static-ad-right__label {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: #0D4444;
  opacity: .65;
}
.smart-static-ad-right__label::before {
  content: 'AD';
  display: inline-block;
  padding: 2px 6px;
  border-radius: 4px;
  background: #0D4444;
  color: #fff;
  font-size: 9.5px;
  letter-spacing: 0.06em;
}
.smart-static-ad-right__close {
  width: 22px;
  height: 22px;
  border: 1.5px solid rgba(13,68,68,0.25);
  background: rgba(13,68,68,0.06);
  color: #0D4444;
  font-size: 13px;
  line-height: 1;
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  transition: background 0.15s ease, border-color 0.15s ease;
  flex-shrink: 0;
}
.smart-static-ad-right__close:hover {
  background: rgba(13,68,68,0.15);
  border-color: rgba(13,68,68,0.5);
}
.smart-static-ad-right__inner {
  min-height: 600px;
  width: 160px;
  margin: 0 auto;
  background: #fff;
  border-radius: 10px;
  overflow: hidden;
}
.smart-static-ad-right__inner ins.adsbygoogle {
  display: block;
  width: 160px;
  height: 600px;
}
/* ★ 수정: 1140(콘텐츠) + 360(광고2개) + 60(여백) = 1560px */
@media (max-width: 1560px) {
  .smart-static-ad-right { display: none !important; }
}
</style>

<div class="smart-static-ad-right" id="smart-static-ad-right" aria-label="광고 영역">
  <div class="smart-static-ad-right__header">
    <div class="smart-static-ad-right__label">광고</div>
    <button class="smart-static-ad-right__close"
            aria-label="광고 닫기"
            onclick="smartRightAdClose()">×</button>
  </div>
  <div class="smart-static-ad-right__inner">
    <ins class="adsbygoogle"
         style="display:block;"
         data-ad-client="ca-pub-3106752057307696"
         data-ad-slot="9072313499"
         data-ad-format="auto"
         data-full-width-responsive="false"></ins>
    <script>(adsbygoogle = window.adsbygoogle || []).push({});</script>
  </div>
</div>

<script>
(function(){
  var el = document.getElementById('smart-static-ad-right');
  if(!el) return;
  function checkScroll(){
    var scrolled = window.scrollY + window.innerHeight;
    var total    = document.documentElement.scrollHeight;
    if((scrolled / total) > 0.82){
      el.classList.add('is-hidden');
    } else {
      el.classList.remove('is-hidden');
    }
  }
  window.addEventListener('scroll', checkScroll, { passive: true });
  checkScroll();
  function smartRightAdClose(){
    el.style.opacity = '0';
    el.style.pointerEvents = 'none';
    el.style.transform = 'translateY(-50%) translateX(20px)';
    try { sessionStorage.setItem('smart_right_ad_closed','1'); } catch(e){}
  }
  window.smartRightAdClose = smartRightAdClose;
  try {
    if(sessionStorage.getItem('smart_right_ad_closed') === '1'){
      el.style.display = 'none';
    }
  } catch(e){}
})();
</script>
				</div>
				<div class="elementor-element elementor-element-1746d3c elementor-widget elementor-widget-html" data-id="1746d3c" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<ins class="adsbygoogle"
     style="display:block; text-align:center;"
     data-ad-layout="in-article"
     data-ad-format="fluid"
     data-ad-client="ca-pub-3106752057307696"
     data-ad-slot="4640906013"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>				</div>
				<div class="elementor-element elementor-element-d0c9cd4 elementor-widget elementor-widget-html" data-id="d0c9cd4" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<!-- =====================================================
  섹션 구분자 - 교육일지 작성
  용도: WordPress Elementor HTML 위젯
  위치: 교육일지 콘텐츠 상단
  컬러: 딥그린 (#0D3321) 계열
====================================================== -->

<div id="education-log" style="
  border-radius: 12px;
  overflow: hidden;
  font-family: 'Pretendard', 'Noto Sans KR', 'Apple SD Gothic Neo', sans-serif;
  margin: 8px 0 20px;
  scroll-margin-top: 90px;
">

  <!-- 상단 배너 -->
  <div style="
    background: linear-gradient(100deg, #0D3321 0%, #1a5c35 60%, #226b3f 100%);
    padding: 16px 28px;
    display: flex;
    align-items: center;
    gap: 18px;
  ">
    <!-- 아이콘 원형 -->
    <div style="
      width: 42px; height: 42px;
      background: rgba(255,255,255,0.12);
      border: 1px solid rgba(255,255,255,0.18);
      border-radius: 50%;
      display: flex; align-items: center; justify-content: center;
      flex-shrink: 0;
    ">
      <svg viewBox="0 0 24 24" style="width:19px;height:19px;fill:#a8debb;">
        <path d="M6 2h9l5 5v15a2 2 0 01-2 2H6a2 2 0 01-2-2V4a2 2 0 012-2zm0 2v16h12V8h-4V4H6zm2 8h8v1.5H8V12zm0 3h8v1.5H8V15zm0-6h4v1.5H8V9z"/>
      </svg>
    </div>

    <!-- 텍스트 -->
    <div style="display:flex; flex-direction:column; gap:3px;">
      <span style="
        font-size: 10px; font-weight: 600; letter-spacing: 0.16em;
        color: #7dc49b; text-transform: uppercase;
      ">EDUCATION LOG</span>
      <span style="
        font-size: 17px; font-weight: 700; color: #e8f5ed; letter-spacing: -0.01em;
      ">교육일지 작성</span>
    </div>

    <!-- 우측 태그 -->
    <div style="
      margin-left: auto;
      background: rgba(255,255,255,0.1);
      border: 0.5px solid rgba(255,255,255,0.22);
      color: #c5e8d0;
      font-size: 10px; font-weight: 600; letter-spacing: 0.12em;
      text-transform: uppercase;
      padding: 5px 14px;
      border-radius: 20px;
      flex-shrink: 0;
      white-space: nowrap;
    ">LOG</div>
  </div>

  <!-- 하단 서브텍스트 -->
  <div style="
    background: #f0f8f3;
    border: 0.5px solid #b8d9c4;
    border-top: none;
    border-radius: 0 0 12px 12px;
    padding: 9px 28px;
    display: flex;
    align-items: center;
    gap: 8px;
  ">
    <div style="
      width: 5px; height: 5px;
      border-radius: 50%;
      background: #3a7a50;
      flex-shrink: 0;
    "></div>
    <span style="
      font-size: 12px; color: #2d6043; font-weight: 500; letter-spacing: 0.01em;
    ">교육 실시 후 아래 양식에 교육일지를 작성하여 보관하시기 바랍니다.</span>
  </div>

</div>				</div>
				<div class="elementor-element elementor-element-281bb5e elementor-widget elementor-widget-html" data-id="281bb5e" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>안전보건교육일지</title>
<style>
  @import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&display=swap');

  :root {
    /* ════ 페이지 여백 ════ */
    --gap-page-top:            60px;
    --gap-page-side:           60px;
    --gap-page-bottom:         28px;
    --gap-page2-top:           60px;

    /* ════ 헤더 ════ */
    --gap-after-header:        5px;
    --approval-sign-height:    50px;   /* 

    /* ════ 작성일자행 ════ */
    --gap-after-writerow:      15px;

    /* ════ 섹션 간격 ════ */
    --gap-after-edutype:       20px;
    --gap-after-educount:      20px;
    --gap-after-educontent:    20px;
    --gap-after-loc:           20px;
    --gap-after-special:       10px;
    --gap-before-mini-roster:  12px;

    /* ════ 셀 높이/패딩 ════ */
    --main-cell-pad-v:         5px;
    --main-cell-pad-h:         8px;
    --educount-row-height:     26px;
    --educontent-min-height:   80px;
    --special-min-height:      60px;
    --loc-cell-pad-v:          7px;
    --mini-row-height:         25px;

    /* ════ 2페이지 ════ */
    --roster-row-height:       25px;

    /* ════ 워터마크 ════ */
    --watermark-opacity:       0.06;

    /* ════ 색상 ════ */
    --deep-green:  #0D3321;
    --light-green: #e8f5ed;
    --lighter-green: #f4faf6;
    --accent:      #3db86b;
    --border:      #888;
    --border-light:#ccc;
    --text:        #1a1a1a;
    --text-muted:  #555;

    /* ════ 테두리 두께(나중에 여기만 수정하면 됨) ════ */
    --main-border-width:       1px;
    --inner-table-border:      1px;
    --roster-divider-width:    1.5px;
  }

  * {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
  }

  body {
    font-family: 'Noto Sans KR', sans-serif;
    background: #f0f0f0;
    color: var(--text);
    font-size: 12px;
    line-height: 1.5;
  }

  #control-panel {
    background: var(--deep-green);
    
    color: #fff;
    padding: 10px 20px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    position: sticky;
    top: 0;
    z-index: 100;
    box-shadow: 0 2px 8px rgba(0,0,0,0.3);
  }

  #control-panel h1 {
    
    font-size: 14px;
    font-weight: 700;
    white-space: nowrap;
  }

  .btn-pdf {
    background: var(--accent);
    color: #fff;
    border: none;
    padding: 8px 20px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    white-space: nowrap;
    font-family: inherit;
  }

  .btn-pdf:hover {
    background: #2da05a;
  }

  .btn-pdf:disabled {
    opacity: 0.6;
    cursor: not-allowed;
  }

  .btn-wm {
        background: rgba(255,255,255,0.15);
    color: #fff;
    border: 1px solid rgba(255,255,255,0.35);
    padding: 7px 14px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    white-space: nowrap;
    font-family: inherit;
  }

  .btn-wm:hover {
    background: rgba(255,255,255,0.25);
  }

  #pw-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.55);
    z-index: 999;
    align-items: center;
    justify-content: center;
  }

  #pw-overlay.show {
    display: flex;
  }

  #pw-box {
    background: #fff;
    border-radius: 10px;
    padding: 28px 32px;
    width: 300px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.25);
    text-align: center;
  }

  #pw-box h2 {
    font-size: 14px;
    font-weight: 700;
    color: var(--deep-green);
    margin-bottom: 6px;
  }

  #pw-box p {
    font-size: 11px;
    color: var(--text-muted);
    margin-bottom: 16px;
  }

  #pw-input {
    
    width: 100%;
    border: 1.5px solid var(--border);
    border-radius: 6px;
    padding: 8px 12px;
    font-size: 14px;
    text-align: center;
    letter-spacing: 4px;
    font-family: inherit;
    outline: none;
    margin-bottom: 6px;
  }

  #pw-input:focus {
    border-color: var(--accent);
  }

  #pw-input.error {
    border-color: #e24b4a;
    animation: shake 0.3s;
  }

  #pw-error {
    font-size: 11px;
    color: #e24b4a;
    height: 16px;
    margin-bottom: 12px;
  }

  #pw-box .pw-btns {
    display: flex;
    gap: 8px;
  }

  #pw-box .pw-btns button {
    flex: 1;
    padding: 8px;
    border-radius: 6px;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
    border: none;
  }

  .pw-confirm {
    background: var(--deep-green);
    color: #fff;
  }

  .pw-cancel {
      
    background: #f0f0f0;
    color: var(--text);
  }

  @keyframes shake {
    0%,100% { transform: translateX(0); }
    25% { transform: translateX(-6px); }
    75% { transform: translateX(6px); }
  }

  #pages-wrap {
      
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 24px;
    gap: 20px;
  }

  .a4-page {
    background: #fff;
    width: 794px;
    min-height: 1123px;
    padding: var(--gap-page-top) var(--gap-page-side) var(--gap-page-bottom);
    box-shadow: 0 2px 12px rgba(0,0,0,0.18);
    position: relative;
  }

  #page2 {
    padding-top: var(--gap-page2-top);
  }

  .watermark {
    display: none;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%) rotate(-35deg);
    font-size: 68px;
    font-weight: 700;
    color: #000;
    opacity: var(--watermark-opacity);
    white-space: nowrap;
    pointer-events: none;
    user-select: none;
    z-index: 10;
    letter-spacing: 2px;
  }

  .page-num {
    position: absolute;
    bottom: 14px;
    right: var(--gap-page-side);
    font-size: 10px;
    color: #bbb;
  }

  .doc-header {
    display: flex;
    align-items: stretch;
    border-bottom: 2.5px solid var(--deep-green);
    margin-bottom: var(--gap-after-header);
    padding-bottom: 10px;
    gap: 12px;
  }

  .doc-logo-area {
    display: flex;
    align-items: center;
    min-width: 150px;
    flex-shrink: 0;
  }

  .doc-logo-text {
    font-size: 11px;
    font-weight: 700;
    color: var(--deep-green);
    line-height: 1.5;
  }

  .doc-title-area {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
  }

  .doc-title-area .doc-title {
    font-size: 25px;
    font-weight: 700;
    color: var(--deep-green);
    letter-spacing: 1px;
  }

  .doc-title-area .doc-sub {
    font-size: 11px;
    color: var(--text-muted);
    margin-top: 3px;
  }

  .doc-approval {
    display: flex;
    align-items: stretch;
    flex-shrink: 0;
    border: var(--main-border-width) solid var(--border);
    border-radius: 3px;
    overflow: hidden;
  }

  .doc-approval .ap-cells {
  display: flex;
  align-items: stretch;
}

  .doc-approval .ap-cell {
    width: 70px;
    text-align: center;
    border-left: var(--main-border-width) solid var(--border);
    display: flex;
    flex-direction: column;
  }

  .doc-approval .ap-cell:first-child {
    border-left: none;
  }

  .doc-approval .ap-cell .ap-role {
  font-size: 10px;
  font-weight: 700;
  padding: 3px 4px;
  border-bottom: var(--main-border-width) solid var(--border);
  background: var(--deep-green);
  color: #fff;
  text-align: center;
  word-break: keep-all;
  line-height: 1.4;
  flex: 1;
}

  .doc-approval .ap-cell .ap-role[contenteditable]:focus {
    outline: 1px solid rgba(255,255,255,0.6);
    background: #1a5c35;
  }

  .doc-approval .ap-cell .ap-sign {
  flex: 1;
  min-height: var(--approval-sign-height);
  display: flex;
  align-items: flex-end;
  justify-content: center;
  font-size: 8px;
  color: #ccc;
  padding-bottom: 3px;
}

  .write-row {
    display: flex;
    gap: 32px;
    font-size: 11px;
    color: var(--text-muted);
    padding: 5px 4px;
    border-bottom: var(--main-border-width) solid var(--border-light);
    margin-bottom: var(--gap-after-writerow);
  }

  .write-row span {
    display: flex;
    align-items: center;
    gap: 6px;
  }

  .write-row .write-val {
    border-bottom: var(--main-border-width) solid var(--border-light);
    min-width: 90px;
    outline: none;
    display: inline-block;
    color: var(--text);
    background: transparent;
  }

  .write-row .write-val:focus {
      
    background: #fffde7;
  }

  .main-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 12px;
    background: #fff;
    
  }

  .main-table th,
  .main-table td {
    border: var(--main-border-width) solid var(--border);
    vertical-align: middle;
    padding: var(--main-cell-pad-v) var(--main-cell-pad-h);
    background: #fff;
  }

  .main-table .section-row td {
    background: var(--deep-green) !important;
    color: #fff;
    font-weight: 700;
    font-size: 12px;
    padding: 5px 10px;
    letter-spacing: 0.3px;
    border-color: var(--Deep-green);
    
  }

  .main-table .section-row td::before {
    content: '';
    display: inline-block;
    width: 3px;
    height: 11px;
    background: var(--accent);
    border-radius: 2px;
    margin-right: 7px;
    vertical-align: middle;
  }

  .main-table .row-th {
  background: var(--light-green) !important;
  color: var(--deep-green);
  font-weight: 700;
  text-align: center;
  white-space: nowrap;
  width: 52px;
  line-height: 1.4;
  font-size: 11px;
}

  .section-label {
    background: var(--light-green) !important;
  }

  .main-table td[contenteditable],
  .main-table th[contenteditable] {
    background: #fff !important;
  }

  .main-table td[contenteditable]:focus,
  .main-table th[contenteditable]:focus {
    background: #fffde7 !important;
    outline: 2px solid var(--accent);
    outline-offset: -2px;
  }

  .edu-type-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 7px 2px;
    font-size: 11px;
    background: #fff;
    
  }

  .edu-type-grid label {
    display: flex;
    align-items: center;
    gap: 4px;
    cursor: pointer;
    background: #fff;
  }

  .edu-type-grid input[type="checkbox"] {
    accent-color: var(--deep-green);
    width: 12px;
    height: 12px;
    flex-shrink: 0;
  }

  .educount-row > td,
  .loc-row > td {
    vertical-align: top !important;
    padding: 0 !important;
    line-height: 0;
    font-size: 0;
    background: #fff !important;
    
  }

  .educount-row > th.row-th,
  .loc-row > th.row-th {
    vertical-align: middle !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    
  }

  .inw-table {
    width: 100%;
    border-collapse: collapse;
    border-spacing: 0;
    table-layout: fixed;
    font-size: 11px;
    margin: 0;
    background: #fff;
    
  }

  .inw-table th,
.inw-table td {
  border: var(--inner-table-border) solid var(--border);
  text-align: center;
  padding: 3px 4px;
  height: var(--educount-row-height);
  background: transparent;
  vertical-align: middle;
}

  .inw-table th {
    color: var(--deep-green);
    font-weight: 700;
  }

  .inw-head {
  background: var(--lighter-green) !important;
}

  .inw-table td.row-label {
    background: #fff !important;
    font-weight: 700;
    text-align: left;
    padding-left: 18px;
    color: var(--deep-green);
    
  }

  .inw-label {
  background: var(--lighter-green) !important;
}

  .inw-table td[contenteditable] {
    background: #fff !important;
  }

  .inw-table td[contenteditable]:focus {
    background: #fffde7 !important;
    outline: 1px solid var(--accent);
    outline-offset: -1px;
    
  }

  .inw-table .miss-reason {
    text-align: left;
    padding: 3px 6px;
    background: #fff !important;
  }

  .loc-table {
    width: 100%;
    border-collapse: collapse;
    border-spacing: 0;
    table-layout: fixed;
    font-size: 11px;
    margin: 0;
    background: #fff;
  }

  .loc-table th,
.loc-table td {
  border: var(--inner-table-border) solid var(--border);
  padding: var(--loc-cell-pad-v) 8px;
  background: transparent;
  vertical-align: middle;
}

  .loc-table th {
    color: var(--deep-green);
    font-weight: 700;
    text-align: center;
    white-space: nowrap;
    width: 14%;
  }

  .loc-label {
  background: var(--lighter-green) !important;
}

  .loc-table td[contenteditable] {
    background: #fff !important;
    
  }

  .loc-table td[contenteditable]:focus {
    background: #fffde7 !important;
    outline: 1px solid var(--accent);
    outline-offset: -1px;
  }

  .mini-roster-wrap {
    margin-top: var(--gap-before-mini-roster);
  }

  .mini-roster-title {
    text-align: center;
    font-size: 12px;
    font-weight: 700;
    padding: 5px 10px;
    letter-spacing: 2px;
    background: var(--deep-green);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
  }

  .mini-roster-title::before {
    content: '';
    display: inline-block;
    width: 3px;
    height: 11px;
    background: var(--accent);
    border-radius: 2px;
  }

  .mini-roster-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 11px;
    table-layout: fixed;
  }

  .mini-roster-table th {
    background: var(--light-green);
    color: var(--deep-green);
    font-weight: 700;
    text-align: center;
    border: var(--main-border-width) solid var(--border);
    padding: 4px 3px;
  }

  .mini-roster-table td {
    border: var(--main-border-width) solid var(--border);
    padding: 2px 3px;
    text-align: center;
    height: var(--mini-row-height);
    vertical-align: middle;
    background: #fff;
  }

  .mini-roster-table td[contenteditable]:focus {
    background: #fffde7;
    outline: 1px solid var(--accent);
    outline-offset: -1px;
  }

  .mini-roster-table .seq-cell {
    background: var(--light-green) !important;
    color: var(--deep-green);
    font-weight: 700;
    width: 22px;
  }

  .mini-roster-table .col-divider {
    border-right: var(--roster-divider-width) solid var(--deep-green) !important;
  }

  .page2-header {
    display: flex;
    align-items: stretch;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
    padding-bottom: 8px;
    border-bottom: 2.5px solid var(--deep-green);
  }

  .logo-text {
    font-size: 11px;
    font-weight: 700;
    color: var(--deep-green);
    line-height: 1.4;
  }

  .roster-meta {
    display: flex;
    gap: 24px;
    font-size: 11px;
    font-weight: 700;
    color: var(--text-muted);
    justify-content: center;
    margin: 12px 0 14px;
  }

  .roster-meta strong {
    font-weight: 400;
    border-bottom: var(--main-border-width) solid var(--border-light);
    min-width: 90px;
    display: inline-block;
    outline: none;
  }

  .roster-meta strong:focus {
    background: #fffde7;
  }

  .roster-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 11px;
    table-layout: fixed;
  }

  .roster-table thead th {
    background: var(--deep-green);
    color: #fff;
    font-weight: 700;
    padding: 5px 3px;
    border: var(--main-border-width) solid var(--border);
    text-align: center;
  }

  .roster-table tbody td {
    border: var(--main-border-width) solid var(--border);
    padding: 2px 3px;
    text-align: center;
    height: var(--roster-row-height);
    vertical-align: middle;
    background: #fff !important;
  }

  .roster-table tbody td[contenteditable]:focus {
    background: #fffde7 !important;
    outline: 1px solid var(--accent);
    outline-offset: -1px;
  }

  .roster-table .col-divider {
    border-right: var(--roster-divider-width) solid var(--deep-green) !important;
  }

  .legal-footer {
    margin-top: 14px;
    padding-top: 7px;
    border-top: var(--main-border-width) solid var(--border-light);
    font-size: 10px;
    color: var(--text-muted);
    line-height: 1.6;
  }

  @media print {
    body {
      background: #fff;
    }
    #control-panel {
      display: none;
    }
    #pw-overlay {
      display: none !important;
    }
    #pages-wrap {
      padding: 0;
      gap: 0;
    }
    .a4-page {
      box-shadow: none;
      margin: 0;
      page-break-after: always;
    }
  }
</style>
</head>
<body>

<div id="control-panel">
  <h1>📋 안전보건교육일지</h1>
  <div style="display:flex; gap:8px; align-items:center;">
    <button class="btn-wm" id="btn-wm" onclick="toggleWatermarkUI()">🔒 워터마크 ON</button>
    <button class="btn-pdf" onclick="generatePDF()">📥 PDF 저장</button>
  </div>
</div>

<div id="pw-overlay">
  <div id="pw-box">
    <h2>🔐 워터마크 해제</h2>
    <p>워터마크를 끄려면 관리자 비밀번호를<br>입력하세요.</p>
    <input type="password" id="pw-input" placeholder="비밀번호" maxlength="20"
      onkeydown="if(event.key==='Enter') confirmPW()">
    <div id="pw-error"></div>
    <div class="pw-btns">
      <button class="pw-cancel" onclick="closePW()">취소</button>
      <button class="pw-confirm" onclick="confirmPW()">확인</button>
    </div>
  </div>
</div>

<div id="pages-wrap">

<div class="a4-page" id="page1">
<div class="watermark" id="wm-page1">산업안전지원센터㈜</div>

  <div class="doc-header">
    <div class="doc-logo-area">
      <div class="doc-logo-text">산업안전지원센터㈜<br><span style="font-weight:400; font-size:10px; color:#4a7a5a;">safetysupport.co.kr</span></div>
    </div>
    <div class="doc-title-area">
      <div class="doc-title">안전보건교육일지</div>
      <div class="doc-sub">산업안전보건법에 따른 안전보건교육 실시 확인 문서</div>
    </div>
    <div class="doc-approval">
      <div class="ap-cells">
        <div class="ap-cell">
          <div class="ap-role">담 당</div>
          <div class="ap-sign">서명</div>
        </div>
        <div class="ap-cell">
          <div class="ap-role" contenteditable="true" style="outline:none;" id="ap-role2">팀 장</div>
          <div class="ap-sign">서명</div>
        </div>
        <div class="ap-cell">
          <div class="ap-role" contenteditable="true" style="outline:none;" id="ap-role3">대 표</div>
          <div class="ap-sign">서명</div>
        </div>
      </div>
    </div>
  </div>

  <div class="write-row">
    <span>작성일자 : <span class="write-val" contenteditable="true" id="f-write-date"></span></span>
    <span>작성자 : <span class="write-val" contenteditable="true" id="f-writer" style="min-width:60px;"></span></span>
  </div>

  <table class="main-table">

    <tr class="section-row"><td colspan="4">교육 구분</td></tr>
    <tr>
      <th class="row-th section-label">교육<br>구분</th>
      <td colspan="3" style="padding:8px 12px; background:#fff;">
        <div class="edu-type-grid">
          <label><input type="checkbox" name="edutype" value="정기교육"> 정기교육</label>
          <label><input type="checkbox" name="edutype" value="채용시교육"> 채용 시 교육</label>
          <label><input type="checkbox" name="edutype" value="작업내용변경"> 작업내용 변경시의 교육</label>
          <label><input type="checkbox" name="edutype" value="특별교육"> 특별교육</label>
          <label><input type="checkbox" name="edutype" value="물질안전"> 물질안전보건자료 교육</label>
          <div style="display:flex; align-items:center; gap:4px; font-size:11px; background:#fff;">
            <input type="checkbox" name="edutype" value="기타" id="cb-etc">
            <label for="cb-etc">기 타 (</label><span id="etc-input" contenteditable="true"
              style="min-width:30px; display:inline-block; outline:none; border-bottom:1px solid #ccc; background:#fff;"></span><span>) 교육</span>
          </div>
        </div>
      </td>
    </tr>
    <tr><td colspan="4" style="padding:0; height:var(--gap-after-edutype); border:none; background:#fff;"></td></tr>

    <tr class="section-row"><td colspan="4">교육 인원</td></tr>
    <tr class="educount-row">
      <th class="row-th section-label">교육<br>인원</th>
      <td colspan="3" style="padding:0; line-height:0; font-size:0; vertical-align:top; background:#fff;">
        <table class="inw-table">
          <thead>
            <tr>
              <th class="inw-head" style="width:22%;">구분</th>
              <th class="inw-head" style="width:10%;">계</th>
              <th class="inw-head" style="width:10%;">남</th>
              <th class="inw-head" style="width:10%;">여</th>
              <th class="inw-head">교육미실시 사유</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td class="row-label inw-label">교육 대상자 수</td>
              <td contenteditable="true"></td>
              <td contenteditable="true"></td>
              <td contenteditable="true"></td>
              <td class="miss-reason" contenteditable="true" rowspan="3"></td>
            </tr>
            <tr>
              <td class="row-label inw-label">참석 인원</td>
              <td contenteditable="true"></td>
              <td contenteditable="true"></td>
              <td contenteditable="true"></td>
            </tr>
            <tr>
              <td class="row-label inw-label">교육미실시자수</td>
              <td contenteditable="true"></td>
              <td contenteditable="true"></td>
              <td contenteditable="true"></td>
            </tr>
          </tbody>
        </table>
      </td>
    </tr>
    <tr><td colspan="4" style="padding:0; height:var(--gap-after-educount); border:none; background:#fff;"></td></tr>

    <tr class="section-row"><td colspan="4">교육 내용</td></tr>
    <tr>
  <th class="row-th section-label">교육<br>내용</th>
  <td colspan="3" contenteditable="true" id="f-content"
style="height:var(--educontent-min-height); vertical-align:top; padding:8px 10px; line-height:1.8; background:#fff;">
    건설현장 주요 재해 발생 원인 및 유형<br>
    떨어짐(추락) 예방 — 비계·철골·슬래브 작업 안전수칙<br>
    건설기계 부딪힘 사고 예방 및 유도자 배치 기준<br>
    거푸집·토사 무너짐 예방 및 지반 안전 확인<br>
    밀폐공간 질식·화재·폭발 예방 조치<br>
    감전 예방 — 용접·가설전기 작업 안전수칙<br>
    작업 전 안전 점검사항 및 개인보호구 착용 기준<br>
    건설현장 핵심 안전수칙 5가지
  </td>
</tr>
    <tr><td colspan="4" style="padding:0; height:var(--gap-after-educontent); border:none; background:#fff;"></td></tr>

    <tr class="section-row"><td colspan="4">교육실시자 및 장소</td></tr>
    <tr class="loc-row">
      <th class="row-th section-label" style="white-space:nowrap; font-size:10px; line-height:1.5;">교육실시자<br>및 장소</th>
      <td colspan="3" style="padding:0; line-height:0; font-size:0; vertical-align:top; background:#fff;">
        <table class="loc-table">
          <tr>
            <th class="loc-label">교육실시자</th>
            <td contenteditable="true" id="f-instructor"></td>
            <th class="loc-label">교육일시</th>
            <td contenteditable="true" id="f-date"></td>
          </tr>
          <tr>
            <th class="loc-label">교육시간</th>
            <td contenteditable="true" id="f-hours"></td>
            <th class="loc-label">교육장소</th>
            <td contenteditable="true" id="f-place"></td>
          </tr>
        </table>
      </td>
    </tr>
    <tr><td colspan="4" style="padding:0; height:var(--gap-after-loc); border:none; background:#fff;"></td></tr>

    <tr class="section-row"><td colspan="4">특기사항</td></tr>
    <tr>
      <th class="row-th section-label">특기<br>사항</th>
      <td colspan="3" contenteditable="true" id="f-remark"
    style="height:var(--special-min-height); vertical-align:top; padding:7px 10px; background:#fff;">
      </td>
    </tr>
    <tr><td colspan="4" style="padding:0; height:var(--gap-after-special); border:none; background:#fff;"></td></tr>

  </table>

  <div class="mini-roster-wrap">
    <div class="mini-roster-title">참석자 명단</div>
    <table class="mini-roster-table">
      <thead>
        <tr>
          <th style="width:22px;">No</th>
          <th>직 책</th>
          <th>성 명</th>
          <th class="col-divider">서 명</th>
          <th style="width:22px;">No</th>
          <th>직 책</th>
          <th>성 명</th>
          <th>서 명</th>
        </tr>
      </thead>
      <tbody id="mini-roster-body"></tbody>
    </table>
  </div>

  <div class="page-num">1 / 2</div>
</div>

<div class="a4-page" id="page2">
<div class="watermark" id="wm-page2">산업안전지원센터㈜</div>

  <div class="page2-header">
    <div style="display:flex; align-items:center; gap:8px; min-width:140px;">
      <div class="logo-text">산업안전지원센터㈜<br><span style="font-weight:400; font-size:10px;">safetysupport.co.kr</span></div>
    </div>
    <div style="flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center;">
      <div style="font-size:17px; font-weight:600; color:var(--deep-green);">교육 참석자 명단</div>
      <div style="font-size:12px; color:var(--text-muted); margin-top:2px;">안전보건교육 수강 확인 서명부</div>
    </div>
    <div style="min-width:140px;"></div>
  </div>

  <div class="roster-meta">
    <span>교육일시:&nbsp;<strong contenteditable="true" id="r-date"></strong></span>
    <span>교육장소:&nbsp;<strong contenteditable="true" id="r-place"></strong></span>
    <span>참석인원:&nbsp;<strong contenteditable="true" id="r-count"></strong></span>
  </div>

  <table class="roster-table">
    <thead>
      <tr>
        <th style="width:14%;">소속/부서</th>
        <th style="width:10%;">직위</th>
        <th style="width:11%;">성명</th>
        <th class="col-divider" style="width:15%;">서명</th>
        <th style="width:14%;">소속/부서</th>
        <th style="width:10%;">직위</th>
        <th style="width:11%;">성명</th>
        <th style="width:15%;">서명</th>
      </tr>
    </thead>
    <tbody id="roster-body"></tbody>
  </table>

  <div class="legal-footer">
    본 교육일지는 「산업안전보건법」 제29조(근로자에 대한 안전보건교육) 및 동법 시행규칙 제26조에 따른 안전보건교육 실시 확인 목적으로 작성되었으며, 3년간 보존하여야 합니다.
  </div>

  <div class="page-num">2 / 2</div>
</div>

</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
<script>
(function buildMiniRoster() {
  const tbody = document.getElementById('mini-roster-body');
  for (let i = 0; i < 5; i++) {
  const n1 = i + 1, n2 = i + 6;
    const tr = document.createElement('tr');
    tr.innerHTML =
      `<td class="seq-cell">${n1}</td>` +
      `<td contenteditable="true"></td>` +
      `<td contenteditable="true"></td>` +
      `<td class="col-divider"></td>` +
      `<td class="seq-cell">${n2}</td>` +
      `<td contenteditable="true"></td>` +
      `<td contenteditable="true"></td>` +
      `<td></td>`;
    tbody.appendChild(tr);
  }
})();

(function buildRoster() {
  const tbody = document.getElementById('roster-body');
  for (let i = 0; i < 30; i++) {
    const tr = document.createElement('tr');
    tr.innerHTML =
      `<td contenteditable="true" style="font-size:11px;"></td>` +
      `<td contenteditable="true" style="font-size:11px;"></td>` +
      `<td contenteditable="true" style="font-size:11px;"></td>` +
      `<td class="col-divider"></td>` +
      `<td contenteditable="true" style="font-size:11px;"></td>` +
      `<td contenteditable="true" style="font-size:11px;"></td>` +
      `<td contenteditable="true" style="font-size:11px;"></td>` +
      `<td></td>`;
    tbody.appendChild(tr);
  }
})();

(function setToday() {
  const d = new Date();
  const str = d.getFullYear() + '년 ' + (d.getMonth()+1) + '월 ' + d.getDate() + '일';
  ['f-date','f-write-date','r-date'].forEach(function(id) {
    var el = document.getElementById(id);
    if (el && !el.textContent.trim()) el.textContent = str;
  });
})();

document.getElementById('f-date').addEventListener('input', function() {
  document.getElementById('r-date').textContent = this.textContent.trim();
});
document.getElementById('f-place').addEventListener('input', function() {
  document.getElementById('r-place').textContent = this.textContent.trim();
});

const WM_PASSWORD = 'ossc01432';
let wmOn = true;

function toggleWatermark(show) {
  document.querySelectorAll('.watermark').forEach(function(el) {
    el.style.display = show ? 'block' : 'none';
  });
}
toggleWatermark(true);

function toggleWatermarkUI() {
  if (wmOn) {
    openPW();
  } else {
    wmOn = true;
    toggleWatermark(true);
    document.getElementById('btn-wm').textContent = '🔒 워터마크 ON';
  }
}

function openPW() {
  document.getElementById('pw-input').value = '';
  document.getElementById('pw-error').textContent = '';
  document.getElementById('pw-input').classList.remove('error');
  document.getElementById('pw-overlay').classList.add('show');
  setTimeout(function() {
    document.getElementById('pw-input').focus();
  }, 50);
}

function closePW() {
  document.getElementById('pw-overlay').classList.remove('show');
}

function confirmPW() {
  var val = document.getElementById('pw-input').value;
  if (val === WM_PASSWORD) {
    closePW();
    wmOn = false;
    toggleWatermark(false);
    document.getElementById('btn-wm').textContent = '🔓 워터마크 OFF';
  } else {
    var inp = document.getElementById('pw-input');
    inp.classList.remove('error');
    void inp.offsetWidth;
    inp.classList.add('error');
    document.getElementById('pw-error').textContent = '비밀번호가 올바르지 않습니다.';
    inp.value = '';
    inp.focus();
  }
}

function buildEduTypeText() {
  const checked = document.querySelectorAll('input[name="edutype"]:checked');
  return Array.from(checked).map(function(c) {
    if (c.value === '기타') {
      const etc = document.getElementById('etc-input').textContent;
      return '■ 기타(' + (etc || '') + ')교육';
    }
    return '■ ' + c.value;
  }).join('  ') || '(선택 없음)';
}

async function generatePDF() {
  const btn = document.querySelector('.btn-pdf');
  btn.disabled = true;
  btn.textContent = '생성 중…';

  const gridEl = document.querySelector('.edu-type-grid');
  const txtEl = document.createElement('span');
  txtEl.style.fontSize = '11px';
  txtEl.textContent = buildEduTypeText();
  gridEl.parentNode.insertBefore(txtEl, gridEl);
  gridEl.style.display = 'none';

  try {
    const { jsPDF } = window.jspdf;
    const pdf = new jsPDF({ orientation: 'portrait', unit: 'mm', format: 'a4' });
    const pages = ['page1', 'page2'];

    for (let i = 0; i < pages.length; i++) {
      const cvs = await html2canvas(document.getElementById(pages[i]), {
        scale: 2,
        useCORS: true,
        backgroundColor: '#ffffff',
        logging: false
      });
      if (i > 0) pdf.addPage();
      pdf.addImage(cvs.toDataURL('image/jpeg', 0.95), 'JPEG', 0, 0, 210, 297);
    }

    const today = new Date();
    const ds = today.getFullYear() +
      String(today.getMonth()+1).padStart(2,'0') +
      String(today.getDate()).padStart(2,'0');

    pdf.save('안전보건교육일지_' + ds + '.pdf');
  } catch(e) {
    alert('PDF 생성 오류: ' + e.message);
  } finally {
    gridEl.style.display = '';
    txtEl.remove();
    btn.disabled = false;
    btn.textContent = '📥 PDF 저장';
  }
}
</script>
<!-- =====================================================
  교육페이지 전용 스마트 네비게이션
  위치: 교육일지 HTML 코드의 </body> 바로 위
====================================================== -->

<style>
.smart-edu-float-nav{
  position:fixed;
  left:50%;
  margin-left:580px;
  top:50%;
  transform:translateY(-50%);
  z-index:9999;
  display:flex;
  flex-direction:column;
  gap:10px;
  padding:10px 8px;
  border-radius:24px;
  background:rgba(255,255,255,0.88);
  border:1px solid rgba(13,68,68,0.12);
  box-shadow:0 12px 32px rgba(13,68,68,0.14);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  transition:opacity 0.4s ease, transform 0.4s ease;
  opacity:1;
}

.smart-edu-float-nav.is-hidden{
  opacity:0;
  pointer-events:none;
  transform:translateY(-50%) translateX(20px);
}

.smart-edu-float-btn{
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
  width:52px;
  height:52px;
  border:none;
  border-radius:18px;
  background:transparent;
  color:#0D4444;
  text-decoration:none;
  cursor:pointer;
  transition:all .22s ease;
  overflow:visible;
}

.smart-edu-float-btn:hover{
  background:#0D4444;
  color:#fff;
  transform:translateX(-2px);
  box-shadow:0 8px 18px rgba(13,68,68,.22);
}

.smart-edu-float-btn svg{
  width:22px;
  height:22px;
  stroke:currentColor;
  flex-shrink:0;
  transition:transform .22s ease;
}

.smart-edu-float-btn:hover svg{
  transform:scale(1.05);
}

.smart-edu-float-label{
  position:absolute;
  right:62px;
  top:50%;
  transform:translateY(-50%) translateX(6px);
  opacity:0;
  pointer-events:none;
  white-space:nowrap;
  padding:9px 12px;
  border-radius:12px;
  background:#0D4444;
  color:#fff;
  font-size:12.5px;
  font-weight:700;
  letter-spacing:-0.01em;
  box-shadow:0 8px 20px rgba(13,68,68,.22);
  transition:all .18s ease;
  font-family:'NanumSquareNeo','Noto Sans KR',sans-serif;
}

.smart-edu-float-label::after{
  content:'';
  position:absolute;
  left:100%;
  top:50%;
  transform:translateY(-50%);
  border-left:6px solid #0D4444;
  border-top:5px solid transparent;
  border-bottom:5px solid transparent;
}

.smart-edu-float-btn:hover .smart-edu-float-label{
  opacity:1;
  transform:translateY(-50%) translateX(0);
}

.smart-edu-float-divider{
  width:28px;
  height:1px;
  margin:1px auto;
  background:linear-gradient(to right, rgba(13,68,68,0), rgba(13,68,68,.18), rgba(13,68,68,0));
}

html{
  scroll-behavior:smooth;
}

#education-material,
#education-log{
  scroll-margin-top:90px;
}

@media (max-width:1400px){
  .smart-edu-float-nav{
    left:auto;
    margin-left:0;
    right:22px;
  }
}

@media (max-width:768px){
  .smart-edu-float-nav{
    left:auto;
    margin-left:0;
    right:12px;
    gap:8px;
    padding:8px 6px;
    border-radius:20px;
  }
  .smart-edu-float-btn{
    width:42px;
    height:42px;
    border-radius:14px;
  }
  .smart-edu-float-btn svg{
    width:18px;
    height:18px;
  }
  .smart-edu-float-label{
    display:none;
  }
}

@media print{
  .smart-edu-float-nav{
    display:none !important;
  }
}
</style>

<div class="smart-edu-float-nav" id="smart-edu-float-nav">

  <!-- 홈으로 -->
  <a class="smart-edu-float-btn" href="https://safetysupport.co.kr/" aria-label="홈으로 이동">
    <span class="smart-edu-float-label">홈으로</span>
    <svg viewBox="0 0 24 24" fill="none" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">
      <path d="M3 11.5L12 4l9 7.5"/>
      <path d="M5.5 10.5V20h13v-9.5"/>
      <path d="M9.5 20v-6h5v6"/>
    </svg>
  </a>

  <!-- 교육목록으로 -->
  <a class="smart-edu-float-btn" href="https://safetysupport.co.kr/safety-education/" aria-label="교육목록으로 이동">
    <span class="smart-edu-float-label">교육목록으로</span>
    <svg viewBox="0 0 24 24" fill="none" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">
      <line x1="8" y1="6" x2="21" y2="6"/>
      <line x1="8" y1="12" x2="21" y2="12"/>
      <line x1="8" y1="18" x2="21" y2="18"/>
      <line x1="3" y1="6" x2="3.01" y2="6"/>
      <line x1="3" y1="12" x2="3.01" y2="12"/>
      <line x1="3" y1="18" x2="3.01" y2="18"/>
    </svg>
  </a>

  <div class="smart-edu-float-divider"></div>

  <!-- 교육자료로 이동 -->
  <a class="smart-edu-float-btn" href="#education-material" aria-label="교육자료로 이동">
    <span class="smart-edu-float-label">교육자료로 이동</span>
    <svg viewBox="0 0 24 24" fill="none" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">
      <path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"/>
      <polyline points="14 2 14 8 20 8"/>
      <line x1="8" y1="13" x2="16" y2="13"/>
      <line x1="8" y1="17" x2="16" y2="17"/>
      <line x1="8" y1="9" x2="10" y2="9"/>
    </svg>
  </a>

  <!-- 교육일지로 이동 -->
  <a class="smart-edu-float-btn" href="#education-log" aria-label="교육일지로 이동">
    <span class="smart-edu-float-label">교육일지로 이동</span>
    <svg viewBox="0 0 24 24" fill="none" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">
      <rect x="3" y="4" width="18" height="18" rx="2" ry="2"/>
      <line x1="16" y1="2" x2="16" y2="6"/>
      <line x1="8" y1="2" x2="8" y2="6"/>
      <line x1="3" y1="10" x2="21" y2="10"/>
      <line x1="8" y1="15" x2="16" y2="15"/>
      <line x1="8" y1="18" x2="13" y2="18"/>
    </svg>
  </a>

  <div class="smart-edu-float-divider"></div>

  <!-- 제일 상단으로 -->
  <button class="smart-edu-float-btn" type="button" onclick="window.scrollTo({top:0,behavior:'smooth'})" aria-label="제일 상단으로 이동">
    <span class="smart-edu-float-label">상단으로</span>
    <svg viewBox="0 0 24 24" fill="none" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">
      <polyline points="18 15 12 9 6 15"/>
    </svg>
  </button>

  <!-- 제일 하단으로 -->
  <button class="smart-edu-float-btn" type="button" onclick="window.scrollTo({top:document.documentElement.scrollHeight,behavior:'smooth'})" aria-label="제일 하단으로 이동">
    <span class="smart-edu-float-label">하단으로</span>
    <svg viewBox="0 0 24 24" fill="none" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round">
      <polyline points="6 9 12 15 18 9"/>
    </svg>
  </button>

</div>

<script>
(function(){
  var nav = document.getElementById('smart-edu-float-nav');
  if(!nav) return;

  function checkScroll(){
    var scrolled = window.scrollY + window.innerHeight;
    var total    = document.documentElement.scrollHeight;
    if((scrolled / total) > 0.82){
      nav.classList.add('is-hidden');
    } else {
      nav.classList.remove('is-hidden');
    }
  }
  window.addEventListener('scroll', checkScroll, { passive: true });
  checkScroll();
})();
</script>

</body>
</html>				</div>
				<div class="elementor-element elementor-element-7525b03 elementor-widget elementor-widget-html" data-id="7525b03" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<!-- safetysupport_콘텐츠하단_멀티플렉스 -->
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-3106752057307696"
     data-ad-slot="7825472551"></ins>
<script>(adsbygoogle = window.adsbygoogle || []).push({});</script>				</div>
					</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
