<?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%b3%80%ec%9d%b4%ec%9b%90%ec%84%b1%eb%ac%bc%ec%a7%88/feed/" rel="self" type="application/rss+xml" />
	<link>https://safetysupport.co.kr</link>
	<description>안전관리위탁부터 위험성평가, 중대재해예방까지 — 사업장 맞춤 안전보건 컨설팅</description>
	<lastBuildDate>Thu, 16 Apr 2026 06:40:16 +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/special-management-substance-notice/</link>
		
		<dc:creator><![CDATA[mangjil]]></dc:creator>
		<pubDate>Thu, 16 Apr 2026 01:50:42 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[MSDS]]></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[화학물질 관리]]></category>
		<guid isPermaLink="false">https://safetysupport.co.kr/?p=2946</guid>

					<description><![CDATA[✕ PDF 저장 산업안전보건기준에 관한 규칙 제440조에 따른 특별관리물질 고지 물질을 선택하세요 Select a substance CAS No. — GHS 그림문자 물질 선택 후 표시됩니다 유해성 분류 C 발암성 물질 — Carcinogen · 암을 유발하거나 그 발생을 증가시키는 물질 M 생식세포 변이원성 — Mutagen · 생식세포에 돌연변이를 일으킬 수 있는 물질 R 생식독성 물질 — Reproductive [&#8230;]]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="2946" class="elementor elementor-2946" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-daa7fd0 e-con-full e-flex e-con e-parent" data-id="daa7fd0" data-element_type="container" data-e-type="container">
				<div class="elementor-element elementor-element-9b759b3 elementor-widget elementor-widget-html" data-id="9b759b3" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<!-- =============================================
   특별관리물질 고지 v2
   - 공식 GHS 픽토그램 (PubChem NIH 공식 이미지)
   - 실시간 미리보기 + PDF변환(html2canvas+jsPDF)
   - 워터마크 (비밀번호 잠금)
   - 물질 검색 기능
   ============================================= -->

<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR...">

<div class="smc-page">

  <!-- ── 툴바 ── -->
  <div class="smc-toolbar">
    <div class="smc-toolbar-left">
      <div class="smc-search-wrap">
        <svg class="smc-search-icon" viewBox="0 0 20 20" fill="none">
          <circle cx="8.5" cy="8.5" r="5.5" stroke="currentColor" stroke-width="1.8"/>
          <path d="M13 13l3.5 3.5" stroke="currentColor" stroke-width="1.8" stroke-linecap="round"/>
        </svg>
        <input type="text" id="smcSearch" class="smc-search-input" placeholder="물질명 또는 CAS No. 검색...">
        <button type="button" id="smcSearchClear" class="smc-search-clear" style="display:none">✕</button>
      </div>
      <div class="smc-select-wrap">
        <select id="smcSelect"></select>
      </div>
    </div>
    <div class="smc-toolbar-right">
      <button type="button" id="smcPdfBtn" class="smc-btn-pdf">
        <svg viewBox="0 0 20 20" fill="none" width="16" height="16">
          <path d="M4 16h12M10 4v9m0 0l-3-3m3 3l3-3" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/>
        </svg>
        PDF 저장
      </button>
    </div>
  </div>

  <!-- ── 검색 결과 드롭다운 ── -->
  <div class="smc-search-result" id="smcSearchResult" style="display:none"></div>

  <!-- ── 고지서 보드 (미리보기) ── -->
  <div class="smc-board" id="smcBoard">

    <!-- 헤더 -->
    <div class="smc-head">
      <div class="smc-head-sub">산업안전보건기준에 관한 규칙 제440조에 따른</div>
      <div class="smc-head-title">특별관리물질 고지</div>
    </div>

    <!-- 바디 -->
    <div class="smc-body">

      <!-- 왼쪽: 물질 기본정보 + 픽토그램 -->
      <div class="smc-col-left">
        <div class="smc-chem-box">
          <div class="smc-name-kr" id="smcNameKr">물질을 선택하세요</div>
          <div class="smc-name-en" id="smcNameEn">Select a substance</div>
          <div class="smc-cas-badge" id="smcCas">CAS No. —</div>
          <div class="smc-condition" id="smcCondition"></div>
        </div>

        <div class="smc-picto-section">
          <div class="smc-picto-label">GHS 그림문자</div>
          <div class="smc-pictos" id="smcPictos">
            <div class="smc-picto-empty">물질 선택 후 표시됩니다</div>
          </div>
        </div>
      </div>

      <!-- 구분선 -->
      <div class="smc-divider"></div>

      <!-- 오른쪽: 유해성 분류 -->
      <div class="smc-col-right">
        <div class="smc-hazard-title">유해성 분류</div>
        <div class="smc-hazard-list">
        <div class="smc-hazard-row">
            <div class="smc-hazard-top">
              <div class="smc-hazard-label">
                <span class="smc-hazard-icon smc-icon-c">C</span>
                발암성 물질
              </div>
              <div class="smc-hazard-val" id="smcCarcinogenic">—</div>
            </div>
            <div class="smc-hazard-sub">Carcinogen · 암을 유발하거나 그 발생을 증가시키는 물질</div>
          </div>
          <div class="smc-hazard-row">
            <div class="smc-hazard-top">
              <div class="smc-hazard-label">
                <span class="smc-hazard-icon smc-icon-m">M</span>
                생식세포 변이원성
              </div>
              <div class="smc-hazard-val" id="smcMutagenic">—</div>
            </div>
            <div class="smc-hazard-sub">Mutagen · 생식세포에 돌연변이를 일으킬 수 있는 물질</div>
          </div>
          <div class="smc-hazard-row">
            <div class="smc-hazard-top">
              <div class="smc-hazard-label">
                <span class="smc-hazard-icon smc-icon-r">R</span>
                생식독성 물질
              </div>
              <div class="smc-hazard-val" id="smcReproductive">—</div>
            </div>
            <div class="smc-hazard-sub">Reproductive toxicant · 생식기능·발생·수유에 유해한 물질</div>
          </div>
        </div>

        <div class="smc-notice-box">
          <svg viewBox="0 0 20 20" fill="none" width="15" height="15" style="flex-shrink:0;margin-top:2px">
            <circle cx="10" cy="10" r="8.5" stroke="#0D3321" stroke-width="1.5"/>
            <path d="M10 6v5" stroke="#0D3321" stroke-width="1.8" stroke-linecap="round"/>
            <circle cx="10" cy="14" r="1" fill="#0D3321"/>
          </svg>
          <span>해당 물질의 추가적인 유해·위험성 등 상세 정보는 물질안전보건자료(MSDS)를 반드시 확인하시기 바랍니다.</span>
        </div>
      </div>
    </div>

    <!-- 푸터 -->
    <div class="smc-foot">
      <span id="smcFootCompany">산업안전지원센터㈜</span>
      <span class="smc-foot-dot">·</span>
      <span>safetysupport.co.kr</span>

    </div>

    <!-- 워터마크 레이어 (잠금 시 표시) -->
    <div class="smc-watermark" id="smcWatermark" style="display:none">
      <div class="smc-wm-text">산업안전지원센터㈜</div>
    </div>

  </div><!-- /smc-board -->

  <!-- ── 워터마크 설정 패널 ── -->
  <div class="smc-wm-panel">
    <div class="smc-wm-panel-title">
      <svg viewBox="0 0 20 20" fill="none" width="15" height="15">
        <rect x="5" y="9" width="10" height="8" rx="1.5" stroke="currentColor" stroke-width="1.5"/>
        <path d="M7 9V6.5a3 3 0 016 0V9" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/>
      </svg>
      워터마크 설정
    </div>
    <div class="smc-wm-row">
      <input type="text" id="smcWmText" class="smc-wm-input" placeholder="워터마크 텍스트" value="산업안전지원센터㈜">
      <input type="password" id="smcWmPwd" class="smc-wm-input" placeholder="잠금 비밀번호" style="width:140px">
      <button type="button" id="smcWmLockBtn" class="smc-wm-btn">워터마크 적용</button>
      <button type="button" id="smcWmUnlockBtn" class="smc-wm-btn smc-wm-btn-off" style="display:none">잠금 해제</button>
    </div>
    <div class="smc-wm-status" id="smcWmStatus"></div>
  </div>

</div><!-- /smc-page -->

<!-- ────────────────────────── CSS ────────────────────────── -->
<style>
:root {
  --green-dark: #0D3321;
  --green-mid:  #1a5c3a;
  --green-light:#3db86b;
  --green-pale: #e8f5ed;
  --red-alert:  #c0392b;
  --red-pale:   #fdf0ef;
  --gray-1:     #111;
  --gray-3:     #333;
  --gray-6:     #666;
  --gray-9:     #f5f5f5;
  --border:     #dde4dd;
  --white:      #ffffff;
  --font: 'Noto Sans KR', 'Malgun Gothic', sans-serif;
  --radius:     10px;
  --shadow:     0 4px 24px rgba(13,51,33,.12);
}

/* ── 페이지 래퍼 ── */
.smc-page {
  max-width: 900px;
  margin: 0 auto;
  font-family: var(--font);
  color: var(--gray-1);
}

/* ── 툴바 ── */
.smc-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 16px;
}
.smc-toolbar-left {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  flex: 1;
}

/* 검색창 */
.smc-search-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
}
.smc-search-icon {
  position: absolute;
  left: 12px;
  top: 50%;
  transform: translateY(-50%);
  width: 15px;
  height: 15px;
  color: var(--gray-6);
  pointer-events: none;
  z-index: 2;
}
.smc-search-input {
  position: relative;
  z-index: 1;
  box-sizing: border-box;
  width: 220px;
  height: 42px;
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  padding: 0 32px 0 34px !important;
  font-size: 13.5px;
  font-family: var(--font);
  color: var(--gray-1);
  background: var(--white);
  transition: border .2s;
  outline: none;
}
.smc-search-input:focus {
  border-color: var(--green-mid);
}
.smc-search-clear {
  position: absolute;
  right: 10px;
  background: none;
  border: none;
  cursor: pointer;
  font-size: 12px;
  color: var(--gray-6);
  padding: 0;
}

/* 드롭다운 결과 */
.smc-search-result {
  position: relative;
  z-index: 100;
  background: var(--white);
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  max-height: 240px;
  overflow-y: auto;
  margin-top: -8px;
  margin-bottom: 8px;
}
.smc-search-item {
  padding: 10px 16px;
  font-size: 13.5px;
  cursor: pointer;
  border-bottom: 1px solid #f0f0f0;
  transition: background .15s;
}
.smc-search-item:hover { background: var(--green-pale); }
.smc-search-item .smc-si-kr { font-weight: 700; color: var(--green-dark); }
.smc-search-item .smc-si-cas { font-size: 12px; color: var(--gray-6); margin-top: 1px; }
.smc-search-item mark { background: #fff3b0; padding: 0 1px; border-radius: 2px; font-weight: 700; }

/* 셀렉트 */
.smc-select-wrap select {
  height: 42px;
  min-width: 280px;
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  padding: 0 14px;
  font-size: 13.5px;
  font-family: var(--font);
  color: var(--gray-1);
  background: var(--white);
  cursor: pointer;
  outline: none;
  transition: border .2s;
}
.smc-select-wrap select:focus { border-color: var(--green-mid); }

/* PDF 버튼 */
.smc-btn-pdf {
  display: flex;
  align-items: center;
  gap: 7px;
  height: 42px;
  padding: 0 20px;
  background: var(--green-dark);
  color: var(--white);
  border: none;
  border-radius: var(--radius);
  font-family: var(--font);
  font-size: 14px;
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
  transition: background .2s, transform .1s;
}
.smc-btn-pdf:hover { background: var(--green-mid); }
.smc-btn-pdf:active { transform: scale(.97); }

/* ── 고지서 보드 ── */
.smc-board {
  position: relative;
  border: 3px solid var(--green-dark);
  border-radius: 14px;
  overflow: hidden;
  background: var(--white);
  box-shadow: var(--shadow);
}

/* 헤더 */
.smc-head {
  background: var(--green-dark);
  padding: 22px 28px 18px;
  text-align: center;
}
.smc-head-sub {
  color: rgba(255,255,255,.75);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: .3px;
  margin-bottom: 6px;
}
.smc-head-title {
  color: #fff;
  font-size: 38px;
  font-weight: 900;
  letter-spacing: -1px;
  line-height: 1;
}

/* 바디 레이아웃 */
.smc-body {
  display: flex;
  align-items: stretch;
  min-height: 300px;
}
.smc-col-left {
  flex: 0 0 50%;
  padding: 28px 24px 24px;
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.smc-divider {
  width: 1px;
  background: var(--border);
  flex-shrink: 0;
}
.smc-col-right {
  flex: 1 1 0;
  min-width: 0;
  padding: 28px 24px 24px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

/* 물질 기본정보 */
.smc-chem-box { }
.smc-name-kr {
  font-size: 36px;
  font-weight: 900;
  color: var(--red-alert);
  line-height: 1.15;
  letter-spacing: -1px;
  word-break: keep-all;
  margin-bottom: 6px;
}
.smc-name-en {
  font-size: 15px;
  color: var(--gray-6);
  font-weight: 500;
  margin-bottom: 10px;
}
.smc-cas-badge {
  display: inline-block;
  background: var(--green-dark);
  color: var(--white);
  font-size: 13px;
  font-weight: 700;
  padding: 4px 14px;
  border-radius: 20px;
  letter-spacing: .3px;
}
.smc-condition {
  margin-top: 10px;
  font-size: 13px;
  font-weight: 700;
  color: var(--red-alert);
  background: var(--red-pale);
  border-left: 3px solid var(--red-alert);
  padding: 6px 12px;
  border-radius: 0 6px 6px 0;
  display: none;
}
.smc-condition.show { display: block; }

/* GHS 픽토그램 섹션 */
.smc-picto-section { }
.smc-picto-label {
  font-size: 11.5px;
  font-weight: 700;
  color: var(--gray-6);
  text-transform: uppercase;
  letter-spacing: .8px;
  margin-bottom: 10px;
}
.smc-pictos {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: flex-start;
  min-height: 60px;
}
.smc-picto-empty {
  font-size: 13px;
  color: #bbb;
  font-style: italic;
  align-self: center;
}
.smc-picto-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
}
.smc-picto-item img {
  width: 70px;
  height: 70px;
  object-fit: contain;
  display: block;
}
.smc-picto-name {
  font-size: 10px;
  color: var(--gray-6);
  font-weight: 600;
  text-align: center;
  line-height: 1.2;
  max-width: 60px;
}

/* 유해성 분류 */
.smc-hazard-title {
  font-size: 15px;
  font-weight: 700;
  color: var(--gray-6);
  text-transform: uppercase;
  letter-spacing: .8px;
}
.smc-hazard-list {
  display: flex;
  flex-direction: column;
  gap: 0;
  border: 1.5px solid var(--border);
  border-radius: 10px;
  overflow: hidden;
}
.smc-hazard-row {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
  transition: background .15s;
}
.smc-hazard-row:last-child { border-bottom: none; }
.smc-hazard-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.smc-hazard-label {
  display: flex;
  align-items: center;
  gap: 9px;
  font-size: 14px;
  font-weight: 600;
  color: var(--gray-3);
}
.smc-hazard-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  font-size: 11px;
  font-weight: 900;
  color: var(--white);
  flex-shrink: 0;
}
.smc-icon-c { background: #c0392b; }
.smc-icon-m { background: #8e44ad; }
.smc-icon-r { background: #2471a3; }

.smc-hazard-val {
  font-size: 16px;
  font-weight: 800;
  color: #bbb;
}
.smc-hazard-val.yes {
  color: var(--red-alert);
}
.smc-hazard-val.no {
  color: #aaa;
}

/* CMR 해당 시 행 배경 */
.smc-hazard-row.row-c-yes { background: rgba(192,57,43,.07); }
.smc-hazard-row.row-m-yes { background: rgba(142,68,173,.07); }
.smc-hazard-row.row-r-yes { background: rgba(36,113,163,.07); }

.smc-hazard-sub {
  font-size: 11px;
  font-weight: 400;
  color: #999;
  margin-top: 2px;
  line-height: 1.4;
  word-break: keep-all;
}

.smc-notice-box {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  background: var(--green-pale);
  border: 1px solid #c3ddc8;
  border-radius: 8px;
  padding: 12px 14px;
  font-size: 12.5px;
  color: var(--green-dark);
  line-height: 1.6;
  word-break: keep-all;
  margin-top: auto;
}

/* 푸터 */
.smc-foot {
  background: var(--green-pale);
  border-top: 1.5px solid var(--border);
  padding: 10px 28px;
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  color: var(--green-dark);
  font-weight: 600;
}
.smc-foot-dot { color: var(--green-light); }

/* 워터마크 레이어 */
.smc-watermark {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: hidden;
  z-index: 10;
}
.smc-wm-text {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) rotate(-35deg);
  font-size: 52px;
  font-weight: 900;
  color: rgba(13,51,33,.13);
  white-space: nowrap;
  letter-spacing: -1px;
  font-family: var(--font);
  user-select: none;
}

/* ── 워터마크 설정 패널 ── */
.smc-wm-panel {
  margin-top: 14px;
  background: #f8faf9;
  border: 1.5px solid var(--border);
  border-radius: var(--radius);
  padding: 14px 18px;
}
.smc-wm-panel-title {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 13px;
  font-weight: 700;
  color: var(--green-dark);
  margin-bottom: 10px;
}
.smc-wm-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}
.smc-wm-input {
  height: 38px;
  border: 1.5px solid var(--border);
  border-radius: 8px;
  padding: 0 12px;
  font-size: 13px;
  font-family: var(--font);
  color: var(--gray-1);
  background: var(--white);
  outline: none;
  flex: 1;
  min-width: 120px;
}
.smc-wm-input:focus { border-color: var(--green-mid); }
.smc-wm-btn {
  height: 38px;
  padding: 0 16px;
  border: none;
  border-radius: 8px;
  background: var(--green-dark);
  color: var(--white);
  font-family: var(--font);
  font-size: 13px;
  font-weight: 700;
  cursor: pointer;
  transition: background .2s;
  white-space: nowrap;
}
.smc-wm-btn:hover { background: var(--green-mid); }
.smc-wm-btn-off {
  background: #e0e0e0;
  color: var(--gray-3);
}
.smc-wm-btn-off:hover { background: #d0d0d0; }
.smc-wm-status {
  font-size: 12.5px;
  color: var(--green-mid);
  font-weight: 600;
  margin-top: 6px;
}
.smc-wm-status.err { color: var(--red-alert); }

/* ── 반응형 ── */
@media (max-width: 680px) {
  .smc-body { flex-direction: column; }
  .smc-col-right { width: auto; border-top: 1px solid var(--border); }
  .smc-divider { display: none; }
  .smc-head-title { font-size: 28px; }
  .smc-name-kr { font-size: 36px; }
  .smc-select-wrap select { min-width: 200px; }
  .smc-search-input { width: 170px; }
}
</style>

<!-- ────────────────────────── JS ────────────────────────── -->
<script>
(function () {

  /* ── GHS 픽토그램 (PubChem NIH 공식 이미지) ── */
  const GHS_INFO = {
    GHS02: { url: 'https://pubchem.ncbi.nlm.nih.gov/images/ghs/GHS02.gif', label: '인화성' },
    GHS04: { url: 'https://pubchem.ncbi.nlm.nih.gov/images/ghs/GHS04.gif', label: '고압가스' },
    GHS05: { url: 'https://pubchem.ncbi.nlm.nih.gov/images/ghs/GHS05.gif', label: '부식성' },
    GHS06: { url: 'https://pubchem.ncbi.nlm.nih.gov/images/ghs/GHS06.gif', label: '급성독성' },
    GHS07: { url: 'https://pubchem.ncbi.nlm.nih.gov/images/ghs/GHS07.gif', label: '경고·유해성' },
    GHS08: { url: 'https://pubchem.ncbi.nlm.nih.gov/images/ghs/GHS08.gif', label: '건강유해성' },
    GHS09: { url: 'https://pubchem.ncbi.nlm.nih.gov/images/ghs/GHS09.gif', label: '환경유해성' }
  };

  /* ── 물질 데이터 ── */
  const CHEMICALS = [
    { id:'nitrotoluene_2',    nameKr:'2-니트로톨루엔',           nameEn:'2-Nitrotoluene',                cas:'88-72-2',     pictograms:['GHS07','GHS08','GHS09'], hazards:{c:true,  m:true,  r:true } },
    { id:'dinitrotoluene',    nameKr:'디니트로톨루엔',            nameEn:'Dinitrotoluene',                cas:'25321-14-6',  pictograms:['GHS06','GHS08','GHS09'], hazards:{c:true,  m:true,  r:true } },
    { id:'dma',               nameKr:'N,N-디메틸아세트아미드',    nameEn:'Dimethylacetamide',             cas:'127-19-5',    pictograms:['GHS07','GHS08'],         hazards:{c:true,  m:false, r:true } },
    { id:'dmf',               nameKr:'디메틸포름아미드',          nameEn:'Dimethylformamide',             cas:'68-12-2',     pictograms:['GHS02','GHS07','GHS08'], hazards:{c:true,  m:false, r:true } },
    { id:'dbp',               nameKr:'디부틸 프탈레이트',         nameEn:'Dibutyl phthalate',             cas:'84-74-2',     pictograms:['GHS08','GHS09'],         hazards:{c:false, m:false, r:true } },
    { id:'dichloroethane',    nameKr:'1,2-디클로로에탄',          nameEn:'1,2-Dichloroethane',            cas:'107-06-2',    pictograms:['GHS02','GHS07','GHS08'], hazards:{c:true,  m:false, r:false} },
    { id:'dichloropropane',   nameKr:'1,2-디클로로프로판',        nameEn:'1,2-Dichloropropane',           cas:'78-87-5',     pictograms:['GHS02','GHS06','GHS08'], hazards:{c:true,  m:false, r:false} },
    { id:'methoxyethanol',    nameKr:'2-메톡시에탄올',            nameEn:'2-Methoxyethanol',              cas:'109-86-4',    pictograms:['GHS02','GHS07','GHS08'], hazards:{c:false, m:false, r:true } },
    { id:'methoxyethyl_ac',   nameKr:'2-메톡시에틸 아세테이트',   nameEn:'2-Methoxyethyl acetate',        cas:'110-49-6',    pictograms:['GHS02','GHS07','GHS08'], hazards:{c:false, m:false, r:true } },
    { id:'benzene',           nameKr:'벤젠',                      nameEn:'Benzene',                       cas:'71-43-2',     pictograms:['GHS02','GHS07','GHS08','GHS09'], hazards:{c:true, m:true, r:false} },
    { id:'benzo_a_pyrene',    nameKr:'벤조(a)피렌',               nameEn:'Benzo(a)pyrene',                cas:'50-32-8',     pictograms:['GHS06','GHS08','GHS09'], hazards:{c:true,  m:true,  r:true } },
    { id:'butadiene',         nameKr:'1,3-부타디엔',              nameEn:'1,3-Butadiene',                 cas:'106-99-0',    pictograms:['GHS02','GHS04','GHS07','GHS08'], hazards:{c:true, m:true, r:false} },
    { id:'bromopropane_1',    nameKr:'1-브로모프로판',            nameEn:'1-Bromopropane',                cas:'106-94-5',    pictograms:['GHS02','GHS07','GHS08'], hazards:{c:true,  m:false, r:true } },
    { id:'bromopropane_2',    nameKr:'2-브로모프로판',            nameEn:'2-Bromopropane',                cas:'75-26-3',     pictograms:['GHS02','GHS08'],         hazards:{c:false, m:false, r:true } },
    { id:'carbon_tet',        nameKr:'사염화탄소',                nameEn:'Carbon tetrachloride',          cas:'56-23-5',     pictograms:['GHS06','GHS08','GHS09'], hazards:{c:true,  m:false, r:true } },
    { id:'stoddard',          nameKr:'스토다드 솔벤트',           nameEn:'Stoddard solvent',              cas:'8052-41-3',   pictograms:[],         condition:'벤젠 0.1% 이상 함유 시 적용', hazards:{c:false, m:false, r:false} },
    { id:'acrylonitrile',     nameKr:'아크릴로니트릴',            nameEn:'Acrylonitrile',                 cas:'107-13-1',    pictograms:['GHS02','GHS05','GHS06','GHS08','GHS09'], hazards:{c:true, m:false, r:false} },
    { id:'acrylamide',        nameKr:'아크릴아미드',              nameEn:'Acrylamide',                    cas:'79-06-1',     pictograms:['GHS06','GHS08'],         hazards:{c:true,  m:true,  r:true } },
    { id:'ethoxyethanol',     nameKr:'2-에톡시에탄올',            nameEn:'2-Ethoxyethanol',               cas:'110-80-5',    pictograms:['GHS02','GHS07','GHS08'], hazards:{c:false, m:false, r:true } },
    { id:'ethoxyethyl_ac',    nameKr:'2-에톡시에틸 아세테이트',   nameEn:'2-Ethoxyethyl acetate',         cas:'111-15-9',    pictograms:['GHS02','GHS07','GHS08'], hazards:{c:false, m:false, r:true } },
    { id:'ethyleneimine',     nameKr:'에틸렌이민',                nameEn:'Ethyleneimine',                 cas:'151-56-4',    pictograms:['GHS02','GHS05','GHS06','GHS08','GHS09'], hazards:{c:true, m:true, r:true} },
    { id:'glycidol',          nameKr:'2,3-에폭시-1-프로판올',     nameEn:'Glycidol',                      cas:'556-52-5',    pictograms:['GHS06','GHS08'],         hazards:{c:true,  m:true,  r:true } },
    { id:'propylene_oxide',   nameKr:'1,2-에폭시프로판',          nameEn:'Propylene oxide',               cas:'75-56-9',     pictograms:['GHS02','GHS06','GHS08'], hazards:{c:true,  m:true,  r:false} },
    { id:'epichlorohydrin',   nameKr:'에피클로로히드린',          nameEn:'Epichlorohydrin',               cas:'106-89-8',    pictograms:['GHS02','GHS05','GHS06','GHS08'], hazards:{c:true, m:true, r:false} },
    { id:'warfarin',          nameKr:'와파린',                    nameEn:'Warfarin',                      cas:'81-81-2',     pictograms:['GHS06','GHS08'],         hazards:{c:false, m:false, r:true } },
    { id:'trichloroethylene', nameKr:'트리클로로에틸렌',          nameEn:'Trichloroethylene',             cas:'79-01-6',     pictograms:['GHS07','GHS08'],         hazards:{c:true,  m:true,  r:true } },
    { id:'trichloropropane',  nameKr:'1,2,3-트리클로로프로판',    nameEn:'1,2,3-Trichloropropane',        cas:'96-18-4',     pictograms:['GHS07','GHS08'],         hazards:{c:true,  m:true,  r:true } },
    { id:'perchloroethylene', nameKr:'퍼클로로에틸렌',            nameEn:'Perchloroethylene',             cas:'127-18-4',    pictograms:['GHS07','GHS08','GHS09'], hazards:{c:true,  m:false, r:false} },
    { id:'phenol',            nameKr:'페놀',                      nameEn:'Phenol',                        cas:'108-95-2',    pictograms:['GHS05','GHS06','GHS08','GHS09'], hazards:{c:true, m:false, r:true} },
    { id:'formamide',         nameKr:'포름아미드',                nameEn:'Formamide',                     cas:'75-12-7',     pictograms:['GHS08'],                 hazards:{c:false, m:false, r:true } },
    { id:'formaldehyde',      nameKr:'포름알데히드',              nameEn:'Formaldehyde',                  cas:'50-00-0',     pictograms:['GHS02','GHS04','GHS05','GHS06','GHS08'], hazards:{c:true, m:true, r:false} },
    { id:'propylene_imine',   nameKr:'프로필렌이민',              nameEn:'Propyleneimine',                cas:'75-55-8',     pictograms:['GHS02','GHS05','GHS06','GHS08','GHS09'], hazards:{c:true, m:false, r:false} },
    { id:'dimethyl_sulfate',  nameKr:'황산 디메틸',               nameEn:'Dimethyl sulfate',              cas:'77-78-1',     pictograms:['GHS05','GHS06','GHS08'], hazards:{c:true,  m:true,  r:false} },
    { id:'hydrazine',         nameKr:'히드라진',                  nameEn:'Hydrazine',                     cas:'302-01-2',    pictograms:['GHS02','GHS05','GHS06','GHS08','GHS09'], hazards:{c:true, m:true, r:true} },
    { id:'lead',              nameKr:'납',                        nameEn:'Lead',                          cas:'7439-92-1',   pictograms:['GHS08','GHS09'],         hazards:{c:true,  m:false, r:true } },
    { id:'nickel',            nameKr:'니켈',                      nameEn:'Nickel',                        cas:'7440-02-0',   pictograms:['GHS07','GHS08','GHS09'], hazards:{c:true,  m:false, r:false} },
    { id:'mercury',           nameKr:'수은',                      nameEn:'Mercury',                       cas:'7439-97-6',   pictograms:['GHS06','GHS08','GHS09'], hazards:{c:false, m:false, r:true } },
    { id:'cadmium',           nameKr:'카드뮴',                    nameEn:'Cadmium',                       cas:'7440-43-9',   pictograms:['GHS06','GHS08','GHS09'], hazards:{c:true,  m:true,  r:true } },
    { id:'chromium',          nameKr:'크롬',                      nameEn:'Chromium',                      cas:'7440-47-3',   condition:'6가크롬 화합물에 한함', pictograms:['GHS07','GHS08','GHS09'], hazards:{c:true,  m:false, r:false} },
    { id:'borate_anhy',       nameKr:'사붕소산나트륨(무수물)',    nameEn:'Sodium tetraborate',            cas:'1330-43-4',   pictograms:['GHS07','GHS08'],         hazards:{c:false, m:false, r:true } },
    { id:'borate_penta',      nameKr:'사붕소산나트륨(오수화물)', nameEn:'Sodium tetraborate pentahydrate',cas:'12179-04-3',  pictograms:['GHS07','GHS08'],         hazards:{c:false, m:false, r:true } },
    { id:'sulfuric_acid',     nameKr:'황산',                      nameEn:'Sulfuric acid',                 cas:'7664-93-9',   condition:'pH 2.0 이하인 강산에 한함', pictograms:['GHS05','GHS06','GHS08'], hazards:{c:true, m:false, r:false} },
    { id:'ethylene_oxide',    nameKr:'산화에틸렌',                nameEn:'Ethylene oxide',                cas:'75-21-8',     pictograms:['GHS02','GHS04','GHS05','GHS06','GHS08'], hazards:{c:true, m:true, r:true} }
  ];

  /* ── DOM 참조 ── */
  var sel       = document.getElementById('smcSelect');
  var searchIn  = document.getElementById('smcSearch');
  var searchCl  = document.getElementById('smcSearchClear');
  var searchRes = document.getElementById('smcSearchResult');
  var nameKrEl  = document.getElementById('smcNameKr');
  var nameEnEl  = document.getElementById('smcNameEn');
  var casEl     = document.getElementById('smcCas');
  var condEl    = document.getElementById('smcCondition');
  var picEl     = document.getElementById('smcPictos');
  var carEl     = document.getElementById('smcCarcinogenic');
  var mutEl     = document.getElementById('smcMutagenic');
  var repEl     = document.getElementById('smcReproductive');
  var pdfBtn    = document.getElementById('smcPdfBtn');
  var wmLockBtn = document.getElementById('smcWmLockBtn');
  var wmUnlock  = document.getElementById('smcWmUnlockBtn');
  var wmTextIn  = document.getElementById('smcWmText');
  var wmPwdIn   = document.getElementById('smcWmPwd');
  var wmStatus  = document.getElementById('smcWmStatus');
  var wmLayer   = document.getElementById('smcWatermark');
  var wmTxt     = document.querySelector('.smc-wm-text');

  var lockedPwd = 'ossc02854';
var currentItem = null;

  /* ── 셀렉트 초기화 ── */
  sel.innerHTML = '<option value="">물질을 선택하세요</option>';
  CHEMICALS.forEach(function(item) {
    var opt = document.createElement('option');
    opt.value = item.id;
    opt.textContent = item.nameKr + ' (' + item.cas + ')';
    sel.appendChild(opt);
  });
  wmTxt.textContent = '산업안전지원센터㈜';
wmLayer.style.display = '';
wmLockBtn.style.display = 'none';
wmUnlock.style.display = '';

  /* ── 렌더 함수 ── */
  function hazardVal(el, v) {
    if (v === null || v === undefined) {
      el.textContent = '—';
      el.className = 'smc-hazard-val';
    } else if (v) {
      el.innerHTML = '● 해당';
      el.className = 'smc-hazard-val yes';
    } else {
      el.innerHTML = '○ 비해당';
      el.className = 'smc-hazard-val no';
    }
  }

  function setRowBg(rowId, type, v) {
    var row = document.getElementById(rowId);
    if (!row) return;
    var parent = row.closest('.smc-hazard-row');
    if (!parent) return;
    parent.classList.remove('row-c-yes', 'row-m-yes', 'row-r-yes');
    if (v) parent.classList.add('row-' + type + '-yes');
  }

  function renderPictos(list) {
    if (!list || !list.length) {
      picEl.innerHTML = '<div class="smc-picto-empty">해당 물질에 대한 그림문자 정보 없음</div>';
      return;
    }
    picEl.innerHTML = list.map(function(code) {
      var info = GHS_INFO[code];
      if (!info) return '';
      return '<div class="smc-picto-item">' +
        '<img decoding="async" src="' + info.url + '" alt="' + code + ' ' + info.label + '" title="' + code + ' ' + info.label + '" onerror="this.style.display=\'none\'">' +
        '<div class="smc-picto-name">' + code + '<br>' + info.label + '</div>' +
        '</div>';
    }).join('');
  }

  function render(item) {
    currentItem = item || null;
    if (!item) {
      nameKrEl.textContent = '물질을 선택하세요';
      nameEnEl.textContent = 'Select a substance';
      casEl.textContent = 'CAS No. —';
      condEl.textContent = '';
      condEl.classList.remove('show');
      picEl.innerHTML = '<div class="smc-picto-empty">물질 선택 후 표시됩니다</div>';
      hazardVal(carEl, null);
      hazardVal(mutEl, null);
      hazardVal(repEl, null);
      setRowBg('smcCarcinogenic', 'c', false);
      setRowBg('smcMutagenic',    'm', false);
      setRowBg('smcReproductive', 'r', false);
      return;
    }
    nameKrEl.textContent = item.nameKr;
    nameEnEl.textContent = item.nameEn || '';
    casEl.textContent = 'CAS No. ' + item.cas;
    if (item.condition) {
      condEl.textContent = '※ 적용조건 : ' + item.condition;
      condEl.classList.add('show');
    } else {
      condEl.textContent = '';
      condEl.classList.remove('show');
    }
    renderPictos(item.pictograms);
    hazardVal(carEl, item.hazards.c);
    hazardVal(mutEl,  item.hazards.m);
    hazardVal(repEl,  item.hazards.r);
    setRowBg('smcCarcinogenic', 'c', item.hazards.c);
    setRowBg('smcMutagenic',    'm', item.hazards.m);
    setRowBg('smcReproductive', 'r', item.hazards.r);
  }

  render(null);

  /* ── 셀렉트 이벤트 ── */
  sel.addEventListener('change', function() {
    var found = CHEMICALS.find(function(x) { return x.id === sel.value; });
    render(found || null);
  });

  /* ── 검색 기능 ── */
  function highlight(str, q) {
    if (!q) return str;
    return str.replace(new RegExp('(' + q.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + ')', 'gi'), '<mark>$1</mark>');
  }

  searchIn.addEventListener('input', function() {
    var q = searchIn.value.trim();
    searchCl.style.display = q ? '' : 'none';
    if (!q) { searchRes.style.display = 'none'; return; }
    var results = CHEMICALS.filter(function(x) {
      return x.nameKr.indexOf(q) !== -1 ||
             (x.nameEn && x.nameEn.toLowerCase().indexOf(q.toLowerCase()) !== -1) ||
             x.cas.indexOf(q) !== -1;
    });
    if (!results.length) {
      searchRes.innerHTML = '<div class="smc-search-item" style="color:#999;cursor:default">검색 결과 없음</div>';
    } else {
      searchRes.innerHTML = results.map(function(x) {
        return '<div class="smc-search-item" data-id="' + x.id + '">' +
          '<div class="smc-si-kr">' + highlight(x.nameKr, q) + '</div>' +
          '<div class="smc-si-cas">CAS ' + highlight(x.cas, q) + ' · ' + x.nameEn + '</div>' +
          '</div>';
      }).join('');
    }
    searchRes.style.display = '';
  });

  searchRes.addEventListener('click', function(e) {
    var item = e.target.closest('.smc-search-item[data-id]');
    if (!item) return;
    var id = item.getAttribute('data-id');
    var found = CHEMICALS.find(function(x) { return x.id === id; });
    if (found) {
      render(found);
      sel.value = id;
    }
    searchIn.value = '';
    searchCl.style.display = 'none';
    searchRes.style.display = 'none';
  });

  searchCl.addEventListener('click', function() {
    searchIn.value = '';
    searchCl.style.display = 'none';
    searchRes.style.display = 'none';
  });

  document.addEventListener('click', function(e) {
    if (!searchRes.contains(e.target) && e.target !== searchIn) {
      searchRes.style.display = 'none';
    }
  });

  /* ── 워터마크 설정 ── */
  wmLockBtn.addEventListener('click', function() {
    var pwd = wmPwdIn.value.trim();
    if (!pwd) { setWmStatus('비밀번호를 입력하세요.', true); return; }
    var txt = wmTextIn.value.trim() || '산업안전지원센터㈜';
    lockedPwd = pwd;
    wmTxt.textContent = txt;
    wmLayer.style.display = '';
    wmLockBtn.style.display = 'none';
    wmUnlock.style.display = '';
    wmPwdIn.value = '';
    setWmStatus('워터마크가 적용되었습니다. PDF 저장 시 포함됩니다.');
  });

  wmUnlock.addEventListener('click', function() {
    var entered = prompt('워터마크 잠금 해제 비밀번호를 입력하세요:');
    if (entered === lockedPwd) {
      lockedPwd = null;
      wmLayer.style.display = 'none';
      wmLockBtn.style.display = '';
      wmUnlock.style.display = 'none';
      setWmStatus('워터마크가 해제되었습니다.');
    } else {
      setWmStatus('비밀번호가 일치하지 않습니다.', true);
    }
  });

  function setWmStatus(msg, isErr) {
    wmStatus.textContent = msg;
    wmStatus.className = 'smc-wm-status' + (isErr ? ' err' : '');
    setTimeout(function() { wmStatus.textContent = ''; }, 3000);
  }

  /* ── PDF 저장 ── */
  pdfBtn.addEventListener('click', function() {
    if (!currentItem) {
      alert('물질을 먼저 선택해주세요.');
      return;
    }

    /* html2canvas + jsPDF 동적 로드 */
    function loadScript(src, cb) {
      if (document.querySelector('script[src="' + src + '"]')) { cb(); return; }
      var s = document.createElement('script');
      s.src = src;
      s.onload = cb;
      document.head.appendChild(s);
    }

    pdfBtn.textContent = '생성 중...';
    pdfBtn.disabled = true;

    loadScript('https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js', function() {
      loadScript('https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js', function() {
        var board = document.getElementById('smcBoard');
        html2canvas(board, {
          scale: 2,
          useCORS: true,
          allowTaint: false,
          backgroundColor: '#ffffff',
          logging: false
        }).then(function(canvas) {
          var imgData = canvas.toDataURL('image/png');
          var jsPDF = window.jspdf ? window.jspdf.jsPDF : window.jsPDF;
          var pdf = new jsPDF({ orientation: 'portrait', unit: 'mm', format: 'a4' });
          var W = 210, margin = 15;
          var imgW = W - margin * 2;
          var imgH = (canvas.height * imgW) / canvas.width;
          if (imgH > 267 - margin * 2) {
            imgH = 267 - margin * 2;
          }
          pdf.addImage(imgData, 'PNG', margin, margin, imgW, imgH);
          var fname = '특별관리물질_고지_' + currentItem.nameKr + '.pdf';
          pdf.save(fname);
          pdfBtn.innerHTML = '<svg viewBox="0 0 20 20" fill="none" width="16" height="16"><path d="M4 16h12M10 4v9m0 0l-3-3m3 3l3-3" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg> PDF 저장';
          pdfBtn.disabled = false;
        }).catch(function() {
          alert('PDF 생성 중 오류가 발생했습니다. 잠시 후 다시 시도해주세요.');
          pdfBtn.innerHTML = '<svg viewBox="0 0 20 20" fill="none" width="16" height="16"><path d="M4 16h12M10 4v9m0 0l-3-3m3 3l3-3" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"/></svg> PDF 저장';
          pdfBtn.disabled = false;
        });
      });
    });
  });

})();
</script>				</div>
				</div>
				</div>
		]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
