<?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>PSM 제출대상 &#8211; 산업안전지원센터 주식회사</title>
	<atom:link href="https://safetysupport.co.kr/tag/psm-%ec%a0%9c%ec%b6%9c%eb%8c%80%ec%83%81/feed/" rel="self" type="application/rss+xml" />
	<link>https://safetysupport.co.kr</link>
	<description>안전관리위탁부터 위험성평가, 중대재해예방까지 — 사업장 맞춤 안전보건 컨설팅</description>
	<lastBuildDate>Sat, 16 May 2026 10:36:17 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://safetysupport.co.kr/wp-content/uploads/2026/03/cropped-파비콘1-32x32.png</url>
	<title>PSM 제출대상 &#8211; 산업안전지원센터 주식회사</title>
	<link>https://safetysupport.co.kr</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>공정안전보고서 작성·제출대상 조회</title>
		<link>https://safetysupport.co.kr/psm-report-submission-target-check/</link>
		
		<dc:creator><![CDATA[mangjil]]></dc:creator>
		<pubDate>Mon, 11 May 2026 05:00:22 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[PSM]]></category>
		<category><![CDATA[PSM 대상]]></category>
		<category><![CDATA[PSM 제출대상]]></category>
		<category><![CDATA[공정안전보고서]]></category>
		<category><![CDATA[공정안전보고서 대상]]></category>
		<category><![CDATA[공정안전보고서 제출대상]]></category>
		<category><![CDATA[산업안전보건]]></category>
		<category><![CDATA[산업안전보건법 시행령 제43조]]></category>
		<category><![CDATA[산업안전보건법 제44조]]></category>
		<category><![CDATA[안전보건자료]]></category>
		<category><![CDATA[영 별표 13]]></category>
		<category><![CDATA[유해위험물질]]></category>
		<category><![CDATA[유해위험물질 규정량]]></category>
		<category><![CDATA[중대산업사고]]></category>
		<guid isPermaLink="false">https://safetysupport.co.kr/?p=3773</guid>

					<description><![CDATA[광고 공정안전보고서 작성·제출대상 조회 산업안전보건법 공정안전보고서 대상 조회 공정안전보고서 작성·제출대상 조회 사업장의 업종, 적용제외 설비 여부, 유해·위험물질의 규정량 해당 여부를 기준으로 공정안전보고서 작성·제출 대상 여부를 확인할 수 있도록 구성한 조회 화면입니다. 대상 판단 기준 공정안전보고서 작성·제출 대상은 지정 업종에 해당하는 경우와, 지정 업종 외 사업장에서 유해·위험물질을 규정량 이상 제조·취급·저장하는 경우로 구분하여 판단합니다. 1 지정 업종 [&#8230;]]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3773" class="elementor elementor-3773" data-elementor-post-type="post">
				<div class="elementor-element elementor-element-43cba31 e-flex e-con-boxed e-con e-parent" data-id="43cba31" data-element_type="container" data-e-type="container">
					<div class="e-con-inner">
				<div class="elementor-element elementor-element-be649cf elementor-widget elementor-widget-html" data-id="be649cf" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<style>
.smart-top-banner {
  max-width: 1140px;
  margin: 24px auto 16px;
  font-family: 'NanumSquareNeo', 'Noto Sans KR', sans-serif;
}
.smart-top-banner__header {
  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;
}
.smart-top-banner__header::before {
  content: 'AD';
  display: inline-block;
  padding: 1px 5px;
  border-radius: 3px;
  background: #0D4444;
  color: #fff;
  font-size: 9px;
  font-weight: 800;
}
.smart-top-banner__inner {
  width: 100%;
  min-height: 90px;
  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;
    min-height: 50px;
  }
  .smart-top-banner__inner {
    min-height: 50px;
  }
}
</style>

<div class="smart-top-banner" aria-label="광고 영역">
  <div class="smart-top-banner__header">광고</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-8b29274 elementor-widget elementor-widget-html" data-id="8b29274" 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://cdn.jsdelivr.net/gh/webfontworld/NanumSquareNeo/NanumSquareNeo.css');

    :root {
      --blue-900: #14306b;
      --blue-800: #1d4fa8;
      --blue-700: #2563eb;
      --blue-600: #3b82f6;
      --blue-100: #dbeafe;
      --blue-50: #eff6ff;

      --gray-950: #111827;
      --gray-900: #1f2937;
      --gray-800: #334155;
      --gray-700: #475569;
      --gray-600: #64748b;
      --gray-500: #94a3b8;

      --green-700: #047857;
      --green-50: #ecfdf5;
      --red-700: #b91c1c;
      --red-50: #fef2f2;
      --orange-700: #c2410c;
      --orange-50: #fff7ed;
      --purple-700: #5b21b6;
      --purple-50: #f5f3ff;

      --bg: #f7faff;
      --card: #ffffff;
      --line: #dbe7f8;
      --line-strong: #bfd5f6;

      --shadow-sm: 0 10px 22px rgba(15, 23, 42, 0.05);
      --shadow-md: 0 18px 40px rgba(15, 23, 42, 0.08);
      --shadow-lg: 0 24px 55px rgba(37, 99, 235, 0.14);
    }

    * {
      box-sizing: border-box;
    }

    body {
      margin: 0;
      background:
        radial-gradient(circle at top right, rgba(59,130,246,0.08), transparent 28%),
        linear-gradient(180deg, #f8fbff 0%, #f5f8ff 100%);
      color: var(--gray-900);
      font-family: "NanumSquareNeo", "NanumSquare", "Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", sans-serif;
      font-size: 16px;
      font-weight: 400;
      line-height: 1.7;
      letter-spacing: -0.02em;
    }

    .psm-wrap {
      max-width: 1220px;
      margin: 0 auto;
      padding: 34px 18px 64px;
    }

    .psm-hero {
      position: relative;
      overflow: hidden;
      border-radius: 34px;
      padding: 48px 44px;
      color: #ffffff;
      background:
        radial-gradient(circle at 10% 18%, rgba(255,255,255,0.24) 0, transparent 24%),
        radial-gradient(circle at 88% 16%, rgba(147,197,253,0.22) 0, transparent 28%),
        linear-gradient(135deg, #122b61 0%, #2352b5 56%, #4ea1ff 100%);
      box-shadow: var(--shadow-lg);
    }

    .psm-hero::before {
      content: "";
      position: absolute;
      inset: 0;
      background-image:
        linear-gradient(rgba(255,255,255,0.1) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,0.1) 1px, transparent 1px);
      background-size: 28px 28px;
      opacity: 0.36;
      pointer-events: none;
    }

    .psm-hero::after {
      content: "";
      position: absolute;
      top: -120px;
      right: -90px;
      width: 340px;
      height: 340px;
      border: 36px solid rgba(255,255,255,0.12);
      border-radius: 50%;
      box-shadow:
        -160px 140px 0 -108px rgba(255,255,255,0.12),
        -240px 48px 0 -126px rgba(255,255,255,0.1);
      pointer-events: none;
    }

    .psm-hero-inner {
      position: relative;
      z-index: 1;
      max-width: 920px;
    }

    .psm-kicker {
      display: inline-flex;
      align-items: center;
      min-height: 38px;
      padding: 8px 14px;
      border-radius: 999px;
      background: rgba(255,255,255,0.14);
      border: 1px solid rgba(255,255,255,0.24);
      backdrop-filter: blur(6px);
      font-size: 13px;
      font-weight: 700;
    }

    .psm-title {
      margin: 18px 0 0;
      font-size: clamp(31px, 4.1vw, 44px);
      line-height: 1.24;
      font-weight: 800;
      letter-spacing: -0.045em;
    }

    .psm-desc {
      margin: 16px 0 0;
      max-width: 860px;
      font-size: 17px;
      font-weight: 400;
      line-height: 1.85;
      color: rgba(255,255,255,0.92);
    }

        .psm-law-badge {
      display: inline-flex;
      align-items: center;
      min-height: 34px;
      padding: 7px 13px;
      border-radius: 999px;
      border: 1px solid rgba(255,255,255,0.24);
      background: rgba(255,255,255,0.12);
      font-size: 13px;
      font-weight: 600;
      color: #ffffff;
      white-space: nowrap;
    }

    .psm-section {
      margin-top: 26px;
      border: 1px solid var(--line);
      border-radius: 28px;
      background: var(--card);
      box-shadow: var(--shadow-md);
      overflow: hidden;
    }

    .psm-section-head {
      padding: 28px 32px;
      background:
        linear-gradient(135deg, rgba(239,246,255,0.9), rgba(255,255,255,1)),
        radial-gradient(circle at 95% 6%, rgba(37,99,235,0.08), transparent 26%);
      border-bottom: 1px solid #e8f0fc;
    }

    .psm-section-title {
      margin: 0;
      font-size: 25px;
      font-weight: 800;
      line-height: 1.4;
      letter-spacing: -0.035em;
      color: var(--gray-950);
    }

    .psm-section-sub {
      margin: 8px 0 0;
      font-size: 16px;
      font-weight: 400;
      color: var(--gray-700);
      line-height: 1.75;
    }

    .psm-section-body {
      padding: 30px 32px 32px;
    }

    .psm-grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 16px;
    }

    .psm-info-card {
      min-height: 180px;
      padding: 24px;
      border: 1px solid #e4edf9;
      border-radius: 22px;
      background: linear-gradient(180deg, #ffffff 0%, #f9fbff 100%);
      box-shadow: 0 10px 24px rgba(15, 23, 42, 0.04);
      transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
    }

    .psm-info-card:hover {
      transform: translateY(-3px);
      border-color: var(--line-strong);
      box-shadow: 0 18px 30px rgba(37, 99, 235, 0.07);
    }

    .psm-info-no {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 38px;
      height: 38px;
      margin-bottom: 14px;
      border-radius: 12px;
      background: var(--blue-50);
      color: var(--blue-800);
      font-size: 15px;
      font-weight: 700;
    }

    .psm-info-title {
      margin: 0;
      font-size: 18px;
      font-weight: 700;
      line-height: 1.5;
      color: var(--gray-950);
    }

    .psm-info-text {
      margin: 9px 0 0;
      font-size: 15px;
      font-weight: 400;
      line-height: 1.75;
      color: var(--gray-700);
    }

    .psm-checker {
      display: grid;
      grid-template-columns: 1fr;
      gap: 24px;
      align-items: start;
    }

    .psm-form {
      padding: 28px;
      border: 1px solid #e5eefb;
      border-radius: 24px;
      background: #ffffff;
      box-shadow: 0 10px 26px rgba(15, 23, 42, 0.04);
    }

    .psm-field {
      padding: 24px 0;
      border-bottom: 1px dashed #d7e6fb;
    }

    .psm-field:first-child {
      padding-top: 0;
    }

    .psm-field:last-child {
      border-bottom: 0;
      padding-bottom: 0;
    }

    .psm-label {
      display: block;
      margin-bottom: 10px;
      font-size: 17px;
      font-weight: 800;
      line-height: 1.55;
      color: var(--gray-950);
    }

    .psm-help {
      margin: -2px 0 12px;
      font-size: 15px;
      font-weight: 400;
      line-height: 1.75;
      color: var(--gray-600);
    }

    .psm-select,
    .psm-input {
      width: 100%;
      min-height: 54px;
      padding: 0 16px;
      border: 1px solid #c7daf7;
      border-radius: 16px;
      background: #ffffff;
      color: var(--gray-950);
      font-family: inherit;
      font-size: 16px;
      font-weight: 500;
      outline: none;
      transition: border-color 0.18s ease, box-shadow 0.18s ease;
    }

    .psm-select:hover,
    .psm-input:hover {
      border-color: #a9c7f2;
    }

    .psm-select:focus,
    .psm-input:focus {
      border-color: var(--blue-700);
      box-shadow: 0 0 0 4px rgba(37, 99, 235, 0.12);
    }

    .psm-radio-group {
      display: grid;
      gap: 10px;
    }

    .psm-option {
      display: flex;
      align-items: flex-start;
      gap: 10px;
      padding: 14px 15px;
      border: 1px solid #e5eefb;
      border-radius: 16px;
      background: #ffffff;
      cursor: pointer;
      transition: border-color 0.18s ease, background-color 0.18s ease, transform 0.18s ease;
    }

    .psm-option:hover {
      background: #f8fbff;
      border-color: #c6dbfa;
      transform: translateY(-1px);
    }

    .psm-option input {
      margin-top: 3px;
      accent-color: var(--blue-700);
    }

    .psm-option span {
      font-size: 15px;
      font-weight: 400;
      line-height: 1.7;
      color: var(--gray-800);
    }

    .psm-chemical-box {
      padding: 22px;
      border: 1px solid #d6e5fb;
      border-radius: 22px;
      background:
        linear-gradient(135deg, rgba(242,247,255,0.95), rgba(255,255,255,0.98)),
        radial-gradient(circle at 95% 4%, rgba(59,130,246,0.08), transparent 28%);
      box-shadow: inset 0 1px 0 rgba(255,255,255,0.75);
    }

    .psm-chemical-grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 14px;
    }

    .psm-small-label {
      display: block;
      margin: 0 0 9px;
      font-size: 15px;
      font-weight: 700;
      color: var(--gray-950);
    }

    .psm-help-tip {
      position: relative;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 22px;
      height: 22px;
      margin-left: 6px;
      border-radius: 999px;
      border: 1px solid #bdd4f8;
      background: #eff6ff;
      color: #1d4ed8;
      font-size: 12px;
      font-weight: 700;
      cursor: help;
      transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease;
    }

    .psm-help-tip:hover,
    .psm-help-tip:focus {
      background: var(--blue-700);
      border-color: var(--blue-700);
      color: #ffffff;
      transform: translateY(-1px);
      box-shadow: 0 10px 18px rgba(37, 99, 235, 0.22);
    }

    .psm-help-tip::after {
      content: attr(data-tip);
      position: absolute;
      left: 50%;
      bottom: calc(100% + 12px);
      transform: translateX(-50%);
      width: 360px;
      max-width: calc(100vw - 40px);
      padding: 14px 16px;
      border-radius: 16px;
      background: #0f172a;
      color: #ffffff;
      font-size: 13px;
      font-weight: 400;
      line-height: 1.75;
      white-space: normal;
      box-shadow: 0 16px 28px rgba(15, 23, 42, 0.28);
      opacity: 0;
      pointer-events: none;
      z-index: 25;
    }

    .psm-help-tip::before {
      content: "";
      position: absolute;
      left: 50%;
      bottom: calc(100% + 4px);
      transform: translateX(-50%);
      border-width: 8px 8px 0 8px;
      border-style: solid;
      border-color: #0f172a transparent transparent transparent;
      opacity: 0;
      z-index: 26;
    }

    .psm-help-tip:hover::after,
    .psm-help-tip:hover::before,
    .psm-help-tip:focus::after,
    .psm-help-tip:focus::before {
      opacity: 1;
    }

    .psm-chemical-list {
      display: none;
      max-height: 260px;
      margin-top: 8px;
      overflow-y: auto;
      border: 1px solid #cfe0fa;
      border-radius: 16px;
      background: #ffffff;
      box-shadow: 0 16px 28px rgba(37, 99, 235, 0.09);
    }

    .psm-chemical-list.is-open {
      display: block;
    }

    .psm-chemical-item {
      width: 100%;
      padding: 13px 14px;
      border: 0;
      border-bottom: 1px solid #eef4fd;
      background: #ffffff;
      color: var(--gray-950);
      text-align: left;
      font-family: inherit;
      font-size: 15px;
      font-weight: 600;
      cursor: pointer;
      transition: background-color 0.16s ease;
    }

    .psm-chemical-item:hover {
      background: #eff6ff;
    }

    .psm-chemical-item:last-child {
      border-bottom: 0;
    }

    .psm-chemical-item small {
      display: block;
      margin-top: 4px;
      font-size: 12px;
      font-weight: 400;
      line-height: 1.55;
      color: var(--gray-600);
    }

    .psm-selected-panel {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 14px;
      margin: 16px 0 18px;
    }

    .psm-selected-panel > div {
      min-height: 84px;
      padding: 16px 18px;
      border: 1px solid #dbe7f8;
      border-radius: 18px;
      background: rgba(255,255,255,0.95);
      box-shadow: 0 8px 18px rgba(15, 23, 42, 0.04);
    }

    .psm-selected-label {
      display: flex;
      align-items: center;
      gap: 6px;
      margin-bottom: 8px;
      font-size: 13px;
      font-weight: 600;
      color: var(--gray-600);
    }

    .psm-selected-panel strong {
      font-size: 18px;
      font-weight: 800;
      line-height: 1.5;
      letter-spacing: -0.03em;
      color: var(--blue-900);
    }

    .psm-quantity-grid {
      display: grid;
      grid-template-columns: 1fr 0.72fr;
      gap: 16px;
      align-items: end;
    }

    .psm-quantity-row {
      display: grid;
      grid-template-columns: 1fr 60px;
      gap: 8px;
    }

    .psm-unit {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-height: 54px;
      border-radius: 16px;
      border: 1px solid #c7daf7;
      background: #ffffff;
      color: var(--blue-800);
      font-size: 16px;
      font-weight: 700;
    }

    .psm-action-row {
      display: flex;
      flex-direction: column;
      align-items: center;
      gap: 10px;
      margin-top: 20px;
      padding-top: 4px;
    }

    .psm-btn {
      border: 0;
      cursor: pointer;
      font-family: inherit;
      transition: transform 0.18s ease, box-shadow 0.18s ease, opacity 0.18s ease;
    }

    .psm-judge-btn {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 8px;
      width: auto;
      min-width: 196px;
      max-width: 240px;
      min-height: 46px;
      padding: 0 22px;
      border-radius: 999px;
      background: linear-gradient(135deg, #1d4ed8, #2563eb);
      color: #ffffff;
      font-size: 15px;
      font-weight: 700;
      box-shadow: 0 12px 24px rgba(37, 99, 235, 0.22);
    }

    .psm-judge-btn:hover {
      transform: translateY(-2px);
      box-shadow: 0 16px 28px rgba(37, 99, 235, 0.28);
    }

    .psm-judge-btn:disabled {
      background: #9fc0f5;
      box-shadow: none;
      transform: none;
      cursor: not-allowed;
    }

    .psm-btn-plus {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 20px;
      height: 20px;
      border-radius: 999px;
      background: rgba(255,255,255,0.2);
      font-size: 15px;
      font-weight: 800;
      line-height: 1;
    }

    .psm-action-help {
      margin: 0;
      max-width: 540px;
      text-align: center;
      font-size: 13px;
      font-weight: 400;
      line-height: 1.65;
      color: var(--gray-600);
    }

    .psm-mini-judge {
      margin-top: 16px;
      padding: 15px 16px;
      border: 1px solid #dbe7f8;
      border-radius: 17px;
      background: #ffffff;
      color: var(--gray-800);
      font-size: 15px;
      font-weight: 500;
      line-height: 1.75;
    }

    .psm-ratio-table-wrap {
      margin-top: 16px;
      overflow-x: auto;
      border: 1px solid #dbe7f8;
      border-radius: 18px;
      background: #ffffff;
      box-shadow: 0 10px 24px rgba(15, 23, 42, 0.04);
    }

    .psm-ratio-table {
      width: 100%;
      min-width: 760px;
      border-collapse: collapse;
      font-size: 15px;
    }

    .psm-ratio-table th,
    .psm-ratio-table td {
      padding: 15px 14px;
      border-bottom: 1px solid #edf3fc;
      text-align: left;
      vertical-align: middle;
    }

    .psm-ratio-table th {
      background: #eef5ff;
      color: var(--blue-900);
      font-size: 14px;
      font-weight: 700;
      white-space: nowrap;
    }

    .psm-ratio-table td {
      color: var(--gray-900);
      font-size: 15px;
      font-weight: 500;
    }

    .psm-ratio-table tr:last-child td {
      border-bottom: 0;
    }

    .psm-delete-btn {
      padding: 8px 12px;
      border: 1px solid #fecaca;
      border-radius: 999px;
      background: #fff7f7;
      color: #c53030;
      font-family: inherit;
      font-size: 13px;
      font-weight: 700;
      cursor: pointer;
      transition: background-color 0.18s ease, transform 0.18s ease;
    }

    .psm-delete-btn:hover {
      background: #fef2f2;
      transform: translateY(-1px);
    }

    .psm-note-box {
      margin-top: 16px;
      padding: 18px 20px;
      border-radius: 18px;
      border: 1px solid #dbe7f8;
      background: linear-gradient(135deg, #ffffff, #f8fbff);
      color: var(--gray-700);
      font-size: 15px;
      font-weight: 400;
      line-height: 1.82;
    }

    .psm-note-box strong {
      display: inline-block;
      margin-bottom: 5px;
      color: var(--blue-900);
      font-size: 15px;
      font-weight: 800;
    }

    .psm-result {
      position: static;
      width: 100%;
      padding: 30px 32px;
      border-radius: 26px;
      border: 1px solid #d3e3fa;
      background:
        radial-gradient(circle at 96% 10%, rgba(59,130,246,0.10) 0, transparent 22%),
        linear-gradient(180deg, #ffffff 0%, #f9fbff 100%);
      box-shadow: 0 18px 36px rgba(15, 23, 42, 0.07);
    }

    .psm-result-top {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 18px;
    }

    .psm-result-mark {
      display: inline-flex;
      align-items: center;
      min-height: 36px;
      padding: 8px 14px;
      border-radius: 999px;
      background: var(--orange-50);
      color: var(--orange-700);
      font-size: 14px;
      font-weight: 700;
      white-space: nowrap;
    }

    .psm-result-title {
      margin: 16px 0 0;
      color: var(--gray-950);
      font-size: clamp(24px, 3vw, 32px);
      font-weight: 800;
      line-height: 1.35;
      letter-spacing: -0.04em;
      word-break: keep-all;
    }

    .psm-result-desc {
      margin: 14px 0 0;
      max-width: 980px;
      color: var(--gray-700);
      font-size: 16px;
      font-weight: 400;
      line-height: 1.8;
      word-break: keep-all;
    }

    .psm-result-list {
      margin: 20px 0 0;
      padding: 0;
      list-style: none;
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 12px;
    }

    .psm-result-list li {
      position: relative;
      padding: 16px 16px 16px 32px;
      border: 1px solid #e2ecfb;
      border-radius: 16px;
      background: rgba(255,255,255,0.72);
      color: var(--gray-800);
      font-size: 15px;
      font-weight: 400;
      line-height: 1.7;
      word-break: keep-all;
    }

    .psm-result-list li::before {
      content: "";
      position: absolute;
      left: 16px;
      top: 25px;
      width: 6px;
      height: 6px;
      border-radius: 50%;
      background: var(--blue-700);
    }

    .psm-result-detail {
      margin-top: 18px;
      padding: 17px 18px;
      border-radius: 17px;
      border: 1px solid rgba(191,219,254,0.9);
      background: rgba(255,255,255,0.82);
      color: var(--gray-800);
      font-size: 15px;
      font-weight: 500;
      line-height: 1.75;
    }

    .psm-result.is-target {
      border-color: #fecaca;
      background:
        radial-gradient(circle at 96% 10%, rgba(239,68,68,0.08) 0, transparent 22%),
        linear-gradient(180deg, #ffffff 0%, #fff8f8 100%);
    }

    .psm-result.is-target .psm-result-mark {
      background: var(--red-50);
      color: var(--red-700);
    }

    .psm-result.is-target .psm-result-list li::before {
      background: var(--red-700);
    }

    .psm-result.is-not-target {
      border-color: #b7efd2;
      background:
        radial-gradient(circle at 96% 10%, rgba(16,185,129,0.09) 0, transparent 22%),
        linear-gradient(180deg, #ffffff 0%, #f6fffb 100%);
    }

    .psm-result.is-not-target .psm-result-mark {
      background: var(--green-50);
      color: var(--green-700);
    }

    .psm-result.is-not-target .psm-result-list li::before {
      background: var(--green-700);
    }

    .psm-result.is-check {
      border-color: #fed7aa;
      background:
        radial-gradient(circle at 96% 10%, rgba(251,146,60,0.08) 0, transparent 22%),
        linear-gradient(180deg, #ffffff 0%, #fffdf9 100%);
    }

    .psm-result.is-excluded {
      border-color: #d7c8ff;
      background:
        radial-gradient(circle at 96% 10%, rgba(139,92,246,0.08) 0, transparent 22%),
        linear-gradient(180deg, #ffffff 0%, #faf8ff 100%);
    }

    .psm-result.is-excluded .psm-result-mark {
      background: var(--purple-50);
      color: var(--purple-700);
    }

    .psm-result.is-excluded .psm-result-list li::before {
      background: var(--purple-700);
    }

    .psm-law-list {
      display: grid;
      gap: 12px;
      margin: 0;
      padding: 0;
      list-style: none;
    }

    .psm-law-item {
      display: grid;
      grid-template-columns: 190px 1fr;
      gap: 18px;
      padding: 18px 20px;
      border: 1px solid #e5eefb;
      border-radius: 18px;
      background: #ffffff;
      transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
    }

    .psm-law-item:hover {
      transform: translateY(-2px);
      border-color: var(--line-strong);
      box-shadow: 0 12px 22px rgba(37, 99, 235, 0.06);
      background: #fbfdff;
    }

    .psm-law-key {
      color: var(--blue-900);
      font-size: 15px;
      font-weight: 800;
      line-height: 1.6;
    }

    .psm-law-value {
      color: var(--gray-800);
      font-size: 15px;
      font-weight: 400;
      line-height: 1.76;
    }

    .psm-link-box {
      margin-top: 18px;
      padding: 16px 18px;
      border: 1px solid #d6e5fb;
      border-radius: 16px;
      background: #f8fbff;
      color: var(--gray-800);
      font-size: 15px;
      font-weight: 400;
      line-height: 1.72;
    }

    .psm-link-box a {
      color: var(--blue-800);
      font-weight: 700;
      text-decoration: none;
      border-bottom: 1px solid rgba(37,99,235,0.32);
    }

    .psm-link-box a:hover {
      border-bottom-color: var(--blue-800);
    }

    .psm-notice {
      margin-top: 20px;
      padding: 18px 20px;
      border-radius: 18px;
      border: 1px solid #fde68a;
      background: #fffbeb;
      color: #7c5400;
      font-size: 15px;
      font-weight: 400;
      line-height: 1.78;
    }

    @media (max-width: 980px) {
      .psm-grid {
        grid-template-columns: 1fr;
      }

      .psm-result-list {
        grid-template-columns: 1fr;
      }

      .psm-law-item {
        grid-template-columns: 1fr;
        gap: 8px;
      }
    }

    @media (max-width: 760px) {
      .psm-chemical-grid,
      .psm-selected-panel,
      .psm-quantity-grid {
        grid-template-columns: 1fr;
      }

      .psm-help-tip::after {
        width: 300px;
      }
    }

    @media (max-width: 640px) {
      .psm-wrap {
        padding: 22px 14px 40px;
      }

      .psm-hero {
        padding: 34px 24px;
        border-radius: 24px;
      }

      .psm-section-head,
      .psm-section-body {
        padding: 22px 18px;
      }

      .psm-form {
        padding: 22px 18px;
      }

      .psm-title {
        font-size: 29px;
      }

      .psm-desc {
        font-size: 15px;
      }

      .psm-result {
        padding: 26px 22px;
      }

      .psm-result-title {
        font-size: 24px;
      }

      .psm-judge-btn {
        width: 100%;
        max-width: 260px;
      }
/* =========================================
   판정 결과 카드 강조 패치
   - 결과영역 시인성 강화
   - 테두리 굵기 개선
   - 상태별 색상 대비 강화
   - 판정식 박스 강조
   ========================================= */

.psm-result {
  position: relative;
  overflow: hidden;
  width: 100%;
  padding: 34px 34px 32px;
  border-radius: 28px;
  border: 2px solid #bfd5f6;
  background:
    radial-gradient(circle at 96% 8%, rgba(59,130,246,0.14) 0, transparent 24%),
    linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
  box-shadow:
    0 20px 42px rgba(15, 23, 42, 0.09),
    inset 0 1px 0 rgba(255,255,255,0.86);
}

/* 좌측 강조선 */
.psm-result::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 8px;
  height: 100%;
  background: #2563eb;
}

/* 상단 상태 라벨 */
.psm-result-mark {
  display: inline-flex;
  align-items: center;
  min-height: 38px;
  padding: 9px 16px;
  border-radius: 999px;
  background: #eff6ff;
  color: #1d4ed8;
  border: 1px solid #bfdbfe;
  font-size: 14px;
  font-weight: 800;
  white-space: nowrap;
  box-shadow: 0 8px 18px rgba(37, 99, 235, 0.10);
}

/* 결과 제목 */
.psm-result-title {
  margin: 18px 0 0;
  color: #0f172a;
  font-size: clamp(28px, 3.2vw, 38px);
  font-weight: 900;
  line-height: 1.28;
  letter-spacing: -0.055em;
  word-break: keep-all;
}

/* 결과 설명 */
.psm-result-desc {
  margin: 16px 0 0;
  max-width: 1040px;
  color: #334155;
  font-size: 17px;
  font-weight: 500;
  line-height: 1.85;
  word-break: keep-all;
}

/* 확인사항 카드 */
.psm-result-list {
  margin: 24px 0 0;
  padding: 0;
  list-style: none;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}

.psm-result-list li {
  position: relative;
  min-height: 108px;
  padding: 18px 18px 18px 38px;
  border: 1px solid #dbeafe;
  border-radius: 18px;
  background: rgba(255,255,255,0.88);
  color: #1f2937;
  font-size: 15.5px;
  font-weight: 500;
  line-height: 1.75;
  word-break: keep-all;
  box-shadow: 0 10px 22px rgba(15, 23, 42, 0.04);
}

.psm-result-list li::before {
  content: "";
  position: absolute;
  left: 18px;
  top: 28px;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #2563eb;
}

/* 판정식 박스 */
.psm-result-detail {
  margin-top: 22px;
  padding: 19px 22px;
  border-radius: 18px;
  border: 2px solid #bfdbfe;
  background:
    linear-gradient(135deg, #ffffff, #eff6ff);
  color: #0f172a;
  font-size: 16px;
  font-weight: 800;
  line-height: 1.75;
  box-shadow: 0 10px 22px rgba(37, 99, 235, 0.07);
}

/* 작성·제출 대상 */
.psm-result.is-target {
  border-color: #fca5a5;
  background:
    radial-gradient(circle at 96% 8%, rgba(239,68,68,0.16) 0, transparent 24%),
    linear-gradient(180deg, #ffffff 0%, #fff5f5 100%);
}

.psm-result.is-target::before {
  background: #dc2626;
}

.psm-result.is-target .psm-result-mark {
  background: #fef2f2;
  color: #b91c1c;
  border-color: #fecaca;
  box-shadow: 0 8px 18px rgba(220, 38, 38, 0.12);
}

.psm-result.is-target .psm-result-title {
  color: #7f1d1d;
}

.psm-result.is-target .psm-result-list li {
  border-color: #fecaca;
  background: rgba(255,255,255,0.9);
}

.psm-result.is-target .psm-result-list li::before {
  background: #dc2626;
}

.psm-result.is-target .psm-result-detail {
  border-color: #fca5a5;
  background: linear-gradient(135deg, #ffffff, #fef2f2);
  color: #7f1d1d;
}

/* 현재 입력 기준상 대상 아님 */
.psm-result.is-not-target {
  border-color: #86efac;
  background:
    radial-gradient(circle at 96% 8%, rgba(16,185,129,0.17) 0, transparent 24%),
    linear-gradient(180deg, #ffffff 0%, #f0fdf4 100%);
}

.psm-result.is-not-target::before {
  background: #059669;
}

.psm-result.is-not-target .psm-result-mark {
  background: #dcfce7;
  color: #047857;
  border-color: #86efac;
  box-shadow: 0 8px 18px rgba(5, 150, 105, 0.13);
}

.psm-result.is-not-target .psm-result-title {
  color: #064e3b;
}

.psm-result.is-not-target .psm-result-list li {
  border-color: #bbf7d0;
  background: rgba(255,255,255,0.9);
}

.psm-result.is-not-target .psm-result-list li::before {
  background: #059669;
}

.psm-result.is-not-target .psm-result-detail {
  border-color: #86efac;
  background: linear-gradient(135deg, #ffffff, #ecfdf5);
  color: #064e3b;
}

/* 추가 확인 필요 */
.psm-result.is-check {
  border-color: #fdba74;
  background:
    radial-gradient(circle at 96% 8%, rgba(251,146,60,0.18) 0, transparent 24%),
    linear-gradient(180deg, #ffffff 0%, #fff7ed 100%);
}

.psm-result.is-check::before {
  background: #f97316;
}

.psm-result.is-check .psm-result-mark {
  background: #ffedd5;
  color: #c2410c;
  border-color: #fdba74;
  box-shadow: 0 8px 18px rgba(249, 115, 22, 0.13);
}

.psm-result.is-check .psm-result-title {
  color: #7c2d12;
}

.psm-result.is-check .psm-result-list li {
  border-color: #fed7aa;
  background: rgba(255,255,255,0.9);
}

.psm-result.is-check .psm-result-list li::before {
  background: #f97316;
}

.psm-result.is-check .psm-result-detail {
  border-color: #fdba74;
  background: linear-gradient(135deg, #ffffff, #fff7ed);
  color: #7c2d12;
}

/* 적용제외 설비 */
.psm-result.is-excluded {
  border-color: #c4b5fd;
  background:
    radial-gradient(circle at 96% 8%, rgba(139,92,246,0.16) 0, transparent 24%),
    linear-gradient(180deg, #ffffff 0%, #faf5ff 100%);
}

.psm-result.is-excluded::before {
  background: #7c3aed;
}

.psm-result.is-excluded .psm-result-mark {
  background: #f5f3ff;
  color: #5b21b6;
  border-color: #c4b5fd;
  box-shadow: 0 8px 18px rgba(124, 58, 237, 0.13);
}

.psm-result.is-excluded .psm-result-title {
  color: #3b0764;
}

.psm-result.is-excluded .psm-result-list li {
  border-color: #ddd6fe;
  background: rgba(255,255,255,0.9);
}

.psm-result.is-excluded .psm-result-list li::before {
  background: #7c3aed;
}

.psm-result.is-excluded .psm-result-detail {
  border-color: #c4b5fd;
  background: linear-gradient(135deg, #ffffff, #f5f3ff);
  color: #3b0764;
}

/* 모바일 */
@media (max-width: 980px) {
  .psm-result-list {
    grid-template-columns: 1fr;
  }

  .psm-result {
    padding: 30px 24px 28px;
  }

  .psm-result-title {
    font-size: 26px;
  }
}




    }
  </style>
</head>

<body>
  <div class="psm-wrap">

    <section class="psm-hero">
      <div class="psm-hero-inner">
        <div class="psm-kicker">산업안전보건법 공정안전보고서 대상 조회</div>
        <h1 class="psm-title">공정안전보고서 작성·제출대상 조회</h1>
        <p class="psm-desc">
          사업장의 업종, 적용제외 설비 여부, 유해·위험물질의 규정량 해당 여부를 기준으로
          공정안전보고서 작성·제출 대상 여부를 확인할 수 있도록 구성한 조회 화면입니다.
        </p>
        
      </div>
    </section>

    <section class="psm-section">
      <div class="psm-section-head">
        <h2 class="psm-section-title">대상 판단 기준</h2>
        <p class="psm-section-sub">
          공정안전보고서 작성·제출 대상은 지정 업종에 해당하는 경우와, 지정 업종 외 사업장에서
          유해·위험물질을 규정량 이상 제조·취급·저장하는 경우로 구분하여 판단합니다.
        </p>
      </div>

      <div class="psm-section-body">
        <div class="psm-grid">
          <article class="psm-info-card">
            <div class="psm-info-no">1</div>
            <h3 class="psm-info-title">지정 업종 해당 여부</h3>
            <p class="psm-info-text">
              영 제43조 제1항 각 호의 사업을 하는 사업장은 그 보유설비를 기준으로 공정안전보고서 작성·제출 대상 여부를 판단합니다.
            </p>
          </article>

          <article class="psm-info-card">
            <div class="psm-info-no">2</div>
            <h3 class="psm-info-title">규정량 이상 여부</h3>
            <p class="psm-info-text">
              지정 업종 외 사업장은 영 별표 13 유해·위험물질을 규정량 이상 제조·취급·저장하는지 여부를 기준으로 판단합니다.
            </p>
          </article>

          <article class="psm-info-card">
            <div class="psm-info-no">3</div>
            <h3 class="psm-info-title">복수 물질 합산 판정</h3>
            <p class="psm-info-text">
              2종 이상의 유해·위험물질을 취급하는 경우 각 물질별 입력량을 규정량으로 나눈 값을 합산하여
              R값이 1 이상인지 확인합니다.
            </p>
          </article>
        </div>
      </div>
    </section>

    <section class="psm-section">
      <div class="psm-section-head">
        <h2 class="psm-section-title">작성·제출대상 자동 조회</h2>
        <p class="psm-section-sub">
          업종을 선택한 뒤, 지정 업종 외 사업장인 경우 유해·위험물질과 제조·취급·저장량을 입력하면
          규정량 이상 여부를 자동으로 판단합니다.
        </p>
      </div>

      <div class="psm-section-body">
        <div class="psm-checker">

          <div class="psm-form">
            <div class="psm-field">
              <label class="psm-label" for="psmIndustry">1. 사업장의 업종을 선택하세요</label>
              <p class="psm-help">영 제43조 제1항 각 호의 지정 업종에 해당하는지 확인하는 단계입니다.</p>

              <select id="psmIndustry" class="psm-select">
                <option value="">업종 선택</option>
                <option value="target">원유 정제처리업</option>
                <option value="target">기타 석유정제물 재처리업</option>
                <option value="target">석유화학계 기초화학물질 제조업</option>
                <option value="target">합성수지 및 기타 플라스틱물질 제조업 중 별표 13 제1호 또는 제2호 해당</option>
                <option value="target">질소질 비료 제조</option>
                <option value="target">복합비료 제조</option>
                <option value="target">농약 원제 제조</option>
                <option value="target">화약 및 불꽃제품 제조업</option>
                <option value="other">그 외 업종</option>
              </select>
            </div>

            <div class="psm-field">
              <span class="psm-label">2. 적용제외 설비에 해당하나요?</span>
              <p class="psm-help">영 제43조 제2항 및 고시 제2조의2에 따른 제외 설비 여부를 확인합니다.</p>

              <div class="psm-radio-group">
                <label class="psm-option">
                  <input type="radio" name="psmExclude" value="no" checked>
                  <span>해당 없음</span>
                </label>

                <label class="psm-option">
                  <input type="radio" name="psmExclude" value="yes">
                  <span>원자력 설비, 군사시설, 도매·소매시설, 차량 등의 운송설비, LPG 충전·저장시설, 도시가스 공급시설 등에 해당</span>
                </label>

                <label class="psm-option">
                  <input type="radio" name="psmExclude" value="diesel">
                  <span>비상발전기용 경유의 저장탱크 및 사용설비에 해당</span>
                </label>
              </div>
            </div>

            <div class="psm-field">
              <span class="psm-label">3. 유해·위험물질 및 제조·취급·저장량을 입력하세요</span>
              <p class="psm-help">
                지정 업종이 아닌 경우에는 영 별표 13 유해·위험물질의 규정량 이상 제조·취급·저장 여부를 기준으로 판단합니다.
              </p>

              <div class="psm-chemical-box">
                <div class="psm-chemical-grid">
                  <div>
                    <label class="psm-small-label" for="psmChemicalSearch">유해·위험물질 검색</label>
                    <input
                      id="psmChemicalSearch"
                      class="psm-input"
                      type="text"
                      placeholder="예: 암모니아, 염소, 인화성 액체"
                      autocomplete="off"
                    >
                    <div id="psmChemicalList" class="psm-chemical-list"></div>
                  </div>

                  <div>
                    <label class="psm-small-label" for="psmChemicalSelect">유해·위험물질 전체 목록</label>
                    <select id="psmChemicalSelect" class="psm-select">
                      <option value="">목록에서 선택</option>
                    </select>
                  </div>
                </div>

                <div class="psm-selected-panel">
                  <div>
                    <span class="psm-selected-label">선택된 물질</span>
                    <strong id="selectedChemicalName">선택 전</strong>
                  </div>

                  <div>
                    <span class="psm-selected-label">
                      규정량
                      <span
                        class="psm-help-tip"
                        tabindex="0"
                        data-tip="유해ㆍ위험물질의 규정량이란 제조ㆍ취급ㆍ저장 설비에서 공정과정 중에 저장되는 양을 포함하여 하루 동안 최대로 제조ㆍ취급 또는 저장할 수 있는 양을 말합니다."
                      >?</span>
                    </span>
                    <strong id="selectedChemicalLimit">-</strong>
                  </div>
                </div>

                <div class="psm-quantity-grid">
                  <div>
                    <label class="psm-small-label" for="psmUseType">제조·취급·저장 구분</label>
                    <select id="psmUseType" class="psm-select">
                      <option value="handling">제조·취급</option>
                      <option value="storage">저장</option>
                    </select>
                  </div>

                  <div>
                    <label class="psm-small-label" for="psmQuantity">수량 입력</label>
                    <div class="psm-quantity-row">
                      <input
                        id="psmQuantity"
                        class="psm-input"
                        type="number"
                        min="0"
                        step="0.01"
                        placeholder="수량"
                      >
                      <span class="psm-unit">kg</span>
                    </div>
                  </div>
                </div>

                <div class="psm-action-row">
                  <button id="psmAddChemical" class="psm-btn psm-judge-btn" type="button" disabled>
                    <span class="psm-btn-plus">+</span>
                    <span>판정에 반영</span>
                  </button>
                  <p class="psm-action-help">
                    선택한 물질과 입력 수량을 아래 판정표에 반영합니다. <br/>2종 이상 취급하는 경우 같은 방식으로 추가 입력하세요.
                  </p>
                </div>

                <div id="psmMiniJudge" class="psm-mini-judge">
                  물질을 선택하고 수량을 입력하면 규정량 대비 비율이 표시됩니다.
                </div>

                <div class="psm-ratio-table-wrap">
                  <table class="psm-ratio-table">
                    <thead>
                      <tr>
                        <th>물질명</th>
                        <th>구분</th>
                        <th>입력량 C</th>
                        <th>규정량 T</th>
                        <th>C/T</th>
                        <th>삭제</th>
                      </tr>
                    </thead>
                    <tbody id="psmChemicalRows">
                      <tr>
                        <td colspan="6">추가된 유해·위험물질이 없습니다.</td>
                      </tr>
                    </tbody>
                  </table>
                </div>

                <div class="psm-note-box">
                  <strong>비고 기준 안내</strong><br>
                  1종 물질은 입력량 C를 규정량 T로 나눈 값이 1 이상이면 대상입니다.<br>
                  2종 이상 물질은 각 물질별 C/T 값을 합산한 R값이 1 이상이면 대상입니다.<br>
                  규정량은 화학물질의 순도 100%를 기준으로 산출하되, 농도가 규정되어 있는 물질은 그 규정된 농도를 기준으로 합니다.
                </div>
              </div>
            </div>

            <div class="psm-field">
              <label class="psm-label" for="psmMemo">4. 검토 메모</label>
              <p class="psm-help">사업장명, 공정명, 취급물질, 저장량 등을 기록해두면 내부 검토에 활용할 수 있습니다.</p>

              <input
                id="psmMemo"
                class="psm-input"
                type="text"
                placeholder="예: 혼합공정, 암모니아 저장탱크, 최대보유량 확인 필요"
              >
            </div>
          </div>

          <!-- 본문 중간 인아티클 광고: 검토 메모 영역과 판정 결과 영역 사이 -->
          <div style="max-width:1140px; width:100%; margin:28px auto; font-family:'NanumSquareNeo','Noto Sans KR',sans-serif;">
            <div style="font-size:10px;font-weight:700;color:#9ca3af;letter-spacing:.06em;
                        margin-bottom:6px;padding-bottom:4px;border-bottom:1px solid #eef1f5;">
              AD 광고
            </div>
            <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>

          <aside id="psmResult" class="psm-result is-check">
            <div class="psm-result-top">
              <div>
                <div id="psmResultMark" class="psm-result-mark">추가 확인 필요</div>
                <h3 id="psmResultTitle" class="psm-result-title">업종을 먼저 선택하세요</h3>
              </div>
            </div>

            <p id="psmResultDesc" class="psm-result-desc">
              공정안전보고서 작성·제출 대상 여부는 지정 업종 해당 여부, 유해·위험물질 규정량 해당 여부,
              적용제외 설비 여부를 함께 검토해야 합니다.
            </p>

            <ul id="psmResultList" class="psm-result-list">
              <li>영 제43조 제1항 각 호의 지정 업종 해당 여부를 확인하세요.</li>
              <li>지정 업종 외 사업장은 영 별표 13 유해·위험물질 규정량 이상 여부를 확인합니다.</li>
              <li>적용제외 설비에 해당하는 경우 대상 설비에서 제외될 수 있습니다.</li>
            </ul>

            <div id="psmResultDetail" class="psm-result-detail">
              현재 입력값을 기준으로 결과가 자동 표시됩니다.
            </div>
          </aside>

        </div>
      </div>
    </section>

    <section class="psm-section">
      <div class="psm-section-head">
        <h2 class="psm-section-title">관련 법령 요약</h2>
        <p class="psm-section-sub">
          조회 화면에서 사용한 주요 판단 근거를 실무자가 바로 확인할 수 있도록 정리했습니다.
        </p>
      </div>

      <div class="psm-section-body">
        <ul class="psm-law-list">
          <li class="psm-law-item">
            <div class="psm-law-key">법 제44조 제1항</div>
            <div class="psm-law-value">
              사업주는 사업장에 대통령령으로 정하는 유해하거나 위험한 설비가 있는 경우 중대산업사고를 예방하기 위하여
              공정안전보고서를 작성하고 고용노동부장관에게 제출하여 심사를 받아야 합니다.
              적합 통보를 받기 전에는 관련 설비를 가동해서는 안 됩니다.
            </div>
          </li>

          <li class="psm-law-item">
            <div class="psm-law-key">법 제44조 제2항</div>
            <div class="psm-law-value">
              공정안전보고서를 작성할 때에는 산업안전보건위원회의 심의를 거쳐야 하며,
              산업안전보건위원회가 설치되어 있지 않은 사업장은 근로자대표의 의견을 들어야 합니다.
            </div>
          </li>

          <li class="psm-law-item">
            <div class="psm-law-key">영 제43조 제1항</div>
            <div class="psm-law-value">
              지정 업종의 경우 그 보유설비가 대상이 되며, 그 외 사업장의 경우에는 영 별표 13 유해·위험물질을 규정량 이상
              제조·취급·저장하는 설비 및 그 설비의 운영과 관련된 모든 공정설비가 대상이 됩니다.
            </div>
          </li>

          <li class="psm-law-item">
            <div class="psm-law-key">영 별표 13 비고</div>
            <div class="psm-law-value">
              규정량은 공정과정 중 저장되는 양을 포함하여 하루 동안 최대로 제조·취급 또는 저장할 수 있는 양을 말하며,
              2종 이상 물질은 물질별 C/T 값을 합산한 R값이 1 이상이면 유해·위험설비로 봅니다.
            </div>
          </li>
        </ul>

        <div class="psm-link-box">
          영 별표 13 유해·위험물질 규정량은 국가법령정보센터 별표 페이지에서 확인할 수 있습니다.
          <a href="https://www.law.go.kr/LSW//lsBylInfoPLinkR.do?lsiSeq=284771&amp;lsNm=%EC%82%B0%EC%97%85%EC%95%88%EC%A0%84%EB%B3%B4%EA%B1%B4%EB%B2%95+%EC%8B%9C%ED%96%89%EB%A0%B9&amp;bylNo=0013&amp;bylBrNo=00&amp;bylCls=BE&amp;bylEfYd=20260324&amp;bylEfYdYn=Y" target="_blank" rel="noopener">
            별표 13 바로가기
          </a>
        </div>

        <div class="psm-notice">
          본 조회 화면은 공정안전보고서 작성·제출 대상 여부를 간편하게 검토하기 위한 보조자료입니다.
          실제 적용 여부는 사업장의 업종분류, 공정설비 범위, 취급물질명, 농도, 최대보유량, 저장·취급 형태,
          적용제외 설비 해당 여부를 종합하여 확인하는 것이 필요합니다.
        </div>
      </div>
    </section>

  </div>

  <script>
    (function () {
      const industry = document.getElementById("psmIndustry");
      const result = document.getElementById("psmResult");
      const resultMark = document.getElementById("psmResultMark");
      const resultTitle = document.getElementById("psmResultTitle");
      const resultDesc = document.getElementById("psmResultDesc");
      const resultList = document.getElementById("psmResultList");
      const resultDetail = document.getElementById("psmResultDetail");

      const chemicalSearch = document.getElementById("psmChemicalSearch");
      const chemicalSelect = document.getElementById("psmChemicalSelect");
      const chemicalList = document.getElementById("psmChemicalList");
      const selectedChemicalName = document.getElementById("selectedChemicalName");
      const selectedChemicalLimit = document.getElementById("selectedChemicalLimit");
      const useType = document.getElementById("psmUseType");
      const quantityInput = document.getElementById("psmQuantity");
      const addButton = document.getElementById("psmAddChemical");
      const miniJudge = document.getElementById("psmMiniJudge");
      const chemicalRows = document.getElementById("psmChemicalRows");

      let selectedChemical = null;
      let addedChemicals = [];

      const chemicals = [
        { no: 1, name: "인화성 가스", cas: "-", handlingLimit: 5000, storageLimit: 200000, note: "인화한계 농도의 최저한도 13% 이하 또는 최고한도와 최저한도의 차가 12% 이상인 가스" },
        { no: 2, name: "인화성 액체", cas: "-", handlingLimit: 5000, storageLimit: 200000, note: "인화점 60℃ 이하 또는 고온·고압 공정운전조건으로 화재·폭발위험이 있는 가연성 물질" },
        { no: 3, name: "메틸 이소시아네이트", cas: "624-83-9", handlingLimit: 1000, storageLimit: 1000, note: "MIC" },
        { no: 4, name: "포스겐", cas: "75-44-5", handlingLimit: 500, storageLimit: 500, note: "" },
        { no: 5, name: "아크릴로니트릴", cas: "107-13-1", handlingLimit: 10000, storageLimit: 10000, note: "" },
        { no: 6, name: "암모니아", cas: "7664-41-7", handlingLimit: 10000, storageLimit: 10000, note: "" },
        { no: 7, name: "염소", cas: "7782-50-5", handlingLimit: 1500, storageLimit: 1500, note: "" },
        { no: 8, name: "이산화황", cas: "7446-09-5", handlingLimit: 10000, storageLimit: 10000, note: "" },
        { no: 9, name: "삼산화황", cas: "7446-11-9", handlingLimit: 10000, storageLimit: 10000, note: "" },
        { no: 10, name: "이황화탄소", cas: "75-15-0", handlingLimit: 10000, storageLimit: 10000, note: "" },
        { no: 11, name: "시안화수소", cas: "74-90-8", handlingLimit: 500, storageLimit: 500, note: "" },
        { no: 12, name: "불화수소", cas: "7664-39-3", handlingLimit: 1000, storageLimit: 1000, note: "무수불산" },
        { no: 13, name: "염화수소", cas: "7647-01-0", handlingLimit: 10000, storageLimit: 10000, note: "무수염산" },
        { no: 14, name: "황화수소", cas: "7783-06-4", handlingLimit: 1000, storageLimit: 1000, note: "" },
        { no: 15, name: "질산암모늄", cas: "6484-52-2", handlingLimit: 500000, storageLimit: 500000, note: "" },
        { no: 16, name: "니트로글리세린", cas: "55-63-0", handlingLimit: 10000, storageLimit: 10000, note: "" },
        { no: 17, name: "트리니트로톨루엔", cas: "118-96-7", handlingLimit: 50000, storageLimit: 50000, note: "TNT" },
        { no: 18, name: "수소", cas: "1333-74-0", handlingLimit: 5000, storageLimit: 5000, note: "" },
        { no: 19, name: "산화에틸렌", cas: "75-21-8", handlingLimit: 1000, storageLimit: 1000, note: "" },
        { no: 20, name: "포스핀", cas: "7803-51-2", handlingLimit: 500, storageLimit: 500, note: "" },
        { no: 21, name: "실란", cas: "7803-62-5", handlingLimit: 1000, storageLimit: 1000, note: "Silane" },
        { no: 22, name: "질산", cas: "7697-37-2", handlingLimit: 50000, storageLimit: 50000, note: "중량 94.5% 이상" },
        { no: 23, name: "발연황산", cas: "8014-95-7", handlingLimit: 20000, storageLimit: 20000, note: "삼산화황 중량 65% 이상 80% 미만" },
        { no: 24, name: "과산화수소", cas: "7722-84-1", handlingLimit: 10000, storageLimit: 10000, note: "중량 52% 이상" },
        { no: 25, name: "톨루엔 디이소시아네이트", cas: "91-08-7, 584-84-9, 26471-62-5", handlingLimit: 2000, storageLimit: 2000, note: "TDI" },
        { no: 26, name: "클로로술폰산", cas: "7790-94-5", handlingLimit: 10000, storageLimit: 10000, note: "" },
        { no: 27, name: "브롬화수소", cas: "10035-10-6", handlingLimit: 10000, storageLimit: 10000, note: "" },
        { no: 28, name: "삼염화인", cas: "7719-12-2", handlingLimit: 10000, storageLimit: 10000, note: "" },
        { no: 29, name: "염화 벤질", cas: "100-44-7", handlingLimit: 2000, storageLimit: 2000, note: "" },
        { no: 30, name: "이산화염소", cas: "10049-04-4", handlingLimit: 500, storageLimit: 500, note: "" },
        { no: 31, name: "염화 티오닐", cas: "7719-09-7", handlingLimit: 10000, storageLimit: 10000, note: "" },
        { no: 32, name: "브롬", cas: "7726-95-6", handlingLimit: 1000, storageLimit: 1000, note: "" },
        { no: 33, name: "일산화질소", cas: "10102-43-9", handlingLimit: 10000, storageLimit: 10000, note: "" },
        { no: 34, name: "붕소 트리염화물", cas: "10294-34-5", handlingLimit: 10000, storageLimit: 10000, note: "" },
        { no: 35, name: "메틸에틸케톤과산화물", cas: "1338-23-4", handlingLimit: 10000, storageLimit: 10000, note: "" },
        { no: 36, name: "삼불화 붕소", cas: "7637-07-2", handlingLimit: 1000, storageLimit: 1000, note: "" },
        { no: 37, name: "니트로아닐린", cas: "88-74-4, 99-09-2, 100-01-6, 29757-24-2", handlingLimit: 2500, storageLimit: 2500, note: "" },
        { no: 38, name: "염소 트리플루오르화", cas: "7790-91-2", handlingLimit: 1000, storageLimit: 1000, note: "" },
        { no: 39, name: "불소", cas: "7782-41-4", handlingLimit: 500, storageLimit: 500, note: "" },
        { no: 40, name: "시아누르 플루오르화물", cas: "675-14-9", handlingLimit: 2000, storageLimit: 2000, note: "" },
        { no: 41, name: "질소 트리플루오르화물", cas: "7783-54-2", handlingLimit: 20000, storageLimit: 20000, note: "" },
        { no: 42, name: "니트로 셀룰로오스", cas: "9004-70-0", handlingLimit: 100000, storageLimit: 100000, note: "질소 함유량 12.6% 이상" },
        { no: 43, name: "과산화벤조일", cas: "94-36-0", handlingLimit: 3500, storageLimit: 3500, note: "" },
        { no: 44, name: "과염소산 암모늄", cas: "7790-98-9", handlingLimit: 3500, storageLimit: 3500, note: "" },
        { no: 45, name: "디클로로실란", cas: "4109-96-0", handlingLimit: 1000, storageLimit: 1000, note: "" },
        { no: 46, name: "디에틸 알루미늄 염화물", cas: "96-10-6", handlingLimit: 10000, storageLimit: 10000, note: "" },
        { no: 47, name: "디이소프로필 퍼옥시디카보네이트", cas: "105-64-6", handlingLimit: 3500, storageLimit: 3500, note: "" },
        { no: 48, name: "불산", cas: "7664-39-3", handlingLimit: 10000, storageLimit: 10000, note: "중량 10% 이상" },
        { no: 49, name: "염산", cas: "7647-01-0", handlingLimit: 20000, storageLimit: 20000, note: "중량 20% 이상" },
        { no: 50, name: "황산", cas: "7664-93-9", handlingLimit: 20000, storageLimit: 20000, note: "중량 20% 이상" },
        { no: 51, name: "암모니아수", cas: "1336-21-6", handlingLimit: 50000, storageLimit: 50000, note: "중량 20% 이상" }
      ];

      function formatNumber(num) {
        return Number(num).toLocaleString("ko-KR", {
          maximumFractionDigits: 4
        });
      }

      function normalizeText(text) {
        return String(text || "").toLowerCase().replace(/\s/g, "");
      }

      function getRadioValue(name) {
        const selected = document.querySelector('input[name="' + name + '"]:checked');
        return selected ? selected.value : "";
      }

      function getCurrentLimit(chemical, type) {
        if (!chemical) return 0;
        return type === "storage" ? chemical.storageLimit : chemical.handlingLimit;
      }

      function getTypeLabel(type) {
        return type === "storage" ? "저장" : "제조·취급";
      }

      function getChemicalDisplayName(chemical) {
        if (!chemical) return "";
        return chemical.name + (chemical.note ? " (" + chemical.note + ")" : "");
      }

      function setResult(type, mark, title, desc, items, detail) {
        result.classList.remove("is-target", "is-not-target", "is-check", "is-excluded");
        result.classList.add(type);

        resultMark.textContent = mark;
        resultTitle.textContent = title;
        resultDesc.textContent = desc;

        resultList.innerHTML = "";
        items.forEach(function (item) {
          const li = document.createElement("li");
          li.textContent = item;
          resultList.appendChild(li);
        });

        resultDetail.textContent = detail || "현재 입력값을 기준으로 결과가 자동 표시됩니다.";
      }

      function populateChemicalSelect() {
        chemicals.forEach(function (chemical, index) {
          const option = document.createElement("option");
          option.value = String(index);
          option.textContent =
            chemical.no + ". " +
            chemical.name +
            (chemical.note ? " (" + chemical.note + ")" : "") +
            " / CAS " + chemical.cas;
          chemicalSelect.appendChild(option);
        });
      }

      function selectChemical(chemical) {
        selectedChemical = chemical;
        chemicalSearch.value = chemical.name;
        chemicalSelect.value = String(chemicals.indexOf(chemical));
        selectedChemicalName.textContent = getChemicalDisplayName(chemical);
        updateSelectedLimit();
        chemicalList.classList.remove("is-open");
        updateMiniJudge();
        updateResult();
      }

      function updateSelectedLimit() {
        if (!selectedChemical) {
          selectedChemicalName.textContent = "선택 전";
          selectedChemicalLimit.textContent = "-";
          return;
        }

        const limit = getCurrentLimit(selectedChemical, useType.value);
        selectedChemicalLimit.textContent =
          getTypeLabel(useType.value) + " " + formatNumber(limit) + "kg";
      }

      function renderChemicalList(keyword) {
        const searchText = normalizeText(keyword);

        if (!searchText) {
          chemicalList.innerHTML = "";
          chemicalList.classList.remove("is-open");
          return;
        }

        const filtered = chemicals.filter(function (item) {
          const name = normalizeText(item.name);
          const note = normalizeText(item.note);
          const cas = normalizeText(item.cas);
          return name.includes(searchText) || note.includes(searchText) || cas.includes(searchText);
        });

        chemicalList.innerHTML = "";

        if (filtered.length === 0) {
          const empty = document.createElement("div");
          empty.className = "psm-chemical-item";
          empty.textContent = "검색 결과가 없습니다";
          chemicalList.appendChild(empty);
          chemicalList.classList.add("is-open");
          return;
        }

        filtered.forEach(function (item) {
          const button = document.createElement("button");
          button.type = "button";
          button.className = "psm-chemical-item";
          button.innerHTML =
            item.no + ". " + item.name +
            "<small>CAS " + item.cas +
            " / 제조·취급 " + formatNumber(item.handlingLimit) + "kg" +
            " / 저장 " + formatNumber(item.storageLimit) + "kg" +
            (item.note ? " / " + item.note : "") +
            "</small>";

          button.addEventListener("click", function () {
            selectChemical(item);
          });

          chemicalList.appendChild(button);
        });

        chemicalList.classList.add("is-open");
      }

      function updateMiniJudge() {
        const quantity = Number(quantityInput.value);
        updateSelectedLimit();

        if (!selectedChemical) {
          miniJudge.textContent = "물질을 선택하고 수량을 입력하면 규정량 대비 비율이 표시됩니다.";
          addButton.disabled = true;
          return;
        }

        const limit = getCurrentLimit(selectedChemical, useType.value);

        if (!quantity || quantity <= 0) {
          miniJudge.textContent =
            selectedChemical.name +
            "의 " +
            getTypeLabel(useType.value) +
            " 규정량은 " +
            formatNumber(limit) +
            "kg입니다. 수량을 입력하세요.";
          addButton.disabled = true;
          return;
        }

        const ratio = quantity / limit;

        miniJudge.textContent =
          "입력량 " +
          formatNumber(quantity) +
          "kg ÷ 규정량 " +
          formatNumber(limit) +
          "kg = " +
          formatNumber(ratio) +
          "입니다.";

        addButton.disabled = false;
      }

      function addChemical() {
        const quantity = Number(quantityInput.value);

        if (!selectedChemical || !quantity || quantity <= 0) {
          return;
        }

        const type = useType.value;
        const limit = getCurrentLimit(selectedChemical, type);

        addedChemicals.push({
          chemical: selectedChemical,
          useType: type,
          quantity: quantity,
          limit: limit,
          ratio: quantity / limit
        });

        quantityInput.value = "";
        updateMiniJudge();
        renderAddedRows();
        updateResult();
      }

      function deleteChemical(index) {
        addedChemicals.splice(index, 1);
        renderAddedRows();
        updateResult();
      }

      function getTotalRatio() {
        return addedChemicals.reduce(function (sum, item) {
          return sum + item.ratio;
        }, 0);
      }

      function renderAddedRows() {
        chemicalRows.innerHTML = "";

        if (addedChemicals.length === 0) {
          const tr = document.createElement("tr");
          const td = document.createElement("td");
          td.colSpan = 6;
          td.textContent = "추가된 유해·위험물질이 없습니다.";
          tr.appendChild(td);
          chemicalRows.appendChild(tr);
          return;
        }

        addedChemicals.forEach(function (item, index) {
          const tr = document.createElement("tr");

          const nameTd = document.createElement("td");
          nameTd.textContent = getChemicalDisplayName(item.chemical);

          const typeTd = document.createElement("td");
          typeTd.textContent = getTypeLabel(item.useType);

          const quantityTd = document.createElement("td");
          quantityTd.textContent = formatNumber(item.quantity) + "kg";

          const limitTd = document.createElement("td");
          limitTd.textContent = formatNumber(item.limit) + "kg";

          const ratioTd = document.createElement("td");
          ratioTd.textContent = formatNumber(item.ratio);

          const deleteTd = document.createElement("td");
          const deleteButton = document.createElement("button");
          deleteButton.type = "button";
          deleteButton.className = "psm-delete-btn";
          deleteButton.textContent = "삭제";
          deleteButton.addEventListener("click", function () {
            deleteChemical(index);
          });
          deleteTd.appendChild(deleteButton);

          tr.appendChild(nameTd);
          tr.appendChild(typeTd);
          tr.appendChild(quantityTd);
          tr.appendChild(limitTd);
          tr.appendChild(ratioTd);
          tr.appendChild(deleteTd);

          chemicalRows.appendChild(tr);
        });
      }

      function updateResult() {
        const industryValue = industry.value;
        const excludeValue = getRadioValue("psmExclude");
        const totalRatio = getTotalRatio();

        if (excludeValue === "yes" || excludeValue === "diesel") {
          setResult(
            "is-excluded",
            "적용제외 설비",
            "공정안전보고서 대상 설비에서 제외될 수 있습니다",
            "선택한 설비가 영 제43조 제2항 또는 고시 제2조의2에 따른 적용제외 설비에 해당하는 경우에는 유해하거나 위험한 설비로 보지 않습니다.",
            [
              "동일 사업장 내 다른 공정설비가 별도로 대상에 해당하는지는 별도 확인이 필요합니다.",
              "적용제외 여부는 설비의 실제 용도, 연결 공정, 취급물질, 저장량을 함께 확인하는 것이 필요합니다.",
              "비상발전기용 경유의 저장탱크 및 사용설비는 고시상 적용제외 설비로 정리됩니다."
            ],
            "적용제외 설비를 선택한 경우, 업종 또는 물질 수량보다 적용제외 여부를 우선 검토하도록 구성했습니다."
          );
          return;
        }

        if (!industryValue) {
          setResult(
            "is-check",
            "추가 확인 필요",
            "업종을 먼저 선택하세요",
            "공정안전보고서 작성·제출 대상 여부는 지정 업종 해당 여부를 먼저 확인한 뒤, 지정 업종 외 사업장은 유해·위험물질 규정량 기준으로 판단합니다.",
            [
              "영 제43조 제1항 각 호의 지정 업종 해당 여부를 확인하세요.",
              "지정 업종이 아닌 경우에는 영 별표 13 물질명과 규정량을 기준으로 판단합니다.",
              "적용제외 설비에 해당하는지도 함께 확인해야 합니다."
            ],
            "현재 업종이 선택되지 않아 최종 판단을 표시할 수 없습니다."
          );
          return;
        }

        if (industryValue === "target") {
          setResult(
            "is-target",
            "작성·제출 대상",
            "공정안전보고서 작성·제출 대상입니다",
            "선택한 업종은 영 제43조 제1항 각 호의 지정 업종에 해당하므로, 해당 사업장의 보유설비를 기준으로 공정안전보고서 작성·제출 대상에 해당합니다.",
            [
              "공정안전보고서를 작성하여 고용노동부장관에게 제출하고 심사를 받아야 합니다.",
              "공정안전보고서 내용이 중대산업사고 예방에 적합하다고 통보받기 전에는 관련 설비를 가동해서는 안 됩니다.",
              "작성 시 산업안전보건위원회 심의 또는 근로자대표 의견 청취 절차가 필요합니다."
            ],
            "지정 업종은 물질별 R값과 관계없이 보유설비를 기준으로 대상 여부를 판단합니다."
          );
          return;
        }

        if (industryValue === "other" && addedChemicals.length === 0) {
          setResult(
            "is-check",
            "물질 입력 필요",
            "유해·위험물질과 수량을 반영하세요",
            "지정 업종이 아닌 경우에는 영 별표 13 유해·위험물질을 규정량 이상 제조·취급·저장하는지 여부가 핵심 판단 기준입니다.",
            [
              "검색 또는 전체 목록에서 물질을 선택하세요.",
              "제조·취급 또는 저장 구분을 선택한 뒤 수량을 입력하세요.",
              "2종 이상 물질은 각 물질별 C/T 값을 합산하여 R값으로 판단합니다."
            ],
            "현재 지정 업종 외 사업장으로 선택되었으나, 판정표에 반영된 유해·위험물질이 없습니다."
          );
          return;
        }

        if (industryValue === "other" && totalRatio >= 1) {
          setResult(
            "is-target",
            "작성·제출 대상",
            "공정안전보고서 작성·제출 대상입니다",
            "반영된 유해·위험물질의 규정량 대비 합산값 R이 " + formatNumber(totalRatio) + "로 1 이상입니다.",
            [
              "해당 설비 및 그 설비의 운영과 관련된 모든 공정설비를 함께 검토해야 합니다.",
              "공정안전보고서를 작성하여 고용노동부장관에게 제출하고 심사를 받아야 합니다.",
              "공정안전보고서 내용이 적합하다고 통보받기 전에는 관련 설비를 가동해서는 안 됩니다."
            ],
            "판정식: R = 각 물질별 C/T 합산값 = " + formatNumber(totalRatio) + " ≥ 1"
          );
          return;
        }

        setResult(
          "is-not-target",
          "현재 입력 기준상 대상 아님",
          "규정량 대비 합산값이 1 미만입니다",
          "반영된 유해·위험물질의 규정량 대비 합산값 R이 " + formatNumber(totalRatio) + "로 1 미만입니다.",
          [
            "현재 입력한 물질과 수량 기준으로는 공정안전보고서 작성·제출 대상에 해당하지 않습니다.",
            "다만, 다른 유해·위험물질을 함께 취급하거나 수량이 증가하는 경우에는 재검토가 필요합니다.",
            "물질명, 농도, 최대보유량, 저장·취급 형태가 정확한지 확인하는 것이 필요합니다."
          ],
          "판정식: R = 각 물질별 C/T 합산값 = " + formatNumber(totalRatio) + " < 1"
        );
      }

      populateChemicalSelect();
      renderAddedRows();
      updateMiniJudge();
      updateResult();

      chemicalSearch.addEventListener("input", function () {
        selectedChemical = null;
        selectedChemicalName.textContent = "선택 전";
        selectedChemicalLimit.textContent = "-";
        chemicalSelect.value = "";
        renderChemicalList(chemicalSearch.value);
        updateMiniJudge();
      });

      chemicalSelect.addEventListener("change", function () {
        const index = chemicalSelect.value;
        if (index === "") {
          selectedChemical = null;
          selectedChemicalName.textContent = "선택 전";
          selectedChemicalLimit.textContent = "-";
          updateMiniJudge();
          return;
        }
        selectChemical(chemicals[Number(index)]);
      });

      useType.addEventListener("change", function () {
        updateSelectedLimit();
        updateMiniJudge();
      });

      quantityInput.addEventListener("input", updateMiniJudge);
      addButton.addEventListener("click", addChemical);
      industry.addEventListener("change", updateResult);

      document.querySelectorAll('input[name="psmExclude"]').forEach(function (el) {
        el.addEventListener("change", updateResult);
      });

      document.addEventListener("click", function (event) {
        if (!event.target.closest(".psm-chemical-box")) {
          chemicalList.classList.remove("is-open");
        }
      });
    })();
  </script>
  <!-- 스마트 네비게이션바 -->
  <style>
  .smart-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-float-nav.is-hidden{
    opacity:0;
    pointer-events:none;
    transform:translateY(-50%) translateX(20px);
  }

  .smart-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-float-btn:hover{
    background:#0D4444;
    color:#fff;
    transform:translateX(-2px);
    box-shadow:0 8px 18px rgba(13,68,68,.22);
  }

  .smart-float-btn svg{
    width:22px;
    height:22px;
    stroke:currentColor;
    flex-shrink:0;
    transition:transform .22s ease;
  }

  .smart-float-btn:hover svg{
    transform:scale(1.05);
  }

  .smart-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-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-float-btn:hover .smart-float-label{
    opacity:1;
    transform:translateY(-50%) translateX(0);
  }

  .smart-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));
  }

  @media (max-width:1400px){
    .smart-float-nav{
      left:auto;
      margin-left:0;
      right:22px;
    }
  }

  @media (max-width:768px){
    .smart-float-nav{
      left:auto;
      margin-left:0;
      right:12px;
      gap:8px;
      padding:8px 6px;
      border-radius:20px;
    }
    .smart-float-btn{
      width:42px;
      height:42px;
      border-radius:14px;
    }
    .smart-float-btn svg{
      width:18px;
      height:18px;
    }
    .smart-float-label{
      display:none;
    }
  }
  </style>

  <div class="smart-float-nav" id="smart-float-nav">

    <a class="smart-float-btn" href="https://safetysupport.co.kr/">
      <span class="smart-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>

    <div class="smart-float-divider"></div>

    <a class="smart-float-btn" href="https://safetysupport.co.kr/osh-integrated-lookup/">
      <span class="smart-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-float-divider"></div>

    <button class="smart-float-btn" onclick="window.scrollTo({top:0,behavior:'smooth'})">
      <span class="smart-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-float-btn" onclick="window.scrollTo({top:document.body.scrollHeight,behavior:'smooth'})">
      <span class="smart-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-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-21dfb06 elementor-widget elementor-widget-html" data-id="21dfb06" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<style>
.smart-float-ad {
  position: fixed;
  right: 50%;
  margin-right: 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;
}
@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-9cdc01d elementor-widget elementor-widget-html" data-id="9cdc01d" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<style>
.smart-static-ad-right {
  position: fixed;
  left: 50%;
  margin-left: 658px;
  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;
}
@media (max-width: 1630px) {
  .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-dffb33a elementor-widget elementor-widget-html" data-id="dffb33a" data-element_type="widget" data-e-type="widget" data-widget_type="html.default">
					<div style="margin:40px 0 0; font-family:'NanumSquareNeo','Noto Sans KR',sans-serif;">
  <div style="font-size:10px;font-weight:700;color:#9ca3af;letter-spacing:.06em;
              margin-bottom:8px;padding-bottom:4px;border-bottom:1px solid #eef1f5;">
    AD 광고
  </div>
  <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>
				</div>
		]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
