<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>스타트업EX</title>
    <link>https://0-1.kr/</link>
    <description>창업을 희망하는 예비창업자, 직장인, 초보 스타트업대표님들을 위한 필수 지원 프로그램과 창업자금 마련프로그램만을 소개해 드립니다.</description>
    <language>ko</language>
    <pubDate>Tue, 4 Aug 2026 15:43:45 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>최매슨생</managingEditor>
    <image>
      <title>스타트업EX</title>
      <url>https://tistory1.daumcdn.net/tistory/4330872/attach/216e2b43a4c44f79aa3c5c0762dbbe20</url>
      <link>https://0-1.kr</link>
    </image>
    <item>
      <title>2026년 청년전용창업자금 설명</title>
      <link>https://0-1.kr/116</link>
      <description>&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/ILo6Z/dJMcabEJlc7/uQO131BOnIEO4ULLI2QaH0/00.2026%EB%85%84%20%EC%B2%AD%EB%85%84%EC%A0%84%EC%9A%A9%EC%B0%BD%EC%97%85%EC%9E%90%EA%B8%88%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_V4%28260630%29.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;00.2026년 청년전용창업자금 프로세스_V4(260630).pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;1.07MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드6.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMHQhM/dJMcagSRLmb/68XLB6FV3d0BwLMhNRrIY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMHQhM/dJMcagSRLmb/68XLB6FV3d0BwLMhNRrIY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMHQhM/dJMcagSRLmb/68XLB6FV3d0BwLMhNRrIY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMHQhM%2FdJMcagSRLmb%2F68XLB6FV3d0BwLMhNRrIY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드6.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000035932.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AqWXk/dJMcabreF8C/SJKuoQ6faoNddfMKlF4uYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AqWXk/dJMcabreF8C/SJKuoQ6faoNddfMKlF4uYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AqWXk/dJMcabreF8C/SJKuoQ6faoNddfMKlF4uYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAqWXk%2FdJMcabreF8C%2FSJKuoQ6faoNddfMKlF4uYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;1000035932.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000035933.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZv1WD/dJMcabreF8B/8qCA3AIwFpKWxUHzKVVSgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZv1WD/dJMcabreF8B/8qCA3AIwFpKWxUHzKVVSgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZv1WD/dJMcabreF8B/8qCA3AIwFpKWxUHzKVVSgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZv1WD%2FdJMcabreF8B%2F8qCA3AIwFpKWxUHzKVVSgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;1000035933.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000035934.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dgoub/dJMcabdCkJH/FgRKyfGJwS2g7EfPkaDC3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dgoub/dJMcabdCkJH/FgRKyfGJwS2g7EfPkaDC3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dgoub/dJMcabdCkJH/FgRKyfGJwS2g7EfPkaDC3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDgoub%2FdJMcabdCkJH%2FFgRKyfGJwS2g7EfPkaDC3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;1000035934.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;26년 6월 현재 청년창업사관학교 16기 입교생 지원가능&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;6월 1차 중간평가 우수,양호 판정 시 발표평가 면제(서류평가로만 진행가능)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;단 보통판정 시 발표평가 진행 후 선정 시 지원가능&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>스타트업 운영TIP/정부지원사업 TIP</category>
      <category>융자</category>
      <category>청년</category>
      <category>청년전용창업자금</category>
      <category>청창사</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/116</guid>
      <comments>https://0-1.kr/116#entry116comment</comments>
      <pubDate>Tue, 28 Apr 2026 18:37:26 +0900</pubDate>
    </item>
    <item>
      <title>모두의 QnA계산기</title>
      <link>https://0-1.kr/110</link>
      <description>&lt;!--
  ╔══════════════════════════════════════════════════════════╗

  ║  QnA 계산기 v6 — 티스토리 글 본문 HTML                   ║

  ║                                                          ║

  ║  ① qna6.js 파일을 티스토리 스킨 &gt; 파일 업로드에 추가     ║

  ║  ② 아래 JS_FILE_URL 을 업로드된 qna6.js 주소로 교체      ║

  ║  ③ 이 전체 코드를 티스토리 글 &gt; HTML 모드로 붙여넣기     ║

  ╚══════════════════════════════════════════════════════════╝

--&gt;

&lt;link rel=&quot;stylesheet&quot; href=&quot;https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&amp;display=swap&quot;&gt;

&lt;style&gt;

#qna6-wrap *,#qna6-wrap *::before,#qna6-wrap *::after{box-sizing:border-box;margin:0;padding:0}

#qna6-wrap{

  --g:#2d6a4f;--gm:#40916c;--gl:#52b788;--gp:#d8f3dc;--gh:#eaf7ed;

  --bd:#b7d5be;--bd2:#d8ead9;--tx:#1a2e1e;--mu:#5a7a62;--ti:#9abba0;--rd:#c0392b;

  --fn:'Noto Sans KR',sans-serif;

  font-family:var(--fn);font-size:13px;color:var(--tx);line-height:1.5;

  max-width:860px;margin:0 auto;padding-bottom:20px;

}

#qna6-top{background:var(--g);padding:6px 10px;display:flex;align-items:center;gap:5px;flex-wrap:wrap;position:sticky;top:0;z-index:50;border-radius:6px 6px 0 0;box-shadow:0 2px 8px rgba(45,106,79,.3)}

.qbrand{font-size:13px;font-weight:700;color:#fff;white-space:nowrap}

#qna6-doctitle{border:none;border-bottom:1.5px solid rgba(255,255,255,.35);background:transparent;font-family:var(--fn);font-size:12px;color:#fff;padding:2px 5px;width:130px;outline:none}

#qna6-doctitle::placeholder{color:rgba(255,255,255,.4)}

#qna6-dot{width:6px;height:6px;border-radius:50%;background:#b7ffce;opacity:0;transition:opacity .4s;flex-shrink:0}

#qna6-dot.on{opacity:1}

.qsep{width:1px;height:14px;background:rgba(255,255,255,.2);flex-shrink:0}

.qtbtn{border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.1);color:rgba(255,255,255,.9);font-family:var(--fn);font-size:11px;padding:3px 8px;border-radius:4px;cursor:pointer;white-space:nowrap;transition:all .12s}

.qtbtn:hover{background:rgba(255,255,255,.22)}

.qtbtn.qdanger:hover{background:rgba(192,57,43,.5)}

.qtbtn.qprime{background:rgba(255,255,255,.9);color:var(--g);font-weight:700;border-color:transparent}

.qtbtn.qprime:hover{background:#fff}

#qna6-sbar{background:#fff;border-bottom:1px solid var(--bd);padding:4px 12px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}

.qsl{font-size:11px;color:var(--mu);display:flex;align-items:center;gap:5px;white-space:nowrap}

.qsl select{font-family:var(--fn);font-size:11px;border:1px solid var(--bd);border-radius:3px;padding:2px 5px;background:#fff;outline:none;cursor:pointer}

#qna6-jnav{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding:4px 12px;background:#f6fcf7;border-bottom:1px solid var(--bd2);min-height:27px}

.qjlbl{font-size:10px;color:var(--ti);flex-shrink:0}

.qjbtn{font-size:10px;border:1px solid var(--bd);background:#fff;border-radius:10px;padding:2px 9px;color:var(--mu);cursor:pointer;font-family:var(--fn);transition:all .1s;white-space:nowrap}

.qjbtn:hover{background:var(--gp);border-color:var(--gm);color:var(--g)}

#qna6-bsc{padding:14px 4px 4px}

.qbsec{margin-bottom:18px}

.qbsec.dv-line{border-top:3px solid var(--gl)}

.qbsec.dv-double{border-top:5px double var(--g)}

.qbsec.dv-dashed{border-top:3px dashed var(--gm)}

.qbsec.dv-dotted{border-top:4px dotted var(--gl)}

.qbsec.dv-thick{border-top:5px solid var(--g)}

.qbbar{display:flex;align-items:center;gap:6px;background:var(--g);border-radius:6px 6px 0 0;padding:5px 10px}

.qbpfx{font-size:10px;font-weight:700;color:rgba(255,255,255,.55);white-space:nowrap;flex-shrink:0;font-family:monospace;min-width:14px}

.qbbar&gt;input[type=text]{flex:1;border:none;background:transparent;font-family:var(--fn);font-size:12px;font-weight:700;color:#fff;outline:none;padding:1px 0;min-width:0}

.qbbar&gt;input[type=text]::placeholder{color:rgba(255,255,255,.35);font-weight:400}

.qbctrl{display:flex;gap:2px;flex-shrink:0}

.qbb{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);color:rgba(255,255,255,.8);border-radius:3px;font-size:10px;padding:1px 6px;cursor:pointer;font-family:var(--fn);transition:all .12s;line-height:1.4}

.qbb:hover{background:rgba(255,255,255,.25)}

.qbb.qdel:hover{background:rgba(192,57,43,.6)}

.qfwrap{background:#fff;border:1.5px solid var(--bd);border-top:none;border-radius:0 0 6px 6px;overflow:hidden}

.qrwrap{border-bottom:1px solid var(--bd2)}

.qrwrap:last-child{border-bottom:none}

.qrwrap.qdragging{opacity:.35}

.qrwrap.qdot{border-top:2px solid var(--gm)}

.qrwrap.qdob{border-bottom:2px solid var(--gm)}

.qrtop{display:flex;align-items:stretch;min-height:30px;background:var(--gh);transition:background .1s}

.qrtop:hover{background:#dff0e4}

.qdragh{width:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:grab;color:var(--ti);font-size:13px;user-select:none;border-right:1px solid var(--bd2)}

.qdragh:active{cursor:grabbing}

.qrtop:hover .qdragh{color:var(--gm)}

.qrnum{width:24px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:10px;font-family:monospace;font-weight:700;color:var(--gm);border-right:1px solid var(--bd2);user-select:none}

.qrlbl{flex:1;border:none;background:transparent;font-family:var(--fn);font-size:11px;font-weight:600;color:var(--g);outline:none;padding:0 8px;min-width:0;align-self:center}

.qrlbl::placeholder{color:var(--ti);font-weight:400;font-style:italic}

.qrc{display:flex;align-items:center;gap:2px;padding:0 6px;flex-shrink:0}

.qrb{background:none;border:1px solid transparent;border-radius:3px;color:var(--mu);font-size:10px;padding:2px 5px;cursor:pointer;transition:all .1s;line-height:1;font-family:var(--fn)}

.qrb:hover{background:var(--gp);border-color:var(--bd);color:var(--g)}

.qrb.qdel:hover{background:#fdecea;color:var(--rd);border-color:#e8bfbf}

.qrb.qre{background:rgba(64,145,108,.1);border:1px solid var(--bd);color:var(--g);font-weight:700}

.qrb.qre:hover,.qrb.qre.on{background:var(--gm);color:#fff;border-color:var(--gm)}

.qvc{display:none;align-items:center;gap:8px;padding:8px 12px 9px 44px;flex-wrap:wrap;background:#fafffe;border-top:1px solid var(--bd2)}

.qvc.show{display:flex}

.qrezone{display:none;background:#f4fbf5;border-top:1px dashed var(--bd2)}

.qrezone.show{display:block}

.qrerow{display:flex;align-items:flex-start;border-bottom:1px dashed var(--bd2)}

.qrerow:last-child{border-bottom:none}

.qrerow:hover{background:#edf7ef}

.qreind{width:52px;flex-shrink:0;display:flex;flex-direction:column;align-items:flex-end;justify-content:flex-start;padding:7px 8px 0 0;background:#e8f5ec;border-right:2px solid var(--bd);user-select:none}

.qreind .qarr{color:var(--gl);font-size:14px;line-height:1}

.qreind .qrlb{font-size:9px;color:var(--ti);font-weight:700;letter-spacing:.3px;margin-top:1px}

.qreta{flex:1;border:none;background:transparent;font-family:var(--fn);font-size:12px;color:var(--tx);resize:none;outline:none;padding:7px 10px;min-height:34px;line-height:1.6;overflow:hidden}

.qreta::placeholder{color:var(--ti)}

.qredel{background:none;border:none;color:var(--ti);font-size:11px;cursor:pointer;padding:4px 6px;align-self:flex-start;margin-top:3px}

.qredel:hover{color:var(--rd)}

.qreadd{display:flex;padding:3px 3px 3px 52px;background:#eef7f0;border-top:1px dashed var(--bd2)}

.qreadd-btn{font-size:10px;border:1px dashed var(--bd);background:none;border-radius:10px;padding:1px 8px;color:var(--mu);cursor:pointer;font-family:var(--fn);transition:all .1s}

.qreadd-btn:hover{border-color:var(--gm);color:var(--g);background:var(--gp)}

.qvi{border:1px solid var(--bd);border-radius:4px;padding:5px 9px;font-family:var(--fn);font-size:13px;color:var(--tx);background:#fff;outline:none;height:34px;transition:border-color .12s}

.qvi:focus{border-color:var(--gl);box-shadow:0 0 0 2px rgba(82,183,136,.12)}

.qvi.qfull{flex:1;min-width:120px}

.qvi.qnum{width:110px;text-align:right}

.qvsep{color:var(--mu);font-size:13px;flex-shrink:0}

.qvsel{border:1px solid var(--bd);border-radius:4px;padding:5px 24px 5px 9px;font-family:var(--fn);font-size:13px;color:var(--tx);background:#fff url(&quot;data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%235a7a62'/%3E%3C/svg%3E&quot;) no-repeat right 7px center;appearance:none;outline:none;cursor:pointer;height:34px}

.qvsel:focus{border-color:var(--gl)}

.qrgrp,.qoxgrp,.qcgrp{display:flex;align-items:center;gap:10px;flex-wrap:wrap}

.qri,.qoxi,.qci{display:flex;align-items:center;gap:5px;font-size:13px;cursor:pointer}

.qri input,.qoxi input,.qci input{accent-color:var(--gm);width:15px;height:15px;cursor:pointer}

.qxdel{background:none;border:none;color:var(--ti);font-size:11px;cursor:pointer;padding:0 0 0 2px;line-height:1}

.qxdel:hover{color:var(--rd)}

.qopanel{width:100%;margin-top:5px}

.qotog{font-size:10px;border:none;background:none;color:var(--ti);cursor:pointer;padding:0 2px;font-family:var(--fn)}

.qotog:hover{color:var(--gm)}

.qolist{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin-top:4px}

.qolist.qhidden{display:none}

.qopill{display:inline-flex;align-items:center;gap:2px;border:1px solid var(--bd);border-radius:9px;padding:2px 6px 2px 8px;font-size:11px;color:var(--mu);background:#fff}

.qopill .qox{cursor:pointer;color:var(--ti);font-size:12px;line-height:1}

.qopill .qox:hover{color:var(--rd)}

.qoadd{border:1px dashed var(--bd);border-radius:9px;padding:2px 8px;font-size:11px;color:var(--mu);background:none;cursor:pointer;font-family:var(--fn);transition:all .12s}

.qoadd:hover{border-color:var(--gm);color:var(--g);background:var(--gp)}

/* 행 추가 strip — label 한 줄 / 버튼들 wrap */

.qastrip{padding:6px 10px 8px;background:#f6fcf7;border-top:1px dashed var(--bd2)}

.qastrip .qalbl{display:block;font-size:10px;color:var(--ti);margin-bottom:5px}

.qastrip .qatypes{display:flex;flex-wrap:wrap;gap:4px}

.qtbtype{border:1px solid var(--bd);background:#fff;border-radius:10px;font-family:var(--fn);font-size:11px;color:var(--mu);padding:3px 10px;cursor:pointer;transition:all .12s;white-space:nowrap}

.qtbtype:hover{border-color:var(--gm);color:var(--g);background:var(--gp)}

.qaddbig{width:100%;border:2px dashed var(--bd);background:none;border-radius:6px;padding:9px;font-family:var(--fn);font-size:12px;color:var(--mu);cursor:pointer;text-align:center;transition:all .12s;margin-bottom:8px;display:block}

.qaddbig:hover{border-color:var(--gm);color:var(--g);background:var(--gp)}

#qna6-spanel{background:#fff;border:1.5px solid var(--bd);border-radius:6px;margin-top:12px;overflow:hidden}

#qna6-shandle{padding:5px 12px;display:flex;align-items:center;gap:6px;background:var(--gh);border-bottom:1px solid var(--bd);cursor:pointer;user-select:none}

.qshtit{font-size:11px;font-weight:700;color:var(--g);flex:1}

.qsbn{font-size:10px;border:1px solid var(--bd);background:#fff;color:var(--mu);border-radius:3px;padding:2px 7px;cursor:pointer;font-family:var(--fn);transition:all .12s}

.qsbn:hover{background:var(--gp);border-color:var(--gm);color:var(--g)}

.qsbn.qp{background:var(--g);color:#fff;border-color:var(--g)}

.qsbn.qp:hover{background:var(--gm)}

#qna6-sbody{padding:8px 12px;max-height:200px;overflow-y:auto;transition:max-height .25s}

#qna6-sbody.qclosed{max-height:0;padding:0 12px;overflow:hidden}

#qna6-stext{font-size:11px;color:var(--tx);white-space:pre-wrap;line-height:1.8;font-family:monospace}

.qoverlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.32);z-index:9999;align-items:center;justify-content:center}

.qoverlay.qopen{display:flex}

.qmodal{background:#fff;border-radius:9px;padding:20px;max-width:400px;width:92%;box-shadow:0 10px 40px rgba(0,0,0,.14)}

.qmodal h3{font-size:14px;font-weight:700;color:var(--g);margin-bottom:10px}

.qmodal p{font-size:12px;color:var(--mu);margin-bottom:12px;line-height:1.6}

.qmodal input[type=email],.qmodal input[type=text]{width:100%;border:1.5px solid var(--bd);border-radius:4px;padding:6px 9px;font-family:var(--fn);font-size:13px;color:var(--tx);margin-bottom:8px;outline:none;display:block}

.qurlbox{font-size:10px;word-break:break-all;background:#eff3f0;border:1px solid var(--bd);border-radius:3px;padding:7px 9px;margin-bottom:10px;color:var(--mu);max-height:70px;overflow-y:auto;font-family:monospace}

.qmbtns{display:flex;gap:6px;justify-content:flex-end}

.qmbtn{border:1.5px solid var(--bd);background:#fff;font-family:var(--fn);font-size:12px;padding:5px 12px;border-radius:4px;cursor:pointer;transition:all .12s}

.qmbtn:hover{background:#eff3f0}

.qmbtn.qp{background:var(--g);color:#fff;border-color:var(--g)}

.qmbtn.qd{background:var(--rd);color:#fff;border-color:var(--rd)}

@media print{

  #qna6-top,#qna6-sbar,#qna6-spanel,#qna6-jnav,.qbctrl,.qrc,.qastrip,.qdragh,.qaddbig,

  .qoadd,.qxdel,.qopill .qox,.qredel,.qreadd,.qbb,.qrb,.qotog{display:none!important}

  .qbbar{background:#2d6a4f!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}

  .qbbar&gt;input[type=text],.qbpfx{color:#fff!important;pointer-events:none}

  .qrtop{background:#eaf7ed!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}

  .qrlbl{color:#2d6a4f!important;pointer-events:none}

  .qvc{display:flex!important}

  .qrezone{display:block!important}

  .qvi,.qvsel{border:none!important;background:transparent!important;height:auto;padding:0;pointer-events:none}

}

&lt;/style&gt;



&lt;div id=&quot;qna6-wrap&quot;&gt;

  &lt;div id=&quot;qna6-top&quot;&gt;

    &lt;span class=&quot;qbrand&quot;&gt;  QnA 계산기&lt;/span&gt;

    &lt;input id=&quot;qna6-doctitle&quot; type=&quot;text&quot; placeholder=&quot;문서 제목...&quot;&gt;

    &lt;div id=&quot;qna6-dot&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;qsep&quot;&gt;&lt;/div&gt;

    &lt;button class=&quot;qtbtn qdanger&quot; onclick=&quot;qna6.openM('factory')&quot;&gt; 공장초기화&lt;/button&gt;

    &lt;button class=&quot;qtbtn&quot; onclick=&quot;qna6.openM('reset')&quot;&gt; 초기화&lt;/button&gt;

    &lt;button class=&quot;qtbtn&quot; onclick=&quot;qna6.doShare()&quot;&gt; 공유&lt;/button&gt;

    &lt;button class=&quot;qtbtn&quot; onclick=&quot;qna6.doExcel()&quot;&gt; 엑셀&lt;/button&gt;

    &lt;button class=&quot;qtbtn&quot; onclick=&quot;qna6.doPrint()&quot;&gt; ️인쇄&lt;/button&gt;

    &lt;button class=&quot;qtbtn qprime&quot; onclick=&quot;qna6.openMailM()&quot;&gt; 메일&lt;/button&gt;

  &lt;/div&gt;

  &lt;div id=&quot;qna6-sbar&quot;&gt;

    &lt;label class=&quot;qsl&quot;&gt;말머리

      &lt;select id=&quot;qna6-pfxsel&quot; onchange=&quot;qna6.onPfxChange()&quot;&gt;

        &lt;option value=&quot;num&quot;&gt;1.&lt;/option&gt;&lt;option value=&quot;rom&quot;&gt;Ⅰ.&lt;/option&gt;

        &lt;option value=&quot;abc&quot;&gt;A.&lt;/option&gt;&lt;option value=&quot;kor&quot;&gt;제1조&lt;/option&gt;

        &lt;option value=&quot;none&quot;&gt;없음&lt;/option&gt;

      &lt;/select&gt;

    &lt;/label&gt;

    &lt;label class=&quot;qsl&quot;&gt;구분선

      &lt;select id=&quot;qna6-divsel&quot; onchange=&quot;qna6.onDivChange()&quot;&gt;

        &lt;option value=&quot;none&quot;&gt;없음&lt;/option&gt;&lt;option value=&quot;line&quot;&gt;실선&lt;/option&gt;

        &lt;option value=&quot;double&quot;&gt;이중선&lt;/option&gt;&lt;option value=&quot;dashed&quot;&gt;점선(대)&lt;/option&gt;

        &lt;option value=&quot;dotted&quot;&gt;점선(소)&lt;/option&gt;&lt;option value=&quot;thick&quot;&gt;굵은선&lt;/option&gt;

      &lt;/select&gt;

    &lt;/label&gt;

  &lt;/div&gt;

  &lt;div id=&quot;qna6-jnav&quot;&gt;&lt;span class=&quot;qjlbl&quot;&gt;바로가기:&lt;/span&gt;&lt;/div&gt;

  &lt;div id=&quot;qna6-bsc&quot;&gt;&lt;/div&gt;

  &lt;button class=&quot;qaddbig&quot; onclick=&quot;qna6.addBig()&quot;&gt;＋ Tile 추가&lt;/button&gt;

  &lt;div id=&quot;qna6-spanel&quot;&gt;

    &lt;div id=&quot;qna6-shandle&quot; onclick=&quot;qna6.togglePanel()&quot;&gt;

      &lt;span class=&quot;qshtit&quot;&gt;  요약&lt;/span&gt;

      &lt;button class=&quot;qsbn&quot; onclick=&quot;event.stopPropagation();qna6.doRestore()&quot;&gt; 복원&lt;/button&gt;

      &lt;button class=&quot;qsbn&quot; onclick=&quot;event.stopPropagation();qna6.doCopySummary()&quot;&gt; 복사&lt;/button&gt;

      &lt;button class=&quot;qsbn qp&quot; onclick=&quot;event.stopPropagation();qna6.doShare()&quot;&gt; 공유&lt;/button&gt;

      &lt;span style=&quot;font-size:11px;color:var(--mu);margin-left:2px&quot;&gt;⇅&lt;/span&gt;

    &lt;/div&gt;

    &lt;div id=&quot;qna6-sbody&quot;&gt;&lt;pre id=&quot;qna6-stext&quot;&gt;&lt;/pre&gt;&lt;/div&gt;

  &lt;/div&gt;

&lt;/div&gt;



&lt;div class=&quot;qoverlay&quot; id=&quot;qna6-m-share&quot;&gt;

  &lt;div class=&quot;qmodal&quot;&gt;&lt;h3&gt;  저장 &amp;amp; 공유&lt;/h3&gt;&lt;p&gt;아래 URL로 현재 상태가 공유됩니다.&lt;/p&gt;

    &lt;div class=&quot;qurlbox&quot; id=&quot;qna6-share-url&quot;&gt;&lt;/div&gt;

    &lt;div class=&quot;qmbtns&quot;&gt;&lt;button class=&quot;qmbtn&quot; onclick=&quot;qna6.copyUrl()&quot;&gt;URL 복사&lt;/button&gt;&lt;button class=&quot;qmbtn qp&quot; onclick=&quot;qna6.closeM('share')&quot;&gt;닫기&lt;/button&gt;&lt;/div&gt;

  &lt;/div&gt;

&lt;/div&gt;

&lt;div class=&quot;qoverlay&quot; id=&quot;qna6-m-mail&quot;&gt;

  &lt;div class=&quot;qmodal&quot;&gt;&lt;h3&gt;  이메일 전달&lt;/h3&gt;&lt;p&gt;수신자 이메일을 입력하면 기본 메일 앱이 열립니다.&lt;/p&gt;

    &lt;input type=&quot;email&quot; id=&quot;qna6-mail-to&quot; placeholder=&quot;수신 이메일&quot;&gt;

    &lt;input type=&quot;text&quot; id=&quot;qna6-mail-subj&quot; placeholder=&quot;제목&quot;&gt;

    &lt;div class=&quot;qmbtns&quot;&gt;&lt;button class=&quot;qmbtn&quot; onclick=&quot;qna6.closeM('mail')&quot;&gt;취소&lt;/button&gt;&lt;button class=&quot;qmbtn qp&quot; onclick=&quot;qna6.sendMail()&quot;&gt;메일 열기&lt;/button&gt;&lt;/div&gt;

  &lt;/div&gt;

&lt;/div&gt;

&lt;div class=&quot;qoverlay&quot; id=&quot;qna6-m-factory&quot;&gt;

  &lt;div class=&quot;qmodal&quot;&gt;&lt;h3&gt;  공장 초기화&lt;/h3&gt;&lt;p&gt;모든 Tile과 데이터를 삭제합니다. 되돌릴 수 없습니다.&lt;/p&gt;

    &lt;div class=&quot;qmbtns&quot;&gt;&lt;button class=&quot;qmbtn&quot; onclick=&quot;qna6.closeM('factory')&quot;&gt;취소&lt;/button&gt;&lt;button class=&quot;qmbtn qd&quot; onclick=&quot;qna6.doFactory()&quot;&gt;초기화 실행&lt;/button&gt;&lt;/div&gt;

  &lt;/div&gt;

&lt;/div&gt;

&lt;div class=&quot;qoverlay&quot; id=&quot;qna6-m-reset&quot;&gt;

  &lt;div class=&quot;qmodal&quot;&gt;&lt;h3&gt;  내용 초기화&lt;/h3&gt;&lt;p&gt;입력된 값만 지우고 구조는 유지합니다.&lt;/p&gt;

    &lt;div class=&quot;qmbtns&quot;&gt;&lt;button class=&quot;qmbtn&quot; onclick=&quot;qna6.closeM('reset')&quot;&gt;취소&lt;/button&gt;&lt;button class=&quot;qmbtn qd&quot; onclick=&quot;qna6.doReset()&quot;&gt;초기화&lt;/button&gt;&lt;/div&gt;

  &lt;/div&gt;

&lt;/div&gt;



&lt;!--

  ★ 아래 src 를 실제 qna6.js 업로드 주소로 바꾸세요 ★

  티스토리 관리 &gt; 꾸미기 &gt; 스킨 편집 &gt; 파일 업로드 탭에서

  qna6.js 를 올린 뒤 생성된 URL을 복사해서 붙여넣으세요.

--&gt;

&lt;script src=&quot;https://tistory1.daumcdn.net/tistory/4330872/skin/images/qna6.js&quot;&gt;&lt;/script&gt;</description>
      <category>모두의계산기</category>
      <category>QNA</category>
      <category>계산기</category>
      <category>메모</category>
      <category>모두의계산기</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/110</guid>
      <comments>https://0-1.kr/110#entry110comment</comments>
      <pubDate>Mon, 9 Mar 2026 20:33:08 +0900</pubDate>
    </item>
    <item>
      <title>2026년 중앙부처 및 지자체 창업지원사업 통합공고</title>
      <link>https://0-1.kr/108</link>
      <description>&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/BU3ln/dJMcah4BnQ5/OFKgoXQkJZEYZvMaigSDFK/%E2%98%85%28%EA%B3%B5%EA%B3%A0%EB%AC%B8%29%202026%EB%85%84%EB%8F%84%20%EC%A4%91%EC%95%99%EB%B6%80%EC%B2%98%20%EB%B0%8F%20%EC%A7%80%EC%9E%90%EC%B2%B4%20%EC%B0%BD%EC%97%85%EC%A7%80%EC%9B%90%EC%82%AC%EC%97%85%20%ED%86%B5%ED%95%A9%EA%B3%B5%EA%B3%A0%EB%AC%B8%28%EC%A0%9C2025-648%ED%98%B8%2C%202025.12.19.%29.hwpx?attach=1&amp;amp;knm=tfile.hwpx&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;★(공고문) 2026년도 중앙부처 및 지자체 창업지원사업 통합공고문(제2025-648호, 2025.12.19.).hwpx&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.46MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bwu3Nc/dJMcacPLauz/gturukSKu0iITbZQ5Knznk/%28%EC%95%88%EB%82%B4%EC%B1%85%EC%9E%90%29%202026%EB%85%84%EB%8F%84%20%EC%A4%91%EC%95%99%EB%B6%80%EC%B2%98%20%EB%B0%8F%20%EC%A7%80%EC%9E%90%EC%B2%B4%20%EC%B0%BD%EC%97%85%EC%A7%80%EC%9B%90%EC%82%AC%EC%97%85%20%ED%86%B5%ED%95%A9%EA%B3%B5%EA%B3%A0.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;(안내책자) 2026년도 중앙부처 및 지자체 창업지원사업 통합공고.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;3.99MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bjXmCH/dJMcabXBZET/5Fk5rOTijKn3J0QnlXVKp0/%E2%98%85%28%EA%B3%B5%EA%B3%A0%EB%AC%B8%29%202026%EB%85%84%EB%8F%84%20%EC%A4%91%EC%95%99%EB%B6%80%EC%B2%98%20%EB%B0%8F%20%EC%A7%80%EC%9E%90%EC%B2%B4%20%EC%B0%BD%EC%97%85%EC%A7%80%EC%9B%90%EC%82%AC%EC%97%85%20%ED%86%B5%ED%95%A9%EA%B3%B5%EA%B3%A0%EB%AC%B8%28%EC%A0%9C2025-648%ED%98%B8%2C%202025.12.19.%29.hwpx?attach=1&amp;amp;knm=tfile.hwpx&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;★(공고문) 2026년도 중앙부처 및 지자체 창업지원사업 통합공고문(제2025-648호, 2025.12.19.).hwpx&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.46MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.k-startup.go.kr/web/s/k6dTtkF&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.k-startup.go.kr/web/s/k6dTtkF&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1772424470037&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;&amp;gt;K-Startup 창업지원포털&amp;gt;사업소개&amp;gt;2026년 창업지원사업 통합공고&quot; data-og-description=&quot;&amp;gt;K-Startup 창업지원포털&amp;gt;사업소개&amp;gt;2026년 창업지원사업 통합공고&quot; data-og-host=&quot;www.k-startup.go.kr&quot; data-og-source-url=&quot;https://www.k-startup.go.kr/web/s/k6dTtkF&quot; data-og-url=&quot;https://www.k-startup.go.kr/web/contents/webFSBIPBANC.do&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ki9a4/dJMb86nU1oy/K6wKkkyiDSduQktc2IlY21/img.jpg?width=359&amp;amp;height=250&amp;amp;face=0_0_359_250&quot;&gt;&lt;a href=&quot;https://www.k-startup.go.kr/web/s/k6dTtkF&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.k-startup.go.kr/web/s/k6dTtkF&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ki9a4/dJMb86nU1oy/K6wKkkyiDSduQktc2IlY21/img.jpg?width=359&amp;amp;height=250&amp;amp;face=0_0_359_250');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;&amp;gt;K-Startup 창업지원포털&amp;gt;사업소개&amp;gt;2026년 창업지원사업 통합공고&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;gt;K-Startup 창업지원포털&amp;gt;사업소개&amp;gt;2026년 창업지원사업 통합공고&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.k-startup.go.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>창업지원프로그램UP/자금&amp;amp;공간&amp;amp;융자</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/108</guid>
      <comments>https://0-1.kr/108#entry108comment</comments>
      <pubDate>Mon, 2 Mar 2026 13:08:03 +0900</pubDate>
    </item>
    <item>
      <title>모두의 간단엑셀계산기_V3</title>
      <link>https://0-1.kr/106</link>
      <description>&lt;script src=&quot;https://cdn.jsdelivr.net/npm/handsontable/dist/handsontable.full.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/lz-string/1.4.4/lz-string.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://tistory1.daumcdn.net/tistory/4330872/skin/images/sim_excel3.js&quot;&gt;&lt;/script&gt;
&lt;div&gt;
&lt;style&gt;
.mv10{margin:10px 0;padding:12px;border:2px solid #1e3a5f;border-radius:10px;background:#fff !important;font-family:'Malgun Gothic',sans-serif;clear:both;position:relative;}
.mv10-hd{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:7px;}
#mv10-grid{width:100% !important;height:480px !important;border:1px solid #ccc !important;}
.mb{padding:5px 9px;cursor:pointer;border:1px solid #ddd;border-radius:5px;background:#f1f5f9;font-weight:bold;font-size:11px;color:#333;white-space:nowrap;font-family:'Malgun Gothic',sans-serif;}
.mb:hover{opacity:.85;}
.mb-bl{background:#3b82f6 !important;color:#fff !important;border:none !important;}
.mb-gn{background:#16a34a !important;color:#fff !important;border:none !important;}
.mb-or{background:#ea580c !important;color:#fff !important;border:none !important;}
.mb-pu{background:#7c3aed !important;color:#fff !important;border:none !important;}
.mb-pk{background:#db2777 !important;color:#fff !important;border:none !important;}
.mb-ye{background:#d97706 !important;color:#fff !important;border:none !important;}
.mb-rd{background:#dc2626 !important;color:#fff !important;border:none !important;}
.mb-tl{background:#0d9488 !important;color:#fff !important;border:none !important;}
.mb-dk{background:#334155 !important;color:#fff !important;border:none !important;}
.msel{padding:4px 6px;border:2px solid #1e3a5f;border-radius:4px;font-weight:bold;font-size:11px;font-family:'Malgun Gothic',sans-serif;background:#fff;}
.mdiv{display:inline-block;width:1px;height:20px;background:#cbd5e1;margin:0 3px;vertical-align:middle;}
.mdd{position:relative;display:inline-block;}
.mddm{display:none;position:absolute;top:30px;left:0;background:#fff;border:1px solid #cbd5e1;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.2);z-index:99999;min-width:150px;padding:4px 0;}
.mddm.on{display:block !important;}
.mddm button{display:block;width:100%;padding:7px 14px;border:none;background:transparent;text-align:left;font-size:12px;font-weight:600;color:#1e293b;cursor:pointer;font-family:'Malgun Gothic',sans-serif;box-sizing:border-box;}
.mddm button:hover{background:#eff6ff;color:#2563eb;}
.mddm-s{height:1px;background:#e2e8f0;margin:3px 0;}
.mhint{font-size:11px;color:#1d4ed8;background:#eff6ff;border-left:3px solid #3b82f6;padding:4px 8px;margin-bottom:6px;border-radius:0 4px 4px 0;}
.handsontable td,.handsontable th{border:1px solid #d0d0d0 !important;height:24px !important;line-height:24px !important;background:#fff !important;vertical-align:middle !important;font-size:12px !important;font-family:'Malgun Gothic',sans-serif !important;}
.handsontable th{background:#f8fafc !important;font-weight:700 !important;color:#475569 !important;}
.mv10-full{position:fixed !important;top:0;left:0;width:100vw !important;height:100vh !important;z-index:99999;background:#fff;padding:12px;box-sizing:border-box;}
#mv10-mail-bg{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:999999;}
#mv10-mail-bg.on{display:flex !important;align-items:center;justify-content:center;}
.mv10-modal{background:#fff;border-radius:12px;padding:22px;width:90%;max-width:400px;box-shadow:0 20px 60px rgba(0,0,0,.3);font-family:'Malgun Gothic',sans-serif;}
.mv10-modal h3{font-size:15px;font-weight:700;margin:0 0 12px;color:#1e293b;}
.mv10-modal label{display:block;font-size:11px;font-weight:700;color:#64748b;margin-bottom:3px;}
.mv10-modal input,.mv10-modal textarea{display:block;width:100%;box-sizing:border-box;border:1.5px solid #e2e8f0;border-radius:6px;padding:6px 10px;font-size:13px;margin-bottom:9px;outline:none;font-family:'Malgun Gothic',sans-serif;}
.mv10-modal textarea{min-height:68px;resize:vertical;}
.mv10-mbtns{display:flex;gap:8px;}
.mv10-mbtns button{flex:1;height:34px;border:none;border-radius:6px;font-size:13px;font-weight:700;cursor:pointer;font-family:'Malgun Gothic',sans-serif;}
#mv10-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:#1e293b;color:#fff;padding:8px 20px;border-radius:30px;font-size:12px;font-weight:700;z-index:9999999;opacity:0;transition:all .25s;pointer-events:none;white-space:nowrap;font-family:'Malgun Gothic',sans-serif;}
#mv10-toast.on{transform:translateX(-50%) translateY(0);opacity:1;}
&lt;/style&gt;
&lt;div id=&quot;mv10-wrap&quot; class=&quot;mv10&quot;&gt;
&lt;div class=&quot;mv10-hd&quot;&gt;
&lt;b style=&quot;font-size:13px;color:#1e3a5f;&quot;&gt;  간단엑셀&lt;/b&gt;
&lt;span class=&quot;mdiv&quot;&gt;&lt;/span&gt;
&lt;div class=&quot;mdd&quot; id=&quot;mdd-r&quot;&gt;&lt;button class=&quot;mb mb-bl&quot; onclick=&quot;mDD('mdd-r')&quot;&gt;➕행 ▾&lt;/button&gt;&lt;div class=&quot;mddm&quot; id=&quot;mdd-r-m&quot;&gt;&lt;button onclick=&quot;mAddRow('b');mDDclose()&quot;&gt;↓ 아래 행 추가&lt;/button&gt;&lt;button onclick=&quot;mAddRow('a');mDDclose()&quot;&gt;↑ 위 행 추가&lt;/button&gt;&lt;div class=&quot;mddm-s&quot;&gt;&lt;/div&gt;&lt;button onclick=&quot;mDelRow();mDDclose()&quot;&gt;✕ 행 삭제&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class=&quot;mdd&quot; id=&quot;mdd-c&quot;&gt;&lt;button class=&quot;mb mb-bl&quot; onclick=&quot;mDD('mdd-c')&quot;&gt;➕열 ▾&lt;/button&gt;&lt;div class=&quot;mddm&quot; id=&quot;mdd-c-m&quot;&gt;&lt;button onclick=&quot;mAddCol('r');mDDclose()&quot;&gt;→ 오른쪽 열 추가&lt;/button&gt;&lt;button onclick=&quot;mAddCol('l');mDDclose()&quot;&gt;← 왼쪽 열 추가&lt;/button&gt;&lt;div class=&quot;mddm-s&quot;&gt;&lt;/div&gt;&lt;button onclick=&quot;mDelCol();mDDclose()&quot;&gt;✕ 열 삭제&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;
&lt;span class=&quot;mdiv&quot;&gt;&lt;/span&gt;
&lt;button class=&quot;mb mb-pu&quot; onclick=&quot;mMerge()&quot;&gt;  병합&lt;/button&gt;
&lt;button class=&quot;mb&quot; onclick=&quot;mUnmerge()&quot;&gt;↩ 해제&lt;/button&gt;
&lt;span class=&quot;mdiv&quot;&gt;&lt;/span&gt;
&lt;select id=&quot;mv10-fz&quot; class=&quot;msel&quot; onchange=&quot;mFz()&quot;&gt;&lt;option value=&quot;0&quot;&gt;  고정해제&lt;/option&gt;&lt;option value=&quot;1&quot; selected&gt;A열 고정&lt;/option&gt;&lt;option value=&quot;2&quot;&gt;B열 고정&lt;/option&gt;&lt;option value=&quot;3&quot;&gt;C열 고정&lt;/option&gt;&lt;option value=&quot;4&quot;&gt;D열 고정&lt;/option&gt;&lt;option value=&quot;5&quot;&gt;E열 고정&lt;/option&gt;&lt;/select&gt;
&lt;span class=&quot;mdiv&quot;&gt;&lt;/span&gt;
&lt;button id=&quot;mv10-fsbtn&quot; class=&quot;mb mb-ye&quot; onclick=&quot;mFs()&quot;&gt;  전체보기&lt;/button&gt;
&lt;span class=&quot;mdiv&quot;&gt;&lt;/span&gt;
&lt;button class=&quot;mb mb-gn&quot; onclick=&quot;mSave()&quot;&gt;  저장&lt;/button&gt;
&lt;button class=&quot;mb mb-bl&quot; onclick=&quot;mShare()&quot;&gt;  데이터전송&lt;/button&gt;
&lt;div class=&quot;mdd&quot; id=&quot;mdd-e&quot;&gt;&lt;button class=&quot;mb mb-or&quot; onclick=&quot;mDD('mdd-e')&quot;&gt;  내보내기 ▾&lt;/button&gt;&lt;div class=&quot;mddm&quot; id=&quot;mdd-e-m&quot;&gt;&lt;button onclick=&quot;mCSV();mDDclose()&quot;&gt;  엑셀(CSV) 저장&lt;/button&gt;&lt;div class=&quot;mddm-s&quot;&gt;&lt;/div&gt;&lt;button onclick=&quot;mPrint('landscape');mDDclose()&quot;&gt;  PDF 가로&lt;/button&gt;&lt;button onclick=&quot;mPrint('portrait');mDDclose()&quot;&gt;  PDF 세로&lt;/button&gt;&lt;/div&gt;&lt;/div&gt;
&lt;button class=&quot;mb mb-tl&quot; onclick=&quot;mGSheet()&quot;&gt;  구글시트&lt;/button&gt;
&lt;span class=&quot;mdiv&quot;&gt;&lt;/span&gt;
&lt;button class=&quot;mb mb-pk&quot; onclick=&quot;mMailOpen()&quot;&gt;  메일&lt;/button&gt;
&lt;button class=&quot;mb mb-rd&quot; onclick=&quot;mReset()&quot;&gt;  리셋&lt;/button&gt;
&lt;/div&gt;
&lt;div class=&quot;mhint&quot;&gt;  엑셀 복사 후 셀 클릭 → Ctrl+V 자동 분배 | 우클릭으로 행/열 추가·삭제 | Ctrl+S 저장&lt;/div&gt;
&lt;div id=&quot;mv10-grid&quot;&gt;&lt;/div&gt;
&lt;div style=&quot;margin-top:6px;font-size:11px;color:#999;&quot;&gt;* 우클릭으로 행 추가/삭제 | 열 경계 드래그로 너비 조절&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;mv10-mail-bg&quot;&gt;
&lt;div class=&quot;mv10-modal&quot;&gt;
&lt;h3&gt;  메일 발송&lt;/h3&gt;
&lt;label&gt;받는 사람&lt;/label&gt;&lt;input type=&quot;email&quot; id=&quot;mv10-to&quot; placeholder=&quot;example@email.com&quot;&gt;
&lt;label&gt;제목&lt;/label&gt;&lt;input type=&quot;text&quot; id=&quot;mv10-sub&quot; value=&quot;간단엑셀 데이터 공유&quot;&gt;
&lt;label&gt;내용&lt;/label&gt;&lt;textarea id=&quot;mv10-body&quot;&gt;안녕하세요, 데이터를 공유합니다.&lt;/textarea&gt;
&lt;div class=&quot;mv10-mbtns&quot;&gt;&lt;button style=&quot;background:#3b82f6;color:#fff;&quot; onclick=&quot;mMailSend()&quot;&gt;  발송&lt;/button&gt;&lt;button style=&quot;background:#e2e8f0;color:#333;&quot; onclick=&quot;mMailClose()&quot;&gt;취소&lt;/button&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;mv10-toast&quot;&gt;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>모두의계산기</category>
      <category>계산기</category>
      <category>모두의</category>
      <category>엑셀</category>
      <category>엑셀계산기</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/106</guid>
      <comments>https://0-1.kr/106#entry106comment</comments>
      <pubDate>Tue, 24 Feb 2026 23:37:48 +0900</pubDate>
    </item>
    <item>
      <title>모두의 편스토랑 레시피 모음</title>
      <link>https://0-1.kr/104</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
&lt;title&gt;모두의 편스토랑 레시피 모음&lt;/title&gt;
&lt;!-- ✅ 폰트 깨짐 방지: Google Fonts CDN으로 한국어 폰트 직접 로드 --&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.gstatic.com&quot; crossorigin&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700;900&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
/* ════════════════════════════════════════
     티스토리 붙여넣기 주의사항
   ① 티스토리 글쓰기 → [HTML] 탭 클릭
   ② 이 파일의 전체 내용을 Ctrl+A → Ctrl+C
   ③ 티스토리 HTML 탭에서 Ctrl+V
   ④ [기본] 탭으로 돌아와서 미리보기 확인
   ⑤ 폰트 깨짐 없이 정상 표시됩니다
   ════════════════════════════════════════ */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --bg: #f2f2f7;
  --card: #ffffff;
  --accent: #ff3b30;
  --orange: #ff9500;
  --green: #34c759;
  --blue: #007aff;
  --purple: #af52de;
  --pink: #ff2d55;
  --t1: #1c1c1e;
  --t2: #6c6c70;
  --t3: #aeaeb2;
  --sep: #e5e5ea;
  --r: 18px;
  --rs: 12px;
  --sh: 0 2px 20px rgba(0,0,0,0.08);
  --shs: 0 1px 8px rgba(0,0,0,0.06);
}

body {
  font-family: 'Noto Sans KR', -apple-system, BlinkMacSystemFont, 'Apple SD Gothic Neo', 'Malgun Gothic', sans-serif;
  background: var(--bg);
  color: var(--t1);
  -webkit-font-smoothing: antialiased;
}

/* ── HERO ── */
.py-hero {
  background: linear-gradient(145deg,#ff3b30 0%,#ff6535 45%,#ff9500 100%);
  padding: 56px 24px 72px;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.py-hero::before {
  content: ' ';
  position: absolute; font-size: 200px; opacity: .07;
  top: -30px; right: -30px; transform: rotate(20deg);
  pointer-events: none;
}
.py-hero::after {
  content: '';
  position: absolute; bottom: -1px; left: 0; right: 0;
  height: 40px; background: var(--bg);
  border-radius: 40px 40px 0 0;
}
.py-badge {
  display: inline-block;
  background: rgba(255,255,255,.22);
  backdrop-filter: blur(8px);
  color: #fff; font-size: 12px; font-weight: 700;
  letter-spacing: .08em; padding: 6px 16px;
  border-radius: 50px; margin-bottom: 14px;
  border: 1px solid rgba(255,255,255,.3);
}
.py-hero h1 {
  font-size: clamp(28px,7vw,42px); font-weight: 900;
  color: #fff; line-height: 1.15; margin-bottom: 10px;
  text-shadow: 0 2px 14px rgba(0,0,0,.15);
}
.py-hero p { font-size: 14px; color: rgba(255,255,255,.85); }

/* ── SEARCH ── */
.py-search-wrap {
  padding: 16px 20px 8px;
  position: sticky; top: 0; z-index: 100;
  background: var(--bg);
}
.py-search {
  display: flex; align-items: center; gap: 10px;
  background: var(--card); border-radius: 13px;
  padding: 13px 16px; box-shadow: var(--shs);
}
.py-search input {
  border: none; outline: none; font-family: inherit;
  font-size: 15px; color: var(--t1); flex: 1;
  background: transparent;
}
.py-search input::placeholder { color: var(--t3); }

/* ── FILTER CHIPS ── */
.py-filters {
  display: flex; gap: 8px;
  padding: 10px 20px 4px;
  overflow-x: auto; scrollbar-width: none;
}
.py-filters::-webkit-scrollbar { display: none; }
.py-chip {
  display: inline-flex; align-items: center; gap: 4px;
  background: var(--card); border: 1.5px solid var(--sep);
  border-radius: 50px; padding: 7px 14px;
  font-size: 13px; font-weight: 600; color: var(--t2);
  white-space: nowrap; cursor: pointer;
  transition: all .2s; box-shadow: var(--shs);
}
.py-chip.on, .py-chip:hover {
  background: var(--accent); border-color: var(--accent);
  color: #fff; box-shadow: 0 4px 14px rgba(255,59,48,.35);
}

/* ── STATS ── */
.py-stats {
  display: grid; grid-template-columns: repeat(3,1fr);
  gap: 12px; padding: 14px 20px 4px;
}
.py-stat {
  background: var(--card); border-radius: var(--rs);
  padding: 14px 8px; text-align: center;
  box-shadow: var(--shs);
}
.py-stat-n { font-size: 22px; font-weight: 900; color: var(--accent); }
.py-stat-l { font-size: 11px; color: var(--t3); margin-top: 2px; font-weight: 500; }

/* ── SECTION HEADER ── */
.py-sec {
  display: flex; align-items: center; gap: 10px;
  padding: 20px 20px 6px;
}
.py-sec-dot {
  width: 10px; height: 10px; border-radius: 50%;
  flex-shrink: 0;
}
.py-sec h2 { font-size: 19px; font-weight: 900; color: var(--t1); }
.py-sec-count {
  margin-left: auto;
  font-size: 12px; font-weight: 700;
  background: var(--bg); color: var(--t3);
  padding: 3px 10px; border-radius: 50px;
}

/* ── CARDS CONTAINER ── */
.py-cards {
  display: flex; flex-direction: column;
  gap: 14px; padding: 4px 20px 8px;
}

/* ── RECIPE CARD ── */
.py-card {
  background: var(--card);
  border-radius: var(--r);
  box-shadow: var(--sh);
  overflow: hidden;
  transition: transform .25s, box-shadow .25s;
  animation: pySlide .4s ease both;
}
.py-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 8px 30px rgba(0,0,0,.12);
}
@keyframes pySlide {
  from { opacity:0; transform: translateY(18px); }
  to   { opacity:1; transform: translateY(0); }
}

/* Card top bar */
.py-card-top {
  display: flex; align-items: center; gap: 12px;
  padding: 16px 18px 0;
}
.py-avatar {
  width: 44px; height: 44px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 20px; flex-shrink: 0;
  box-shadow: 0 2px 8px rgba(0,0,0,.15);
}
.py-chef-name { font-size: 13px; font-weight: 700; color: var(--t1); }
.py-ep { font-size: 11px; color: var(--t3); margin-top: 1px; }
.py-win { font-size: 11px; font-weight: 700; color: var(--orange); }

.py-dish {
  font-size: 20px; font-weight: 900; color: var(--t1);
  padding: 10px 18px 0; line-height: 1.3;
}
.py-div { height: 1px; background: var(--sep); margin: 13px 18px 0; }

/* Row blocks */
.py-row { padding: 12px 18px; border-bottom: 1px solid var(--sep); }
.py-row:last-of-type { border-bottom: none; }
.py-label {
  display: flex; align-items: center; gap: 6px;
  font-size: 10px; font-weight: 800; letter-spacing: .06em;
  color: var(--t3); text-transform: uppercase; margin-bottom: 8px;
}
.py-dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--accent); flex-shrink: 0;
}
.py-dot.g { background: var(--green); }
.py-dot.o { background: var(--orange); }
.py-dot.b { background: var(--blue); }

/* Ingredients */
.py-ings { display: flex; flex-wrap: wrap; gap: 7px; }
.py-ing {
  background: #fff1f0; color: #c0392b;
  font-size: 13px; font-weight: 500;
  border-radius: 8px; padding: 5px 10px;
  border: 1px solid rgba(255,59,48,.13);
}

/* Steps */
.py-steps { display: flex; flex-direction: column; gap: 9px; }
.py-step { display: flex; gap: 10px; align-items: flex-start; }
.py-snum {
  min-width: 24px; height: 24px;
  background: var(--accent); color: #fff;
  border-radius: 50%; font-size: 12px; font-weight: 800;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0; margin-top: 1px;
}
.py-stxt { font-size: 14px; line-height: 1.65; color: var(--t1); }

/* Tip */
.py-tip {
  background: linear-gradient(135deg,#fff9f0,#fff3e0);
  border-radius: 11px; padding: 12px 14px;
  font-size: 14px; line-height: 1.65; color: #7a4800;
  border-left: 3px solid var(--orange);
}
.py-tip::before { content: '  '; }

/* YouTube button */
.py-yt {
  display: flex; align-items: center; justify-content: center; gap: 8px;
  background: linear-gradient(135deg,#ff3b30,#ff0000);
  color: #fff; font-family: inherit; font-size: 14px; font-weight: 700;
  padding: 13px 20px; border-radius: 13px;
  text-decoration: none; margin: 4px 18px 16px;
  transition: all .2s;
  box-shadow: 0 4px 14px rgba(255,0,0,.3);
  border: none; cursor: pointer; width: calc(100% - 36px);
}
.py-yt:hover { transform: scale(1.02); box-shadow: 0 6px 20px rgba(255,0,0,.42); }
.py-yt svg { width: 20px; height: 20px; fill: #fff; flex-shrink: 0; }

/* ── FOOTER ── */
.py-footer {
  background: var(--card); text-align: center;
  padding: 28px 20px 40px;
  font-size: 12px; color: var(--t3);
  border-top: 1px solid var(--sep); margin-top: 12px;
}
.py-footer span { color: var(--accent); font-weight: 700; }

/* ── UTILS ── */
.hidden { display: none !important; }
.py-empty {
  text-align: center; padding: 40px 20px;
  font-size: 14px; color: var(--t3); display: none;
}

@media (min-width: 620px) {
  .py-cards, .py-stats, .py-search-wrap, .py-filters,
  .py-sec, .py-footer { max-width: 620px; margin-left: auto; margin-right: auto; }
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;!-- ★★★ HERO ★★★ --&gt;
&lt;div class=&quot;py-hero&quot;&gt;
  &lt;div class=&quot;py-badge&quot;&gt;  KBS 2TV · 매주 금요일 밤 8:30&lt;/div&gt;
  &lt;h1&gt;모두의&lt;br&gt;편스토랑 레시피&lt;/h1&gt;
  &lt;p&gt;시즌1·2 편셰프별 대표 레시피 완전 정리&lt;/p&gt;
&lt;/div&gt;

&lt;!-- ★★★ SEARCH ★★★ --&gt;
&lt;div class=&quot;py-search-wrap&quot;&gt;
  &lt;div class=&quot;py-search&quot;&gt;
    &lt;span style=&quot;font-size:16px;color:var(--t3)&quot;&gt; &lt;/span&gt;
    &lt;input type=&quot;text&quot; id=&quot;pySearch&quot; placeholder=&quot;요리명·요리사·재료 검색...&quot; oninput=&quot;pyFilter()&quot;&gt;
    &lt;span id=&quot;pyClear&quot; style=&quot;font-size:14px;color:var(--t3);cursor:pointer;display:none&quot; onclick=&quot;pyClearSearch()&quot;&gt;✕&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ★★★ FILTER CHIPS ★★★ --&gt;
&lt;div class=&quot;py-filters&quot;&gt;
  &lt;span class=&quot;py-chip on&quot; onclick=&quot;pySetChef('전체',this)&quot;&gt;  전체&lt;/span&gt;
  &lt;span class=&quot;py-chip&quot; onclick=&quot;pySetChef('류수영',this)&quot;&gt; ‍  류수영&lt;/span&gt;
  &lt;span class=&quot;py-chip&quot; onclick=&quot;pySetChef('이영자',this)&quot;&gt; ‍  이영자&lt;/span&gt;
  &lt;span class=&quot;py-chip&quot; onclick=&quot;pySetChef('이경규',this)&quot;&gt;  이경규&lt;/span&gt;
  &lt;span class=&quot;py-chip&quot; onclick=&quot;pySetChef('박솔미',this)&quot;&gt;  박솔미&lt;/span&gt;
  &lt;span class=&quot;py-chip&quot; onclick=&quot;pySetChef('이찬원',this)&quot;&gt;  이찬원&lt;/span&gt;
  &lt;span class=&quot;py-chip&quot; onclick=&quot;pySetChef('차예련',this)&quot;&gt;  차예련&lt;/span&gt;
&lt;/div&gt;

&lt;!-- ★★★ STATS ★★★ --&gt;
&lt;div class=&quot;py-stats&quot; style=&quot;max-width:620px;margin:0 auto&quot;&gt;
  &lt;div class=&quot;py-stat&quot;&gt;&lt;div class=&quot;py-stat-n&quot; id=&quot;pyStatN&quot;&gt;100&lt;/div&gt;&lt;div class=&quot;py-stat-l&quot;&gt;전체 레시피&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-stat&quot;&gt;&lt;div class=&quot;py-stat-n&quot;&gt;2019&lt;/div&gt;&lt;div class=&quot;py-stat-l&quot;&gt;방영 시작&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-stat&quot;&gt;&lt;div class=&quot;py-stat-n&quot;&gt;254+&lt;/div&gt;&lt;div class=&quot;py-stat-l&quot;&gt;방영 회차&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;!-- ══════════════════════════════════════
   ‍  류수영 (어남선생) 섹션
══════════════════════════════════════ --&gt;
&lt;div class=&quot;py-sec&quot;&gt;
  &lt;div class=&quot;py-sec-dot&quot; style=&quot;background:#ff3b30&quot;&gt;&lt;/div&gt;
  &lt;h2&gt;류수영 &lt;span style=&quot;font-weight:400;color:var(--t3)&quot;&gt;(어남선생)&lt;/span&gt;&lt;/h2&gt;
  &lt;div class=&quot;py-sec-count&quot; id=&quot;cnt-류수영&quot;&gt;20개&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;py-cards&quot; id=&quot;sec-류수영&quot;&gt;

&lt;!-- 류수영 1 --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;갈배제육볶음&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;
    &lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;
    &lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;1회 · 2019.10.25&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;갈배제육볶음  &lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;
    &lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;돼지 앞다리살 400g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;갈아만든 배 1캔&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고추장 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고춧가루 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참기름&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;대파&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;양파&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;
    &lt;div class=&quot;py-steps&quot;&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;돼지고기를 갈아만든 배에 30분 재워 연육&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;고추장·고춧가루·간장·설탕 섞어 양념 완성&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;재운 고기에 양념 버무려 20분 추가 숙성&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;달군 팬 양파 볶다 고기 넣고 센 불에 빠르게&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;대파·참기름·깨 넣고 마무리&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;
    &lt;div class=&quot;py-tip&quot;&gt;배 캔 1개가 연육제+단맛 동시 해결! 센 불 유지해야 물 안 생겨요.&lt;/div&gt;
  &lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+갈배제육볶음&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;!-- 류수영 2 --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;어남선생 떡볶이&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;
    &lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;
    &lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;5회 · 2019.11.22&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;어남선생 떡볶이&lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;
    &lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;밀떡 250g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;사각어묵 3장&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;대파 2대&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;물 600ml&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고춧가루 4T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 4T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;진간장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;굴소스 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고추장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;식용유 1T&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;
    &lt;div class=&quot;py-steps&quot;&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;고춧가루·설탕·간장·굴소스·고추장·식용유 섞어 양념장 만들기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;냄비에 대파 깔고 어묵 올린 뒤 물 600ml 붓기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;강불 1분 끓여 어묵 육수 우려내기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;밀떡 넣고 중불로 낮춰 1~2분, 양념장 투입&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;약불 10분 끓여 완성&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;
    &lt;div class=&quot;py-tip&quot;&gt;식용유 1T가 떡볶이집 진한 소스 색·농도의 비결! 고춧가루는 먼저 물에 불려야 색이 예뻐요.&lt;/div&gt;
  &lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+어남선생+떡볶이&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;!-- 류수영 3 --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;치치닭&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;
    &lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;
    &lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;19회 · 2020.02.28  편의점 출시&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;치치닭  &lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;
    &lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;닭다리살 500g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;모짜렐라 치즈 1컵&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;파인애플 통조림&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 4T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;굴소스 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;다진마늘 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;전분 2T&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;
    &lt;div class=&quot;py-steps&quot;&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;닭다리살 한입 크기로 잘라 간장·설탕·마늘 양념에 30분 재우기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;전분 묻혀 에어프라이어(200℃ 15분) or 팬에서 바삭하게 굽기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;파인애플·굴소스로 달콤짭짤 소스 만들어 졸이기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;구운 닭에 소스 버무리기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;모짜렐라 치즈 올려 녹이기 (치즈+치킨=치치닭!)&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;
    &lt;div class=&quot;py-tip&quot;&gt;파인애플 즙이 닭고기를 부드럽게 만들어줘요. 치즈는 불 끄고 잔열에 녹여야 타지 않아요.&lt;/div&gt;
  &lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+치치닭&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;!-- 류수영 4 --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;소고기 육전&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;
    &lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;
    &lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;25회 · 2020.04.10&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;소고기 육전&lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;
    &lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;육전용 소고기 400g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;찹쌀가루 1컵&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;달걀 3개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;진간장 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 1.5T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참기름 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;식용유&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;
    &lt;div class=&quot;py-steps&quot;&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;고기 칼끝으로 콕콕 찔러 간장·설탕·참기름으로 밑간 후 30분&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;달걀 잘 풀어두기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;고기에 찹쌀가루 앞뒤 묻히기 (일반 밀가루보다 바삭)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;달걀물 입혀 중불 팬에서 앞뒤 각 2분씩 노릇하게&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;키친타올에 올려 기름 빼기&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;
    &lt;div class=&quot;py-tip&quot;&gt;찹쌀가루 사용이 핵심! 더 바삭하고 쫀득해요. 밑간이 잘 배어야 고기가 부드럽고 맛있어요.&lt;/div&gt;
  &lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+소고기육전&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;!-- 류수영 5 --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;닭볶음탕&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;
    &lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;
    &lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;34회 · 2020.06.19&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;어남선생 닭볶음탕&lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;
    &lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;닭 한 마리 600g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;감자 2개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;양배추 1/4개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;양파 1개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;대파&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고추장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고춧가루 4T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;맛술 4T&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;
    &lt;div class=&quot;py-steps&quot;&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;닭을 찬물에 담가 핏물 제거 (30분)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;양념장(고추장·고춧가루·간장·설탕·맛술·마늘) 미리 만들기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;냄비에 닭, 감자, 양파 넣고 양념 붓고 물 자박하게&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;강불로 끓어오르면 중불 낮춰 20분 조리기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;양배추·대파 넣고 5분 더, 참기름 마무리&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;
    &lt;div class=&quot;py-tip&quot;&gt;양배추가 비결! 단맛과 식감을 동시에. 먹다 남은 국물에 라면 넣으면 2배 맛있어요.&lt;/div&gt;
  &lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+닭볶음탕&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;!-- 류수영 6 --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;스팸 케찹 파스타&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;
    &lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;
    &lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;42회 · 2020.08.14&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;스팸 케찹 파스타&lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;
    &lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;스파게티면 2인분&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;스팸 1/2캔&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;케찹 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;모짜렐라 치즈 1컵&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;다진마늘 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;버터 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;후추&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;
    &lt;div class=&quot;py-steps&quot;&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;끓는 소금물에 면 10분 삶기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;팬에 버터 녹여 스팸 깍둑썰어 볶기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;케찹·마늘 넣고 1분 볶다 삶은 면 투입&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;치즈 올려 녹이기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;후추 뿌려 마무리&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;
    &lt;div class=&quot;py-tip&quot;&gt;케찹+마늘이 의외의 황금 조합! 느끼하지 않고 새콤달콤해요. 면수 조금 추가하면 소스가 더 진해져요.&lt;/div&gt;
  &lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+스팸파스타&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;!-- 류수영 7 --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;고등어 무조림&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;
    &lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;
    &lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;58회 · 2020.12.04&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;고등어 무조림&lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;
    &lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;고등어 2마리&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;무 500g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;양파 1개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;대파 1대&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;홍고추 1개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 5T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고춧가루 4T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;굴소스 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;된장 1T&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;
    &lt;div class=&quot;py-steps&quot;&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;고등어 소금물+밀가루+식초에 20분 담가 비린내 제거&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;양념장(간54321법 - 간장5·고춧4·설탕3·굴소스2·식초1)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;냄비에 무 깔고 양념 2T+물 1L 붓기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;끓으면 거품 걷어내고 뚜껑 덮어 중불 15분&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;고등어 올리고 나머지 양념 끼얹으며 15분 더 조리기&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;
    &lt;div class=&quot;py-tip&quot;&gt;간설굴식 54321 외우면 평생 쓰는 양념 황금비율! 식초가 생선살을 탱탱하게 잡아줘요.&lt;/div&gt;
  &lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+고등어무조림&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;!-- 류수영 8 --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;순두부찌개&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;
    &lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;
    &lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;67회 · 2021.02.05&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;스팸 순두부찌개&lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;
    &lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;순두부 1팩&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;스팸 1/2캔&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;달걀 1개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고춧가루 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;다진마늘 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;국간장 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;새우젓 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;물 500ml&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;대파&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;
    &lt;div class=&quot;py-steps&quot;&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;냄비에 참기름 두르고 고춧가루·마늘 볶아 향 내기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;스팸 깍둑썰어 함께 볶기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;물 붓고 끓이다 순두부 넣기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;새우젓·국간장으로 간 맞추기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;달걀 넣고 대파 얹어 마무리&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;
    &lt;div class=&quot;py-tip&quot;&gt;스팸이 육수 역할까지! 별도 육수 없이도 깊은 맛이 나요. 새우젓으로 간을 맞춰야 깔끔해요.&lt;/div&gt;
  &lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+스팸순두부찌개&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;!-- 류수영 9 --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;양념게장&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;
    &lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;
    &lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;78회 · 2021.04.23&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;냉동꽃게 양념게장&lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;
    &lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;냉동 절단 꽃게 500g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 7T(45ml)&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고춧가루 4T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;식초 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;다진마늘 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;다진생강 0.5T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;대파&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;깨&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;
    &lt;div class=&quot;py-steps&quot;&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;냉동 꽃게 솔로 깨끗이 세척 (물에 담그지 않기)&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;식초물(물 75ml+식초 2T) 뿌려 5분 재운 뒤 물기 제거&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;양념장 모두 섞기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;게에 양념 골고루 버무리기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;냉장고에서 하루 이상 숙성 후 먹기&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;
    &lt;div class=&quot;py-tip&quot;&gt;식초물 뿌리면 비린내 제거 + 살이 탱글해져요! 식초물이 양념에 섞이지 않게 완전히 빼야 해요.&lt;/div&gt;
  &lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+양념게장&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;!-- 류수영 10 --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;15분 깍두기&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;
    &lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;
    &lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;89회 · 2021.07.09&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;15분 깍두기&lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;
    &lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;무 2kg&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;굵은소금 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고춧가루 6T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;배음료 1캔(238ml)&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;밀가루 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;굴소스 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;새우젓 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;다진마늘 4T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;대파&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;
    &lt;div class=&quot;py-steps&quot;&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;무 2~3cm 깍둑썰어 소금 2T 뿌려 1시간 절이기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;냄비에 밀가루·굴소스·설탕·배음료 섞어 강불로 걸쭉하게 끓여 배풀 만들기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;절인 무에 고춧가루 넣고 흔들어 섞기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;대파·새우젓·마늘·생강·배풀 모두 넣어 버무리기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;실온 24시간 후 냉장 1주일 숙성&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;
    &lt;div class=&quot;py-tip&quot;&gt;배음료가 갈아만든 배 역할! 따로 갈 필요 없어요. 배풀을 식혀서 넣어야 무가 물러지지 않아요.&lt;/div&gt;
  &lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+15분깍두기&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;!-- 류수영 11~20 간소화 버전 (재료/순서/팁 핵심만) --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;어묵볶이&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;
    &lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;
    &lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;101회 · 2021.10.22&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;매운 어묵볶이 (당장레시피)&lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;
    &lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;사각어묵 6장&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;대파 2대&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고춧가루 4T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고추장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;굴소스 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;진간장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;물 630ml&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;청양고추&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;
    &lt;div class=&quot;py-steps&quot;&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;팬에 고춧가루·설탕·간장·굴소스·고추장·물 100ml 넣고 섞기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;어묵 길게 반으로 잘라 양념에 넣기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;물 530ml 붓고 센 불로 끓이기&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;대파 넣고 중불로 5분&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;청양고추·통깨 올려 마무리&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;
    &lt;div class=&quot;py-tip&quot;&gt;양념장을 팬에 바로! 그릇 설거지 없이 초간단. 어묵을 길게 잘라 군만두 싸먹으면 꿀맛!&lt;/div&gt;
  &lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+어묵볶이+당장레시피&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;!-- 류수영 12 --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;또치닭&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;113회 · 2022.01.14  편의점 출시&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;또치닭  &lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;닭다리살 500g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;또띠아 2장&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;양배추&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;할라피뇨&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;사워크림&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고춧가루 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;마늘 1T&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;닭다리살 양념에 30분 재우기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;에어프라이어 200℃ 15분 또는 팬에서 바삭 굽기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;또띠아 위에 양배추 채 깔기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;구운 닭다리살 올리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;할라피뇨·사워크림 올리고 돌돌 말기&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;또띠아+닭=또치닭! 매콤한 양념 닭에 사워크림의 조화가 핵심. 할라피뇨는 취향껏 가감하세요.&lt;/div&gt;&lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+또치닭&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;!-- 류수영 13 --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;대파크림파스타&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;135회 · 2022.07.01  편의점 출시&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;대파크림파스타  &lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;스파게티면 2인분&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;대파 흰 부분 3대&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;생크림 200ml&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;우유 100ml&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;버터 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;파마산치즈&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;소금·후추&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;대파 흰 부분만 얇게 슬라이스해서 버터에 충분히 볶기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;생크림+우유 붓고 끓이기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;면 삶아 소스에 버무리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;파마산치즈 넣어 농도 맞추기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;소금·후추 간 후 대파 초록 부분 올려 마무리&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;대파를 충분히 볶아야 단맛이 나와요! 카라멜라이즈될 때까지 볶으면 깊은 맛의 비결.&lt;/div&gt;&lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+대파크림파스타&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;!-- 류수영 14 --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;어향치킨&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;158회 · 2022.12.30  편의점 출시&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;어향치킨  &lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;닭다리살 500g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;가지 1개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;두반장 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;식초 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;전분 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참기름&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;마늘·생강&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;닭 전분 묻혀 바삭하게 튀기거나 에어프라이어&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;가지 슬라이스해서 따로 볶기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;두반장+간장+식초+설탕으로 새콤달콤 어향 소스 만들기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;닭+가지 소스에 버무리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;참기름 뿌려 마무리&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;두반장이 어향의 핵심! 매콤하면서 새콤달콤한 중식 소스. 가지가 소스를 쫙 흡수해서 맛있어요.&lt;/div&gt;&lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+어향치킨&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;!-- 류수영 15~20 --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;갈비치킨&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;175회 · 2023.05.05&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;갈비치킨&lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;닭다리살 500g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;갈아만든 배 1캔&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 4T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참기름&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;마늘&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;깨&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;닭 배+간장+설탕+마늘에 1시간 재우기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;에어프라이어 190℃ 18분&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;남은 양념 졸여 소스 만들기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;구운 닭에 소스 발라 5분 더 굽기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;참기름·깨 마무리&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;배로 재워서 갈비집 치킨 맛! 마지막 소스 발라 굽는 단계가 윤기의 비결.&lt;/div&gt;&lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+갈비치킨&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;나폴리갈비덮밥&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;190회 · 2023.08.25  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;나폴리 갈비덮밥  &lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;갈비 500g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;토마토 소스 200ml&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;양파 1개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;마늘 5쪽&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;버터 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;바질&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;파마산치즈&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;밥 2공기&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;갈비 핏물 제거 후 소금·후추 밑간&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;팬에 버터로 갈비 시어링&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;양파·마늘 볶다 토마토 소스 넣어 약불 30분 조리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;갈비 살 발라내어 소스에 버무리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;밥 위에 올리고 치즈·바질로 마무리&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;한식 갈비에 이탈리안 토마토 소스의 퓨전! 약불에서 충분히 조려야 살이 부드럽게 발려요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+나폴리갈비덮밥&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;마라투움바&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;205회 · 2023.12.08  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;마라투움바  &lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;스파게티면 2인분&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;마라소스 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;생크림 150ml&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;새우 10마리&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;닭가슴살&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;버터 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;마늘&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;파마산치즈&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;새우·닭 버터에 볶기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;마라소스 넣고 1분 볶기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;생크림 넣고 크림소스 만들기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;삶은 면 버무리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;치즈 뿌려 마무리&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;마라+크림 조합이 의외로 찰떡! 마라소스 양으로 매운맛 조절하세요. 면수 조금 추가하면 더 부드러워요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+마라투움바&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;사치닭&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;218회 · 2024.03.15  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;사치닭  &lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;닭다리살 500g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;사천고추&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;화자오(화자오페퍼)&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;두반장 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;전분&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;마늘·생강&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;닭 전분 묻혀 바삭하게 튀기기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;팬에 기름 두르고 사천고추·화자오 볶아 향 내기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;두반장·마늘·생강 넣고 볶기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;간장·설탕 넣고 닭 버무리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;참기름 마무리&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;화자오가 입이 얼얼한 마라 느낌의 핵심! 없으면 사천 고추만 써도 OK. 사치(사천+치킨) 레시피!&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+사치닭&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;류수영&quot; data-dish=&quot;참치 비빔국수&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff3b30)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;류수영 (어남선생)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;232회 · 2024.06.28&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;참치 비빔국수&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;소면 2인분&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참치캔 1개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;오이 1/2개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고추장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;식초 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참기름&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;깨&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;소면 삶아 찬물에 헹구기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;고추장·식초·설탕·참기름 양념장 만들기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;기름 뺀 참치 넣어 버무리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;오이 채 썰어 올리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;달걀 프라이 올려 마무리&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;참치 기름을 꼭 빼야 깔끔! 오이 대신 무 채도 좋아요. 냉장고 재료만으로 5분 완성!&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+류수영+참치비빔국수&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;/div&gt;&lt;!-- /류수영 cards --&gt;

&lt;!-- ══════════════════════════════════════
   ‍  이영자 섹션
══════════════════════════════════════ --&gt;
&lt;div class=&quot;py-sec&quot;&gt;
  &lt;div class=&quot;py-sec-dot&quot; style=&quot;background:#af52de&quot;&gt;&lt;/div&gt;
  &lt;h2&gt;이영자 &lt;span style=&quot;font-weight:400;color:var(--t3)&quot;&gt;(먹대모)&lt;/span&gt;&lt;/h2&gt;
  &lt;div class=&quot;py-sec-count&quot; id=&quot;cnt-이영자&quot;&gt;10개&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;py-cards&quot; id=&quot;sec-이영자&quot;&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;이영자&quot; data-dish=&quot;매운 쌀밥&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#af52de,#ff2d55)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이영자 (먹대모)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;3회 · 2019.11.08  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;이영자 매운 쌀밥  &lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--purple)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;쌀밥 1공기&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;닭발 양념&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고추장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고춧가루 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;다진마늘&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;달걀&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참기름&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;닭발집 비법 매운 양념장 만들기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;팬에 밥 볶기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;양념 넣고 매콤하게 볶음밥 만들기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;달걀 프라이 올리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;참기름·깨 마무리&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;30년 단골 닭발집 레시피 전수! 이영자의 첫 우승작. 불맛 나도록 강불 볶기가 포인트.&lt;/div&gt;&lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이영자+매운쌀밥&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;이영자&quot; data-dish=&quot;궁중쫄면&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#af52de,#ff2d55)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이영자 (먹대모)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;116회 · 2022.02.25  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;궁중쫄면  &lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--purple)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;쫄면 사리 2인분&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;콩나물 300g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;차돌박이 80g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;납작만두 4개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고추장 1컵&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고춧가루 1/2컵&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;사과즙 1컵&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;물엿 7T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;트러플오일&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;양념장(고추장·고춧가루·간장·물엿·사과즙·식초) 믹서에 갈아 하루 숙성&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;콩나물 데치기, 쫄면 삶기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;차돌박이 강불 1분, 납작만두 약불 3분 굽기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;쫄면+콩나물+양념장 버무리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;트러플오일 두르고 차돌박이·만두 올리기&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;트러플오일이 궁중 격 UP! 없으면 참기름으로 대체. 양념장은 반드시 하루 숙성해야 맛이 달라요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이영자+궁중쫄면&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;이영자&quot; data-dish=&quot;불고기파전&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#af52de,#ff2d55)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이영자 (먹대모)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;20회 · 2020.03.06&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;이영자 불고기파전&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--purple)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;불고기용 소고기 200g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;대파 2대&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;부추 한 줌&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;부침가루 1컵&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;달걀 2개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참기름&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;불고기 간장·설탕에 10분 재우기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;부침가루+달걀+물로 반죽&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;팬에 기름 두르고 반죽 펴기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;대파·부추·불고기 올리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;뒤집어 노릇하게 굽기&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;이영자가 황신혜 추천 식당에서 전수받은 독특한 반죽 비법이 핵심! 반죽에 달걀 넣으면 더 고소해요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이영자+불고기파전&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;이영자&quot; data-dish=&quot;간장비빔면&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#af52de,#ff2d55)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이영자 (먹대모)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;20회 · 2020.03.06&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;간장비빔면&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--purple)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;중면 2인분&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참기름 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;다진마늘 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;오이&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;달걀&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;깨&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;간장·참기름·설탕·마늘 양념 만들기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;면 삶아 찬물에 헹구기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;양념에 면 버무리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;오이 채 썰어 올리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;달걀 반숙·깨 올려 완성&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;이영자가 감동받은 식당의 간장비빔면! 참기름을 아끼지 않는 것이 핵심. 면을 차갑게 해야 더 맛있어요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이영자+간장비빔면&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;이영자&quot; data-dish=&quot;명란크림파스타&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#af52de,#ff2d55)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이영자 (먹대모)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;55회 · 2020.11.13&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;이영자 명란크림파스타&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--purple)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;스파게티면 2인분&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;명란젓 50g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;생크림 200ml&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;버터 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;마늘 3쪽&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;파마산치즈&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;쪽파&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;명란 껍질 제거하고 알만 빼놓기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;버터+마늘 볶다 생크림 넣고 끓이기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;명란 넣고 약불에서 섞기 (절대 끓이지 않기)&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;삶은 면 버무리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;쪽파·치즈 올려 마무리&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;명란을 끓이면 익어서 식감이 달라져요! 불 끄고 잔열에 섞는 게 핵심. 고소하고 짭짤한 이탈리안 명란!&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이영자+명란크림파스타&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;!-- 이영자 6~10 간소형 --&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;이영자&quot; data-dish=&quot;영자삼합&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#af52de,#ff2d55)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이영자 (먹대모)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;21회 · 2020.03.13&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;영자삼합 (명란+돌게장+잡채)&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--purple)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;명란젓&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;돌게장&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;잡채&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;쌈채소&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참기름&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;깨&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;잡채 미리 만들어두기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;명란젓과 돌게장 준비&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;쌈채소에 세 가지 올려 한입에&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;이영자표 삼합! 세 가지 간이 어우러지면 밥 한 그릇 뚝딱. 명란은 구워서 곁들여도 맛있어요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이영자+영자삼합&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;이영자&quot; data-dish=&quot;꿀통삼겹살&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#af52de,#ff2d55)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이영자 (먹대모)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;38회 · 2020.07.17&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;이영자 꿀통삼겹살&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--purple)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;통삼겹살 500g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;꿀 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;마늘 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;후추&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;로즈마리&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;쌈채소&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;삼겹살 꿀+간장+마늘+후추에 30분 재우기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;오븐 200℃ 30분 또는 에어프라이어 굽기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;중간에 남은 마리네이드 발라주기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;노릇하게 구워지면 꺼내기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;쌈채소와 함께 서빙&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;꿀로 재운 삼겹살은 윤기+단맛이 살아나요! 마리네이드를 자주 발라줄수록 더 맛있어요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이영자+꿀통삼겹살&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;이영자&quot; data-dish=&quot;전복죽&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#af52de,#ff2d55)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이영자 (먹대모)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;70회 · 2021.02.26&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;이영자 전복죽&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--purple)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;전복 4마리&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;쌀 1컵&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참기름 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;국간장 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;소금&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;물 5컵&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;전복 솔로 깨끗이 닦아 내장 분리&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;참기름에 전복 내장 볶기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;불린 쌀 넣고 볶다 물 붓기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;전복 살 넣고 약불에서 20분&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;국간장·소금으로 간 맞추기&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;내장을 먼저 볶아야 녹색 색깔이 예쁘게 나와요! 전복살은 너무 오래 익히면 질겨지니 주의.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이영자+전복죽&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;이영자&quot; data-dish=&quot;고추참치김밥&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#af52de,#ff2d55)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이영자 (먹대모)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;82회 · 2021.05.21&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;이영자 고추참치김밥&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--purple)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;고추참치캔 2개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;밥 2공기&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;김 4장&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;달걀 2개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;오이&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참기름&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;소금&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;깨&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;밥에 참기름·소금·깨 넣고 간하기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;달걀 부쳐 길게 썰기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;고추참치 기름 빼기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;김 위에 밥 펴고 재료 올려 말기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;참기름 발라 마무리&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;고추참치캔만 있으면 끝! 양념 따로 필요 없는 초간단 김밥. 촉촉하게 먹으려면 김을 반으로 잘라 겹겹이 말기.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이영자+고추참치김밥&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;이영자&quot; data-dish=&quot;된장찌개&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#af52de,#ff2d55)&quot;&gt; ‍ &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이영자 (먹대모)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;100회 · 2021.10.08&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;이영자 된장찌개&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--purple)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;된장 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;두부 1/2모&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;애호박 1/2개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;감자 1개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;표고버섯&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;다시마 육수 3컵&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;청양고추&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;마늘&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;다시마+멸치로 육수 만들기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;감자·호박 썰어 육수에 넣기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;된장 풀어 끓이기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;두부·버섯 넣고 5분&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;청양고추·마늘 넣어 마무리&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;이영자표 된장은 육수가 생명! 다시마 육수를 넉넉히 우려야 깊은 맛이 나요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이영자+된장찌개&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;/div&gt;

&lt;!-- ══════════════════════════════════════
    이경규 섹션
══════════════════════════════════════ --&gt;
&lt;div class=&quot;py-sec&quot;&gt;
  &lt;div class=&quot;py-sec-dot&quot; style=&quot;background:#34c759&quot;&gt;&lt;/div&gt;
  &lt;h2&gt;이경규 &lt;span style=&quot;font-weight:400;color:var(--t3)&quot;&gt;(규든램지)&lt;/span&gt;&lt;/h2&gt;
  &lt;div class=&quot;py-sec-count&quot; id=&quot;cnt-이경규&quot;&gt;10개&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;py-cards&quot; id=&quot;sec-이경규&quot;&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;이경규&quot; data-dish=&quot;마장면&quot;&gt;
  &lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#34c759,#007aff)&quot;&gt; &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이경규 (규든램지)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;1회 · 2019.10.25   역대 첫 우승&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-dish&quot;&gt;마장면   역대 첫 우승&lt;/div&gt;
  &lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--green)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;중면 2인분&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;마라소스 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;식초 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;다진마늘&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;오이 채&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;숙주&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;땅콩&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;면 삶아 찬물에 헹구기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;마라소스·간장·식초·설탕·마늘로 양념장&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;숙주 데치기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;면에 양념 버무리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;오이채·숙주·땅콩 올려 완성&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
  &lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;편스토랑 역사적 첫 우승작! 마라의 얼얼함+새콤달콤 양념의 조화. 땅콩이 고소함을 더해요.&lt;/div&gt;&lt;/div&gt;
  &lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이경규+마장면&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;
&lt;/div&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;이경규&quot; data-dish=&quot;복돼지면&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#34c759,#007aff)&quot;&gt; &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이경규 (규든램지)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;30회 · 2020.05.15  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;복돼지면  &lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--green)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;라면 2개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;돼지고기 다짐육 150g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;돈골 분말 1팩&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;다대기&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;부추&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;달걀&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;대파&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;돼지고기 다짐육 삶아 육수 만들기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;돈골 분말 넣어 진한 국물 만들기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;라면 삶아 넣기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;부추·달걀·다대기 올리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;다대기로 매운맛 조절&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;라멘의 국밥 버전! 첫 밀키트 우승작. 다대기 없이 먹으면 느끼할 수 있으니 꼭 함께 먹어요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이경규+복돼지면&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;이경규&quot; data-dish=&quot;바질라면&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#34c759,#007aff)&quot;&gt; &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이경규 (규든램지)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;100회 · 2021.10.08   100회 특집&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;바질라면   100회 특집 우승&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--green)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;라면 1개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;바질페스토 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;파마산치즈&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;달걀&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;올리브오일&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;마늘&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;버터 1T&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;라면 삶아 물 적게 남기기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;버터+마늘 볶기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;바질페스토 넣고 면 버무리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;파마산치즈 뿌리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;달걀 반숙 올려 마무리&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;라면+이탈리안 바질의 파격 조합! 면물을 조금 남겨 소스 농도 맞추는 게 포인트. 100회 라면전쟁 우승!&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이경규+바질라면&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;이경규&quot; data-dish=&quot;김자반 비빔밥 라유장&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#34c759,#007aff)&quot;&gt; &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이경규 (규든램지)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;60회 · 2020.12.18  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;김자반 비빔밥 + 라유장  &lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--green)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;밥 2공기&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;김자반&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;양파 1/2&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;대파 2대&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;건표고버섯 10g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;건새우 10g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고추장·고춧가루&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장·참기름&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;오일 5T&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;양파·대파·표고·건새우 곱게 다지기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;오일에 중불로 다진 재료 볶기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;고추장·고춧가루·간장·설탕·참기름으로 라유장 완성&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;밥에 김자반+라유장 올리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;달걀 프라이 올려 비비기&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;라유장은 다른 요리에도 만능 소스! 센 불 금지—중불에서 천천히 볶아야 타지 않아요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이경규+김자반비빔밥+라유장&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;이경규&quot; data-dish=&quot;마늘면볶이&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#34c759,#007aff)&quot;&gt; &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이경규 (규든램지)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;22회 · 2020.03.20&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;마늘면볶이&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--green)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;라면 2개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;마늘 10쪽&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;버터 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;굴소스 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;쪽파&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참기름&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;라면 살짝 덜 삶아 건지기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;버터에 슬라이스 마늘 노릇하게 볶기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;간장·설탕·굴소스 넣기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;면 넣고 센 불에 볶기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;쪽파·참기름 마무리&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;마늘은 버터에서 노릇해질 때까지! 그래야 고소한 마늘향이 최대로. 면을 좀 덜 익혀야 볶을 때 안 풀려요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이경규+마늘면볶이&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;이경규&quot; data-dish=&quot;매운돈가스&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#34c759,#007aff)&quot;&gt; &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이경규 (규든램지)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;22회 · 2020.03.20&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;이경규 매운돈가스&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--green)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;돼지 등심 200g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;빵가루&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;달걀&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;밀가루&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고추장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;케찹 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;마늘&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;식용유&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;돼지 등심 두드려 얇게 펴기, 소금·후추 밑간&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;밀가루→달걀→빵가루 순서로 입히기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;170℃ 기름에 5분 튀기기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;고추장+케찹+마늘로 매운 소스 만들기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;돈가스 위에 소스 뿌려 완성&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;분식소년단도 인정한 레시피! 고추장+케찹 소스가 양식 돈가스를 한식으로 변신시켜요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이경규+매운돈가스&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;이경규&quot; data-dish=&quot;대왕돈가스&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#34c759,#007aff)&quot;&gt; &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이경규 (규든램지)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;45회 · 2020.09.04  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;대왕돈가스  &lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--green)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;돼지 목살 300g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;빵가루&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;달걀 2개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;밀가루&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;돈가스 소스&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;양배추 채&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;식용유&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;목살 칼집 넣어 크게 펴기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;밀가루→달걀→빵가루&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;160℃ 기름에 7분 튀기기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;200℃ 올려 마지막 1분 바삭하게&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;양배추 채·소스와 함께 서빙&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;이단 튀김이 핵심! 낮은 온도로 속 익히고 마지막에 고온으로 바삭함 완성. 이경규 10승 대표작.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이경규+대왕돈가스&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;이경규&quot; data-dish=&quot;오믈렛 토스트&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#34c759,#007aff)&quot;&gt; &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이경규 (규든램지)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;22회 · 2020.03.20&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;이경규 오믈렛 토스트&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--green)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;식빵 2장&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;달걀 3개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;치즈 2장&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;버터 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;케찹&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;소금·후추&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;달걀 풀어 소금·후추 간&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;버터 두른 팬에 스크램블 만들기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;식빵 위에 오믈렛 올리기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;치즈 올려 녹이기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;케찹 뿌려 완성&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;분식소년단도 먹고 감탄! 오믈렛은 촉촉하게 반숙으로. 치즈는 불 끄고 잔열에 녹여요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이경규+오믈렛토스트&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;py-card&quot; data-chef=&quot;이경규&quot; data-dish=&quot;달고나커피&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#34c759,#007aff)&quot;&gt; &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이경규 (규든램지)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;19회 · 2020.02.28&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;달고나커피&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--green)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;인스턴트커피 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;뜨거운 물 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;우유 1컵&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;얼음&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;커피:설탕:물 = 2:2:2 비율로 믹스&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;400회 이상 저어 크림 만들기 (또는 핸드믹서)&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;크림이 부드럽게 올라올 때까지&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;컵에 얼음+우유 넣기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;크림 올려 완성&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;마카오에서 정일우가 발견한 후 소개! 커피:설탕:물 = 1:1:1. 핸드믹서 쓰면 30초면 완성.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+달고나커피&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;/div&gt;

&lt;!-- ══════════════════════════════════════
    박솔미 /   이찬원 /   차예련 섹션
══════════════════════════════════════ --&gt;
&lt;div class=&quot;py-sec&quot;&gt;
  &lt;div class=&quot;py-sec-dot&quot; style=&quot;background:#ff9500&quot;&gt;&lt;/div&gt;
  &lt;h2&gt;박솔미 · 이찬원 · 차예련&lt;/h2&gt;
  &lt;div class=&quot;py-sec-count&quot; id=&quot;cnt-박솔미&quot;&gt;시즌2&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;py-cards&quot; id=&quot;sec-박솔미&quot;&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;박솔미&quot; data-dish=&quot;부미녀 오징어볶음&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff2d55)&quot;&gt; &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;박솔미 (부미녀)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;135회 · 2022.07.01&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;부미녀 오징어볶음&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;오징어 1마리&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고추장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고춧가루 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;물엿 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;양파&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;대파&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;청양고추&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;오징어 내장 제거, 칼집 넣어 한입 크기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;양념장 만들기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;팬에 양파 먼저 볶기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;오징어+양념장 센 불에 빠르게 볶기 (2~3분)&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;대파·참기름·깨 마무리&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;오징어는 센 불 2~3분이 전부! 오래 볶으면 고무처럼 질겨져요. 물엿이 윤기의 비결.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+박솔미+오징어볶음&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;박솔미&quot; data-dish=&quot;부미녀 뼈해장국&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff9500,#ff2d55)&quot;&gt; &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;박솔미 (부미녀)&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;148회 · 2022.10.07  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;부미녀 뼈해장국  &lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;돼지 등뼈 1kg&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;우거지 한 줌&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;들깻가루 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;된장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고춧가루 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;다진마늘 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;대파&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;소금&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;등뼈 찬물에 1시간 핏물 제거&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;끓는 물에 데쳐 잡내 제거&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;물 2L + 등뼈 넣고 1시간 이상 끓이기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;된장·고춧가루·마늘 넣기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;우거지+들깻가루 넣고 30분 더&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;들깻가루가 국물을 걸쭉하고 구수하게! 핏물 제거와 데치기 두 단계를 꼭 해야 잡내가 없어요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+박솔미+뼈해장국&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;이찬원&quot; data-dish=&quot;진또배기 맵싹갈비&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#007aff,#34c759)&quot;&gt; &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이찬원&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;140회 · 2022.08.12  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;진또배기 맵싹갈비   250만개 판매&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot b&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;갈비 (짧은 뼈) 500g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;동인동 매운찜갈비 양념&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고추장 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고춧가루 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;물엿 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;밥 2공기&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;옥수수 마요네즈&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;갈비 핏물 제거&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;대구 스타일 매운 찜갈비 양념에 1시간 재우기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;오븐 or 에어프라이어 180℃ 25분&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;갈비 살 발라내어 고추장 밥과 볶기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;삼각김밥 모양으로 만들어 옥수수마요 넣기&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;전국 편의점 250만개 판매 메가히트! 대구 동인동 스타일 매운맛+옥수수마요의 극적인 조화.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이찬원+진또배기맵싹갈비&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;이찬원&quot; data-dish=&quot;이찬원 해물탕&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#007aff,#34c759)&quot;&gt; &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;이찬원&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;155회 · 2022.12.09&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;이찬원 해물탕&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot b&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;꽃게 1마리&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;새우 8마리&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;홍합 한 줌&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;낙지 1마리&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고춧가루 4T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;고추장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;다진마늘 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;대파&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;다시마 육수&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;다시마 육수 끓이기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;고춧가루·고추장·간장·마늘로 양념장&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;육수에 양념 풀기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;꽃게·새우·홍합 넣고 끓이기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;낙지·대파 넣고 5분 더&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;이찬원이 직접 해산물 고르는 법부터 배워 만든 레시피! 낙지는 마지막에 넣어야 안 질겨요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+이찬원+해물탕&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;차예련&quot; data-dish=&quot;차예련 김치볶음밥&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff2d55,#af52de)&quot;&gt; &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;차예련&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;137회 · 2022.07.22  &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;차예련 김치볶음밥  &lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--pink)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;묵은지 1/2포기&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;밥 2공기&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참치캔 1개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참기름&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;버터 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;달걀 2개&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;치즈 2장&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;묵은지 꼭 짜서 송송 썰기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;버터에 김치 볶다 참치 넣기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;밥+간장 넣고 강불 볶기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;치즈 올려 녹이기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;달걀 프라이 올리고 참기름 마무리&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;묵은지가 핵심! 신김치의 산미가 볶음밥을 살려요. 김치 물기를 꼭 짜야 밥이 뭉치지 않아요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+차예련+김치볶음밥&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;div class=&quot;py-card&quot; data-chef=&quot;차예련&quot; data-dish=&quot;차예련 떡갈비&quot;&gt;&lt;div class=&quot;py-card-top&quot;&gt;&lt;div class=&quot;py-avatar&quot; style=&quot;background:linear-gradient(135deg,#ff2d55,#af52de)&quot;&gt; &lt;/div&gt;&lt;div&gt;&lt;div class=&quot;py-chef-name&quot;&gt;차예련&lt;/div&gt;&lt;div class=&quot;py-ep&quot;&gt;168회 · 2023.03.10&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-dish&quot;&gt;차예련 떡갈비&lt;/div&gt;&lt;div class=&quot;py-div&quot;&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot&quot; style=&quot;background:var(--pink)&quot;&gt;&lt;/span&gt;재료&lt;/div&gt;&lt;div class=&quot;py-ings&quot;&gt;&lt;span class=&quot;py-ing&quot;&gt;소고기 다짐육 300g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;돼지 다짐육 200g&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;두부 1/4모&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;간장 3T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;설탕 2T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;참기름 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;마늘 1T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;생강 0.5T&lt;/span&gt;&lt;span class=&quot;py-ing&quot;&gt;깨&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot g&quot;&gt;&lt;/span&gt;순서&lt;/div&gt;&lt;div class=&quot;py-steps&quot;&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;두부 으깨어 물기 꼭 짜기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;다짐육+두부+양념 모두 섞어 치대기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;동그랗게 빚어 냉장 30분&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;팬에 중불로 앞뒤 각 4분씩 굽기&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-step&quot;&gt;&lt;div class=&quot;py-snum&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;py-stxt&quot;&gt;남은 양념 발라 윤기 내기&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;py-row&quot;&gt;&lt;div class=&quot;py-label&quot;&gt;&lt;span class=&quot;py-dot o&quot;&gt;&lt;/span&gt;팁&lt;/div&gt;&lt;div class=&quot;py-tip&quot;&gt;두부가 촉촉함의 비결! 소:돼지 = 6:4 비율이 황금. 치댈수록 결이 좋아져요.&lt;/div&gt;&lt;/div&gt;&lt;a class=&quot;py-yt&quot; href=&quot;https://www.youtube.com/results?search_query=편스토랑+차예련+떡갈비&quot; target=&quot;_blank&quot;&gt;&lt;svg viewBox=&quot;0 0 24 24&quot;&gt;&lt;path d=&quot;M23.5 6.2a3 3 0 0 0-2.1-2.1C19.5 3.5 12 3.5 12 3.5s-7.5 0-9.4.6A3 3 0 0 0 .5 6.2C0 8.1 0 12 0 12s0 3.9.5 5.8a3 3 0 0 0 2.1 2.1c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2.1C24 15.9 24 12 24 12s0-3.9-.5-5.8zM9.8 15.5V8.5l6.2 3.5-6.2 3.5z&quot;/&gt;&lt;/svg&gt;유튜브 레시피 영상 보기&lt;/a&gt;&lt;/div&gt;

&lt;/div&gt;

&lt;!-- ══════════════════ EMPTY STATE ══════════════════ --&gt;
&lt;div class=&quot;py-empty&quot; id=&quot;pyEmpty&quot;&gt;
  &lt;div style=&quot;font-size:40px;margin-bottom:12px&quot;&gt; &lt;/div&gt;
  &lt;div&gt;검색 결과가 없어요.&lt;br&gt;다른 검색어로 시도해보세요!&lt;/div&gt;
&lt;/div&gt;

&lt;!-- ══════════════════════════════════════
    티스토리 HTML 붙여넣기 가이드
══════════════════════════════════════ --&gt;
&lt;div style=&quot;background:#fff;border-radius:18px;padding:24px;margin:16px 20px 0;box-shadow:0 2px 12px rgba(0,0,0,0.08);max-width:620px;margin-left:auto;margin-right:auto&quot;&gt;
  &lt;div style=&quot;font-size:16px;font-weight:900;color:#1c1c1e;margin-bottom:12px&quot;&gt;  티스토리 붙여넣기 방법&lt;/div&gt;
  &lt;div style=&quot;display:flex;flex-direction:column;gap:10px&quot;&gt;
    &lt;div style=&quot;display:flex;gap:10px;align-items:flex-start&quot;&gt;&lt;div style=&quot;min-width:24px;height:24px;background:#ff3b30;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;flex-shrink:0&quot;&gt;1&lt;/div&gt;&lt;div style=&quot;font-size:14px;line-height:1.6;color:#1c1c1e&quot;&gt;티스토리 글쓰기 페이지 열기&lt;/div&gt;&lt;/div&gt;
    &lt;div style=&quot;display:flex;gap:10px;align-items:flex-start&quot;&gt;&lt;div style=&quot;min-width:24px;height:24px;background:#ff3b30;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;flex-shrink:0&quot;&gt;2&lt;/div&gt;&lt;div style=&quot;font-size:14px;line-height:1.6;color:#1c1c1e&quot;&gt;오른쪽 상단 &lt;strong&gt;[HTML]&lt;/strong&gt; 탭 클릭&lt;/div&gt;&lt;/div&gt;
    &lt;div style=&quot;display:flex;gap:10px;align-items:flex-start&quot;&gt;&lt;div style=&quot;min-width:24px;height:24px;background:#ff3b30;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;flex-shrink:0&quot;&gt;3&lt;/div&gt;&lt;div style=&quot;font-size:14px;line-height:1.6;color:#1c1c1e&quot;&gt;이 HTML 파일 전체 &lt;strong&gt;Ctrl+A → Ctrl+C&lt;/strong&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;div style=&quot;display:flex;gap:10px;align-items:flex-start&quot;&gt;&lt;div style=&quot;min-width:24px;height:24px;background:#ff3b30;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;flex-shrink:0&quot;&gt;4&lt;/div&gt;&lt;div style=&quot;font-size:14px;line-height:1.6;color:#1c1c1e&quot;&gt;HTML 탭에서 &lt;strong&gt;Ctrl+V&lt;/strong&gt; 붙여넣기&lt;/div&gt;&lt;/div&gt;
    &lt;div style=&quot;display:flex;gap:10px;align-items:flex-start&quot;&gt;&lt;div style=&quot;min-width:24px;height:24px;background:#ff3b30;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;flex-shrink:0&quot;&gt;5&lt;/div&gt;&lt;div style=&quot;font-size:14px;line-height:1.6;color:#1c1c1e&quot;&gt;&lt;strong&gt;[기본]&lt;/strong&gt; 탭으로 돌아와 미리보기 확인 후 발행!&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div style=&quot;margin-top:14px;background:#fff1f0;border-radius:10px;padding:12px;font-size:13px;color:#c0392b;border-left:3px solid #ff3b30&quot;&gt;
      &lt;strong&gt;폰트 깨짐 주의:&lt;/strong&gt; 이 파일은 Google Fonts CDN으로 한국어 폰트(Noto Sans KR)를 불러와요. 인터넷 연결 상태에서 미리보기하면 폰트가 정상 표시됩니다.
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ══════════════════ FOOTER ══════════════════ --&gt;
&lt;div class=&quot;py-footer&quot;&gt;
    &lt;span&gt;신상출시 편스토랑&lt;/span&gt; · KBS 2TV 매주 금요일 밤 8:30&lt;br&gt;
  ✅ 시즌1(CU) · 시즌2(GS25) · 판매 수익금 → 결식아동 기부&lt;br&gt;
  &lt;span style=&quot;color:var(--t3)&quot;&gt;레시피 저작권은 해당 출연자 및 KBS에 있습니다&lt;/span&gt;
&lt;/div&gt;

&lt;!-- ══════════════════ JS ══════════════════ --&gt;
&lt;script&gt;
var activeChef = '전체';

function pySetChef(chef, el) {
  activeChef = chef;
  document.querySelectorAll('.py-chip').forEach(function(c){ c.classList.remove('on'); });
  el.classList.add('on');
  document.getElementById('pySearch').value = '';
  document.getElementById('pyClear').style.display = 'none';
  pyFilter();
}

function pyClearSearch() {
  document.getElementById('pySearch').value = '';
  document.getElementById('pyClear').style.display = 'none';
  pyFilter();
}

function pyFilter() {
  var q = document.getElementById('pySearch').value.trim().toLowerCase();
  document.getElementById('pyClear').style.display = q ? 'inline' : 'none';

  var cards = document.querySelectorAll('.py-card');
  var total = 0;
  var counts = {};

  cards.forEach(function(card) {
    var chef = card.dataset.chef || '';
    var dish = card.dataset.dish || '';
    var matchChef = (activeChef === '전체') || (chef === activeChef);
    var matchQ = !q || chef.toLowerCase().includes(q) || dish.toLowerCase().includes(q) || card.innerText.toLowerCase().includes(q);
    if (matchChef &amp;&amp; matchQ) {
      card.classList.remove('hidden');
      total++;
      counts[chef] = (counts[chef] || 0) + 1;
    } else {
      card.classList.add('hidden');
    }
  });

  document.getElementById('pyStatN').textContent = total;
  var empty = document.getElementById('pyEmpty');
  empty.style.display = (total === 0) ? 'block' : 'none';

  // Update section counts
  ['류수영','이영자','이경규'].forEach(function(chef) {
    var el = document.getElementById('cnt-' + chef);
    if (el) el.textContent = (counts[chef] || 0) + '개';
  });
}

// Init total count
(function(){ document.getElementById('pyStatN').textContent = document.querySelectorAll('.py-card').length; })();
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>레시피모음</category>
      <category>레시피</category>
      <category>요리</category>
      <category>편스토랑</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/104</guid>
      <comments>https://0-1.kr/104#entry104comment</comments>
      <pubDate>Sat, 21 Feb 2026 11:06:47 +0900</pubDate>
    </item>
    <item>
      <title>모두의 사진첩 책자 만들기_V1</title>
      <link>https://0-1.kr/100</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
&lt;title&gt;모두의 사진첩 책자 만들기&lt;/title&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Gmarket+Sans:wght@500;700&amp;family=Noto+Sans+KR:wght@300;400;500;700&amp;family=Noto+Serif+KR:wght@400;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
/* =====================================================
   모두의 사진첩 책자 만들기 v3
   window.PB 전역 / no all:initial / no 100vh / no sticky
   모든 클래스 pb_ 접두사 격리
===================================================== */
#pb-app {
  --w:    #ffffff;
  --g0:   #f7f9ff;
  --g1:   #f0f3fb;
  --g2:   #e4eaf6;
  --g3:   #d5ddef;
  --bd:   #c4ceea;
  --bd2:  #adbad8;
  --ac:   #3b6ef0;
  --acl:  #eaefff;
  --acm:  #b0c4ff;
  --ac2:  #d96b0a;
  --ac2l: #fff2e6;
  --ac3:  #0b8f5a;
  --ac3l: #e4f8f0;
  --ac3m: #65cda0;
  --pur:  #6530d0;
  --purl: #f0eaff;
  --red:  #d42e2e;
  --tx:   #16203c;
  --tx2:  #424f70;
  --tx3:  #8494b8;
  --sh:   0 2px 14px rgba(25,45,110,.09);
  --sh2:  0 6px 36px rgba(25,45,110,.14);
  --r:    14px;

  display: block; box-sizing: border-box;
  background: var(--g0); color: var(--tx);
  font-family: 'Noto Sans KR', sans-serif; font-size: 14px;
  border-radius: var(--r); overflow: hidden;
  width: 100%; border: 1.5px solid var(--bd);
  box-shadow: var(--sh2);
}
#pb-app *, #pb-app *::before, #pb-app *::after {
  box-sizing: border-box; margin: 0; padding: 0;
  font-family: 'Noto Sans KR', sans-serif;
}
#pb-app button { cursor: pointer; border: none; background: none; font-family: inherit; color: inherit; line-height: 1.4; }
#pb-app input, #pb-app select, #pb-app textarea { font-family: inherit; }

/* ════════════════════════
   헤더
════════════════════════ */
.pb_hdr {
  background: linear-gradient(135deg, #0f2258 0%, #1b3c8a 55%, #111e5a 100%);
  padding: 28px 30px 24px; position: relative; overflow: hidden;
}
.pb_hdr::before {
  content: ''; position: absolute; top: -60px; right: -60px;
  width: 260px; height: 260px;
  background: radial-gradient(circle, rgba(255,255,255,.07) 0%, transparent 65%);
  pointer-events: none;
}
.pb_hdr_row { display: flex; align-items: center; gap: 18px; position: relative; flex-wrap: wrap; }
.pb_hdr_icon { font-size: 46px; flex-shrink: 0; filter: drop-shadow(0 3px 10px rgba(0,0,0,.35)); }
.pb_hdr_info { flex: 1; min-width: 0; }
.pb_hdr_ttl {
  font-family: 'Gmarket Sans', sans-serif; font-size: 22px; font-weight: 700;
  color: #fff; display: block; margin-bottom: 5px;
  text-shadow: 0 2px 8px rgba(0,0,0,.3);
}
.pb_hdr_sub { font-size: 12px; color: rgba(255,255,255,.72); line-height: 1.7; }
.pb_hdr_badge {
  background: rgba(255,255,255,.13); border: 1px solid rgba(255,255,255,.22);
  border-radius: 20px; padding: 6px 16px; font-size: 11px;
  color: rgba(255,255,255,.92); font-weight: 600; white-space: nowrap; flex-shrink: 0;
}

/* ════════════════════════
   사용 설명서 배너 (접기/펼치기)
════════════════════════ */
.pb_guide {
  background: linear-gradient(135deg, #edf1ff 0%, #f5f7ff 100%);
  border-bottom: 1.5px solid var(--acm);
}
.pb_guide_hdr {
  display: flex; align-items: center; gap: 16px;
  padding: 20px 26px; cursor: pointer; user-select: none;
  transition: background .15s;
}
.pb_guide_hdr:hover { background: rgba(59,110,240,.05); }
.pb_guide_hdr_icon { font-size: 26px; flex-shrink: 0; }
.pb_guide_hdr_text { flex: 1; min-width: 0; }
.pb_guide_hdr_ttl {
  font-family: 'Gmarket Sans', sans-serif; font-size: 14px; font-weight: 700;
  color: var(--ac); display: block; margin-bottom: 3px;
}
.pb_guide_hdr_sub { font-size: 12px; color: var(--tx2); }
.pb_guide_arr {
  width: 32px; height: 32px; border-radius: 8px;
  background: var(--w); border: 1.5px solid var(--bd);
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; color: var(--tx3); flex-shrink: 0;
  transition: transform .22s;
}
.pb_guide_arr.open { transform: rotate(180deg); }

.pb_guide_body { display: none; padding: 0 26px 26px; }
.pb_guide_body.open { display: block; }
.pb_guide_grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(230px,1fr));
  gap: 14px; margin-top: 20px;
}
.pb_gcard {
  background: var(--w); border: 1.5px solid var(--bd);
  border-radius: 11px; padding: 18px 20px; box-shadow: var(--sh);
}
.pb_gcard_ttl {
  font-size: 13px; font-weight: 700; color: var(--ac);
  margin-bottom: 14px; padding-bottom: 10px;
  border-bottom: 1.5px solid var(--g2);
  display: flex; align-items: center; gap: 7px;
}
.pb_gcard ul { list-style: none; display: flex; flex-direction: column; gap: 9px; }
.pb_gcard li { font-size: 12px; color: var(--tx2); line-height: 1.7; padding-left: 16px; position: relative; }
.pb_gcard li::before { content: '›'; position: absolute; left: 3px; color: var(--ac2); font-weight: 700; font-size: 15px; top: -2px; }
.pb_gcard li b { color: var(--tx); font-weight: 700; }
.pb_guide_tip {
  margin-top: 18px; padding: 16px 20px;
  background: var(--ac3l); border: 1.5px solid var(--ac3m);
  border-radius: 11px; font-size: 12px; color: var(--tx2); line-height: 2.1;
}
.pb_guide_tip b { color: var(--ac3); font-weight: 700; }
.pb_guide_tip code {
  background: rgba(0,0,0,.07); padding: 2px 7px;
  border-radius: 4px; font-family: 'Courier New', monospace; font-size: 11px; color: var(--tx);
}

/* ════════════════════════
   4단계 스텝 바
════════════════════════ */
.pb_steps {
  background: var(--w); border-bottom: 2px solid var(--bd);
  display: flex; overflow-x: auto; scrollbar-width: none;
}
.pb_steps::-webkit-scrollbar { display: none; }

.pb_step {
  flex: 1; min-width: 0; display: flex; align-items: center; gap: 12px;
  padding: 22px 18px; border-bottom: 3px solid transparent; margin-bottom: -2px;
  color: var(--tx3); cursor: pointer; transition: all .15s; position: relative;
  border-right: 1px solid var(--g2);
}
.pb_step:last-child { border-right: none; }
.pb_step:hover { background: var(--g0); }
.pb_step.on {
  border-bottom-color: var(--ac); color: var(--tx);
  background: var(--acl);
}
.pb_step.done { color: var(--ac3); background: var(--ac3l); }
.pb_step.done:hover { background: #d0f5e8; }

.pb_snum {
  width: 34px; height: 34px; border-radius: 50%; flex-shrink: 0;
  background: var(--g2); color: var(--tx3);
  font-family: 'Gmarket Sans', sans-serif; font-size: 14px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  transition: all .15s; border: 2px solid transparent;
}
.pb_step.on .pb_snum {
  background: var(--ac); color: #fff;
  border-color: var(--acm); box-shadow: 0 3px 12px rgba(59,110,240,.35);
}
.pb_step.done .pb_snum { background: var(--ac3); color: #fff; border-color: var(--ac3m); }

.pb_step_info { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.pb_step_title {
  font-size: 13px; font-weight: 700; color: var(--tx2); white-space: nowrap;
  overflow: hidden; text-overflow: ellipsis;
}
.pb_step_hint { font-size: 10px; color: var(--tx3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pb_step.on .pb_step_title { color: var(--ac); }
.pb_step.on .pb_step_hint { color: var(--acm); }
.pb_step.done .pb_step_title { color: var(--ac3); }
.pb_step.done .pb_step_hint { color: var(--ac3m); }

/* ════════════════════════
   콘텐츠 영역
════════════════════════ */
.pb_body { padding: 36px 32px 50px; }
.pb_sec { display: none; }
.pb_sec.on { display: block; }

.pb_stitle {
  font-family: 'Gmarket Sans', sans-serif; font-size: 21px; font-weight: 700;
  color: var(--tx); margin-bottom: 12px;
  display: flex; align-items: center; gap: 11px;
}
.pb_ssub {
  font-size: 13px; color: var(--tx2); line-height: 2.1; margin-bottom: 32px;
  padding: 16px 20px; background: var(--g1); border-radius: 11px;
  border-left: 4px solid var(--acm);
}
.pb_ssub strong { color: var(--tx); font-weight: 700; }

/* ════════════════════════
   업로드 영역
════════════════════════ */
.pb_drop {
  border: 2.5px dashed var(--bd2); border-radius: var(--r);
  padding: 64px 24px; text-align: center; cursor: pointer;
  background: var(--g1); transition: all .15s; position: relative;
}
.pb_drop:hover, .pb_drop.over { border-color: var(--ac); background: var(--acl); }
.pb_drop input[type=file] {
  position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%;
}
.pb_drop_icon { font-size: 60px; display: block; margin-bottom: 16px; }
.pb_drop_ttl {
  font-family: 'Gmarket Sans', sans-serif; font-size: 18px; font-weight: 700;
  color: var(--tx2); margin-bottom: 8px;
}
.pb_drop_sub { font-size: 12px; color: var(--tx3); margin-bottom: 22px; line-height: 1.8; }
.pb_sel_btn {
  display: inline-flex; align-items: center; gap: 9px;
  padding: 14px 32px; border-radius: 11px;
  background: var(--ac); color: #fff; font-size: 15px; font-weight: 700;
  box-shadow: 0 4px 16px rgba(59,110,240,.32); transition: all .15s;
  position: relative; z-index: 1;
}
.pb_sel_btn:hover { transform: translateY(-2px); box-shadow: 0 6px 22px rgba(59,110,240,.42); }

.pb_photo_hdr {
  display: flex; align-items: center; justify-content: space-between;
  margin-top: 30px; margin-bottom: 16px; flex-wrap: wrap; gap: 10px;
}
.pb_pcnt { font-size: 14px; color: var(--tx2); font-weight: 700; }
.pb_pacts { display: flex; gap: 8px; flex-wrap: wrap; }
.pb_grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px,1fr)); gap: 12px; }

.pb_pcard {
  position: relative; aspect-ratio: 1; border-radius: 10px; overflow: hidden;
  border: 1.5px solid var(--bd); background: var(--g2); cursor: grab;
  transition: all .14s; box-shadow: var(--sh);
}
.pb_pcard:hover { transform: translateY(-3px); box-shadow: var(--sh2); border-color: var(--acm); }
.pb_pcard img { width: 100%; height: 100%; object-fit: cover; display: block; pointer-events: none; }
.pb_pcard .pb_xbtn {
  position: absolute; top: 6px; right: 6px;
  width: 26px; height: 26px; border-radius: 50%;
  background: rgba(0,0,0,.68); color: #fff; font-size: 12px;
  display: flex; align-items: center; justify-content: center;
  opacity: 0; transition: opacity .13s;
}
.pb_pcard:hover .pb_xbtn { opacity: 1; }
.pb_pcard .pb_pnum {
  position: absolute; bottom: 6px; left: 7px;
  background: rgba(0,0,0,.62); color: #fff; font-size: 9px; font-weight: 700;
  padding: 2px 7px; border-radius: 8px;
}
.pb_pcard .pb_pdate {
  position: absolute; bottom: 6px; right: 7px;
  background: rgba(0,0,0,.52); color: #fff; font-size: 8px;
  padding: 2px 6px; border-radius: 6px;
}
.pb_pcard.dragging { opacity: .35; border: 2px dashed var(--ac); }
.pb_pcard.dragover { outline: 2px solid var(--ac3); transform: scale(1.05); }

/* ════════════════════════
   설정 카드
════════════════════════ */
.pb_cfg_grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 26px; }
@media(max-width:580px){ .pb_cfg_grid { grid-template-columns: 1fr; } }

.pb_card {
  background: var(--w); border: 1.5px solid var(--bd);
  border-radius: var(--r); padding: 24px 26px; box-shadow: var(--sh);
}
.pb_ctitle {
  font-size: 14px; font-weight: 700; color: var(--tx);
  margin-bottom: 18px; padding-bottom: 12px;
  border-bottom: 1.5px solid var(--g2);
  display: flex; align-items: center; gap: 8px;
}
.pb_lbl { font-size: 12px; color: var(--tx2); font-weight: 700; margin-bottom: 9px; display: block; letter-spacing: .3px; }

/* 판형 버튼 */
.pb_fmt_row { display: grid; grid-template-columns: repeat(3,1fr); gap: 9px; }
.pb_fmtbtn {
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  padding: 14px 8px; border-radius: 10px;
  border: 1.5px solid var(--bd); background: var(--g0); cursor: pointer; transition: all .13s;
}
.pb_fmtbtn:hover { border-color: var(--ac); background: var(--acl); }
.pb_fmtbtn.on { border-color: var(--ac); background: var(--acl); }
.pb_fmtico { font-size: 30px; }
.pb_fmtnm { font-size: 11px; font-weight: 700; color: var(--tx2); }
.pb_fmtsz { font-size: 9px; color: var(--tx3); }
.pb_fmtbtn.on .pb_fmtnm { color: var(--ac); }

/* 슬라이더 */
.pb_sl_wrap { margin-bottom: 20px; }
.pb_sl_row { display: flex; align-items: center; gap: 12px; }
.pb_sl {
  flex: 1; -webkit-appearance: none; appearance: none;
  height: 6px; border-radius: 3px; background: var(--g3); outline: none; cursor: pointer;
}
.pb_sl::-webkit-slider-thumb {
  -webkit-appearance: none; width: 20px; height: 20px; border-radius: 50%;
  background: var(--ac); border: 2.5px solid #fff;
  box-shadow: 0 2px 8px rgba(59,110,240,.35); cursor: pointer;
}
.pb_sl::-moz-range-thumb {
  width: 20px; height: 20px; border-radius: 50%;
  background: var(--ac); border: 2.5px solid #fff; cursor: pointer;
}
.pb_slv { min-width: 48px; text-align: right; font-size: 13px; font-weight: 700; color: var(--ac); font-family: 'Courier New', monospace; }
.pb_slhint { font-size: 11px; color: var(--tx3); margin-top: 7px; }

/* 토글 */
.pb_tog_row { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.pb_tog {
  position: relative; width: 46px; height: 26px;
  background: var(--g3); border-radius: 13px; cursor: pointer;
  transition: background .15s; flex-shrink: 0;
}
.pb_tog.on { background: var(--ac3); }
.pb_tog::after {
  content: ''; position: absolute; top: 3px; left: 3px;
  width: 20px; height: 20px; border-radius: 50%;
  background: #fff; transition: transform .15s;
  box-shadow: 0 1px 5px rgba(0,0,0,.22);
}
.pb_tog.on::after { transform: translateX(20px); }
.pb_toglbl { font-size: 13px; color: var(--tx2); font-weight: 500; }

/* 레이아웃 선택 */
.pb_lay_row { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.pb_laybtn {
  display: flex; flex-direction: column; align-items: center; gap: 6px;
  padding: 14px 8px; border-radius: 10px;
  border: 1.5px solid var(--bd); background: var(--g0);
  cursor: pointer; transition: all .13s; font-size: 11px; color: var(--tx2); font-weight: 600;
}
.pb_laybtn:hover { border-color: var(--ac); background: var(--acl); }
.pb_laybtn.on { border-color: var(--ac); background: var(--acl); color: var(--ac); }
.pb_layico { font-size: 24px; }

/* 텍스트 입력 */
.pb_inp {
  width: 100%; padding: 11px 14px; border-radius: 8px;
  border: 1.5px solid var(--bd); background: var(--g0);
  color: var(--tx); font-size: 13px; outline: none;
  caret-color: var(--ac); transition: all .13s; margin-bottom: 10px;
}
.pb_inp:focus { border-color: var(--ac); background: var(--w); box-shadow: 0 0 0 3px rgba(59,110,240,.10); }
.pb_inp::placeholder { color: var(--tx3); }
.pb_inp:last-child { margin-bottom: 0; }

/* 캡션 그리드 */
.pb_cap_grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px,1fr)); gap: 14px; }
.pb_cap_item { display: flex; flex-direction: column; gap: 7px; }
.pb_cap_thumb { width: 100%; height: 90px; object-fit: cover; border-radius: 8px; border: 1px solid var(--bd); display: block; }

/* ════════════════════════
   미리보기 (책 넘기기)
════════════════════════ */
.pb_viewer_bg {
  background: linear-gradient(160deg, #0c1730 0%, #122040 40%, #0b1d38 100%);
  border-radius: var(--r); padding: 44px 20px 32px; position: relative; overflow: hidden;
}
.pb_viewer_bg::before {
  content: ''; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(ellipse 60% 40% at 20% 60%, rgba(59,110,240,.12) 0%, transparent 60%),
              radial-gradient(ellipse 40% 60% at 80% 30%, rgba(255,180,80,.07) 0%, transparent 60%);
}
.pb_viewer_bg::after {
  content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 44px;
  background: linear-gradient(to top, rgba(0,0,0,.3), transparent); pointer-events: none;
}

.pb_book_wrap { display: flex; justify-content: center; align-items: center; position: relative; z-index: 1; }
.pb_book { display: flex; align-items: stretch; position: relative; perspective: 2000px; transform-style: preserve-3d; }

.pb_book_shadow {
  position: absolute; bottom: -20px; left: 8%; right: 8%; height: 32px;
  background: rgba(0,0,0,.42); filter: blur(16px); border-radius: 50%; z-index: 0;
}

.pb_spine {
  width: 14px;
  background: linear-gradient(to right, #8a92a8, #c0c8d8 40%, #d8dde8 60%, #9aa2b8);
  flex-shrink: 0; position: relative; z-index: 3;
  box-shadow: 2px 0 8px rgba(0,0,0,.15), -2px 0 8px rgba(0,0,0,.10);
}

.pb_pg {
  background: var(--w); overflow: hidden; position: relative; transition: box-shadow .3s;
}
.pb_pg_left  { border-radius: 6px 0 0 6px; box-shadow: -4px 0 18px rgba(0,0,0,.28), inset -8px 0 18px rgba(0,0,0,.06); }
.pb_pg_right { border-radius: 0 6px 6px 0; box-shadow: 4px 0 18px rgba(0,0,0,.22), inset 8px 0 18px rgba(0,0,0,.04); }

@keyframes pb_ff  { from{transform:rotateY(0);transform-origin:left center;} to{transform:rotateY(-180deg);transform-origin:left center;} }
@keyframes pb_fb  { from{transform:rotateY(-180deg);transform-origin:left center;} to{transform:rotateY(0);transform-origin:left center;} }
.pb_pg.aff { animation:pb_ff .48s cubic-bezier(.4,0,.2,1) forwards; transform-style:preserve-3d; }
.pb_pg.afb { animation:pb_fb .48s cubic-bezier(.4,0,.2,1) forwards; transform-style:preserve-3d; }

.pb_pg_inner { width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden; }
.pb_pg_imgs_1 { flex:1; } .pb_pg_imgs_1 img { width:100%;height:100%;object-fit:cover;display:block; }
.pb_pg_imgs_2 { flex:1;display:grid;grid-template-rows:1fr 1fr;gap:2px; } .pb_pg_imgs_2 img { width:100%;height:100%;object-fit:cover;display:block; }
.pb_pg_imgs_4 { flex:1;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:2px; } .pb_pg_imgs_4 img { width:100%;height:100%;object-fit:cover;display:block; }
.pb_pg_caption { padding:9px 13px; font-family:'Noto Serif KR',serif; font-size:10px; color:var(--tx2); line-height:1.7; text-align:center; background:var(--g0); border-top:1px solid var(--g2); flex-shrink:0; }
.pb_pg_num { position:absolute;bottom:8px;font-size:9px;color:var(--tx3);font-style:italic; }
.pb_pg_num.l { left:13px; }
.pb_pg_num.r { right:13px; }

.pb_cover_inner { width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:22px;text-align:center;gap:12px; }
.pb_cover_inner.front { background:linear-gradient(160deg,#0c2868,#1a469e,#0c2868); }
.pb_cover_inner.back  { background:linear-gradient(160deg,#1a469e,#0c2868); }
.pb_cov_ico { font-size:38px; }
.pb_cov_ttl { font-family:'Noto Serif KR',serif; color:#fff; font-weight:700; line-height:1.35; }
.pb_cov_sub { font-size:11px; color:rgba(255,255,255,.72); }
.pb_cov_auth { font-size:10px; color:rgba(255,255,255,.52); }
.pb_cov_line { width:44px;height:2px;background:rgba(255,255,255,.3);border-radius:2px; }
.pb_blank_pg { background:var(--g0);display:flex;align-items:center;justify-content:center; }

.pb_ctrl {
  display:flex;align-items:center;justify-content:space-between;
  margin-top:22px;position:relative;z-index:2;flex-wrap:wrap;gap:12px;
}
.pb_navbtn {
  display:flex;align-items:center;gap:9px;padding:13px 24px;
  border-radius:11px;border:1.5px solid rgba(255,255,255,.2);
  background:rgba(255,255,255,.1);color:rgba(255,255,255,.88);
  font-size:14px;font-weight:600;transition:all .15s;backdrop-filter:blur(8px);
}
.pb_navbtn:hover:not(:disabled) { background:rgba(255,255,255,.2);border-color:rgba(255,255,255,.38);transform:translateY(-1px); }
.pb_navbtn:disabled { opacity:.3;cursor:not-allowed; }
.pb_pginfo { font-family:'Gmarket Sans',sans-serif;font-size:14px;color:rgba(255,255,255,.72);font-weight:500; }
.pb_dots { display:flex;gap:7px;justify-content:center;margin-top:16px;position:relative;z-index:2;flex-wrap:wrap; }
.pb_dot { width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.25);cursor:pointer;transition:all .15s; }
.pb_dot.on { background:rgba(255,255,255,.88);transform:scale(1.3); }

/* ════════════════════════
   PDF 내보내기
════════════════════════ */
.pb_exp_wrap { display:flex;justify-content:center; }
.pb_exp_card {
  max-width:480px;width:100%;background:var(--w);
  border:1.5px solid var(--bd);border-radius:var(--r);
  padding:36px 30px;box-shadow:var(--sh);text-align:center;
}
.pb_exp_ico { font-size:58px;display:block;margin-bottom:16px; }
.pb_exp_ttl { font-family:'Gmarket Sans',sans-serif;font-size:20px;font-weight:700;color:var(--tx);margin-bottom:9px; }
.pb_exp_desc { font-size:13px;color:var(--tx2);line-height:1.9;margin-bottom:26px; }
.pb_info_grid { display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:24px;text-align:left; }
.pb_info_item { background:var(--g1);border:1px solid var(--bd);border-radius:10px;padding:13px 15px; }
.pb_info_lbl { font-size:9px;color:var(--tx3);font-weight:700;letter-spacing:.7px;display:block;margin-bottom:4px;text-transform:uppercase; }
.pb_info_val { font-size:15px;font-weight:700;color:var(--tx); }
.pb_pdf_btn {
  width:100%;padding:18px;border-radius:12px;
  background:linear-gradient(135deg,#0d8644,#096632);
  border:2px solid #18b55a;color:#fff;
  font-size:16px;font-weight:700;
  display:flex;align-items:center;justify-content:center;gap:11px;
  box-shadow:0 4px 20px rgba(13,134,68,.3);transition:all .15s;margin-bottom:14px;
}
.pb_pdf_btn:hover:not(:disabled) { transform:translateY(-2px);box-shadow:0 8px 28px rgba(13,134,68,.42); }
.pb_pdf_btn:disabled { opacity:.45;cursor:not-allowed;transform:none;box-shadow:none; }
.pb_prog_wrap { width:100%;margin-top:18px;display:none; }
.pb_prog_wrap.on { display:block; }
.pb_prog_bar { width:100%;height:8px;background:var(--g2);border-radius:4px;overflow:hidden;margin-bottom:8px; }
.pb_prog_fill { height:100%;background:linear-gradient(90deg,var(--ac3),var(--ac));border-radius:4px;transition:width .3s;width:0; }
.pb_prog_txt { font-size:12px;color:var(--tx2);text-align:center;font-weight:600; }
.pb_pdf_note { font-size:11px;color:var(--tx3);line-height:2.1;margin-top:16px;text-align:left; }

/* ════════════════════════
   하단 네비게이션 버튼 (크게, 눈에 띄게)
════════════════════════ */
.pb_nav_row {
  display: flex; align-items: stretch; gap: 12px;
  margin-top: 40px; padding-top: 28px;
  border-top: 2px solid var(--g2);
}
.pb_nav_prev {
  display: flex; align-items: center; gap: 10px;
  padding: 16px 24px; border-radius: 12px;
  border: 2px solid var(--bd2); background: var(--w);
  color: var(--tx2); font-size: 14px; font-weight: 600;
  transition: all .15s; white-space: nowrap;
}
.pb_nav_prev:hover { border-color: var(--tx2); color: var(--tx); background: var(--g1); }
.pb_nav_next {
  flex: 1; display: flex; align-items: center; justify-content: center; gap: 12px;
  padding: 18px 28px; border-radius: 12px;
  background: linear-gradient(135deg, var(--ac), #2856d4);
  border: 2px solid var(--acm); color: #fff;
  font-size: 16px; font-weight: 700;
  box-shadow: 0 4px 18px rgba(59,110,240,.32); transition: all .15s;
  white-space: nowrap;
}
.pb_nav_next:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 8px 28px rgba(59,110,240,.42); }
.pb_nav_next:disabled { opacity: .4; cursor: not-allowed; transform: none; box-shadow: none; }
.pb_nav_next_icon { font-size: 22px; }
.pb_nav_next_text { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.pb_nav_next_label { font-size: 16px; font-weight: 700; line-height: 1; }
.pb_nav_next_sub { font-size: 11px; font-weight: 400; opacity: .82; }

/* 공통 소형 버튼 */
.pb_btn {
  padding: 10px 18px; border-radius: 9px; border: 1.5px solid var(--bd);
  background: var(--w); color: var(--tx2); font-size: 12px; font-weight: 500;
  transition: all .13s; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap;
}
.pb_btn:hover { background: var(--g1); border-color: var(--bd2); color: var(--tx); }
.pb_btn.sm { padding: 7px 14px; font-size: 11px; }

/* ════════════════════════
   토스트
════════════════════════ */
.pb_toast {
  position: fixed; bottom: 28px; left: 50%;
  transform: translateX(-50%) translateY(16px);
  background: var(--tx); color: #fff; padding: 12px 26px;
  border-radius: 11px; font-size: 13px; font-weight: 500;
  z-index: 9999; opacity: 0; transition: all .22s; pointer-events: none;
  white-space: nowrap; box-shadow: 0 8px 28px rgba(0,0,0,.24);
}
.pb_toast.on { opacity: 1; transform: translateX(-50%) translateY(0); }

@media(max-width:500px){
  .pb_hdr { padding: 20px 18px; }
  .pb_hdr_ttl { font-size: 17px; }
  .pb_body { padding: 24px 18px 36px; }
  .pb_grid { grid-template-columns: repeat(auto-fill, minmax(100px,1fr)); gap: 9px; }
  .pb_step { padding: 18px 10px; gap: 8px; }
  .pb_nav_next_sub { display: none; }
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;pb-app&quot;&gt;

&lt;!-- ════ 헤더 ════ --&gt;
&lt;div class=&quot;pb_hdr&quot;&gt;
  &lt;div class=&quot;pb_hdr_row&quot;&gt;
    &lt;span class=&quot;pb_hdr_icon&quot;&gt; &lt;/span&gt;
    &lt;div class=&quot;pb_hdr_info&quot;&gt;
      &lt;span class=&quot;pb_hdr_ttl&quot;&gt;모두의 사진첩 책자 만들기&lt;/span&gt;
      &lt;span class=&quot;pb_hdr_sub&quot;&gt;사진을 업로드 → PDF 책자로 저장 · 서버 전송 없음 · 완전 무료&lt;/span&gt;
    &lt;/div&gt;
    &lt;span class=&quot;pb_hdr_badge&quot;&gt;  내 기기에서만 처리&lt;/span&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ════ 사용 설명서 (접기/펼치기) ════ --&gt;
&lt;div class=&quot;pb_guide&quot;&gt;
  &lt;div class=&quot;pb_guide_hdr&quot; onclick=&quot;PB.togGuide()&quot;&gt;
    &lt;span class=&quot;pb_guide_hdr_icon&quot;&gt; &lt;/span&gt;
    &lt;div class=&quot;pb_guide_hdr_text&quot;&gt;
      &lt;span class=&quot;pb_guide_hdr_ttl&quot;&gt;사용 설명서 — 처음이라면 먼저 읽어보세요!&lt;/span&gt;
      &lt;span class=&quot;pb_guide_hdr_sub&quot;&gt;클릭하면 기능 설명과 사용 팁을 볼 수 있어요 ▾&lt;/span&gt;
    &lt;/div&gt;
    &lt;span class=&quot;pb_guide_arr&quot; id=&quot;pb_garr&quot;&gt;▾&lt;/span&gt;
  &lt;/div&gt;
  &lt;div class=&quot;pb_guide_body&quot; id=&quot;pb_gbody&quot;&gt;
    &lt;div class=&quot;pb_guide_grid&quot;&gt;
      &lt;div class=&quot;pb_gcard&quot;&gt;
        &lt;div class=&quot;pb_gcard_ttl&quot;&gt;  1단계 · 사진 업로드&lt;/div&gt;
        &lt;ul&gt;
          &lt;li&gt;사진을 &lt;b&gt;끌어다 놓거나&lt;/b&gt; 파일 선택 버튼으로 업로드&lt;/li&gt;
          &lt;li&gt;JPG, PNG, HEIC, WebP 형식 지원&lt;/li&gt;
          &lt;li&gt;&lt;b&gt;여러 장 동시&lt;/b&gt; 선택 가능 (폰 갤러리에서도 OK)&lt;/li&gt;
          &lt;li&gt;썸네일을 &lt;b&gt;드래그&lt;/b&gt;해서 순서 변경&lt;/li&gt;
          &lt;li&gt;&lt;b&gt;  날짜순 정렬&lt;/b&gt; 버튼으로 자동 정렬&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pb_gcard&quot;&gt;
        &lt;div class=&quot;pb_gcard_ttl&quot;&gt;⚙ 2단계 · 설정&lt;/div&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;b&gt;판형&lt;/b&gt;: 정사각형(SNS), A5 가로(앨범), A4 세로 선택&lt;/li&gt;
          &lt;li&gt;&lt;b&gt;해상도 슬라이더&lt;/b&gt;: 낮추면 파일 작아짐, 높이면 선명&lt;/li&gt;
          &lt;li&gt;&lt;b&gt;JPEG 품질&lt;/b&gt;: 80% 권장 · 모바일은 60~70%도 OK&lt;/li&gt;
          &lt;li&gt;&lt;b&gt;표지 페이지&lt;/b&gt;: 토글로 켜면 제목·부제목·이름 입력&lt;/li&gt;
          &lt;li&gt;&lt;b&gt;레이아웃&lt;/b&gt;: 1장·2장·4장·캡션형 중 선택&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pb_gcard&quot;&gt;
        &lt;div class=&quot;pb_gcard_ttl&quot;&gt;  3단계 · 미리보기&lt;/div&gt;
        &lt;ul&gt;
          &lt;li&gt;책을 &lt;b&gt;펼친 형태&lt;/b&gt;로 미리 확인&lt;/li&gt;
          &lt;li&gt;&lt;b&gt;◀ ▶ 버튼&lt;/b&gt; 또는 아래 점으로 페이지 이동&lt;/li&gt;
          &lt;li&gt;페이지 넘길 때 &lt;b&gt;3D 플립 애니메이션&lt;/b&gt; 효과&lt;/li&gt;
          &lt;li&gt;마음에 안 들면 &lt;b&gt;← 설정으로&lt;/b&gt; 돌아가서 수정&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pb_gcard&quot;&gt;
        &lt;div class=&quot;pb_gcard_ttl&quot;&gt;  4단계 · PDF 저장&lt;/div&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;b&gt;PDF 다운로드&lt;/b&gt; 버튼 한 번으로 저장&lt;/li&gt;
          &lt;li&gt;사진 수에 따라 &lt;b&gt;몇 초~1분&lt;/b&gt; 소요&lt;/li&gt;
          &lt;li&gt;저장된 PDF는 &lt;b&gt;카카오톡 전송, 프린트&lt;/b&gt; 가능&lt;/li&gt;
          &lt;li&gt;모든 처리는 &lt;b&gt;내 기기에서만&lt;/b&gt; — 서버 전송 없음&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;pb_guide_tip&quot;&gt;
      &lt;b&gt;  모바일 팁&lt;/b&gt; — 폰 갤러리 앱에서 사진을 선택해서 공유 → &quot;파일로 저장&quot; 후 업로드하거나,
      브라우저에서 직접 파일 선택 시 &lt;code&gt;갤러리&lt;/code&gt;를 선택하세요&lt;br&gt;
      &lt;b&gt;  파일 크기 줄이기&lt;/b&gt; — 해상도를 &lt;code&gt;800px&lt;/code&gt;, 품질을 &lt;code&gt;65%&lt;/code&gt;로 낮추면 고품질 대비 파일이 약 4배 작아져요
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ════ 4단계 스텝 바 ════ --&gt;
&lt;div class=&quot;pb_steps&quot;&gt;
  &lt;div class=&quot;pb_step on&quot; id=&quot;pbs1&quot; onclick=&quot;PB.go(1)&quot;&gt;
    &lt;span class=&quot;pb_snum&quot; id=&quot;pbn1&quot;&gt;1&lt;/span&gt;
    &lt;div class=&quot;pb_step_info&quot;&gt;
      &lt;span class=&quot;pb_step_title&quot;&gt;  사진 업로드&lt;/span&gt;
      &lt;span class=&quot;pb_step_hint&quot;&gt;사진 선택 · 순서 정렬&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;pb_step&quot; id=&quot;pbs2&quot; onclick=&quot;PB.go(2)&quot;&gt;
    &lt;span class=&quot;pb_snum&quot; id=&quot;pbn2&quot;&gt;2&lt;/span&gt;
    &lt;div class=&quot;pb_step_info&quot;&gt;
      &lt;span class=&quot;pb_step_title&quot;&gt;⚙ 설정&lt;/span&gt;
      &lt;span class=&quot;pb_step_hint&quot;&gt;판형 · 품질 · 표지&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;pb_step&quot; id=&quot;pbs3&quot; onclick=&quot;PB.go(3)&quot;&gt;
    &lt;span class=&quot;pb_snum&quot; id=&quot;pbn3&quot;&gt;3&lt;/span&gt;
    &lt;div class=&quot;pb_step_info&quot;&gt;
      &lt;span class=&quot;pb_step_title&quot;&gt;  미리보기&lt;/span&gt;
      &lt;span class=&quot;pb_step_hint&quot;&gt;책 넘기기 확인&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;pb_step&quot; id=&quot;pbs4&quot; onclick=&quot;PB.go(4)&quot;&gt;
    &lt;span class=&quot;pb_snum&quot; id=&quot;pbn4&quot;&gt;4&lt;/span&gt;
    &lt;div class=&quot;pb_step_info&quot;&gt;
      &lt;span class=&quot;pb_step_title&quot;&gt;  PDF 저장&lt;/span&gt;
      &lt;span class=&quot;pb_step_hint&quot;&gt;다운로드 · 완성&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ════ 본문 ════ --&gt;
&lt;div class=&quot;pb_body&quot;&gt;

  &lt;!-- ▶ Step 1: 사진 업로드 --&gt;
  &lt;div class=&quot;pb_sec on&quot; id=&quot;sec1&quot;&gt;
    &lt;div class=&quot;pb_stitle&quot;&gt;  사진 업로드&lt;/div&gt;
    &lt;p class=&quot;pb_ssub&quot;&gt;
      폰이나 PC에서 사진을 선택하거나 끌어다 놓으세요. 여러 장을 한꺼번에 선택할 수 있어요.&lt;br&gt;
      &lt;strong&gt;모든 처리는 이 기기에서만 이뤄져요 — 서버로 전송되지 않아요.&lt;/strong&gt;
    &lt;/p&gt;

    &lt;div class=&quot;pb_drop&quot; id=&quot;pb_drop&quot;
      ondragover=&quot;PB.onDragOver(event)&quot; ondragleave=&quot;PB.onDragLeave(event)&quot; ondrop=&quot;PB.onDrop(event)&quot;&gt;
      &lt;input type=&quot;file&quot; id=&quot;pb_finp&quot; accept=&quot;image/*&quot; multiple onchange=&quot;PB.onFiles(event)&quot;&gt;
      &lt;span class=&quot;pb_drop_icon&quot;&gt; &lt;/span&gt;
      &lt;div class=&quot;pb_drop_ttl&quot;&gt;사진을 끌어다 놓거나 클릭해서 선택하세요&lt;/div&gt;
      &lt;div class=&quot;pb_drop_sub&quot;&gt;JPG · PNG · HEIC · WebP&lt;br&gt;한 번에 여러 장 선택 가능&lt;/div&gt;
      &lt;button class=&quot;pb_sel_btn&quot; onclick=&quot;document.getElementById('pb_finp').click();event.stopPropagation();&quot;&gt;
          사진 선택하기
      &lt;/button&gt;
    &lt;/div&gt;

    &lt;div id=&quot;pb_grid_sec&quot; style=&quot;display:none;&quot;&gt;
      &lt;div class=&quot;pb_photo_hdr&quot;&gt;
        &lt;span class=&quot;pb_pcnt&quot; id=&quot;pb_pcnt&quot;&gt;0장&lt;/span&gt;
        &lt;div class=&quot;pb_pacts&quot;&gt;
          &lt;button class=&quot;pb_btn sm&quot; onclick=&quot;PB.sortDate()&quot;&gt;  날짜순 정렬&lt;/button&gt;
          &lt;button class=&quot;pb_btn sm&quot; onclick=&quot;document.getElementById('pb_finp').click()&quot;&gt;  더 추가&lt;/button&gt;
          &lt;button class=&quot;pb_btn sm&quot; onclick=&quot;PB.clearAll()&quot;&gt;  전체 삭제&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pb_grid&quot; id=&quot;pb_grid&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;pb_nav_row&quot;&gt;
      &lt;div style=&quot;flex:1;display:flex;align-items:center;font-size:12px;color:var(--tx3);&quot;&gt;
        사진을 추가하면 다음 단계로 이동할 수 있어요
      &lt;/div&gt;
      &lt;button class=&quot;pb_nav_next&quot; id=&quot;pb_n1&quot; onclick=&quot;PB.go(2)&quot; disabled&gt;
        &lt;span class=&quot;pb_nav_next_icon&quot;&gt;⚙&lt;/span&gt;
        &lt;span class=&quot;pb_nav_next_text&quot;&gt;
          &lt;span class=&quot;pb_nav_next_label&quot;&gt;다음 단계 — 설정&lt;/span&gt;
          &lt;span class=&quot;pb_nav_next_sub&quot;&gt;판형 · 압축 · 표지 설정하기&lt;/span&gt;
        &lt;/span&gt;
        &lt;span style=&quot;font-size:20px;margin-left:4px;&quot;&gt;→&lt;/span&gt;
      &lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- ▶ Step 2: 설정 --&gt;
  &lt;div class=&quot;pb_sec&quot; id=&quot;sec2&quot;&gt;
    &lt;div class=&quot;pb_stitle&quot;&gt;⚙ 책자 설정&lt;/div&gt;
    &lt;p class=&quot;pb_ssub&quot;&gt;
      판형·품질·레이아웃·표지를 설정해요. 설정 후 미리보기에서 결과를 바로 확인할 수 있어요.
    &lt;/p&gt;

    &lt;div class=&quot;pb_cfg_grid&quot;&gt;
      &lt;!-- 판형 --&gt;
      &lt;div class=&quot;pb_card&quot;&gt;
        &lt;div class=&quot;pb_ctitle&quot;&gt;  판형 선택&lt;/div&gt;
        &lt;div class=&quot;pb_fmt_row&quot;&gt;
          &lt;button class=&quot;pb_fmtbtn&quot; id=&quot;pfmt_sq&quot; onclick=&quot;PB.setFmt('sq')&quot;&gt;
            &lt;span class=&quot;pb_fmtico&quot;&gt;⬜&lt;/span&gt;
            &lt;span class=&quot;pb_fmtnm&quot;&gt;정사각형&lt;/span&gt;
            &lt;span class=&quot;pb_fmtsz&quot;&gt;200×200mm&lt;/span&gt;
          &lt;/button&gt;
          &lt;button class=&quot;pb_fmtbtn on&quot; id=&quot;pfmt_a5&quot; onclick=&quot;PB.setFmt('a5')&quot;&gt;
            &lt;span class=&quot;pb_fmtico&quot;&gt; &lt;/span&gt;
            &lt;span class=&quot;pb_fmtnm&quot;&gt;A5 가로&lt;/span&gt;
            &lt;span class=&quot;pb_fmtsz&quot;&gt;앨범형 추천&lt;/span&gt;
          &lt;/button&gt;
          &lt;button class=&quot;pb_fmtbtn&quot; id=&quot;pfmt_a4&quot; onclick=&quot;PB.setFmt('a4')&quot;&gt;
            &lt;span class=&quot;pb_fmtico&quot;&gt; &lt;/span&gt;
            &lt;span class=&quot;pb_fmtnm&quot;&gt;A4 세로&lt;/span&gt;
            &lt;span class=&quot;pb_fmtsz&quot;&gt;210×297mm&lt;/span&gt;
          &lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;!-- 압축 --&gt;
      &lt;div class=&quot;pb_card&quot;&gt;
        &lt;div class=&quot;pb_ctitle&quot;&gt;  사진 압축 &amp; 품질&lt;/div&gt;
        &lt;div class=&quot;pb_sl_wrap&quot;&gt;
          &lt;span class=&quot;pb_lbl&quot;&gt;해상도 (긴 변 최대 크기)&lt;/span&gt;
          &lt;div class=&quot;pb_sl_row&quot;&gt;
            &lt;input type=&quot;range&quot; class=&quot;pb_sl&quot; id=&quot;pb_res&quot; min=&quot;600&quot; max=&quot;2400&quot; step=&quot;200&quot; value=&quot;1200&quot; oninput=&quot;PB.updSlider()&quot;&gt;
            &lt;span class=&quot;pb_slv&quot; id=&quot;pb_resv&quot;&gt;1200px&lt;/span&gt;
          &lt;/div&gt;
          &lt;div class=&quot;pb_slhint&quot;&gt;낮을수록 파일 작음 · 높을수록 선명 · 800px 권장&lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;pb_sl_wrap&quot;&gt;
          &lt;span class=&quot;pb_lbl&quot;&gt;JPEG 압축 품질&lt;/span&gt;
          &lt;div class=&quot;pb_sl_row&quot;&gt;
            &lt;input type=&quot;range&quot; class=&quot;pb_sl&quot; id=&quot;pb_qual&quot; min=&quot;40&quot; max=&quot;95&quot; step=&quot;5&quot; value=&quot;80&quot; oninput=&quot;PB.updSlider()&quot;&gt;
            &lt;span class=&quot;pb_slv&quot; id=&quot;pb_qualv&quot;&gt;80%&lt;/span&gt;
          &lt;/div&gt;
          &lt;div class=&quot;pb_slhint&quot; id=&quot;pb_sizeest&quot;&gt;예상 크기: 사진 추가 후 표시&lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;!-- 표지 --&gt;
      &lt;div class=&quot;pb_card&quot;&gt;
        &lt;div class=&quot;pb_ctitle&quot;&gt;  표지 &amp; 제목 페이지&lt;/div&gt;
        &lt;div class=&quot;pb_tog_row&quot;&gt;
          &lt;div class=&quot;pb_tog on&quot; id=&quot;pb_covtog&quot; onclick=&quot;PB.togCover()&quot;&gt;&lt;/div&gt;
          &lt;span class=&quot;pb_toglbl&quot;&gt;표지 페이지 추가&lt;/span&gt;
        &lt;/div&gt;
        &lt;div id=&quot;pb_covfields&quot;&gt;
          &lt;input class=&quot;pb_inp&quot; id=&quot;pb_ttl&quot; placeholder=&quot;책자 제목 (예: 2024 가족 여행)&quot; value=&quot;나의 사진첩&quot;&gt;
          &lt;input class=&quot;pb_inp&quot; id=&quot;pb_sub&quot; placeholder=&quot;부제목 (예: 제주도 여름 여행)&quot;&gt;
          &lt;input class=&quot;pb_inp&quot; id=&quot;pb_auth&quot; placeholder=&quot;만든 이 (예: 홍길동)&quot;&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;!-- 레이아웃 --&gt;
      &lt;div class=&quot;pb_card&quot;&gt;
        &lt;div class=&quot;pb_ctitle&quot;&gt;  사진 레이아웃&lt;/div&gt;
        &lt;div class=&quot;pb_lay_row&quot;&gt;
          &lt;button class=&quot;pb_laybtn on&quot; id=&quot;play_1&quot; onclick=&quot;PB.setLay('1')&quot;&gt;&lt;span class=&quot;pb_layico&quot;&gt; &lt;/span&gt;1장/페이지&lt;/button&gt;
          &lt;button class=&quot;pb_laybtn&quot;    id=&quot;play_2&quot; onclick=&quot;PB.setLay('2')&quot;&gt;&lt;span class=&quot;pb_layico&quot;&gt;⊞&lt;/span&gt;2장/페이지&lt;/button&gt;
          &lt;button class=&quot;pb_laybtn&quot;    id=&quot;play_4&quot; onclick=&quot;PB.setLay('4')&quot;&gt;&lt;span class=&quot;pb_layico&quot;&gt;⊟&lt;/span&gt;4장/페이지&lt;/button&gt;
          &lt;button class=&quot;pb_laybtn&quot;    id=&quot;play_c&quot; onclick=&quot;PB.setLay('c')&quot;&gt;&lt;span class=&quot;pb_layico&quot;&gt; &lt;/span&gt;사진+캡션&lt;/button&gt;
        &lt;/div&gt;
        &lt;div class=&quot;pb_tog_row&quot; style=&quot;margin-top:18px;&quot;&gt;
          &lt;div class=&quot;pb_tog&quot; id=&quot;pb_captog&quot; onclick=&quot;PB.togCaption()&quot;&gt;&lt;/div&gt;
          &lt;span class=&quot;pb_toglbl&quot;&gt;사진마다 캡션 입력&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 캡션 입력 --&gt;
    &lt;div id=&quot;pb_cap_sec&quot; style=&quot;display:none;margin-bottom:26px;&quot;&gt;
      &lt;div class=&quot;pb_card&quot;&gt;
        &lt;div class=&quot;pb_ctitle&quot;&gt;  캡션 입력&lt;/div&gt;
        &lt;div class=&quot;pb_cap_grid&quot; id=&quot;pb_capgrid&quot;&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;pb_nav_row&quot;&gt;
      &lt;button class=&quot;pb_nav_prev&quot; onclick=&quot;PB.go(1)&quot;&gt;
        ← 이전
      &lt;/button&gt;
      &lt;button class=&quot;pb_nav_next&quot; onclick=&quot;PB.go(3)&quot;&gt;
        &lt;span class=&quot;pb_nav_next_icon&quot;&gt; &lt;/span&gt;
        &lt;span class=&quot;pb_nav_next_text&quot;&gt;
          &lt;span class=&quot;pb_nav_next_label&quot;&gt;다음 단계 — 미리보기&lt;/span&gt;
          &lt;span class=&quot;pb_nav_next_sub&quot;&gt;책 펼침 형태로 확인하기&lt;/span&gt;
        &lt;/span&gt;
        &lt;span style=&quot;font-size:20px;margin-left:4px;&quot;&gt;→&lt;/span&gt;
      &lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- ▶ Step 3: 미리보기 --&gt;
  &lt;div class=&quot;pb_sec&quot; id=&quot;sec3&quot;&gt;
    &lt;div class=&quot;pb_stitle&quot;&gt;  미리보기&lt;/div&gt;
    &lt;p class=&quot;pb_ssub&quot;&gt;
      책을 펼쳤을 때의 모습이에요. ◀ ▶ 버튼이나 아래 점을 클릭해 페이지를 넘겨보세요.
    &lt;/p&gt;

    &lt;div class=&quot;pb_viewer_bg&quot;&gt;
      &lt;div class=&quot;pb_book_wrap&quot;&gt;
        &lt;div class=&quot;pb_book_shadow&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;pb_book&quot; id=&quot;pb_book&quot;&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pb_ctrl&quot;&gt;
        &lt;button class=&quot;pb_navbtn&quot; id=&quot;pb_prevbtn&quot; onclick=&quot;PB.prevPg()&quot; disabled&gt;◀ 이전&lt;/button&gt;
        &lt;span class=&quot;pb_pginfo&quot; id=&quot;pb_pginfo&quot;&gt;- / -&lt;/span&gt;
        &lt;button class=&quot;pb_navbtn&quot; id=&quot;pb_nextbtn&quot; onclick=&quot;PB.nextPg()&quot;&gt;다음 ▶&lt;/button&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pb_dots&quot; id=&quot;pb_dots&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;pb_nav_row&quot;&gt;
      &lt;button class=&quot;pb_nav_prev&quot; onclick=&quot;PB.go(2)&quot;&gt;
        ← 설정으로
      &lt;/button&gt;
      &lt;button class=&quot;pb_nav_next&quot; onclick=&quot;PB.go(4)&quot;&gt;
        &lt;span class=&quot;pb_nav_next_icon&quot;&gt; &lt;/span&gt;
        &lt;span class=&quot;pb_nav_next_text&quot;&gt;
          &lt;span class=&quot;pb_nav_next_label&quot;&gt;다음 단계 — PDF 저장&lt;/span&gt;
          &lt;span class=&quot;pb_nav_next_sub&quot;&gt;PDF 파일로 다운로드하기&lt;/span&gt;
        &lt;/span&gt;
        &lt;span style=&quot;font-size:20px;margin-left:4px;&quot;&gt;→&lt;/span&gt;
      &lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- ▶ Step 4: PDF 저장 --&gt;
  &lt;div class=&quot;pb_sec&quot; id=&quot;sec4&quot;&gt;
    &lt;div class=&quot;pb_stitle&quot;&gt;  PDF 책자 저장&lt;/div&gt;
    &lt;p class=&quot;pb_ssub&quot;&gt;
      모든 사진을 하나의 PDF 파일로 만들어 저장해요. 완성된 파일은 폰·PC 어디서나 열 수 있어요.
    &lt;/p&gt;

    &lt;div class=&quot;pb_exp_wrap&quot;&gt;
      &lt;div class=&quot;pb_exp_card&quot;&gt;
        &lt;span class=&quot;pb_exp_ico&quot;&gt; &lt;/span&gt;
        &lt;div class=&quot;pb_exp_ttl&quot;&gt;PDF 책자 생성 준비 완료&lt;/div&gt;
        &lt;div class=&quot;pb_exp_desc&quot; id=&quot;pb_expdesc&quot;&gt;
          사진 0장을 PDF 책자로 만들어요.&lt;br&gt;
          이 기기에서만 처리되고 어디에도 전송되지 않아요.
        &lt;/div&gt;
        &lt;div class=&quot;pb_info_grid&quot;&gt;
          &lt;div class=&quot;pb_info_item&quot;&gt;&lt;span class=&quot;pb_info_lbl&quot;&gt;사진 수&lt;/span&gt;&lt;span class=&quot;pb_info_val&quot; id=&quot;pei_cnt&quot;&gt;0장&lt;/span&gt;&lt;/div&gt;
          &lt;div class=&quot;pb_info_item&quot;&gt;&lt;span class=&quot;pb_info_lbl&quot;&gt;판형&lt;/span&gt;&lt;span class=&quot;pb_info_val&quot; id=&quot;pei_fmt&quot;&gt;A5 가로&lt;/span&gt;&lt;/div&gt;
          &lt;div class=&quot;pb_info_item&quot;&gt;&lt;span class=&quot;pb_info_lbl&quot;&gt;레이아웃&lt;/span&gt;&lt;span class=&quot;pb_info_val&quot; id=&quot;pei_lay&quot;&gt;1장/페이지&lt;/span&gt;&lt;/div&gt;
          &lt;div class=&quot;pb_info_item&quot;&gt;&lt;span class=&quot;pb_info_lbl&quot;&gt;예상 크기&lt;/span&gt;&lt;span class=&quot;pb_info_val&quot; id=&quot;pei_sz&quot;&gt;계산 중&lt;/span&gt;&lt;/div&gt;
        &lt;/div&gt;
        &lt;button class=&quot;pb_pdf_btn&quot; id=&quot;pb_pdfbtn&quot; onclick=&quot;PB.makePDF()&quot;&gt;
          &lt;span style=&quot;font-size:22px;&quot;&gt; &lt;/span&gt; PDF 책자 다운로드
        &lt;/button&gt;
        &lt;div class=&quot;pb_prog_wrap&quot; id=&quot;pb_prog&quot;&gt;
          &lt;div class=&quot;pb_prog_bar&quot;&gt;&lt;div class=&quot;pb_prog_fill&quot; id=&quot;pb_pfill&quot;&gt;&lt;/div&gt;&lt;/div&gt;
          &lt;div class=&quot;pb_prog_txt&quot; id=&quot;pb_ptxt&quot;&gt;처리 중...&lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;pb_pdf_note&quot;&gt;
            생성된 PDF는 카카오톡 전송, 스마트폰 파일 앱, 프린트 등으로 활용 가능해요&lt;br&gt;
            해상도를 높이면 파일이 커지고 시간이 더 걸려요&lt;br&gt;
            사진이 많으면 (50장 이상) 1~2분 걸릴 수 있어요
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;pb_nav_row&quot;&gt;
      &lt;button class=&quot;pb_nav_prev&quot; onclick=&quot;PB.go(3)&quot;&gt;
        ← 미리보기로
      &lt;/button&gt;
      &lt;button class=&quot;pb_nav_prev&quot; onclick=&quot;PB.restart()&quot; style=&quot;border-color:var(--bd2);&quot;&gt;
          처음부터
      &lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;

&lt;/div&gt;&lt;!-- /pb_body --&gt;

&lt;div class=&quot;pb_toast&quot; id=&quot;pb_toast&quot;&gt;&lt;/div&gt;

&lt;script&gt;
// ====================================================
//  window.PB — 모두의 사진첩 책자 만들기 v3
//  100% 클라이언트 사이드 · 서버 전송 없음
//  window.PB 전역 등록 · 티스토리 완전 호환
//  no all:initial · no 100vh · no position:sticky
// ====================================================
window.PB = (function(){
'use strict';

var photos = [];
var step = 1;
var curSpread = 0;
var pages = [];
var isFlipping = false;
var guideOpen = false;

var cfg = {
  fmt: 'a5', res: 1200, qual: 0.80,
  cover: true, title: '나의 사진첩', subtitle: '', author: '',
  layout: '1', captionMode: false,
};

/* ── 설명서 토글 ── */
function togGuide(){
  guideOpen = !guideOpen;
  var b = el('pb_gbody'), a = el('pb_garr');
  if(b){ b.classList.toggle('open', guideOpen); }
  if(a){ a.classList.toggle('open', guideOpen); a.textContent = guideOpen ? '▴' : '▾'; }
}

/* ── 스텝 이동 ── */
function go(n){
  if(n &gt; 1 &amp;&amp; photos.length === 0){ toast('⚠ 먼저 사진을 추가해주세요'); return; }
  if(n === 3){ buildPages(); renderBook(); }
  if(n === 4){ buildPages(); updExpInfo(); }
  step = n;
  for(var i=1;i&lt;=4;i++){
    var s=el('pbs'+i), nm=el('pbn'+i), sc=el('sec'+i);
    if(!s||!nm||!sc) continue;
    s.className = 'pb_step' + (i===n?' on': i&lt;n?' done':'');
    nm.textContent = i &lt; n ? '✓' : i;
    sc.className = 'pb_sec' + (i===n?' on':'');
  }
  // 스크롤 상단
  var app = document.getElementById('pb-app');
  if(app) app.scrollIntoView({behavior:'smooth', block:'start'});
}

/* ── 파일 처리 ── */
function onFiles(e){ loadFiles(Array.from(e.target.files)); }
function onDragOver(e){ e.preventDefault(); el('pb_drop').classList.add('over'); }
function onDragLeave(){ el('pb_drop').classList.remove('over'); }
function onDrop(e){
  e.preventDefault(); el('pb_drop').classList.remove('over');
  loadFiles(Array.from(e.dataTransfer.files).filter(function(f){ return f.type.startsWith('image/'); }));
}

function loadFiles(files){
  if(!files.length) return;
  toast('  ' + files.length + '장 불러오는 중...');
  var done=0, total=files.length;
  files.forEach(function(file){
    var reader = new FileReader();
    reader.onload = function(ev){
      photos.push({ dataUrl: ev.target.result, date: new Date(file.lastModified||Date.now()), caption: '', origSize: file.size });
      done++;
      if(done === total){ renderGrid(); updSizeEst(); toast('✅ ' + total + '장 추가 완료!'); }
    };
    reader.readAsDataURL(file);
  });
}

/* ── 그리드 ── */
function renderGrid(){
  var grid=el('pb_grid'), sec=el('pb_grid_sec'), cnt=el('pb_pcnt'), nbtn=el('pb_n1');
  if(!grid) return;
  grid.innerHTML = '';
  if(!photos.length){ sec.style.display='none'; if(nbtn) nbtn.disabled=true; return; }
  sec.style.display = 'block';
  if(nbtn) nbtn.disabled = false;
  cnt.textContent = photos.length + '장';
  photos.forEach(function(ph, idx){
    var card = document.createElement('div');
    card.className = 'pb_pcard'; card.dataset.idx = idx; card.draggable = true;
    var dt = ph.date instanceof Date ? ph.date.toLocaleDateString('ko-KR',{month:'short',day:'numeric'}) : '';
    card.innerHTML = '&lt;img src=&quot;'+ph.dataUrl+'&quot; loading=&quot;lazy&quot;&gt;&lt;span class=&quot;pb_pnum&quot;&gt;'+(idx+1)+'&lt;/span&gt;'+(dt?'&lt;span class=&quot;pb_pdate&quot;&gt;'+dt+'&lt;/span&gt;':'')+'&lt;button class=&quot;pb_xbtn&quot; onclick=&quot;PB.delPhoto('+idx+');event.stopPropagation();&quot;&gt;✕&lt;/button&gt;';
    setupDrag(card, idx);
    grid.appendChild(card);
  });
  if(cfg.captionMode) renderCapGrid();
}

var dragIdx = null;
function setupDrag(card, idx){
  card.addEventListener('dragstart', function(e){ dragIdx=idx; card.classList.add('dragging'); e.dataTransfer.effectAllowed='move'; });
  card.addEventListener('dragend', function(){ card.classList.remove('dragging'); document.querySelectorAll('.pb_pcard').forEach(function(c){c.classList.remove('dragover');}); });
  card.addEventListener('dragover', function(e){ e.preventDefault(); card.classList.add('dragover'); });
  card.addEventListener('dragleave', function(){ card.classList.remove('dragover'); });
  card.addEventListener('drop', function(e){
    e.preventDefault(); card.classList.remove('dragover');
    if(dragIdx!==null &amp;&amp; dragIdx!==idx){ var tmp=photos.splice(dragIdx,1)[0]; photos.splice(idx,0,tmp); renderGrid(); }
    dragIdx = null;
  });
}

function delPhoto(idx){ photos.splice(idx,1); renderGrid(); toast('  삭제'); }
function clearAll(){ if(!confirm('사진을 전부 삭제할까요?')) return; photos=[]; renderGrid(); toast('  전체 삭제'); }
function sortDate(){ photos.sort(function(a,b){ return a.date-b.date; }); renderGrid(); toast('  날짜순 정렬 완료!'); }

/* ── 설정 ── */
function setFmt(f){
  cfg.fmt=f;
  ['sq','a5','a4'].forEach(function(x){ var b=el('pfmt_'+x); if(b) b.classList.toggle('on',x===f); });
}
function setLay(l){
  cfg.layout=l;
  ['1','2','4','c'].forEach(function(x){ var b=el('play_'+x); if(b) b.classList.toggle('on',x===l); });
}
function togCover(){
  cfg.cover = !cfg.cover;
  var t=el('pb_covtog'), f=el('pb_covfields');
  if(t) t.classList.toggle('on',cfg.cover);
  if(f) f.style.display = cfg.cover?'block':'none';
}
function togCaption(){
  cfg.captionMode = !cfg.captionMode;
  var t=el('pb_captog'), s=el('pb_cap_sec');
  if(t) t.classList.toggle('on',cfg.captionMode);
  if(s){ s.style.display = cfg.captionMode?'block':'none'; if(cfg.captionMode) renderCapGrid(); }
}
function updSlider(){
  var r=el('pb_res'), q=el('pb_qual');
  cfg.res=parseInt(r.value); cfg.qual=parseInt(q.value)/100;
  var rv=el('pb_resv'), qv=el('pb_qualv');
  if(rv) rv.textContent=r.value+'px'; if(qv) qv.textContent=q.value+'%';
  updSizeEst();
}
function updSizeEst(){
  if(!photos.length) return;
  var avg=photos.reduce(function(s,p){return s+p.origSize;},0)/photos.length;
  var est=(avg*Math.pow(cfg.res/2000,2)*cfg.qual*0.28*photos.length)/1024/1024;
  var h=el('pb_sizeest');
  if(h) h.textContent='예상 PDF 크기: 약 '+est.toFixed(1)+'MB ('+photos.length+'장 기준)';
}
function setCaption(idx,val){ if(photos[idx]) photos[idx].caption=val; }
function renderCapGrid(){
  var cg=el('pb_capgrid'); if(!cg) return;
  cg.innerHTML='';
  photos.forEach(function(ph,idx){
    var w=document.createElement('div'); w.className='pb_cap_item';
    w.innerHTML='&lt;img class=&quot;pb_cap_thumb&quot; src=&quot;'+ph.dataUrl+'&quot; loading=&quot;lazy&quot;&gt;&lt;input class=&quot;pb_inp&quot; style=&quot;margin-bottom:0&quot; placeholder=&quot;캡션 입력 (선택)&quot; value=&quot;'+(ph.caption||'')+'&quot; oninput=&quot;PB.setCaption('+idx+',this.value)&quot;&gt;';
    cg.appendChild(w);
  });
}

/* ── 페이지 빌드 ── */
function getFmtPx(){
  var base=260;
  if(cfg.fmt==='sq') return {w:base,h:base};
  if(cfg.fmt==='a5') return {w:base,h:Math.round(base*148/210)};
  if(cfg.fmt==='a4') return {w:Math.round(base*210/297),h:base};
  return {w:base,h:Math.round(base*148/210)};
}
function buildPages(){
  pages=[];
  var t=el('pb_ttl'),s=el('pb_sub'),a=el('pb_auth');
  cfg.title=(t&amp;&amp;t.value)||'나의 사진첩';
  cfg.subtitle=(s&amp;&amp;s.value)||'';
  cfg.author=(a&amp;&amp;a.value)||'';
  if(cfg.cover) pages.push({type:'cover'});
  var per=cfg.layout==='1'?1:cfg.layout==='2'?2:cfg.layout==='4'?4:1;
  for(var i=0;i&lt;photos.length;i+=per){
    pages.push({type:'photo',phs:photos.slice(i,i+per),layout:cfg.layout,pnum:pages.length+1});
  }
  if(cfg.cover) pages.push({type:'back'});
  if(pages.length%2!==0) pages.push({type:'blank'});
}

/* ── 책 렌더 ── */
function renderBook(){
  var book=el('pb_book'); if(!book||!pages.length) return;
  curSpread=0; drawSpread();
}
function drawSpread(animate, dir){
  var book=el('pb_book'); if(!book) return;
  var sz=getFmtPx();
  book.style.cssText='height:'+sz.h+'px;transform-style:preserve-3d;perspective:2000px;';
  var li=curSpread*2, ri=curSpread*2+1;
  var lEl=mkPgEl(pages[li]||null, sz, true);
  var rEl=mkPgEl(pages[ri]||null, sz, false);
  if(animate &amp;&amp; dir==='next'){ lEl.classList.add('aff'); }
  else if(animate &amp;&amp; dir==='prev'){ rEl.classList.add('afb'); }
  book.innerHTML='';
  book.appendChild(lEl); book.appendChild(mkSpine()); book.appendChild(rEl);
  var tot=Math.ceil(pages.length/2);
  el('pb_pginfo').textContent=(curSpread+1)+' / '+tot;
  var pb=el('pb_prevbtn'),nb=el('pb_nextbtn');
  if(pb) pb.disabled=curSpread===0;
  if(nb) nb.disabled=curSpread&gt;=tot-1;
  renderDots(tot);
}
function mkPgEl(page, sz, isLeft){
  var pg=document.createElement('div');
  pg.className='pb_pg '+(isLeft?'pb_pg_left':'pb_pg_right');
  pg.style.cssText='width:'+sz.w+'px;height:'+sz.h+'px;position:relative;overflow:hidden;flex-shrink:0;';
  if(!page){ pg.classList.add('pb_blank_pg'); return pg; }
  if(page.type==='cover'){
    pg.innerHTML='&lt;div class=&quot;pb_cover_inner front&quot;&gt;&lt;span class=&quot;pb_cov_ico&quot;&gt; &lt;/span&gt;&lt;div class=&quot;pb_cov_line&quot;&gt;&lt;/div&gt;&lt;div class=&quot;pb_cov_ttl&quot; style=&quot;font-size:'+Math.max(12,Math.round(sz.w*.08))+'px&quot;&gt;'+esc(cfg.title)+'&lt;/div&gt;'+(cfg.subtitle?'&lt;div class=&quot;pb_cov_sub&quot;&gt;'+esc(cfg.subtitle)+'&lt;/div&gt;':'')+(cfg.author?'&lt;div class=&quot;pb_cov_auth&quot;&gt;— '+esc(cfg.author)+' —&lt;/div&gt;':'')+'&lt;/div&gt;';
  } else if(page.type==='back'){
    pg.innerHTML='&lt;div class=&quot;pb_cover_inner back&quot;&gt;&lt;span style=&quot;font-size:26px;&quot;&gt; &lt;/span&gt;&lt;div style=&quot;font-size:10px;color:rgba(255,255,255,.5);margin-top:8px;&quot;&gt;모두의 사진첩 책자 만들기&lt;/div&gt;&lt;/div&gt;';
  } else if(page.type==='blank'){
    pg.classList.add('pb_blank_pg');
  } else if(page.type==='photo'){
    var inner=document.createElement('div'); inner.className='pb_pg_inner';
    var phs=page.phs, lay=page.layout;
    var iw=document.createElement('div'); iw.style.cssText='flex:1;overflow:hidden;';
    if(lay==='1'||lay==='c'){
      iw.className='pb_pg_imgs_1';
      if(phs[0]){ var im=document.createElement('img');im.src=phs[0].dataUrl;im.style.cssText='width:100%;height:100%;object-fit:cover;display:block;';iw.appendChild(im); }
      inner.appendChild(iw);
      if(lay==='c'&amp;&amp;phs[0]&amp;&amp;phs[0].caption){ var cp=document.createElement('div');cp.className='pb_pg_caption';cp.textContent=phs[0].caption;inner.appendChild(cp); }
    } else if(lay==='2'){
      iw.className='pb_pg_imgs_2';
      phs.slice(0,2).forEach(function(p){ if(p){var im=document.createElement('img');im.src=p.dataUrl;im.style.cssText='width:100%;height:100%;object-fit:cover;display:block;';iw.appendChild(im);} });
      inner.appendChild(iw);
    } else if(lay==='4'){
      iw.className='pb_pg_imgs_4';
      phs.slice(0,4).forEach(function(p){ if(p){var im=document.createElement('img');im.src=p.dataUrl;im.style.cssText='width:100%;height:100%;object-fit:cover;display:block;';iw.appendChild(im);} });
      inner.appendChild(iw);
    }
    pg.appendChild(inner);
    var pn=document.createElement('span'); pn.className='pb_pg_num '+(isLeft?'l':'r'); pn.textContent=page.pnum; pg.appendChild(pn);
  }
  return pg;
}
function mkSpine(){ var s=document.createElement('div'); s.className='pb_spine'; return s; }
function renderDots(total){
  var d=el('pb_dots'); if(!d) return;
  d.innerHTML='';
  var show=Math.min(total,12);
  for(var i=0;i&lt;show;i++){
    var dot=document.createElement('span'); dot.className='pb_dot'+(i===curSpread?' on':'');
    (function(ii){ dot.onclick=function(){ if(!isFlipping){ curSpread=ii; drawSpread(); } }; })(i);
    d.appendChild(dot);
  }
}
function prevPg(){
  if(isFlipping||curSpread===0) return;
  isFlipping=true; curSpread--; drawSpread(true,'prev');
  setTimeout(function(){ isFlipping=false; },520);
}
function nextPg(){
  var tot=Math.ceil(pages.length/2);
  if(isFlipping||curSpread&gt;=tot-1) return;
  isFlipping=true; curSpread++; drawSpread(true,'next');
  setTimeout(function(){ isFlipping=false; },520);
}

/* ── 내보내기 정보 ── */
function updExpInfo(){
  var fmtN={sq:'정사각형',a5:'A5 가로',a4:'A4 세로'};
  var layN={'1':'1장/페이지','2':'2장/페이지','4':'4장/페이지','c':'사진+캡션'};
  setTxt('pei_cnt', photos.length+'장');
  setTxt('pei_fmt', fmtN[cfg.fmt]||'');
  setTxt('pei_lay', layN[cfg.layout]||'');
  setTxt('pb_expdesc', '사진 '+photos.length+'장을 PDF 책자로 만들어요.\n이 기기에서만 처리되고 어디에도 전송되지 않아요.');
  updSizeEst();
  var sh=el('pb_sizeest');
  if(sh) setTxt('pei_sz', sh.textContent.replace('예상 PDF 크기: ',''));
}

/* ── PDF 생성 ── */
async function makePDF(){
  if(!photos.length){ toast('⚠ 사진을 먼저 추가해주세요'); return; }
  var btn=el('pb_pdfbtn'), prog=el('pb_prog'), pfill=el('pb_pfill'), ptxt=el('pb_ptxt');
  if(btn) btn.disabled=true;
  if(prog) prog.classList.add('on');
  function setP(pct,txt){ if(pfill) pfill.style.width=pct+'%'; if(ptxt) ptxt.textContent=txt; }
  try{
    var jsPDF=window.jspdf.jsPDF;
    var fmtCfg={ sq:{w:200,h:200,ori:'portrait'}, a5:{w:210,h:148,ori:'landscape'}, a4:{w:210,h:297,ori:'portrait'} };
    var fc=fmtCfg[cfg.fmt]||fmtCfg.a5;
    var doc=new jsPDF({orientation:fc.ori,unit:'mm',format:[fc.w,fc.h]});
    var W=fc.ori==='landscape'?fc.h:fc.w, H=fc.ori==='landscape'?fc.w:fc.h, mg=5;
    buildPages();
    var ttl=(el('pb_ttl')&amp;&amp;el('pb_ttl').value)||'사진첩';
    for(var pi=0;pi&lt;pages.length;pi++){
      setP(Math.round(pi/pages.length*88),(pi+1)+' / '+pages.length+' 페이지 생성 중...');
      if(pi&gt;0) doc.addPage([fc.w,fc.h],fc.ori);
      var pg=pages[pi];
      if(pg.type==='cover'){
        doc.setFillColor(12,40,104); doc.rect(0,0,W,H,'F');
        doc.setFillColor(26,70,158); doc.circle(W*.85,H*.15,H*.5,'F');
        doc.setFillColor(8,28,88);  doc.circle(W*.1,H*.85,H*.35,'F');
        doc.setTextColor(255,255,255); doc.setFont('helvetica','bold');
        var ts=Math.min(20,W/7); doc.setFontSize(ts);
        var lines=doc.splitTextToSize(cfg.title,W*.78);
        var ty=H*.38; lines.forEach(function(l){doc.text(l,W/2,ty,{align:'center'});ty+=ts*.55;});
        if(cfg.subtitle){doc.setFontSize(11);doc.setTextColor(200,215,255);doc.text(cfg.subtitle,W/2,ty+6,{align:'center'});}
        if(cfg.author){doc.setFontSize(9);doc.setTextColor(160,185,230);doc.text('— '+cfg.author+' —',W/2,H*.84,{align:'center'});}
      } else if(pg.type==='back'){
        doc.setFillColor(12,40,104); doc.rect(0,0,W,H,'F');
        doc.setFontSize(8);doc.setTextColor(120,150,210);doc.text('모두의 사진첩 책자 만들기',W/2,H/2,{align:'center'});
      } else if(pg.type==='blank'){
        doc.setFillColor(247,249,255); doc.rect(0,0,W,H,'F');
      } else if(pg.type==='photo'){
        doc.setFillColor(255,255,255); doc.rect(0,0,W,H,'F');
        var phs=pg.phs, lay=pg.layout, capH=0;
        if((lay==='1'||lay==='c')&amp;&amp;phs[0]&amp;&amp;phs[0].caption) capH=12;
        if(lay==='1'||lay==='c'){
          if(phs[0]){ var id=await compress(phs[0].dataUrl,cfg.res,cfg.qual); doc.addImage(id,'JPEG',mg,mg,W-mg*2,H-mg*2-capH,'','FAST'); if(capH){doc.setFontSize(8);doc.setTextColor(80,80,80);doc.text(phs[0].caption,W/2,H-mg-2,{align:'center'});} }
        } else if(lay==='2'){
          var ch2=(H-mg*3)/2;
          for(var ci=0;ci&lt;Math.min(phs.length,2);ci++){ var id2=await compress(phs[ci].dataUrl,cfg.res,cfg.qual); doc.addImage(id2,'JPEG',mg,mg+ci*(ch2+mg),W-mg*2,ch2,'','FAST'); }
        } else if(lay==='4'){
          var cw=(W-mg*3)/2,ch4=(H-mg*3)/2;
          for(var ci=0;ci&lt;Math.min(phs.length,4);ci++){ var id4=await compress(phs[ci].dataUrl,cfg.res,cfg.qual); var cx=mg+(ci%2)*(cw+mg),cy=mg+Math.floor(ci/2)*(ch4+mg); doc.addImage(id4,'JPEG',cx,cy,cw,ch4,'','FAST'); }
        }
        doc.setFontSize(7);doc.setTextColor(180,180,180);doc.text(String(pg.pnum),W-mg,H-2,{align:'right'});
      }
      await yld();
    }
    setP(94,'PDF 파일 저장 중...'); await yld(120);
    doc.save(toSafe(ttl)+'_사진첩.pdf');
    setP(100,'✅ 완료!');
    toast('  PDF 다운로드 완료!  ',3000);
    setTimeout(function(){ if(prog)prog.classList.remove('on');if(pfill)pfill.style.width='0'; },2200);
  }catch(e){
    console.error(e); toast('❌ 오류: '+e.message); if(prog)prog.classList.remove('on');
  }
  if(btn) btn.disabled=false;
}

/* ── 이미지 압축 ── */
function compress(dataUrl, maxSz, qual){
  return new Promise(function(res){
    var img=new Image();
    img.onload=function(){
      var w=img.width,h=img.height;
      if(w&gt;maxSz||h&gt;maxSz){ if(w&gt;h){h=Math.round(h*maxSz/w);w=maxSz;}else{w=Math.round(w*maxSz/h);h=maxSz;} }
      var c=document.createElement('canvas'); c.width=w; c.height=h;
      c.getContext('2d').drawImage(img,0,0,w,h);
      res(c.toDataURL('image/jpeg',qual));
    };
    img.src=dataUrl;
  });
}

/* ── 유틸 ── */
function restart(){ if(!confirm('처음부터 다시 시작할까요?')) return; photos=[]; renderGrid(); go(1); toast('  새로 시작!'); }
function yld(ms){ return new Promise(function(r){setTimeout(r,ms||0);}); }
function el(id){ return document.getElementById(id); }
function setTxt(id,t){ var e=el(id); if(e) e.textContent=t; }
function toSafe(s){ return (s||'').replace(/[&lt;&gt;:&quot;/\\|?*\s]/g,'_'); }
function esc(s){ return (s||'').replace(/&amp;/g,'&amp;amp;').replace(/&lt;/g,'&amp;lt;').replace(/&gt;/g,'&amp;gt;'); }
function toast(msg,dur){
  dur=dur||2400;
  var t=el('pb_toast'); if(!t) return;
  t.textContent=msg; t.classList.add('on');
  setTimeout(function(){ t.classList.remove('on'); },dur);
}

/* ── 공개 API ── */
return {
  togGuide:togGuide, go:go,
  onFiles:onFiles, onDragOver:onDragOver, onDragLeave:onDragLeave, onDrop:onDrop,
  delPhoto:delPhoto, clearAll:clearAll, sortDate:sortDate,
  setFmt:setFmt, setLay:setLay, togCover:togCover, togCaption:togCaption,
  updSlider:updSlider, setCaption:setCaption,
  prevPg:prevPg, nextPg:nextPg,
  makePDF:makePDF, restart:restart,
};
}());
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>모두의계산기</category>
      <category>모두의계산기</category>
      <category>사진</category>
      <category>사진첩</category>
      <category>사진첩책자</category>
      <category>앨범</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/100</guid>
      <comments>https://0-1.kr/100#entry100comment</comments>
      <pubDate>Sun, 15 Feb 2026 21:08:43 +0900</pubDate>
    </item>
    <item>
      <title>제조업으로 오인하기 쉬운 업종 구분</title>
      <link>https://0-1.kr/99</link>
      <description>&lt;div id=&quot;mfg-expert-ios&quot; style=&quot;max-width: 600px; margin: 20px auto; padding: 25px; border-radius: 45px; font-family: -apple-system, sans-serif; background: #f2f2f7; color: #1d1d1f; box-shadow: 0 25px 60px rgba(0,0,0,0.15); overflow: hidden; line-height: 1.5;&quot;&gt;



    &lt;div style=&quot;background: white; padding: 25px; border-radius: 30px; margin-bottom: 20px; box-shadow: 0 5px 15px rgba(0,0,0,0.05);&quot;&gt;

        &lt;h2 style=&quot;font-size: 22px; font-weight: 700; margin-bottom: 15px; color:#007aff;&quot;&gt;  지원 필수 확인서&lt;/h2&gt;

        &lt;div style=&quot;display: grid; gap: 10px;&quot;&gt;

            &lt;button onclick=&quot;toggleInfo('cert1')&quot; class=&quot;cert-btn&quot;&gt;  창업기업 확인서 (발급방법)&lt;/button&gt;

            &lt;div id=&quot;cert1&quot; class=&quot;cert-info&quot;&gt;

                중기부에서 창업 7년 이내임을 증명하는 서류입니다.&lt;br&gt;

                &lt;b&gt;방법:&lt;/b&gt; 창업기업확인시스템 접속 → 신청서 작성&lt;br&gt;

                &lt;a href=&quot;https://cert.k-startup.go.kr&quot; target=&quot;_blank&quot; class=&quot;ios-link&quot;&gt;공식 사이트 바로가기 →&lt;/a&gt;

            &lt;/div&gt;

            &lt;button onclick=&quot;toggleInfo('cert2')&quot; class=&quot;cert-btn&quot;&gt;  중소기업 확인서 (발급방법)&lt;/button&gt;

            &lt;div id=&quot;cert2&quot; class=&quot;cert-info&quot;&gt;

                중소기업 범위에 해당함을 증명(자금신청 필수).&lt;br&gt;

                &lt;b&gt;방법:&lt;/b&gt; 중소기업현황정보시스템(SMINFO) → 온라인 제출&lt;br&gt;

                &lt;a href=&quot;https://sminfo.mss.go.kr&quot; target=&quot;_blank&quot; class=&quot;ios-link&quot;&gt;공식 사이트 바로가기 →&lt;/a&gt;

            &lt;/div&gt;

        &lt;/div&gt;

    &lt;/div&gt;



    &lt;div style=&quot;margin-bottom: 20px;&quot;&gt;

        &lt;h2 style=&quot;font-size: 19px; font-weight: 600; margin: 0 0 15px 15px;&quot;&gt;  제조업으로 오인하기 쉬운 업종&lt;/h2&gt;

        &lt;div id=&quot;sector-container&quot; style=&quot;display: flex; flex-direction: column; gap: 15px;&quot;&gt;

            &lt;/div&gt;

    &lt;/div&gt;



    &lt;div id=&quot;youth-quiz&quot; style=&quot;background: white; padding: 25px; border-radius: 30px; margin-bottom: 20px;&quot;&gt;

        &lt;h2 style=&quot;font-size: 20px; font-weight: 700; margin-bottom: 15px;&quot;&gt;  ♂️ 청년자금 자격 테스트&lt;/h2&gt;

        &lt;div id=&quot;quiz-step&quot;&gt;

            &lt;p id=&quot;quiz-q&quot; style=&quot;font-size: 16px; font-weight: 500; margin-bottom: 20px;&quot;&gt;Q. 본인의 연령은 만 39세 이하인가요?&lt;/p&gt;

            &lt;div style=&quot;display: grid; grid-template-columns: 1fr 1fr; gap: 10px;&quot;&gt;

                &lt;button onclick=&quot;answerQuiz(true)&quot; class=&quot;quiz-opt&quot;&gt;네&lt;/button&gt;

                &lt;button onclick=&quot;answerQuiz(false)&quot; class=&quot;quiz-opt&quot;&gt;아니오&lt;/button&gt;

            &lt;/div&gt;

        &lt;/div&gt;

    &lt;/div&gt;



    &lt;div style=&quot;background: #1d1d1f; padding: 25px; border-radius: 30px; color: white;&quot;&gt;

        &lt;h2 style=&quot;font-size: 18px; font-weight: 600; margin-bottom: 10px;&quot;&gt;  표준산업분류코드 확인&lt;/h2&gt;

        &lt;input type=&quot;text&quot; id=&quot;ksic-code&quot; placeholder=&quot;코드 5자리 입력 (예: 20423)&quot; style=&quot;width: 100%; padding: 15px; border-radius: 15px; border: none; margin-bottom: 15px;&quot;&gt;

        &lt;button onclick=&quot;checkKsic()&quot; style=&quot;width: 100%; padding: 15px; background: #007aff; color: white; border: none; border-radius: 15px; font-weight: 600; cursor: pointer;&quot;&gt;제조업 가능성 확인&lt;/button&gt;

        &lt;p id=&quot;ksic-res&quot; style=&quot;margin-top: 15px; font-size: 14px; color: #a1a1a6;&quot;&gt;&lt;/p&gt;

    &lt;/div&gt;

&lt;/div&gt;



&lt;style&gt;

    .cert-btn { width: 100%; padding: 15px; background: #f2f2f7; border: none; border-radius: 15px; text-align: left; font-size: 15px; font-weight: 600; cursor: pointer; transition: 0.2s; }

    .cert-info { display: none; padding: 15px; font-size: 14px; color: #424245; line-height: 1.6; }

    .ios-link { display: inline-block; margin-top: 5px; color: #007aff; text-decoration: none; font-weight: 600; }

    

    .sector-card { background: white; border-radius: 25px; padding: 20px; box-shadow: 0 5px 15px rgba(0,0,0,0.03); }

    .tab-bar { display: flex; background: #f2f2f7; border-radius: 12px; padding: 3px; margin-bottom: 15px; }

    .tab-btn { flex: 1; padding: 8px; border: none; border-radius: 9px; font-size: 12px; font-weight: 600; cursor: pointer; background: transparent; color: #86868b; transition: 0.3s; }

    .tab-btn.active { background: white; color: #1d1d1f; box-shadow: 0 3px 8px rgba(0,0,0,0.1); }

    

    .quiz-opt { padding: 15px; background: #f2f2f7; border: none; border-radius: 15px; font-weight: 600; cursor: pointer; }

    .quiz-opt:hover { background: #e8e8ed; }

&lt;/style&gt;



&lt;script&gt;

// 1. 섹터 정보 (주요 업종 20개)

const sectors = [

    { name: &quot;커피숍(로스터리)&quot;, x: &quot;원두를 볶아 매장에서 커피로 파는 행위는 '음식점업'입니다. 제조가 아닙니다.&quot;, o: &quot;볶은 원두를 포장하여 마트나 타 카페에 '납품'하는 B2B 매출이 발생할 때.&quot;, docs: &quot;식품제조가공업 신고증&quot;, link: &quot;https://www.foodsafetykorea.go.kr&quot; },

    { name: &quot;비누/캔들 공방&quot;, x: &quot;수강생 교육(원데이 클래스)이 메인이면 '교육 서비스업'입니다.&quot;, o: &quot;직접 레시피로 대량 생산하여 온라인/오프라인 유통 채널에 판매할 때.&quot;, docs: &quot;화장품제조업 등록필증&quot;, link: &quot;https://nedrug.mfds.go.kr&quot; },

    { name: &quot;OEM 위탁생산&quot;, x: &quot;단순히 남이 만든 물건에 내 로고만 붙여서 파는 '유통업'인 경우.&quot;, o: &quot;직접 설계/디자인을 하고 자기 명의로 제조 공정을 관리할 때(기술력 입증 필수).&quot;, docs: &quot;위탁제조 계약서 및 설계도&quot;, link: &quot;https://www.kosmes.or.kr&quot; },

    { name: &quot;의류 제작&quot;, x: &quot;기성복을 가져와 수선하거나 소량 리폼하여 판매하는 행위.&quot;, o: &quot;원단 구매부터 패턴 제작, 봉제 공정을 직접 수행하거나 관리하여 완제품 생산 시.&quot;, docs: &quot;사업자등록증(제조)&quot;, link: &quot;https://www.hometax.go.kr&quot; },

    { name: &quot;앱/SW 개발&quot;, x: &quot;단순 IT 컨설팅이나 유지보수 서비스는 '서비스업'입니다.&quot;, o: &quot;자체 패키징된 소프트웨어 솔루션을 제품화하여 판매할 때(정보통신업 내 제조 성격).&quot;, docs: &quot;직접생산확인증명서&quot;, link: &quot;https://www.smpp.go.kr&quot; },

    { name: &quot;목수/가구제작&quot;, x: &quot;현장에서 인테리어 공사의 일부로 목공 작업을 하는 것은 '건설업'입니다.&quot;, o: &quot;일정한 제조 시설에서 완제품 가구를 제작하여 판매용으로 출고할 때.&quot;, docs: &quot;공장등록증(500㎡ 이상)&quot;, link: &quot;https://www.factoryon.go.kr&quot; },

    { name: &quot;전자상거래&quot;, x: &quot;해외 직구나 도매 꾹 등에서 물건을 떼어 파는 것은 '소매업'입니다.&quot;, o: &quot;본인이 기획한 제품을 제조사에 발주하여 본인 브랜드로 판매하는 경우(제조업 간주).&quot;, docs: &quot;품목제조보고서&quot;, link: &quot;https://www.foodsafetykorea.go.kr&quot; },

    { name: &quot;컨설팅/경영자문&quot;, x: &quot;무형의 지식 서비스만 제공하는 형태는 절대 제조업이 아닙니다.&quot;, o: &quot;기업/소기업 요건 충족 시 '지식서비스업 자금'으로 신청 가능(제조업 자금은 불가).&quot;, docs: &quot;전문인력 보유 증명&quot;, link: &quot;#&quot; },

    { name: &quot;프랜차이즈 본부&quot;, x: &quot;가맹점 관리 및 로열티 수익은 '서비스업'입니다.&quot;, o: &quot;가맹점에 납품하는 소스나 식자재를 직접 공장에서 제조하는 경우만 해당 섹터 인정.&quot;, docs: &quot;식품제조가공업 신고증&quot;, link: &quot;#&quot; }

    // ... 나머지 업종도 유사 패턴으로 추가 가능

];



// 섹터 생성 함수

function renderSectors() {

    const container = document.getElementById('sector-container');

    sectors.forEach((s, idx) =&gt; {

        const card = document.createElement('div');

        card.className = 'sector-card';

        card.innerHTML = `

            &lt;div style=&quot;font-weight:700; font-size:16px; margin-bottom:12px;&quot;&gt;${idx+1}. ${s.name}&lt;/div&gt;

            &lt;div class=&quot;tab-bar&quot;&gt;

                &lt;button onclick=&quot;showTab(${idx}, 'x')&quot; id=&quot;tab-${idx}-x&quot; class=&quot;tab-btn active&quot;&gt;제조업 X&lt;/button&gt;

                &lt;button onclick=&quot;showTab(${idx}, 'o')&quot; id=&quot;tab-${idx}-o&quot; class=&quot;tab-btn&quot;&gt;제조업 O&lt;/button&gt;

                &lt;button onclick=&quot;showTab(${idx}, 'docs')&quot; id=&quot;tab-${idx}-docs&quot; class=&quot;tab-btn&quot;&gt;증빙/링크&lt;/button&gt;

            &lt;/div&gt;

            &lt;div id=&quot;content-${idx}&quot; style=&quot;font-size:14px; color:#424245; min-height:60px;&quot;&gt;

                &lt;b&gt;예시:&lt;/b&gt; ${s.x}

            &lt;/div&gt;

        `;

        container.appendChild(card);

    });

}



function showTab(idx, type) {

    const s = sectors[idx];

    const content = document.getElementById('content-'+idx);

    const tabs = document.querySelectorAll(`#tab-${idx}-x, #tab-${idx}-o, #tab-${idx}-docs`);

    tabs.forEach(t =&gt; t.classList.remove('active'));

    document.getElementById(`tab-${idx}-${type}`).classList.add('active');



    if(type === 'x') content.innerHTML = `&lt;b&gt;부적합 예시:&lt;/b&gt; ${s.x}`;

    else if(type === 'o') content.innerHTML = `&lt;b&gt;인정 예시:&lt;/b&gt; ${s.o}`;

    else content.innerHTML = `&lt;b&gt;필수서류:&lt;/b&gt; ${s.docs}&lt;br&gt;&lt;a href=&quot;${s.link}&quot; target=&quot;_blank&quot; class=&quot;ios-link&quot;&gt;공식 링크 바로가기 →&lt;/a&gt;`;

}



// 퀴즈 로직

let quizStep = 1;

function answerQuiz(isYes) {

    const q = document.getElementById('quiz-q');

    if(quizStep === 1) {

        if(!isYes) return alert(&quot;청년자금은 만 39세 이하만 가능합니다.&quot;);

        quizStep = 2;

        q.innerText = &quot;Q. 사업을 시작한 지 3년 미만인가요?&quot;;

    } else {

        if(!isYes) return alert(&quot;청년자금은 업력 3년 미만 창업자만 가능합니다.&quot;);

        document.getElementById('youth-quiz').innerHTML = &quot;✅ &lt;b&gt;기본 요건 충족!&lt;/b&gt;&lt;br&gt;연령과 업력 요건을 모두 만족합니다. 이제 업종 요건을 확인하세요.&quot;;

    }

}



// KSIC 체크

function checkKsic() {

    const code = document.getElementById('ksic-code').value;

    const res = document.getElementById('ksic-res');

    if(code.startsWith('10') || code.startsWith('11') || (code &gt;= '13' &amp;&amp; code &lt;= '34')) {

        res.innerHTML = &quot;  해당 코드는 &lt;b&gt;제조업 범위&lt;/b&gt;에 속합니다. 시설 요건 확인이 필요합니다.&quot;;

        res.style.color = &quot;#34c759&quot;;

    } else {

        res.innerHTML = &quot;  해당 코드는 일반적인 제조업 범위를 벗어납니다(서비스/소매 등).&quot;;

        res.style.color = &quot;#ff3b30&quot;;

    }

}



function toggleInfo(id) {

    const el = document.getElementById(id);

    el.style.display = (el.style.display === 'block') ? 'none' : 'block';

}



renderSectors();

&lt;/script&gt;</description>
      <category>스타트업 운영TIP/정부지원사업 TIP</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/99</guid>
      <comments>https://0-1.kr/99#entry99comment</comments>
      <pubDate>Wed, 4 Feb 2026 08:58:32 +0900</pubDate>
    </item>
    <item>
      <title>모두의 폴더구조 생성 계산기_V5</title>
      <link>https://0-1.kr/97</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
&lt;title&gt;모두의 폴더구조 생성기&lt;/title&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Gmarket+Sans:wght@500;700&amp;family=Noto+Sans+KR:wght@300;400;500;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
/* =====================================================
   모두의 폴더구조 생성기 v8
   - 밝은 테마 (라이트)
   - 티스토리 완벽 호환:
     window.FG 전역 등록 / no all:initial / no 100vh / no sticky
   - 모든 클래스 fg_ 접두사로 격리
===================================================== */
#fg-app {
  --w:    #ffffff;
  --g0:   #f8f9fc;
  --g1:   #f1f3f8;
  --g2:   #e8ecf4;
  --g3:   #dde2ed;
  --bd:   #d0d7e6;
  --bd2:  #c0c9db;
  --ac:   #3b7ef8;
  --ac-l: #eef3ff;
  --ac-m: #c5d8ff;
  --ac2:  #f08c00;
  --ac2-l:#fff4e2;
  --ac3:  #2a9e5c;
  --ac3-l:#e8f9f0;
  --ac3-m:#a3e6c0;
  --red:  #e53e3e;
  --pur:  #7048e8;
  --pur-l:#f0ecff;
  --tx:   #1a2035;
  --tx2:  #4a5568;
  --tx3:  #9aa3b4;
  --sh:   0 2px 12px rgba(60,80,140,.10);
  --sh2:  0 4px 24px rgba(60,80,140,.14);

  display: block;
  box-sizing: border-box;
  background: var(--g0);
  color: var(--tx);
  font-family: 'Noto Sans KR', -apple-system, sans-serif;
  font-size: 14px;
  border-radius: 14px;
  overflow: hidden;
  width: 100%;
  border: 1.5px solid var(--bd);
  box-shadow: var(--sh2);
}
#fg-app *, #fg-app *::before, #fg-app *::after {
  box-sizing: border-box; margin: 0; padding: 0;
  font-family: 'Noto Sans KR', -apple-system, sans-serif;
}
#fg-app button {
  cursor: pointer; border: none; background: none;
  font-family: inherit; color: inherit; line-height: 1.4;
}
#fg-app input, #fg-app select, #fg-app textarea {
  font-family: inherit;
}

/* ── 설명서 배너 ── */
.fg_guide {
  background: linear-gradient(135deg, #eef3ff 0%, #f5f8ff 100%);
  border-bottom: 1.5px solid var(--ac-m);
}
.fg_guide_hdr {
  display: flex; align-items: center; gap: 14px;
  padding: 18px 24px; cursor: pointer; user-select: none;
  transition: background .15s;
}
.fg_guide_hdr:hover { background: rgba(59,126,248,.06); }
.fg_guide_icon { font-size: 22px; flex-shrink: 0; }
.fg_guide_info { flex: 1; min-width: 0; }
.fg_guide_ttl {
  font-family: 'Gmarket Sans', sans-serif; font-size: 14px; font-weight: 700;
  color: var(--ac); display: block; margin-bottom: 3px;
}
.fg_guide_sub { font-size: 12px; color: var(--tx2); }
.fg_guide_arr {
  font-size: 14px; color: var(--tx3); flex-shrink: 0;
  transition: transform .2s; background: var(--w);
  border: 1px solid var(--bd); border-radius: 6px;
  width: 28px; height: 28px; display: flex; align-items: center; justify-content: center;
}
.fg_guide_arr.open { transform: rotate(180deg); }
.fg_guide_body {
  display: none; padding: 0 24px 24px;
  border-top: 1px solid var(--ac-m);
}
.fg_guide_body.open { display: block; }
.fg_guide_grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 12px; margin-top: 18px;
}
.fg_gcard {
  background: var(--w); border: 1.5px solid var(--bd);
  border-radius: 10px; padding: 16px 17px;
  box-shadow: var(--sh);
}
.fg_gcard_ttl {
  font-size: 13px; font-weight: 700; color: var(--ac);
  display: flex; align-items: center; gap: 6px;
  margin-bottom: 12px; padding-bottom: 10px;
  border-bottom: 1.5px solid var(--g2);
}
.fg_gcard ul { list-style: none; display: flex; flex-direction: column; gap: 7px; }
.fg_gcard li {
  font-size: 12px; color: var(--tx2); line-height: 1.6;
  padding-left: 16px; position: relative;
}
.fg_gcard li::before { content: '›'; position: absolute; left: 3px; color: var(--ac2); font-weight: 700; font-size: 14px; top: -1px; }
.fg_gcard li b { color: var(--tx); font-weight: 600; }
.fg_guide_tip {
  margin-top: 16px; padding: 14px 17px;
  background: var(--ac3-l); border: 1.5px solid var(--ac3-m);
  border-radius: 10px; font-size: 12px; color: var(--tx2); line-height: 2.0;
}
.fg_guide_tip b { color: var(--ac3); }
.fg_guide_tip code {
  background: rgba(0,0,0,.06); padding: 2px 7px;
  border-radius: 4px; font-family: 'Courier New', monospace; font-size: 11px; color: var(--tx);
}

/* ── 툴바 ── */
.fg_toolbar {
  background: var(--w); border-bottom: 1.5px solid var(--bd);
  padding: 16px 24px;
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
}
.fg_proj_box {
  display: flex; align-items: center; gap: 12px;
  background: var(--g0); border: 1.5px solid var(--bd);
  border-radius: 10px; padding: 12px 18px;
  flex: 1; min-width: 200px; max-width: 320px;
  transition: border-color .15s, box-shadow .15s;
}
.fg_proj_box:focus-within {
  border-color: var(--ac); box-shadow: 0 0 0 3px rgba(59,126,248,.12);
}
.fg_proj_ico { font-size: 20px; flex-shrink: 0; }
.fg_proj_inp {
  flex: 1; background: none; border: none; outline: none;
  font-family: 'Gmarket Sans', sans-serif; font-size: 15px; font-weight: 700;
  color: var(--tx); caret-color: var(--ac); min-width: 0;
}
.fg_proj_inp::placeholder { color: var(--tx3); }
.fg_save_badge {
  font-size: 11px; color: var(--ac3); padding: 6px 13px;
  background: var(--ac3-l); border: 1.5px solid var(--ac3-m);
  border-radius: 20px; white-space: nowrap; flex-shrink: 0; font-weight: 600;
}
.fg_sep { width: 1.5px; height: 28px; background: var(--bd); flex-shrink: 0; }
.fg_tbtn {
  padding: 9px 15px; border-radius: 9px; border: 1.5px solid var(--bd);
  background: var(--w); color: var(--tx2);
  font-size: 12px; font-weight: 500; transition: all .14s; white-space: nowrap;
}
.fg_tbtn:hover { background: var(--g1); border-color: var(--bd2); color: var(--tx); }
.fg_tbtn.pur { background: var(--pur-l); border-color: var(--pur); color: var(--pur); font-weight: 600; }
.fg_tbtn.pur:hover { background: var(--pur); color: #fff; }
.fg_tbtn.ora { background: var(--ac2-l); border-color: var(--ac2); color: var(--ac2); font-weight: 600; }
.fg_tbtn.ora:hover { background: var(--ac2); color: #fff; }
.fg_tbtn.blu { background: var(--ac-l); border-color: var(--ac); color: var(--ac); font-weight: 600; }
.fg_tbtn.blu:hover { background: var(--ac); color: #fff; }

/* ── 템플릿 &amp; 말머리 통합 액션바 ── */
.fg_actionbar {
  background: var(--w); border-bottom: 1.5px solid var(--bd);
  padding: 0 24px; display: flex; align-items: stretch; position: relative;
  gap: 0;
}

/* 템플릿 드롭다운 트리거 */
.fg_tmpl_trig {
  display: flex; align-items: center; gap: 10px;
  padding: 16px 18px; cursor: pointer; transition: all .14s;
  border: none; background: none;
  border-bottom: 2.5px solid transparent; margin-bottom: -1.5px;
  white-space: nowrap; flex-shrink: 0;
}
.fg_tmpl_trig:hover { background: var(--g0); }
.fg_tmpl_trig.on { border-bottom-color: var(--ac2); background: var(--ac2-l); }
.fg_tmpl_icon { font-size: 18px; }
.fg_tmpl_info { display: flex; flex-direction: column; align-items: flex-start; }
.fg_tmpl_lbl { font-size: 10px; color: var(--tx3); font-weight: 600; letter-spacing: .5px; }
.fg_tmpl_val { font-size: 13px; font-weight: 700; color: var(--ac2); }
.fg_tmpl_arr { font-size: 10px; color: var(--tx3); margin-left: 2px; }

.fg_ab_sep { width: 1.5px; background: var(--bd); margin: 10px 0; flex-shrink: 0; }

/* 말머리 트리거 */
.fg_pfx_trig {
  display: flex; align-items: center; gap: 10px;
  padding: 16px 18px; cursor: pointer; transition: all .14s;
  border: none; background: none;
  border-bottom: 2.5px solid transparent; margin-bottom: -1.5px;
  white-space: nowrap; flex-shrink: 0;
}
.fg_pfx_trig:hover { background: var(--g0); }
.fg_pfx_trig.on { border-bottom-color: var(--ac); background: var(--ac-l); }
.fg_pfx_icon { font-size: 16px; }
.fg_pfx_info { display: flex; flex-direction: column; align-items: flex-start; }
.fg_pfx_lbl { font-size: 10px; color: var(--tx3); font-weight: 600; letter-spacing: .5px; }
.fg_pfx_val {
  font-family: 'Courier New', monospace; font-size: 14px; font-weight: 700;
  color: var(--ac); line-height: 1;
}
.fg_pfx_arr { font-size: 10px; color: var(--tx3); margin-left: 2px; }

/* 직접입력 트리거 */
.fg_cust_trig {
  display: flex; align-items: center; gap: 8px;
  padding: 16px 16px; cursor: pointer; transition: all .14s;
  border: none; background: none; font-size: 12px; color: var(--tx2); font-weight: 500;
  border-bottom: 2.5px solid transparent; margin-bottom: -1.5px;
  white-space: nowrap; flex-shrink: 0;
}
.fg_cust_trig:hover { background: var(--g0); color: var(--tx); }
.fg_cust_trig.on { border-bottom-color: var(--ac3); color: var(--ac3); background: var(--ac3-l); font-weight: 600; }

/* ZIP 버튼 (액션바 오른쪽 끝) */
.fg_zip_inline {
  margin-left: auto; display: flex; align-items: center; padding: 0 0 0 12px; flex-shrink: 0;
}
.fg_zip_btn_sm {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 20px; border-radius: 9px;
  background: linear-gradient(135deg, #1e9e52, #167a3e);
  border: 1.5px solid #28c462; color: #fff;
  font-size: 13px; font-weight: 700;
  box-shadow: 0 2px 12px rgba(30,158,82,.3);
  transition: all .15s; white-space: nowrap;
}
.fg_zip_btn_sm:hover { transform: translateY(-1px); box-shadow: 0 4px 20px rgba(30,158,82,.4); }
.fg_zip_btn_sm:active { transform: translateY(0); }
.fg_zip_btn_sm:disabled { opacity: .5; cursor: not-allowed; transform: none; box-shadow: none; }

/* ── 드롭다운 공통 ── */
.fg_dd {
  position: absolute; top: calc(100% + 5px);
  background: var(--w); border: 1.5px solid var(--bd);
  border-radius: 14px; box-shadow: 0 12px 44px rgba(60,80,140,.18);
  z-index: 600; display: none; overflow: hidden;
}
.fg_dd.open { display: block; }
.fg_dd_hdr {
  font-size: 11px; color: var(--tx2); font-weight: 700;
  padding: 14px 18px; background: var(--g1);
  border-bottom: 1px solid var(--bd); letter-spacing: .4px;
}

/* 템플릿 드롭다운 */
.fg_tmpl_dd { left: 24px; min-width: 520px; }
.fg_tmpl_grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 8px; padding: 16px 18px;
}
.fg_tmpl_card {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 14px; border-radius: 9px;
  border: 1.5px solid var(--bd); background: var(--g0);
  cursor: pointer; transition: all .13s; text-align: left;
}
.fg_tmpl_card:hover { border-color: var(--ac2); background: var(--ac2-l); transform: translateY(-1px); box-shadow: var(--sh); }
.fg_tmpl_card.cur { border-color: var(--ac2); background: var(--ac2-l); }
.fg_tmpl_card_ico { font-size: 20px; flex-shrink: 0; }
.fg_tmpl_card_name { font-size: 12px; font-weight: 600; color: var(--tx); }
.fg_tmpl_card_sub { font-size: 10px; color: var(--tx3); margin-top: 1px; }
.fg_tmpl_card.cur .fg_tmpl_card_name { color: var(--ac2); }

/* 말머리 드롭다운 */
.fg_pfx_dd { left: 200px; min-width: 480px; }
.fg_pfx_grid {
  display: grid; grid-template-columns: repeat(4,1fr);
  gap: 8px; padding: 16px 18px 14px;
}
.fg_pfx_card {
  display: flex; flex-direction: column; align-items: center; gap: 5px;
  padding: 13px 8px; border-radius: 9px;
  border: 1.5px solid var(--bd); background: var(--g0);
  cursor: pointer; transition: all .13s;
}
.fg_pfx_card:hover { border-color: var(--ac); background: var(--ac-l); transform: translateY(-1px); }
.fg_pfx_card.cur { border-color: var(--ac); background: var(--ac-l); }
.fg_pfx_card_p {
  font-family: 'Courier New', monospace; font-size: 15px; font-weight: 700;
  color: var(--ac); line-height: 1;
}
.fg_pfx_card_n { font-size: 11px; color: var(--tx2); font-weight: 600; }
.fg_pfx_card_e { font-size: 9px; color: var(--tx3); }
.fg_pfx_card.cur .fg_pfx_card_n { color: var(--ac); }
.fg_digit_row {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 18px 16px; border-top: 1px solid var(--bd);
}
.fg_digit_lbl { font-size: 11px; color: var(--tx2); font-weight: 600; white-space: nowrap; }
.fg_digit_wrap { display: flex; gap: 6px; }
.fg_digit_opt {
  padding: 5px 13px; border-radius: 6px;
  border: 1.5px solid var(--bd); background: var(--g0);
  font-family: 'Courier New', monospace; font-size: 11px; color: var(--tx2);
  transition: all .13s; font-weight: 600;
}
.fg_digit_opt:hover { border-color: var(--ac); color: var(--ac); background: var(--ac-l); }
.fg_digit_opt.cur { border-color: var(--ac); background: var(--ac-l); color: var(--ac); }

/* 직접입력 드롭다운 */
.fg_cust_dd { left: 390px; width: 320px; }
.fg_cust_body { padding: 14px 18px 18px; }
.fg_cust_chips { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 12px; }
.fg_cust_chip {
  padding: 5px 13px; border-radius: 16px;
  border: 1.5px solid var(--bd); background: var(--g0);
  color: var(--tx2); font-size: 12px; font-weight: 600; transition: all .12s;
}
.fg_cust_chip:hover { border-color: var(--ac3); color: var(--ac3); background: var(--ac3-l); }
.fg_cust_row { display: flex; gap: 8px; margin-bottom: 9px; }
.fg_cust_input {
  flex: 1; padding: 10px 13px; border-radius: 8px;
  border: 1.5px solid var(--bd); background: var(--g0);
  color: var(--tx); font-size: 13px; outline: none;
  caret-color: var(--ac); transition: border-color .13s;
}
.fg_cust_input:focus { border-color: var(--ac); background: var(--w); box-shadow: 0 0 0 3px rgba(59,126,248,.10); }
.fg_cust_input::placeholder { color: var(--tx3); }
.fg_cust_apply {
  padding: 10px 14px; border-radius: 8px;
  background: var(--ac3); color: #fff; font-size: 12px; font-weight: 700;
  white-space: nowrap; transition: all .13s;
}
.fg_cust_apply:hover { background: #228a4f; transform: translateY(-1px); }
.fg_cust_res { font-size: 11px; color: var(--ac3); min-height: 16px; font-weight: 600; }

/* ── 단축키 바 ── */
.fg_kb_bar {
  display: flex; align-items: center; flex-wrap: wrap; gap: 4px;
  padding: 10px 24px; background: var(--g1); border-bottom: 1px solid var(--bd);
}
.fg_kb_item {
  display: flex; align-items: center; gap: 6px;
  padding: 4px 10px; border-radius: 16px; font-size: 11px; color: var(--tx2);
}
.fg_kb_key {
  padding: 2px 8px; border-radius: 4px;
  border: 1px solid var(--bd2); background: var(--w);
  font-family: 'Courier New', monospace; font-size: 10px;
  color: var(--tx); font-weight: 700;
  box-shadow: 0 1px 2px rgba(0,0,0,.08);
}
.fg_kb_div { color: var(--bd2); font-size: 16px; margin: 0 4px; }
.fg_kb_lpfx { color: var(--ac2); font-weight: 700; font-size: 14px; }

/* ── 메인 레이아웃 ── */
.fg_main { display: flex; overflow: hidden; }

/* ── 에디터 ── */
.fg_editor { flex: 1; min-width: 0; display: flex; flex-direction: column; overflow: hidden; }
.fg_editor_body { flex: 1; overflow-y: auto; padding: 22px 24px 36px; background: var(--g0); }
.fg_editor_body::-webkit-scrollbar { width: 6px; }
.fg_editor_body::-webkit-scrollbar-thumb { background: var(--bd); border-radius: 4px; }
.fg_editor_body::-webkit-scrollbar-track { background: var(--g1); }

/* ── 트리 ── */
.fg_tree { display: flex; flex-direction: column; gap: 2px; }
.fg_fnode { display: flex; flex-direction: column; }
.fg_frow {
  display: flex; align-items: center; border-radius: 9px;
  min-height: 42px; padding-right: 8px; transition: background .12s;
}
.fg_frow:hover { background: var(--w); box-shadow: var(--sh); }
.fg_frow.sel { background: var(--ac-l); outline: 1.5px solid var(--ac-m); }

.fg_fnode.dragging { opacity: .35; }
.fg_drag_top::before { content:''; display:block; height:2px; background:var(--ac); border-radius:2px; margin:0 10px; }
.fg_drag_bot::after  { content:''; display:block; height:2px; background:var(--ac); border-radius:2px; margin:0 10px; }
.fg_drag_in &gt; .fg_frow { outline: 2px dashed var(--ac3) !important; border-radius:9px; }
.fg_ctrl_drag .fg_frow { outline: 2px dashed var(--ac2) !important; }

.fg_indent { flex-shrink: 0; display: flex; align-items: stretch; }
.fg_iseg { width: 22px; display: flex; justify-content: center; position: relative; }
.fg_iseg::before { content:''; position:absolute; left:50%; top:0; bottom:0; width:1px; background:var(--g3); transform:translateX(-50%); }
.fg_iseg.last::after { content:''; position:absolute; left:50%; top:50%; width:9px; height:1px; background:var(--g3); }

.fg_tgl {
  width: 22px; height: 22px; flex-shrink: 0; border: none; background: none;
  color: var(--tx3); font-size: 10px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 4px; transition: all .12s; margin-right: 2px;
}
.fg_tgl:hover { background: var(--g2); color: var(--tx); }
.fg_tgl.leaf { opacity: 0; pointer-events: none; }
.fg_handle {
  width: 18px; flex-shrink: 0; cursor: grab; color: var(--tx3);
  font-size: 13px; opacity: 0; transition: opacity .12s;
  display: flex; align-items: center; justify-content: center;
  user-select: none; margin-right: 4px;
}
.fg_frow:hover .fg_handle { opacity: 1; }
.fg_ficon { font-size: 17px; margin-right: 7px; flex-shrink: 0; transition: transform .12s; line-height: 1; }
.fg_frow:hover .fg_ficon { transform: scale(1.08); }

.fg_badge {
  font-family: 'Courier New', monospace; font-size: 13px; font-weight: 700;
  color: var(--ac); flex-shrink: 0; margin-right: 2px; min-width: 6px; line-height: 1;
}
.fg_fname {
  flex: 1; background: none; border: 1.5px solid transparent; outline: none;
  padding: 5px 8px; border-radius: 7px; cursor: pointer;
  color: var(--tx); font-size: 14px; font-weight: 500;
  caret-color: var(--ac); min-width: 0; transition: all .12s;
}
.fg_fname:focus {
  background: var(--w); border-color: var(--ac); cursor: text;
  box-shadow: 0 0 0 3px rgba(59,126,248,.12);
}
.fg_fname::placeholder { color: var(--tx3); }

.fg_acts { display: flex; gap: 3px; margin-left: auto; opacity: 0; transition: opacity .12s; flex-shrink: 0; }
.fg_frow:hover .fg_acts { opacity: 1; }
.fg_ab {
  width: 28px; height: 28px; border-radius: 6px; border: none; background: none;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; color: var(--tx3); transition: all .12s;
}
.fg_ab:hover { background: var(--g2); color: var(--tx); }
.fg_ab.pfx:hover  { background: var(--ac2-l); color: var(--ac2); }
.fg_ab.add:hover  { background: var(--ac-l);  color: var(--ac); }
.fg_ab.dup:hover  { background: var(--g2);    color: var(--pur); }
.fg_ab.del:hover  { background: #fff0f0;       color: var(--red); }
.fg_ab.pfx_on { color: var(--ac2) !important; opacity: 1 !important; }

.fg_children { display: flex; flex-direction: column; gap: 2px; overflow: hidden; transition: max-height .2s ease; }
.fg_children.closed { max-height: 0 !important; }

.fg_add_root {
  display: flex; align-items: center; gap: 11px;
  padding: 14px 18px; margin-top: 16px;
  border: 2px dashed var(--bd); border-radius: 11px;
  color: var(--tx2); font-size: 13px; font-weight: 500;
  transition: all .14s; background: none; width: 100%;
}
.fg_add_root:hover { border-color: var(--ac); color: var(--ac); background: var(--ac-l); }

/* ── 우측 패널 ── */
.fg_side {
  width: 240px; flex-shrink: 0;
  background: var(--w); border-left: 1.5px solid var(--bd);
  display: flex; flex-direction: column; overflow: hidden;
}
.fg_side_scroll {
  flex: 1; overflow-y: auto; padding: 20px 16px 28px;
  display: flex; flex-direction: column; gap: 22px;
}
.fg_side_scroll::-webkit-scrollbar { width: 5px; }
.fg_side_scroll::-webkit-scrollbar-thumb { background: var(--bd); border-radius: 3px; }
.fg_sec_hdr {
  font-size: 11px; color: var(--tx2); font-weight: 700; letter-spacing: 1px;
  text-transform: uppercase; padding-bottom: 10px; border-bottom: 1.5px solid var(--g2);
  margin-bottom: 12px;
}

/* 미리보기 */
.fg_prev_box {
  background: var(--g0); border: 1.5px solid var(--bd);
  border-radius: 9px; padding: 13px 14px;
  font-family: 'Courier New', monospace; font-size: 11px;
  line-height: 2.0; white-space: pre; overflow-x: auto; min-height: 120px;
  color: var(--tx2);
}
.fg_prev_box::-webkit-scrollbar { height: 4px; }
.fg_prev_box::-webkit-scrollbar-thumb { background: var(--bd); border-radius:2px; }
.fg_pc_root   { color: var(--ac); font-weight: 700; }
.fg_pc_br     { color: var(--bd); }
.fg_pc_folder { color: var(--ac2); font-weight: 600; }

/* 통계 */
.fg_stats { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.fg_stat {
  background: var(--g0); border: 1.5px solid var(--bd);
  border-radius: 9px; padding: 13px 12px;
}
.fg_stat_lbl { font-size: 10px; color: var(--tx3); font-weight: 600; display: block; margin-bottom: 5px; }
.fg_stat_val { font-family: 'Gmarket Sans', sans-serif; font-size: 24px; font-weight: 700; display: block; }

/* ZIP 강조 블록 */
.fg_zip_block {
  background: linear-gradient(135deg, var(--ac3-l), #f0fdf5);
  border: 2px solid var(--ac3-m); border-radius: 12px;
  padding: 18px 16px;
}
.fg_zip_block_lbl {
  font-size: 12px; font-weight: 700; color: var(--ac3);
  text-align: center; display: block; margin-bottom: 4px; letter-spacing: .4px;
}
.fg_zip_block_desc {
  font-size: 11px; color: var(--tx2); text-align: center;
  display: block; margin-bottom: 14px; line-height: 1.7;
}
.fg_zip_btn_main {
  width: 100%; padding: 14px 12px;
  background: linear-gradient(135deg, #1c9e50, #15773c);
  border: 2px solid #25ba5e; border-radius: 10px;
  color: #fff; font-size: 14px; font-weight: 700;
  display: flex; align-items: center; justify-content: center; gap: 9px;
  transition: all .15s; letter-spacing: .3px;
  box-shadow: 0 3px 16px rgba(28,158,80,.28);
}
.fg_zip_btn_main:hover { transform: translateY(-2px); box-shadow: 0 6px 24px rgba(28,158,80,.38); }
.fg_zip_btn_main:active { transform: translateY(0); }
.fg_zip_btn_main:disabled { opacity: .5; cursor: not-allowed; transform: none; box-shadow: none; }

.fg_exp_btns { display: flex; flex-direction: column; gap: 8px; margin-top: 12px; }
.fg_ebtn {
  width: 100%; padding: 10px 12px; border-radius: 9px; border: 1.5px solid var(--bd);
  font-size: 12px; font-weight: 600;
  display: flex; align-items: center; justify-content: center; gap: 7px;
  transition: all .13s;
}
.fg_ebtn.e_txt  { background: var(--ac-l); border-color: var(--ac-m); color: var(--ac); }
.fg_ebtn.e_txt:hover  { background: var(--ac); color: #fff; border-color: var(--ac); }
.fg_ebtn.e_mail { background: var(--ac2-l); border-color: #ffd09e; color: var(--ac2); }
.fg_ebtn.e_mail:hover { background: var(--ac2); color: #fff; border-color: var(--ac2); }
.fg_ebtn.e_bk   { background: var(--pur-l); border-color: #c5b5f5; color: var(--pur); }
.fg_ebtn.e_bk:hover   { background: var(--pur); color: #fff; border-color: var(--pur); }

/* ── 하위 말머리 팝오버 ── */
.fg_lpop {
  position: fixed; z-index: 9800;
  background: var(--w); border: 1.5px solid var(--bd);
  border-radius: 12px; padding: 8px;
  box-shadow: 0 12px 40px rgba(60,80,140,.2); min-width: 170px;
}
.fg_lpop_hdr { font-size: 10px; color: var(--tx3); font-weight: 700; padding: 4px 10px 9px; border-bottom: 1px solid var(--bd); margin-bottom: 5px; letter-spacing: .5px; }
.fg_lopt {
  display: flex; align-items: center; gap: 9px; padding: 8px 12px;
  border-radius: 7px; border: none; background: none;
  color: var(--tx2); font-size: 12px; cursor: pointer; text-align: left;
  width: 100%; transition: all .12s; white-space: nowrap;
}
.fg_lopt:hover { background: var(--g1); color: var(--tx); }
.fg_lopt.on { background: var(--ac-l); color: var(--ac); font-weight: 700; }
.fg_lopt_p { font-family: 'Courier New', monospace; font-size: 12px; color: var(--ac); min-width: 44px; font-weight: 700; }

/* ── 모달 ── */
.fg_modal_bg {
  position: fixed; inset: 0; background: rgba(20,30,60,.55); z-index: 9000;
  display: flex; align-items: center; justify-content: center;
}
.fg_modal {
  background: var(--w); border: 1.5px solid var(--bd);
  border-radius: 16px; padding: 28px 30px;
  max-width: 460px; width: 93%;
  box-shadow: 0 24px 64px rgba(60,80,140,.22);
}
.fg_modal_t { font-family: 'Gmarket Sans', sans-serif; font-size: 17px; font-weight: 700; color: var(--tx); display: block; margin-bottom: 10px; }
.fg_modal_b { font-size: 13px; color: var(--tx2); line-height: 1.8; }
.fg_modal_row { display: flex; gap: 8px; justify-content: flex-end; margin-top: 20px; }
.fg_mbtn {
  padding: 9px 20px; border-radius: 9px; border: 1.5px solid var(--bd);
  background: var(--g0); color: var(--tx2); font-size: 13px; font-weight: 500; transition: all .13s;
}
.fg_mbtn:hover { color: var(--tx); background: var(--g2); }
.fg_mbtn.p { background: var(--ac); border-color: var(--ac); color: #fff; font-weight: 700; }
.fg_mbtn.p:hover { background: #2a6fe0; }
.fg_bk_ta {
  display: block; width: 100%; height: 130px; margin-top: 14px;
  background: var(--g0); border: 1.5px solid var(--bd);
  border-radius: 9px; padding: 12px; color: var(--tx);
  font-size: 11px; font-family: 'Courier New', monospace;
  outline: none; resize: vertical; caret-color: var(--ac);
}
.fg_bk_ta:focus { border-color: var(--ac); box-shadow: 0 0 0 3px rgba(59,126,248,.10); }

/* ── 토스트 ── */
.fg_toast {
  position: fixed; bottom: 24px; left: 50%;
  transform: translateX(-50%) translateY(16px);
  background: var(--tx); color: #fff;
  padding: 10px 22px; border-radius: 10px; font-size: 13px; font-weight: 500;
  z-index: 9999; opacity: 0; transition: all .22s; pointer-events: none;
  white-space: nowrap; box-shadow: 0 6px 24px rgba(0,0,0,.22);
}
.fg_toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }

@keyframes fg_in { from{opacity:0;transform:translateX(-4px);} to{opacity:1;transform:translateX(0);} }
.fg_fnode { animation: fg_in .14s ease; }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;fg-app&quot;&gt;

&lt;!-- ██ 설명서 ██ --&gt;
&lt;div class=&quot;fg_guide&quot;&gt;
  &lt;div class=&quot;fg_guide_hdr&quot; onclick=&quot;FG.toggleGuide()&quot;&gt;
    &lt;span class=&quot;fg_guide_icon&quot;&gt; &lt;/span&gt;
    &lt;div class=&quot;fg_guide_info&quot;&gt;
      &lt;span class=&quot;fg_guide_ttl&quot;&gt;  모두의 폴더구조 생성기 — 기능 안내 &amp; 사용법&lt;/span&gt;
      &lt;span class=&quot;fg_guide_sub&quot;&gt;클릭하면 전체 기능 설명과 티스토리 삽입 팁을 볼 수 있어요&lt;/span&gt;
    &lt;/div&gt;
    &lt;span class=&quot;fg_guide_arr&quot; id=&quot;g_arr&quot;&gt;▾&lt;/span&gt;
  &lt;/div&gt;
  &lt;div class=&quot;fg_guide_body&quot; id=&quot;g_body&quot;&gt;
    &lt;div class=&quot;fg_guide_grid&quot;&gt;
      &lt;div class=&quot;fg_gcard&quot;&gt;
        &lt;div class=&quot;fg_gcard_ttl&quot;&gt;  기본 사용법&lt;/div&gt;
        &lt;ul&gt;
          &lt;li&gt;상단 &lt;b&gt;예시 템플릿 ▾&lt;/b&gt; 버튼 → 11가지 업종 선택&lt;/li&gt;
          &lt;li&gt;폴더명 클릭 후 바로 수정 (띄어쓰기 → &lt;b&gt;_&lt;/b&gt; 자동 변환)&lt;/li&gt;
          &lt;li&gt;&lt;b&gt; +&lt;/b&gt; 버튼으로 하위 폴더 추가, &lt;b&gt;✕&lt;/b&gt;로 삭제&lt;/li&gt;
          &lt;li&gt;하단 &lt;b&gt;최상위 폴더 추가&lt;/b&gt; 버튼으로 루트 폴더 생성&lt;/li&gt;
          &lt;li&gt;작업은 브라우저에 &lt;b&gt;자동 저장&lt;/b&gt;돼요&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
      &lt;div class=&quot;fg_gcard&quot;&gt;
        &lt;div class=&quot;fg_gcard_ttl&quot;&gt;  말머리 기능&lt;/div&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;b&gt;말머리 형식 ▾&lt;/b&gt; 버튼 → 8가지 형식 카드로 선택&lt;/li&gt;
          &lt;li&gt;선택 즉시 &lt;b&gt;모든 폴더명 앞&lt;/b&gt;에 자동 적용&lt;/li&gt;
          &lt;li&gt;말머리는 &lt;b&gt;위치(순서) 기준&lt;/b&gt;으로 번호 자동 매김&lt;/li&gt;
          &lt;li&gt;드래그로 순서 바꾸면 번호가 &lt;b&gt;자동 재정렬&lt;/b&gt;&lt;/li&gt;
          &lt;li&gt;&lt;b&gt;¶ 버튼&lt;/b&gt;으로 해당 폴더 하위만 다른 말머리 설정&lt;/li&gt;
          &lt;li&gt;&lt;b&gt;직접입력&lt;/b&gt;: 가, A, ①, §, 一 등 자유 입력&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
      &lt;div class=&quot;fg_gcard&quot;&gt;
        &lt;div class=&quot;fg_gcard_ttl&quot;&gt;  ZIP 다운로드 (핵심!)&lt;/div&gt;
        &lt;ul&gt;
          &lt;li&gt;상단 &lt;b&gt;녹색 ZIP 버튼&lt;/b&gt; 또는 우측 패널 ZIP 버튼 클릭&lt;/li&gt;
          &lt;li&gt;압축 풀면 &lt;b&gt;실제 빈 폴더 구조&lt;/b&gt;가 그대로 생성&lt;/li&gt;
          &lt;li&gt;각 폴더 안에 &lt;b&gt;_README 파일&lt;/b&gt;이 자동 포함&lt;/li&gt;
          &lt;li&gt;ZIP 안에 &lt;b&gt;백업 JSON&lt;/b&gt;도 자동으로 들어가요&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
      &lt;div class=&quot;fg_gcard&quot;&gt;
        &lt;div class=&quot;fg_gcard_ttl&quot;&gt;  드래그앤드롭&lt;/div&gt;
        &lt;ul&gt;
          &lt;li&gt;폴더 왼쪽 &lt;b&gt;⠿ 핸들&lt;/b&gt;을 드래그하면 위치 이동&lt;/li&gt;
          &lt;li&gt;&lt;b&gt;Ctrl 누른 채 드래그&lt;/b&gt;하면 복사 (주황 테두리)&lt;/li&gt;
          &lt;li&gt;드롭 위치: 위쪽=위에, 아래쪽=아래에, 중간=안쪽 삽입&lt;/li&gt;
          &lt;li&gt;이동/복사 후 말머리 번호 자동 재정렬&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
      &lt;div class=&quot;fg_gcard&quot;&gt;
        &lt;div class=&quot;fg_gcard_ttl&quot;&gt;⌨ 단축키&lt;/div&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;b&gt;F2&lt;/b&gt; — 선택된 폴더 이름 편집&lt;/li&gt;
          &lt;li&gt;&lt;b&gt;Delete&lt;/b&gt; — 선택된 폴더 삭제&lt;/li&gt;
          &lt;li&gt;&lt;b&gt;Ctrl + D&lt;/b&gt; — 선택된 폴더 복제&lt;/li&gt;
          &lt;li&gt;폴더 클릭 → 선택 → 단축키 사용&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
      &lt;div class=&quot;fg_gcard&quot;&gt;
        &lt;div class=&quot;fg_gcard_ttl&quot;&gt;  백업 / 복원&lt;/div&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;b&gt;백업/복원&lt;/b&gt; 버튼 → JSON 코드 복사 또는 파일 저장&lt;/li&gt;
          &lt;li&gt;JSON 붙여넣기 후 복원 → 그대로 복구&lt;/li&gt;
          &lt;li&gt;&lt;b&gt;메일 보내기&lt;/b&gt; → 구조 + 복원 링크를 메일로 전송&lt;/li&gt;
          &lt;li&gt;ZIP 파일 안에도 백업 JSON 자동 포함&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;fg_guide_tip&quot;&gt;
      &lt;b&gt;  티스토리 삽입&lt;/b&gt; — 글쓰기 → 우측 상단 &lt;code&gt;&amp;lt;/&amp;gt;&lt;/code&gt; HTML 편집 클릭 → 전체 코드 붙여넣기&lt;br&gt;
      &lt;b&gt;  전체화면 깨짐 방지&lt;/b&gt; — 코드 전체를 &lt;code&gt;&amp;lt;div style=&quot;overflow:hidden;max-width:100%&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;로 한 번 더 감싸주세요
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ██ 툴바 ██ --&gt;
&lt;div class=&quot;fg_toolbar&quot;&gt;
  &lt;div class=&quot;fg_proj_box&quot;&gt;
    &lt;span class=&quot;fg_proj_ico&quot;&gt; &lt;/span&gt;
    &lt;input class=&quot;fg_proj_inp&quot; id=&quot;fg_pname&quot; placeholder=&quot;프로젝트명&quot; value=&quot;새_프로젝트&quot;
      oninput=&quot;FG.onNameInput(this); FG.autoSave();&quot;&gt;
  &lt;/div&gt;
  &lt;span class=&quot;fg_save_badge&quot; id=&quot;fg_save&quot;&gt;  자동저장됨&lt;/span&gt;
  &lt;div class=&quot;fg_sep&quot;&gt;&lt;/div&gt;
  &lt;button class=&quot;fg_tbtn&quot; onclick=&quot;FG.clearAll()&quot;&gt;  초기화&lt;/button&gt;
  &lt;button class=&quot;fg_tbtn&quot; onclick=&quot;FG.copyTree()&quot;&gt;  복사&lt;/button&gt;
  &lt;button class=&quot;fg_tbtn pur&quot; onclick=&quot;FG.showBackup()&quot;&gt;  백업/복원&lt;/button&gt;
  &lt;button class=&quot;fg_tbtn ora&quot; onclick=&quot;FG.sendMail()&quot;&gt;✉ 메일&lt;/button&gt;
  &lt;button class=&quot;fg_tbtn blu&quot; onclick=&quot;FG.dlTxt()&quot;&gt;  TXT&lt;/button&gt;
&lt;/div&gt;

&lt;!-- ██ 액션바 (템플릿 + 말머리 + ZIP) ██ --&gt;
&lt;div class=&quot;fg_actionbar&quot; id=&quot;fg_actionbar&quot;&gt;

  &lt;!-- 예시 템플릿 드롭다운 --&gt;
  &lt;button class=&quot;fg_tmpl_trig&quot; id=&quot;fg_tmpl_trig&quot; onclick=&quot;FG.toggleTmplDD()&quot;&gt;
    &lt;span class=&quot;fg_tmpl_icon&quot;&gt; &lt;/span&gt;
    &lt;span class=&quot;fg_tmpl_info&quot;&gt;
      &lt;span class=&quot;fg_tmpl_lbl&quot;&gt;예시 템플릿&lt;/span&gt;
      &lt;span class=&quot;fg_tmpl_val&quot; id=&quot;fg_tmpl_val&quot;&gt;새_프로젝트&lt;/span&gt;
    &lt;/span&gt;
    &lt;span class=&quot;fg_tmpl_arr&quot; id=&quot;fg_tmpl_arr&quot;&gt;▾&lt;/span&gt;
  &lt;/button&gt;

  &lt;div class=&quot;fg_ab_sep&quot;&gt;&lt;/div&gt;

  &lt;!-- 말머리 드롭다운 --&gt;
  &lt;button class=&quot;fg_pfx_trig&quot; id=&quot;fg_pfx_trig&quot; onclick=&quot;FG.togglePfxDD()&quot;&gt;
    &lt;span class=&quot;fg_pfx_icon&quot;&gt; &lt;/span&gt;
    &lt;span class=&quot;fg_pfx_info&quot;&gt;
      &lt;span class=&quot;fg_pfx_lbl&quot;&gt;말머리 형식&lt;/span&gt;
      &lt;span class=&quot;fg_pfx_val&quot; id=&quot;fg_pfx_val&quot;&gt;[01]&lt;/span&gt;
    &lt;/span&gt;
    &lt;span class=&quot;fg_pfx_arr&quot; id=&quot;fg_pfx_arr&quot;&gt;▾&lt;/span&gt;
  &lt;/button&gt;

  &lt;div class=&quot;fg_ab_sep&quot;&gt;&lt;/div&gt;

  &lt;!-- 직접입력 --&gt;
  &lt;button class=&quot;fg_cust_trig&quot; id=&quot;fg_cust_trig&quot; onclick=&quot;FG.toggleCustDD()&quot;&gt;
    ✏ 직접입력
  &lt;/button&gt;

  &lt;!-- 드롭다운들 --&gt;
  &lt;div class=&quot;fg_dd&quot; id=&quot;fg_tmpl_dd&quot; style=&quot;left:24px;&quot;&gt;
    &lt;div class=&quot;fg_dd_hdr&quot;&gt;  예시 템플릿 선택 — 업종에 맞는 기본 폴더 구조를 불러와요&lt;/div&gt;
    &lt;div class=&quot;fg_tmpl_grid&quot; id=&quot;fg_tmpl_grid&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;fg_dd fg_pfx_dd&quot; id=&quot;fg_pfx_dd&quot;&gt;
    &lt;div class=&quot;fg_dd_hdr&quot;&gt;  말머리 형식 선택 — 선택 즉시 모든 폴더에 자동 적용됩니다&lt;/div&gt;
    &lt;div class=&quot;fg_pfx_grid&quot; id=&quot;fg_pfx_grid&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;fg_digit_row&quot;&gt;
      &lt;span class=&quot;fg_digit_lbl&quot;&gt;숫자 자릿수:&lt;/span&gt;
      &lt;div class=&quot;fg_digit_wrap&quot; id=&quot;fg_digit_wrap&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;fg_dd&quot; id=&quot;fg_cust_dd&quot; style=&quot;left:390px;&quot;&gt;
    &lt;div class=&quot;fg_dd_hdr&quot;&gt;✏ 커스텀 말머리 직접 입력&lt;/div&gt;
    &lt;div class=&quot;fg_cust_body&quot;&gt;
      &lt;div class=&quot;fg_cust_chips&quot; id=&quot;fg_cust_chips&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;fg_cust_row&quot;&gt;
        &lt;input class=&quot;fg_cust_input&quot; id=&quot;fg_cust&quot; placeholder=&quot;예: A, 가, ①, §, 一, 1 2 3&quot;&gt;
        &lt;button class=&quot;fg_cust_apply&quot; onclick=&quot;FG.applyCustom()&quot;&gt;적용 ✓&lt;/button&gt;
      &lt;/div&gt;
      &lt;div class=&quot;fg_cust_res&quot; id=&quot;fg_cust_res&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- ZIP 버튼 (오른쪽 끝) --&gt;
  &lt;div class=&quot;fg_zip_inline&quot;&gt;
    &lt;button class=&quot;fg_zip_btn_sm&quot; id=&quot;fg_zip_btn&quot; onclick=&quot;FG.dlZip()&quot;&gt;
        ZIP 다운로드
    &lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ██ 단축키 바 ██ --&gt;
&lt;div class=&quot;fg_kb_bar&quot;&gt;
  &lt;div class=&quot;fg_kb_item&quot;&gt;&lt;span class=&quot;fg_kb_key&quot;&gt;F2&lt;/span&gt;&lt;span&gt;이름변경&lt;/span&gt;&lt;/div&gt;
  &lt;div class=&quot;fg_kb_item&quot;&gt;&lt;span class=&quot;fg_kb_key&quot;&gt;Del&lt;/span&gt;&lt;span&gt;삭제&lt;/span&gt;&lt;/div&gt;
  &lt;div class=&quot;fg_kb_item&quot;&gt;&lt;span class=&quot;fg_kb_key&quot;&gt;Ctrl+D&lt;/span&gt;&lt;span&gt;복제&lt;/span&gt;&lt;/div&gt;
  &lt;div class=&quot;fg_kb_item&quot;&gt;&lt;span class=&quot;fg_kb_key&quot;&gt;Ctrl+드래그&lt;/span&gt;&lt;span&gt;복사&lt;/span&gt;&lt;/div&gt;
  &lt;span class=&quot;fg_kb_div&quot;&gt;|&lt;/span&gt;
  &lt;div class=&quot;fg_kb_item&quot;&gt;&lt;span class=&quot;fg_kb_lpfx&quot;&gt;¶&lt;/span&gt;&lt;span&gt;폴더별 말머리&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;!-- ██ 메인 ██ --&gt;
&lt;div class=&quot;fg_main&quot;&gt;

  &lt;!-- 에디터 --&gt;
  &lt;div class=&quot;fg_editor&quot;&gt;
    &lt;div class=&quot;fg_editor_body&quot;&gt;
      &lt;div class=&quot;fg_tree&quot; id=&quot;fg_tree&quot;&gt;&lt;/div&gt;
      &lt;button class=&quot;fg_add_root&quot; onclick=&quot;FG.addRoot()&quot;&gt;
        &lt;span style=&quot;font-size:18px;&quot;&gt; &lt;/span&gt;
        &lt;span&gt;+ 최상위 폴더 추가&lt;/span&gt;
      &lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 우측 패널 --&gt;
  &lt;div class=&quot;fg_side&quot;&gt;
    &lt;div class=&quot;fg_side_scroll&quot;&gt;

      &lt;div&gt;
        &lt;div class=&quot;fg_sec_hdr&quot;&gt;  구조 미리보기&lt;/div&gt;
        &lt;div class=&quot;fg_prev_box&quot; id=&quot;fg_prev&quot;&gt;...&lt;/div&gt;
      &lt;/div&gt;

      &lt;div&gt;
        &lt;div class=&quot;fg_sec_hdr&quot;&gt;  통계&lt;/div&gt;
        &lt;div class=&quot;fg_stats&quot;&gt;
          &lt;div class=&quot;fg_stat&quot;&gt;
            &lt;span class=&quot;fg_stat_lbl&quot;&gt;  폴더 수&lt;/span&gt;
            &lt;span class=&quot;fg_stat_val&quot; id=&quot;fg_sf&quot; style=&quot;color:var(--ac2)&quot;&gt;0&lt;/span&gt;
          &lt;/div&gt;
          &lt;div class=&quot;fg_stat&quot;&gt;
            &lt;span class=&quot;fg_stat_lbl&quot;&gt;  최대 깊이&lt;/span&gt;
            &lt;span class=&quot;fg_stat_val&quot; id=&quot;fg_sd&quot; style=&quot;color:var(--ac)&quot;&gt;0&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div&gt;
        &lt;div class=&quot;fg_sec_hdr&quot;&gt;  내보내기&lt;/div&gt;
        &lt;div class=&quot;fg_zip_block&quot;&gt;
          &lt;span class=&quot;fg_zip_block_lbl&quot;&gt;⬇ 폴더 구조 ZIP 다운로드&lt;/span&gt;
          &lt;span class=&quot;fg_zip_block_desc&quot;&gt;압축 풀면 실제 빈 폴더가&lt;br&gt;그대로 생성됩니다&lt;/span&gt;
          &lt;button class=&quot;fg_zip_btn_main&quot; id=&quot;fg_zip_btn2&quot; onclick=&quot;FG.dlZip()&quot;&gt;
            &lt;span style=&quot;font-size:18px;&quot;&gt; &lt;/span&gt; ZIP 다운로드
          &lt;/button&gt;
        &lt;/div&gt;
        &lt;div class=&quot;fg_exp_btns&quot;&gt;
          &lt;button class=&quot;fg_ebtn e_txt&quot;  onclick=&quot;FG.dlTxt()&quot;&gt;  TXT 텍스트로 저장&lt;/button&gt;
          &lt;button class=&quot;fg_ebtn e_mail&quot; onclick=&quot;FG.sendMail()&quot;&gt;✉ 메일로 보내기&lt;/button&gt;
          &lt;button class=&quot;fg_ebtn e_bk&quot;   onclick=&quot;FG.showBackup()&quot;&gt;  백업 / 복원&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;fg_toast&quot; id=&quot;fg_toast&quot;&gt;&lt;/div&gt;

&lt;script&gt;
// ==============================================
//  window.FG — 티스토리 onclick 완전 호환
//  no all:initial / no 100vh / no sticky
//  모든 클래스 fg_ 접두사 격리
// ==============================================
window.FG = (function() {
'use strict';

var uid = 1000, tree = [], currentTmpl = 0;
var prefixMode = 'bracket_bare', digitCount = 2, customSeq = null;
var selectedId = null, dragId = null, ctrlDrag = false;

// ── 말머리 정의 ──
var PFX_LIST = [
  {m:'bracket_bare',p:'[01]', n:'대괄호',   e:'[01]폴더'},
  {m:'bracket',     p:'[01]_',n:'대괄호_',  e:'[01]_폴더'},
  {m:'none',        p:'없음', n:'번호없음',  e:'폴더명'},
  {m:'dot',         p:'01.',  n:'숫자점',    e:'01.폴더'},
  {m:'under',       p:'01_',  n:'숫자언더',  e:'01_폴더'},
  {m:'paren',       p:'01)',  n:'숫자괄호',  e:'01)폴더'},
  {m:'kor',         p:'가.',  n:'한글',      e:'가.나.다.'},
  {m:'roman',       p:'I.',   n:'로마자',    e:'I.II.III.'},
];
var DIGIT_LIST = [{d:1,e:'1'},{d:2,e:'01'},{d:3,e:'001'},{d:4,e:'0001'}];
var CUST_PRESETS = ['가','A','a','①','一','§','◆','★'];
var LPFX_LIST = PFX_LIST.concat([{m:'__inherit__',p:' ',n:'전역 설정 따름',e:''}]);

// ── 말머리 생성 ──
function mkPfx(n, mode) {
  var s = String(n).padStart(digitCount, '0');
  if (mode==='bracket_bare') return '['+s+']';
  if (mode==='bracket')      return '['+s+']_';
  if (mode==='none')         return '';
  if (mode==='dot')          return s+'.';
  if (mode==='under')        return s+'_';
  if (mode==='paren')        return s+')';
  if (mode==='kor')  { var K=['가','나','다','라','마','바','사','아','자','차','카','타','파','하']; return (K[n-1]||'('+n+')')+'.'; }
  if (mode==='roman'){ var R=['I','II','III','IV','V','VI','VII','VIII','IX','X','XI','XII','XIII','XIV','XV','XVI','XVII','XVIII','XIX','XX']; return (R[n-1]||'('+n+')')+'.'; }
  if (mode==='custom'&amp;&amp;customSeq) return customSeq[n-1]||'('+n+')';
  return '';
}
function getPfxPreview(mode) {
  if (mode==='custom') return customSeq?customSeq[0]:'?';
  var o = PFX_LIST.find(function(p){return p.m===mode;}); return o?o.p:mode;
}
function stripPfx(name) {
  return (name||'').replace(/^\[\d+\]_?/,'').replace(/^\d+\._?/,'').replace(/^\d+__?/,'')
    .replace(/^\d+\)_?/,'').replace(/^\d+_/,'')
    .replace(/^[가나다라마바사아자차카타파하]\._?/,'')
    .replace(/^(?:I{1,3}|IV|VI{0,3}|IX|X{1,2}I{0,3}|XIV|XV|XVI{0,3}|XIX|XX)\._?/,'')
    .replace(/^_/,'');
}
function toSafe(s){ return (s||'').replace(/\s+/g,'_'); }

// ── 말머리 적용 ──
function applyPfx(nodes, parent) {
  var mode = (parent&amp;&amp;parent._lpfx) ? parent._lpfx : prefixMode;
  var fi=0;
  nodes.forEach(function(node){
    if(node.type!=='folder') return;
    fi++;
    var raw = node._raw||stripPfx(node.name)||node.name;
    node._raw = raw;
    node.name = mkPfx(fi,mode)+raw;
    if(node.children&amp;&amp;node.children.length) applyPfx(node.children,node);
  });
}
function applyAll(){ applyPfx(tree,null); }

// ── 커스텀 파서 ──
function parseCustom(raw) {
  var input=raw.trim(); if(!input) return null;
  var parts=input.split(/[\s,\/\n]+/).filter(Boolean);
  if(parts.length===1){
    var ch=parts[0];
    if(/^\d+$/.test(ch)) return {type:'num',note:'숫자 시퀀스'};
    var korA=['가','나','다','라','마','바','사','아','자','차','카','타','파','하'];
    if(korA.includes(ch)){var si=korA.indexOf(ch);return{type:'arr',arr:korA.slice(si).map(function(v){return v+'.'}),note:'한글 '+ch+'부터'};}
    if(/^[A-Z]$/.test(ch)){var si=ch.charCodeAt(0)-65;return{type:'arr',arr:'ABCDEFGHIJKLMNOPQRSTUVWXYZ'.slice(si).split('').map(function(v){return v+'_'}),note:'알파벳 대 '+ch+'부터'};}
    if(/^[a-z]$/.test(ch)){var si=ch.charCodeAt(0)-97;return{type:'arr',arr:'abcdefghijklmnopqrstuvwxyz'.slice(si).split('').map(function(v){return v+'_'}),note:'알파벳 소 '+ch+'부터'};}
    var circA=['①','②','③','④','⑤','⑥','⑦','⑧','⑨','⑩','⑪','⑫','⑬','⑭','⑮','⑯','⑰','⑱','⑲','⑳'];
    if(circA.includes(ch)){var si=circA.indexOf(ch);return{type:'arr',arr:circA.slice(si),note:'원문자 '+ch+'부터'};}
    var hanjA=['一','二','三','四','五','六','七','八','九','十'];
    if(hanjA.includes(ch)){var si=hanjA.indexOf(ch);return{type:'arr',arr:hanjA.slice(si),note:'한자 '+ch+'부터'};}
    return{type:'prefix',prefix:ch,note:'&quot;'+ch+'&quot; + 번호'};
  }
  var isNum=parts.every(function(p){return /^\d+$/.test(p);});
  if(isNum){var nums=parts.map(Number);var ok=nums.every(function(v,i){return i===0||v===nums[i-1]+1;});if(!ok)return{error:'숫자가 연속되지 않아요 ('+nums.join(', ')+')'}; return{type:'arr',arr:parts.map(function(v){return v+'_'}),note:'숫자 '+parts[0]+'~'};}
  return{type:'arr',arr:parts,note:'직접 시퀀스 ('+parts.length+'개)'};
}
function applyCustom(){
  var raw=document.getElementById('fg_cust').value.trim();
  if(!raw){toast('⚠ 입력값이 없어요');return;}
  var r=parseCustom(raw);
  if(!r){showAlert('⚠ 인식 불가','유효한 순서 패턴을 입력해주세요.\n예) 가, A, ①, 1 2 3');return;}
  if(r.error){showAlert('⚠ 순서 오류',r.error);return;}
  if(r.type==='num'){prefixMode='bracket_bare';}
  else if(r.type==='prefix'){customSeq=Array.from({length:50},function(_,i){return r.prefix+String(i+1).padStart(digitCount,'0')+'_';});prefixMode='custom';}
  else{customSeq=r.arr;prefixMode='custom';}
  var res=document.getElementById('fg_cust_res');
  if(res) res.textContent='✓ '+r.note+' → '+(customSeq?customSeq.slice(0,4).join(' / '):'');
  applyAll();renderTree();autoSave();updatePfxBtn();
  toast('✅ 커스텀 말머리 적용! '+r.note);
}

// ── 드롭다운 ──
function buildTmplGrid(){
  var g=document.getElementById('fg_tmpl_grid'); if(!g) return;
  g.innerHTML='';
  TMPLS.forEach(function(t,i){
    var btn=document.createElement('button');
    btn.className='fg_tmpl_card'+(i===currentTmpl?' cur':'');
    btn.innerHTML='&lt;span class=&quot;fg_tmpl_card_ico&quot;&gt;'+t.icon+'&lt;/span&gt;&lt;div&gt;&lt;div class=&quot;fg_tmpl_card_name&quot;&gt;'+t.name+'&lt;/div&gt;&lt;/div&gt;';
    btn.onclick=function(){loadTmpl(i);closeDDs();};
    g.appendChild(btn);
  });
}
function buildPfxGrid(){
  var g=document.getElementById('fg_pfx_grid'); if(!g) return;
  g.innerHTML='';
  PFX_LIST.forEach(function(opt){
    var btn=document.createElement('button');
    btn.className='fg_pfx_card'+(prefixMode===opt.m?' cur':'');
    btn.innerHTML='&lt;span class=&quot;fg_pfx_card_p&quot;&gt;'+opt.p+'&lt;/span&gt;&lt;span class=&quot;fg_pfx_card_n&quot;&gt;'+opt.n+'&lt;/span&gt;&lt;span class=&quot;fg_pfx_card_e&quot;&gt;'+opt.e+'&lt;/span&gt;';
    btn.onclick=function(){prefixMode=opt.m;customSeq=null;applyAll();renderTree();autoSave();buildPfxGrid();updatePfxBtn();closeDDs();};
    g.appendChild(btn);
  });
  var dw=document.getElementById('fg_digit_wrap'); if(!dw) return;
  dw.innerHTML='';
  DIGIT_LIST.forEach(function(opt){
    var btn=document.createElement('button');
    btn.className='fg_digit_opt'+(digitCount===opt.d?' cur':'');
    btn.textContent=opt.e;
    btn.onclick=function(){digitCount=opt.d;applyAll();renderTree();autoSave();buildPfxGrid();};
    dw.appendChild(btn);
  });
}
function buildCustChips(){
  var c=document.getElementById('fg_cust_chips'); if(!c) return;
  c.innerHTML='';
  CUST_PRESETS.forEach(function(ch){
    var btn=document.createElement('button');
    btn.className='fg_cust_chip';btn.textContent=ch;
    btn.onclick=function(){document.getElementById('fg_cust').value=ch;applyCustom();};
    c.appendChild(btn);
  });
}
function updatePfxBtn(){
  var v=document.getElementById('fg_pfx_val'); if(v) v.textContent=getPfxPreview(prefixMode);
}
function updateTmplBtn(){
  var v=document.getElementById('fg_tmpl_val'); if(v&amp;&amp;TMPLS[currentTmpl]) v.textContent=TMPLS[currentTmpl].name;
}

var _tmplOpen=false,_pfxOpen=false,_custOpen=false;
function closeDDs(){
  _tmplOpen=false;_pfxOpen=false;_custOpen=false;
  ['fg_tmpl_dd','fg_pfx_dd','fg_cust_dd'].forEach(function(id){var el=document.getElementById(id);if(el)el.classList.remove('open');});
  ['fg_tmpl_trig','fg_pfx_trig','fg_cust_trig'].forEach(function(id){var el=document.getElementById(id);if(el)el.classList.remove('on');});
  var arr=document.getElementById('fg_tmpl_arr');if(arr)arr.textContent='▾';
  var arr2=document.getElementById('fg_pfx_arr');if(arr2)arr2.textContent='▾';
}
function toggleTmplDD(){
  var was=_tmplOpen; closeDDs();
  if(!was){_tmplOpen=true;var dd=document.getElementById('fg_tmpl_dd');if(dd)dd.classList.add('open');var t=document.getElementById('fg_tmpl_trig');if(t)t.classList.add('on');var a=document.getElementById('fg_tmpl_arr');if(a)a.textContent='▴';buildTmplGrid();}
}
function togglePfxDD(){
  var was=_pfxOpen; closeDDs();
  if(!was){_pfxOpen=true;var dd=document.getElementById('fg_pfx_dd');if(dd)dd.classList.add('open');var t=document.getElementById('fg_pfx_trig');if(t)t.classList.add('on');var a=document.getElementById('fg_pfx_arr');if(a)a.textContent='▴';buildPfxGrid();}
}
function toggleCustDD(){
  var was=_custOpen; closeDDs();
  if(!was){_custOpen=true;var dd=document.getElementById('fg_cust_dd');if(dd)dd.classList.add('open');var t=document.getElementById('fg_cust_trig');if(t)t.classList.add('on');buildCustChips();}
}
function toggleGuide(){
  var b=document.getElementById('g_body'),a=document.getElementById('g_arr');if(!b)return;
  var open=b.classList.toggle('open');if(a){a.classList.toggle('open',open);a.textContent=open?'▴':'▾';}
}

document.addEventListener('click',function(e){
  var bar=document.getElementById('fg_actionbar');
  if(bar&amp;&amp;!bar.contains(e.target)) closeDDs();
});

// ── 템플릿 데이터 ──
function mkF(n,c){return{id:uid++,type:'folder',name:n,_raw:n,open:false,children:c||[]};}
function mkRm(d){return{id:uid++,type:'file',name:'_README_'+toSafe(d)+'.txt'};}
var TMPLS=[
  {icon:'✨',name:'새_프로젝트',proj:'새_프로젝트',b:function(){return[mkF('자료',[mkRm('자료')]),mkF('진행',[mkRm('진행')]),mkF('완료',[mkRm('완료')])];}},
  {icon:' ',name:'스타트업',proj:'스타트업_창업',b:function(){return[
    mkF('경영_전략',[mkRm('경영전략'),mkF('창업_계획서',[]),mkF('비즈니스_모델',[]),mkF('IR_피칭_자료',[]),mkF('비전_미션_밸류',[])]),
    mkF('조직_인사',[mkRm('조직인사'),mkF('조직도',[]),mkF('업무분장',[]),mkF('채용_공고',[]),mkF('출결_근태',[]),mkF('교육_훈련',[])]),
    mkF('재무_회계',[mkRm('재무회계'),mkF('예산_계획',[]),mkF('정산_지출',[]),mkF('세금_세무',[]),mkF('투자_유치',[])]),
    mkF('법무_계약',[mkRm('법무계약'),mkF('사업자_등록',[]),mkF('계약서',[]),mkF('지식재산권',[]),mkF('NDA_비밀유지',[])]),
    mkF('결재_문서',[mkRm('결재문서'),mkF('품의서',[]),mkF('기안서',[]),mkF('보고서',[])]),
    mkF('마케팅_홍보',[mkRm('마케팅'),mkF('브랜드_아이덴티티',[]),mkF('SNS_콘텐츠',[]),mkF('보도자료',[])]),
    mkF('제품_서비스',[mkRm('제품'),mkF('기획서',[]),mkF('개발_일정',[]),mkF('테스트_QA',[])]),
  ];}},
  {icon:' ',name:'크리에이터',proj:'크리에이터_채널',b:function(){return[
    mkF('콘텐츠_기획',[mkRm('기획'),mkF('아이디어_뱅크',[]),mkF('촬영_스크립트',[]),mkF('콘텐츠_캘린더',[])]),
    mkF('촬영_제작',[mkRm('촬영'),mkF('원본_영상',[]),mkF('음성_녹음',[]),mkF('이미지_사진',[]),mkF('자막_스크립트',[])]),
    mkF('편집_후반',[mkRm('편집'),mkF('편집_프로젝트',[]),mkF('썸네일_디자인',[]),mkF('음악_효과음',[]),mkF('최종_완성본',[])]),
    mkF('채널_플랫폼',[mkRm('채널'),mkF('유튜브',[]),mkF('인스타그램',[]),mkF('틱톡',[])]),
    mkF('수익_재무',[mkRm('수익'),mkF('광고_수익',[]),mkF('협찬_스폰서',[]),mkF('세금_정산',[])]),
    mkF('협업_업무분장',[mkRm('협업'),mkF('팀원_역할',[]),mkF('외주_계약',[]),mkF('미팅_회의록',[])]),
    mkF('분석_성과',[mkRm('성과'),mkF('조회수_통계',[]),mkF('댓글_피드백',[]),mkF('경쟁사_분석',[])]),
  ];}},
  {icon:' ',name:'중소기업_제조업',proj:'중소기업_제조업',b:function(){return[
    mkF('경영_기획',[mkRm('경영'),mkF('경영계획서',[]),mkF('이사회_회의록',[]),mkF('목표_KPI',[])]),
    mkF('인사_총무',[mkRm('인사'),mkF('근태_출결',[]),mkF('휴가_관리',[]),mkF('출장_관리',[]),mkF('급여_대장',[]),mkF('채용_관리',[]),mkF('교육_훈련',[]),mkF('퇴직_관리',[])]),
    mkF('생산_제조',[mkRm('생산'),mkF('생산계획',[]),mkF('공정관리',[]),mkF('품질관리_QC',[]),mkF('설비_유지보수',[]),mkF('원자재_입고',[])]),
    mkF('구매_자재',[mkRm('구매'),mkF('구매_발주',[]),mkF('거래처_관리',[]),mkF('재고_관리',[])]),
    mkF('영업_수주',[mkRm('영업'),mkF('견적서',[]),mkF('수주_계약',[]),mkF('납품_관리',[]),mkF('고객사_관리',[])]),
    mkF('재무_회계',[mkRm('재무'),mkF('예산_편성',[]),mkF('결산',[]),mkF('세무_신고',[]),mkF('지출_결의',[])]),
    mkF('결재_문서',[mkRm('결재'),mkF('품의서',[]),mkF('기안서',[]),mkF('보고서',[]),mkF('공문서',[])]),
    mkF('공유_자료실',[mkRm('자료실'),mkF('사규_규정',[]),mkF('양식_서식',[]),mkF('안전_관리',[])]),
  ];}},
  {icon:' ',name:'중소기업_IT디자인',proj:'중소기업_IT디자인',b:function(){return[
    mkF('경영_기획',[mkRm('경영'),mkF('사업계획서',[]),mkF('목표_OKR',[])]),
    mkF('인사_총무',[mkRm('인사'),mkF('근태_출결',[]),mkF('휴가_관리',[]),mkF('출장_관리',[]),mkF('급여_대장',[]),mkF('채용_관리',[])]),
    mkF('프로젝트_관리',[mkRm('프로젝트'),mkF('진행중_프로젝트',[]),mkF('완료_프로젝트',[]),mkF('제안_영업',[])]),
    mkF('개발',[mkRm('개발'),mkF('요구사항_분석',[]),mkF('설계_문서',[]),mkF('소스코드_관리',[]),mkF('테스트_QA',[]),mkF('배포_운영',[])]),
    mkF('디자인',[mkRm('디자인'),mkF('브랜드_가이드',[]),mkF('UI_UX',[]),mkF('시안_히스토리',[]),mkF('최종_에셋',[])]),
    mkF('영업_계약',[mkRm('영업'),mkF('견적서',[]),mkF('계약서',[]),mkF('고객사_관리',[])]),
    mkF('재무_회계',[mkRm('재무'),mkF('예산',[]),mkF('정산_지출',[]),mkF('세무',[])]),
    mkF('결재_문서',[mkRm('결재'),mkF('품의서',[]),mkF('기안서',[]),mkF('보고서',[])]),
    mkF('공유_자료실',[mkRm('자료실'),mkF('사규_규정',[]),mkF('양식_서식',[]),mkF('기술_문서',[])]),
  ];}},
  {icon:' ',name:'서비스업',proj:'서비스업_운영',b:function(){return[
    mkF('경영_기획',[mkRm('경영'),mkF('사업계획',[]),mkF('목표_KPI',[])]),
    mkF('인사_총무',[mkRm('인사'),mkF('근태_출결',[]),mkF('휴가_관리',[]),mkF('출장_관리',[]),mkF('급여_대장',[]),mkF('채용',[])]),
    mkF('고객_관리',[mkRm('고객'),mkF('고객DB',[]),mkF('상담_이력',[]),mkF('VOC_불만',[]),mkF('만족도_조사',[])]),
    mkF('서비스_운영',[mkRm('운영'),mkF('매뉴얼',[]),mkF('스케줄_예약',[]),mkF('현장_관리',[])]),
    mkF('영업_마케팅',[mkRm('영업'),mkF('견적서',[]),mkF('제안서',[]),mkF('계약서',[]),mkF('홍보_자료',[])]),
    mkF('재무_회계',[mkRm('재무'),mkF('매출_관리',[]),mkF('지출_결의',[]),mkF('세무',[])]),
    mkF('결재_문서',[mkRm('결재'),mkF('품의서',[]),mkF('기안서',[]),mkF('보고서',[])]),
  ];}},
  {icon:' ',name:'부동산_건설',proj:'부동산_건설',b:function(){return[
    mkF('인허가_법무',[mkRm('인허가'),mkF('건축허가',[]),mkF('관련_법규',[]),mkF('계약_법무',[])]),
    mkF('설계',[mkRm('설계'),mkF('기본설계',[]),mkF('실시설계',[]),mkF('도면',[])]),
    mkF('시공_현장',[mkRm('시공'),mkF('공정표',[]),mkF('현장_일지',[]),mkF('검사_서류',[]),mkF('안전_관리',[])]),
    mkF('구매_자재',[mkRm('구매'),mkF('발주서',[]),mkF('거래처',[]),mkF('재고',[])]),
    mkF('재무_원가',[mkRm('재무'),mkF('예산',[]),mkF('원가_분석',[]),mkF('정산',[])]),
    mkF('준공_사후',[mkRm('준공'),mkF('준공도서',[]),mkF('하자_관리',[]),mkF('유지_보수',[])]),
  ];}},
  {icon:' ',name:'교육기관',proj:'교육기관_운영',b:function(){return[
    mkF('교무_행정',[mkRm('교무'),mkF('학사일정',[]),mkF('수업계획서',[]),mkF('성적_관리',[])]),
    mkF('학생_관리',[mkRm('학생'),mkF('출결_관리',[]),mkF('상담_이력',[]),mkF('장학_관리',[])]),
    mkF('강의_자료',[mkRm('강의'),mkF('교안',[]),mkF('시험_문제',[]),mkF('과제',[])]),
    mkF('인사_총무',[mkRm('인사'),mkF('근태_출결',[]),mkF('휴가',[]),mkF('급여',[])]),
    mkF('재무_회계',[mkRm('재무'),mkF('예산',[]),mkF('수납_관리',[]),mkF('지출_결의',[])]),
  ];}},
  {icon:' ',name:'병의원_의료',proj:'병의원_운영',b:function(){return[
    mkF('진료_임상',[mkRm('진료'),mkF('진료_프로토콜',[]),mkF('처방_기록',[]),mkF('검사_결과',[])]),
    mkF('원무_행정',[mkRm('원무'),mkF('환자_접수',[]),mkF('보험_청구',[]),mkF('수납_관리',[])]),
    mkF('인사_총무',[mkRm('인사'),mkF('근태_출결',[]),mkF('휴가',[]),mkF('당직_스케줄',[]),mkF('급여',[])]),
    mkF('구매_재고',[mkRm('구매'),mkF('의약품_관리',[]),mkF('의료소모품',[]),mkF('발주서',[])]),
    mkF('재무_회계',[mkRm('재무'),mkF('매출_현황',[]),mkF('지출_결의',[]),mkF('세무',[])]),
  ];}},
  {icon:' ',name:'유통_물류',proj:'유통_물류_운영',b:function(){return[
    mkF('수주_영업',[mkRm('수주'),mkF('견적서',[]),mkF('주문서',[]),mkF('고객사_관리',[])]),
    mkF('구매_조달',[mkRm('구매'),mkF('발주서',[]),mkF('거래처_관리',[]),mkF('입고_관리',[])]),
    mkF('창고_재고',[mkRm('창고'),mkF('재고현황',[]),mkF('입출고_대장',[]),mkF('위치_관리',[])]),
    mkF('배송_물류',[mkRm('배송'),mkF('배송계획',[]),mkF('배차_관리',[]),mkF('배송완료_확인',[])]),
    mkF('인사_총무',[mkRm('인사'),mkF('근태',[]),mkF('휴가',[]),mkF('급여',[])]),
    mkF('재무_회계',[mkRm('재무'),mkF('매출_현황',[]),mkF('지출_결의',[]),mkF('세무',[])]),
  ];}},
  {icon:' ‍ ',name:'프리랜서',proj:'프리랜서_업무',b:function(){return[
    mkF('클라이언트_관리',[mkRm('클라이언트'),mkF('클라이언트_목록',[]),mkF('미팅_회의록',[]),mkF('요구사항',[])]),
    mkF('프로젝트',[mkRm('프로젝트'),mkF('진행중',[]),mkF('완료',[]),mkF('대기',[])]),
    mkF('계약_견적',[mkRm('계약'),mkF('견적서',[]),mkF('계약서',[]),mkF('납품확인서',[])]),
    mkF('포트폴리오',[mkRm('포트폴리오'),mkF('작업물',[]),mkF('SNS_링크',[])]),
    mkF('재무_세무',[mkRm('재무'),mkF('수입_현황',[]),mkF('지출_내역',[]),mkF('세금계산서',[]),mkF('종합소득세',[])]),
  ];}},
];

function loadTmpl(idx){
  currentTmpl=idx; tree=TMPLS[idx].b(); applyAll();
  document.getElementById('fg_pname').value=TMPLS[idx].proj;
  updateTmplBtn(); renderTree(); autoSave();
}

// ── 렌더 ──
function renderTree(){
  var el=document.getElementById('fg_tree'); el.innerHTML='';
  tree.forEach(function(n){var e=mkEl(n,0);if(e)el.appendChild(e);});
  renderPrev();
}
function mkEl(node,depth){
  if(node.type==='file') return null;
  var wrap=document.createElement('div');
  wrap.className='fg_fnode'; wrap.dataset.id=node.id;
  wrap.draggable=true; setupDrag(wrap,node.id);

  var row=document.createElement('div');
  row.className='fg_frow'+(selectedId===node.id?' sel':'');
  row.onclick=function(e){if(!e.target.closest('input')&amp;&amp;!e.target.closest('button'))selectNode(node.id);};

  row.appendChild(mkIndent(depth));
  var h=document.createElement('span');h.className='fg_handle';h.textContent='⠿';h.title='드래그(이동)/Ctrl+드래그(복사)';row.appendChild(h);

  var hasSub=node.children.some(function(c){return c.type==='folder';});
  var tgl=document.createElement('button');tgl.className='fg_tgl'+(hasSub?'':' leaf');
  tgl.textContent=node.open?'▾':'▸';tgl.onclick=function(e){e.stopPropagation();toggleNode(node.id);};row.appendChild(tgl);

  var ico=document.createElement('span');ico.className='fg_ficon';ico.textContent=node.open?' ':' ';row.appendChild(ico);

  var badge=document.createElement('span');badge.className='fg_badge';
  badge.textContent=node.name.replace(node._raw||'','');row.appendChild(badge);

  var inp=document.createElement('input');inp.className='fg_fname';
  inp.value=node._raw||stripPfx(node.name);inp.placeholder='폴더명';
  inp.onclick=function(e){e.stopPropagation();};
  inp.oninput=function(){
    var safe=toSafe(inp.value);if(safe!==inp.value)inp.value=safe;
    node._raw=safe;applyAll();inp.value=node._raw;
    badge.textContent=node.name.replace(node._raw,'');
    renderPrev();autoSave();
  };
  inp.onkeydown=function(e){if(e.key==='Enter')inp.blur();if(e.key==='F2'){e.preventDefault();inp.focus();inp.select();}};
  row.appendChild(inp);

  var acts=document.createElement('div');acts.className='fg_acts';
  function mkAb(cls,txt,title,cb){var b=document.createElement('button');b.className='fg_ab '+cls;b.textContent=txt;b.title=title;b.onclick=function(e){e.stopPropagation();cb();};acts.appendChild(b);}
  mkAb('pfx'+(node._lpfx?' pfx_on':''),'¶','하위 말머리 개별 설정',function(){showLPfx(node.id,acts.querySelector('.fg_ab.pfx'));});
  mkAb('add',' +','하위폴더 추가',function(){addChild(node.id);});
  mkAb('dup','⧉','복제 (Ctrl+D)',function(){dupNode(node.id);});
  mkAb('del','✕','삭제 (Del)',function(){delNode(node.id);});
  row.appendChild(acts);wrap.appendChild(row);

  var ch=document.createElement('div');ch.className='fg_children'+(node.open?'':' closed');
  if(node.open)ch.style.maxHeight='9999px';
  node.children.forEach(function(c){var e=mkEl(c,depth+1);if(e)ch.appendChild(e);});
  wrap.appendChild(ch);
  return wrap;
}
function mkIndent(d){
  var w=document.createElement('div');w.className='fg_indent';
  for(var i=0;i&lt;d;i++){var s=document.createElement('div');s.className='fg_iseg'+(i===d-1?' last':'');w.appendChild(s);}
  return w;
}

// ── 드래그앤드롭 ──
function setupDrag(el,nodeId){
  el.addEventListener('dragstart',function(e){
    dragId=nodeId;ctrlDrag=e.ctrlKey||e.metaKey;
    el.classList.add('dragging');if(ctrlDrag)el.classList.add('fg_ctrl_drag');
    e.dataTransfer.effectAllowed=ctrlDrag?'copy':'move';
    e.dataTransfer.setData('text/plain',String(nodeId));e.stopPropagation();
  });
  el.addEventListener('dragend',function(){
    el.classList.remove('dragging','fg_ctrl_drag');
    document.querySelectorAll('.fg_drag_top,.fg_drag_bot,.fg_drag_in').forEach(function(x){x.classList.remove('fg_drag_top','fg_drag_bot','fg_drag_in');});
    dragId=null;ctrlDrag=false;
  });
  el.addEventListener('dragover',function(e){
    if(!dragId||dragId===nodeId)return;
    e.preventDefault();e.stopPropagation();
    var rect=el.getBoundingClientRect(),y=e.clientY-rect.top,h=rect.height;
    document.querySelectorAll('.fg_drag_top,.fg_drag_bot,.fg_drag_in').forEach(function(x){x.classList.remove('fg_drag_top','fg_drag_bot','fg_drag_in');});
    if(y&lt;h*.25)el.classList.add('fg_drag_top');
    else if(y&gt;h*.75)el.classList.add('fg_drag_bot');
    else el.classList.add('fg_drag_in');
  });
  el.addEventListener('dragleave',function(){el.classList.remove('fg_drag_top','fg_drag_bot','fg_drag_in');});
  el.addEventListener('drop',function(e){
    e.preventDefault();e.stopPropagation();
    if(!dragId||dragId===nodeId)return;
    var isCopy=e.ctrlKey||e.metaKey;
    var rect=el.getBoundingClientRect(),y=e.clientY-rect.top,h=rect.height;
    var pos=y&lt;h*.25?'before':y&gt;h*.75?'after':'inside';
    moveNode(dragId,nodeId,pos,isCopy);
    el.classList.remove('fg_drag_top','fg_drag_bot','fg_drag_in');
  });
}
function moveNode(srcId,tgtId,pos,copy){
  var srcNode=null;
  function ext(nodes){for(var i=0;i&lt;nodes.length;i++){if(nodes[i].id===srcId){srcNode=nodes.splice(i,1)[0];return true;}if(nodes[i].type==='folder'&amp;&amp;ext(nodes[i].children))return true;}return false;}
  if(copy){var r=findNode(tree,srcId);if(!r)return;srcNode=JSON.parse(JSON.stringify(r.node));function reId(n){n.id=uid++;if(n.children)n.children.forEach(reId);}reId(srcNode);srcNode._raw=(srcNode._raw||'')+'_복사';}
  else ext(tree);
  if(!srcNode)return;
  function ins(nodes){for(var i=0;i&lt;nodes.length;i++){if(nodes[i].id===tgtId){if(pos==='before'){nodes.splice(i,0,srcNode);return true;}if(pos==='after'){nodes.splice(i+1,0,srcNode);return true;}if(pos==='inside'&amp;&amp;nodes[i].type==='folder'){nodes[i].children.unshift(srcNode);nodes[i].open=true;return true;}}if(nodes[i].type==='folder'&amp;&amp;ins(nodes[i].children))return true;}return false;}
  if(!ins(tree))tree.push(srcNode);
  applyAll();renderTree();autoSave();toast(copy?'  복사 완료!':'  이동 완료!');
}

// ── 선택 &amp; 키보드 ──
function selectNode(id){selectedId=id;renderTree();}
document.addEventListener('keydown',function(e){
  if(!selectedId)return;
  if(e.target.tagName==='INPUT'||e.target.tagName==='TEXTAREA'){if(e.key==='F2'){var el=document.querySelector('[data-id=&quot;'+selectedId+'&quot;] input');if(el){e.preventDefault();el.focus();el.select();}}return;}
  if(e.key==='F2'){var el=document.querySelector('[data-id=&quot;'+selectedId+'&quot;] input');if(el){e.preventDefault();el.focus();el.select();}}
  if(e.key==='Delete'){e.preventDefault();delNode(selectedId);}
  if((e.ctrlKey||e.metaKey)&amp;&amp;e.key==='d'){e.preventDefault();dupNode(selectedId);}
});

// ── 트리 조작 ──
function findNode(nodes,id){for(var i=0;i&lt;nodes.length;i++){if(nodes[i].id===id)return{node:nodes[i],siblings:nodes,idx:i};if(nodes[i].type==='folder'){var r=findNode(nodes[i].children,id);if(r)return r;}}return null;}
function toggleNode(id){var r=findNode(tree,id);if(r){r.node.open=!r.node.open;renderTree();}}
function addChild(pId){
  var r=findNode(tree,pId);if(!r)return;
  var raw='새폴더';var n={id:uid++,type:'folder',name:raw,_raw:raw,open:true,children:[mkRm(raw)]};
  r.node.open=true;r.node.children.push(n);applyAll();renderTree();autoSave();
  setTimeout(function(){var el=document.querySelector('[data-id=&quot;'+n.id+'&quot;] input');if(el){el.focus();el.select();}},60);
}
function addRoot(){
  var raw='새폴더';var n={id:uid++,type:'folder',name:raw,_raw:raw,open:true,children:[mkRm(raw)]};
  tree.push(n);applyAll();renderTree();autoSave();
  setTimeout(function(){var el=document.querySelector('[data-id=&quot;'+n.id+'&quot;] input');if(el){el.focus();el.select();}},60);
}
function delNode(id){
  function del(nodes){var i=nodes.findIndex(function(n){return n.id===id;});if(i!==-1){nodes.splice(i,1);return true;}for(var i2=0;i2&lt;nodes.length;i2++)if(nodes[i2].type==='folder'&amp;&amp;del(nodes[i2].children))return true;return false;}
  del(tree);if(selectedId===id)selectedId=null;applyAll();renderTree();autoSave();
}
function dupNode(id){
  var r=findNode(tree,id);if(!r)return;
  var clone=JSON.parse(JSON.stringify(r.node));
  function reId(n){n.id=uid++;if(n.children)n.children.forEach(reId);}reId(clone);
  clone._raw=(clone._raw||'')+'_복사';
  r.siblings.splice(r.idx+1,0,clone);applyAll();renderTree();autoSave();toast('  복제 완료!');
}

// ── 하위 말머리 팝오버 ──
function showLPfx(nodeId,anchor){
  closeLPfx();
  var r=findNode(tree,nodeId);if(!r)return;var node=r.node;
  var pop=document.createElement('div');pop.id='fg_lpop';pop.className='fg_lpop';
  var hdr=document.createElement('div');hdr.className='fg_lpop_hdr';hdr.textContent='하위 폴더 말머리 설정';pop.appendChild(hdr);
  LPFX_LIST.forEach(function(opt){
    var btn=document.createElement('button');btn.className='fg_lopt';
    var cur=(opt.m==='__inherit__')?!node._lpfx:(node._lpfx===opt.m);
    if(cur)btn.classList.add('on');
    var pv=document.createElement('span');pv.className='fg_lopt_p';pv.textContent=opt.p;
    var lb=document.createElement('span');lb.textContent=(cur?'✓ ':'')+opt.n;
    btn.append(pv,lb);
    btn.onclick=function(e){
      e.stopPropagation();
      if(opt.m==='__inherit__')delete node._lpfx;else node._lpfx=opt.m;
      applyPfx(node.children,node);renderTree();autoSave();closeLPfx();
      toast('¶ 하위 말머리 → '+opt.n);
    };
    pop.appendChild(btn);
  });
  document.body.appendChild(pop);
  var rect=anchor.getBoundingClientRect();
  var top=rect.bottom+4,left=rect.left;
  if(top+340&gt;window.innerHeight)top=rect.top-340;
  if(left+180&gt;window.innerWidth)left=window.innerWidth-185;
  pop.style.top=top+'px';pop.style.left=left+'px';
  setTimeout(function(){document.addEventListener('click',closeLPfx,{once:true});},10);
}
function closeLPfx(){var p=document.getElementById('fg_lpop');if(p)p.remove();}

// ── 미리보기 ──
function renderPrev(){
  var proj=toSafe(document.getElementById('fg_pname').value||'프로젝트');
  var lines=[],fc=0,maxD=0;
  function walk(nodes,pfx,d){
    if(d&gt;maxD)maxD=d;
    var fl=nodes.filter(function(n){return n.type==='folder';});
    fl.forEach(function(node,i){
      var last=i===fl.length-1;fc++;
      lines.push('&lt;span class=&quot;fg_pc_br&quot;&gt;'+pfx+(last?'└─ ':'├─ ')+'&lt;/span&gt;&lt;span class=&quot;fg_pc_folder&quot;&gt;  '+node.name+'/&lt;/span&gt;');
      if(node.children&amp;&amp;node.children.length)walk(node.children,pfx+(last?'   ':'│  '),d+1);
    });
  }
  lines.push('&lt;span class=&quot;fg_pc_root&quot;&gt;  '+proj+'/&lt;/span&gt;');
  walk(tree,'',1);
  document.getElementById('fg_prev').innerHTML=lines.join('\n');
  document.getElementById('fg_sf').textContent=fc;
  document.getElementById('fg_sd').textContent=maxD;
}

// ── 자동저장 ──
var _st=null;
function autoSave(){
  clearTimeout(_st);
  _st=setTimeout(function(){
    try{
      var data={tree:JSON.parse(JSON.stringify(tree)),proj:document.getElementById('fg_pname').value,pfx:prefixMode,digits:digitCount,customSeq:customSeq,tmpl:currentTmpl};
      localStorage.setItem('fg_v8',JSON.stringify(data));
      var b=document.getElementById('fg_save');
      if(b)b.textContent='  저장됨 '+new Date().toLocaleTimeString('ko-KR',{hour:'2-digit',minute:'2-digit'});
    }catch(e){}
  },600);
}
function loadSaved(){
  try{
    var raw=localStorage.getItem('fg_v8');if(!raw)return false;
    var d=JSON.parse(raw);
    tree=d.tree||[];prefixMode=d.pfx||'bracket_bare';digitCount=d.digits||2;customSeq=d.customSeq||null;currentTmpl=d.tmpl||0;
    document.getElementById('fg_pname').value=d.proj||'새_프로젝트';
    return true;
  }catch(e){return false;}
}

// ── 백업/복원 ──
function getBackup(){return JSON.stringify({v:8,proj:document.getElementById('fg_pname').value,pfx:prefixMode,digits:digitCount,customSeq:customSeq,tmpl:currentTmpl,tree:JSON.parse(JSON.stringify(tree))});}
function showBackup(){
  var json=getBackup();
  var m=mkModal('  백업 / 복원','&lt;p class=&quot;fg_modal_b&quot;&gt;아래 JSON을 복사해두면 언제든 복원할 수 있어요.&lt;/p&gt;&lt;textarea class=&quot;fg_bk_ta&quot; id=&quot;fg_bk_ta&quot;&gt;'+json+'&lt;/textarea&gt;',
    [{l:'  복사',c:'p',cb:function(){var ta=document.getElementById('fg_bk_ta');if(navigator.clipboard)navigator.clipboard.writeText(ta.value).then(function(){toast('  복사!');});else{ta.select();document.execCommand('copy');toast('  복사!');};}},
     {l:'  파일 저장',c:'',cb:function(){var ta=document.getElementById('fg_bk_ta');dlBlob(new Blob([ta.value],{type:'application/json'}),toSafe(document.getElementById('fg_pname').value||'프로젝트')+'_백업.json');toast('  저장!');}},
     {l:'♻ 복원',c:'',cb:function(){restoreJson(document.getElementById('fg_bk_ta').value);closeModal();}},
     {l:'닫기',c:'',cb:closeModal}]);
  document.body.appendChild(m);
}
function restoreJson(s){
  try{
    var d=JSON.parse(s);if(!d.tree){showAlert('⚠ 오류','유효한 백업이 아니에요.');return;}
    tree=d.tree;prefixMode=d.pfx||'bracket_bare';digitCount=d.digits||2;customSeq=d.customSeq||null;currentTmpl=d.tmpl||0;
    document.getElementById('fg_pname').value=d.proj||'새_프로젝트';
    updatePfxBtn();updateTmplBtn();renderTree();autoSave();toast('✅ 복원 완료!');
  }catch(e){showAlert('⚠ 파싱 오류',e.message);}
}
function tryRestoreUrl(){
  var p=new URLSearchParams(window.location.search).get('fg');if(!p)return false;
  try{restoreJson(decodeURIComponent(atob(p)));window.history.replaceState({},'',window.location.pathname);toast('  메일 링크에서 복원!');return true;}catch(e){return false;}
}

// ── 내보내기 ──
function setZipBtns(loading){
  ['fg_zip_btn','fg_zip_btn2'].forEach(function(id){
    var b=document.getElementById(id);if(!b)return;
    b.disabled=loading;
    if(loading){b.innerHTML='⏳ 생성 중...';}
    else if(id==='fg_zip_btn'){b.innerHTML='  ZIP 다운로드';}
    else{b.innerHTML='&lt;span style=&quot;font-size:18px;&quot;&gt; &lt;/span&gt; ZIP 다운로드';}
  });
}
async function dlZip(){
  setZipBtns(true);
  try{
    var zip=new JSZip();
    var proj=toSafe(document.getElementById('fg_pname').value||'프로젝트');
    var root=zip.folder(sf(proj));
    function addZ(nodes,zf){nodes.forEach(function(n){if(n.type==='folder'){var sub=zf.folder(sf(n.name));sub.file('.gitkeep','');if(n.children&amp;&amp;n.children.length)addZ(n.children,sub);}else zf.file(sf(n.name),'');});}
    addZ(tree,root);root.file('_폴더구조_백업.json',getBackup());
    var blob=await zip.generateAsync({type:'blob'});dlBlob(blob,proj+'_폴더구조.zip');
    toast('  ZIP 다운로드 완료!  ');
  }catch(e){toast('❌ '+e.message);}
  setZipBtns(false);
}
function dlTxt(){
  var proj=toSafe(document.getElementById('fg_pname').value||'프로젝트');
  var lines=['  '+proj+'/'];
  function walk(nodes,pfx){var fl=nodes.filter(function(n){return n.type==='folder';});fl.forEach(function(n,i){var last=i===fl.length-1;lines.push(pfx+(last?'└─ ':'├─ ')+'  '+n.name+'/');if(n.children&amp;&amp;n.children.length)walk(n.children,pfx+(last?'   ':'│  '));});}
  walk(tree,'');lines.push('');lines.push('생성: '+new Date().toLocaleString('ko-KR'));
  dlBlob(new Blob([lines.join('\n')],{type:'text/plain;charset=utf-8'}),proj+'_폴더구조.txt');toast('  TXT 다운로드!');
}
function sendMail(){
  var proj=toSafe(document.getElementById('fg_pname').value||'프로젝트');
  var lines=['[폴더구조] '+proj+'\n'];
  function walk(nodes,pfx){var fl=nodes.filter(function(n){return n.type==='folder';});fl.forEach(function(n,i){var last=i===fl.length-1;lines.push(pfx+(last?'└─ ':'├─ ')+'  '+n.name+'/');if(n.children&amp;&amp;n.children.length)walk(n.children,pfx+(last?'   ':'│  '));});}
  walk(tree,'');
  var b64=btoa(encodeURIComponent(getBackup()));
  lines.push('\n─────────────');lines.push('  복원 링크: '+location.origin+location.pathname+'?fg='+b64);lines.push('생성: 모두의 폴더구조 생성기');
  window.location.href='mailto:?subject='+encodeURIComponent('[폴더구조] '+proj)+'&amp;body='+encodeURIComponent(lines.join('\n'));
  toast('✉ 메일 앱 열기...');
}
function copyTree(){
  var el=document.getElementById('fg_prev');var text=el.innerText||el.textContent;
  if(navigator.clipboard)navigator.clipboard.writeText(text).then(function(){toast('  복사!');});
  else{var ta=document.createElement('textarea');ta.value=text;document.body.appendChild(ta);ta.select();document.execCommand('copy');ta.remove();toast('  복사!');}
}
function clearAll(){if(!confirm('전체 초기화할까요?'))return;tree=[];selectedId=null;document.getElementById('fg_pname').value='새_프로젝트';renderTree();autoSave();toast('  초기화!');}
function onNameInput(inp){var s=toSafe(inp.value);if(s!==inp.value)inp.value=s;}

// ── 유틸 ──
function sf(s){return(s||'').replace(/[&lt;&gt;:&quot;/\\|?*\x00-\x1f]/g,'_')||'_';}
function dlBlob(blob,fn){var url=URL.createObjectURL(blob);var a=document.createElement('a');a.href=url;a.download=fn;document.body.appendChild(a);a.click();document.body.removeChild(a);URL.revokeObjectURL(url);}
function toast(msg,dur){dur=dur||2400;var t=document.getElementById('fg_toast');t.textContent=msg;t.classList.add('show');setTimeout(function(){t.classList.remove('show');},dur);}
function mkModal(title,bodyHtml,buttons){
  var bg=document.createElement('div');bg.className='fg_modal_bg';bg.id='fg_modal_bg';
  bg.onclick=function(e){if(e.target===bg)closeModal();};
  var m=document.createElement('div');m.className='fg_modal';
  var t=document.createElement('span');t.className='fg_modal_t';t.textContent=title;
  var b=document.createElement('div');b.innerHTML=bodyHtml;
  var row=document.createElement('div');row.className='fg_modal_row';
  buttons.forEach(function(btn){var el=document.createElement('button');el.className='fg_mbtn '+(btn.c==='p'?'p':'');el.textContent=btn.l;el.onclick=btn.cb;row.appendChild(el);});
  m.append(t,b,row);bg.appendChild(m);return bg;
}
function closeModal(){var m=document.getElementById('fg_modal_bg');if(m)m.remove();}
function showAlert(t,msg){var m=mkModal(t,'&lt;p class=&quot;fg_modal_b&quot; style=&quot;white-space:pre-wrap;&quot;&gt;'+msg+'&lt;/p&gt;',[{l:'확인',c:'p',cb:closeModal}]);document.body.appendChild(m);}

// ── 초기화 ──
function init(){
  updatePfxBtn();updateTmplBtn();
  if(!tryRestoreUrl()){
    var ok=loadSaved();
    if(ok&amp;&amp;tree.length&gt;0){updatePfxBtn();updateTmplBtn();renderTree();toast('  이전 작업 불러옴!');}
    else loadTmpl(0);
  }
}

return{
  toggleGuide,toggleTmplDD,togglePfxDD,toggleCustDD,applyCustom,
  loadTmpl,addRoot,clearAll,copyTree,showBackup,sendMail,dlTxt,dlZip,
  onNameInput,autoSave,init
};
}());

FG.init();
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>모두의계산기</category>
      <category>계산기</category>
      <category>모두의계산기</category>
      <category>폴더구조</category>
      <category>폴더구조생성계산기</category>
      <category>폴더구조생성기</category>
      <category>폴더생성기</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/97</guid>
      <comments>https://0-1.kr/97#entry97comment</comments>
      <pubDate>Sun, 1 Feb 2026 11:51:15 +0900</pubDate>
    </item>
    <item>
      <title>모두의 사진가공출력 계산기_V1(260131)</title>
      <link>https://0-1.kr/96</link>
      <description>&lt;div class=&quot;photo-editor-container&quot;&gt;
    &lt;div class=&quot;photo-header&quot;&gt;
        &lt;h1&gt;  모두의 사진가공출력 계산기&lt;/h1&gt;
        &lt;div class=&quot;security-notice&quot;&gt;
              &lt;strong&gt;사진·그림 파일들은 서버에 저장되지 않으니 안심하고 사용하세요.&lt;/strong&gt;&lt;br&gt;
            (저장소: 본인의 장치 내 브라우저 메모리에서만 안전하게 가공됩니다)
        &lt;/div&gt;
    &lt;/div&gt; 

    &lt;div class=&quot;photo-card upload-section&quot; id=&quot;dropZone&quot;&gt;
        &lt;input type=&quot;file&quot; id=&quot;photoUpload&quot; accept=&quot;image/*&quot; style=&quot;display:none;&quot; onchange=&quot;handleImage(event)&quot;&gt;
        &lt;button class=&quot;action-btn upload-btn&quot; onclick=&quot;document.getElementById('photoUpload').click()&quot;&gt;  사진 업로드 또는 파일을 여기로 끌어오세요&lt;/button&gt;
        &lt;div class=&quot;quick-tools&quot; id=&quot;editTools&quot; style=&quot;display:none; text-align:center; margin-top:10px;&quot;&gt;
            &lt;button onclick=&quot;rotateImage()&quot; class=&quot;tool-btn&quot;&gt;  사진 90도 회전&lt;/button&gt;
        &lt;/div&gt;
    &lt;/div&gt; 

    &lt;div class=&quot;photo-main-grid&quot;&gt;
        &lt;div class=&quot;photo-card preview-area&quot;&gt;
            &lt;h3 class=&quot;card-title&quot;&gt; ️ 실시간 가공 미리보기&lt;/h3&gt;
            &lt;div id=&quot;previewContainer&quot; class=&quot;preview-box&quot;&gt;
                &lt;p id=&quot;placeholderText&quot;&gt;사진을 업로드해주세요.&lt;/p&gt;
                &lt;canvas id=&quot;mainCanvas&quot; style=&quot;display:none;&quot;&gt;&lt;/canvas&gt;
            &lt;/div&gt;
            &lt;p id=&quot;resultInfo&quot; class=&quot;small-info&quot;&gt;설정값 대기 중...&lt;/p&gt;
        &lt;/div&gt; 

        &lt;div class=&quot;photo-card control-area&quot;&gt;
            &lt;div class=&quot;control-group&quot;&gt;
                &lt;label&gt;↔️ 1. 사진/용지 방향&lt;/label&gt;
                &lt;div class=&quot;btn-group&quot;&gt;
                    &lt;button onclick=&quot;setOrientation('P')&quot; class=&quot;sub-btn active&quot; id=&quot;btnP&quot;&gt;세로방향&lt;/button&gt;
                    &lt;button onclick=&quot;setOrientation('L')&quot; class=&quot;sub-btn&quot; id=&quot;btnL&quot;&gt;가로방향&lt;/button&gt;
                &lt;/div&gt;
            &lt;/div&gt; 

            &lt;div class=&quot;control-group&quot;&gt;
                &lt;label&gt;  2. 가공 사이즈 선택&lt;/label&gt;
                &lt;select id=&quot;targetSize&quot; onchange=&quot;processImage()&quot;&gt;
                    &lt;option value=&quot;35x45&quot;&gt;여권사진 (35x45mm)&lt;/option&gt;
                    &lt;option value=&quot;30x40&quot;&gt;반명함 (30x40mm)&lt;/option&gt;
                    &lt;option value=&quot;50x70&quot;&gt;명함판 (50x70mm)&lt;/option&gt;
                    &lt;option value=&quot;89x127&quot;&gt;일반인화 (3.5x5인치)&lt;/option&gt;
                    &lt;option value=&quot;102x152&quot;&gt;4x6 사진 (102x152mm)&lt;/option&gt;
                    &lt;option value=&quot;127x178&quot;&gt;5x7 사진 (127x178mm)&lt;/option&gt;
                &lt;/select&gt;
            &lt;/div&gt; 

            &lt;div class=&quot;control-group&quot;&gt;
                &lt;label&gt;  3. 출력 용지 선택 (규격/직접)&lt;/label&gt;
                &lt;select id=&quot;paperSize&quot; onchange=&quot;togglePaperInput()&quot;&gt;
                    &lt;option value=&quot;A4&quot; selected&gt;A4 (210x297mm)&lt;/option&gt;
                    &lt;option value=&quot;A3&quot;&gt;A3 (297x420mm)&lt;/option&gt;
                    &lt;option value=&quot;A5&quot;&gt;A5 (148x210mm)&lt;/option&gt;
                    &lt;option value=&quot;A6&quot;&gt;A6 (105x148mm)&lt;/option&gt;
                    &lt;option value=&quot;B4&quot;&gt;B4 (257x364mm)&lt;/option&gt;
                    &lt;option value=&quot;B5&quot;&gt;B5 (176x250mm)&lt;/option&gt;
                    &lt;option value=&quot;B6&quot;&gt;B6 (125x176mm)&lt;/option&gt;
                    &lt;option value=&quot;4x6&quot;&gt;4x6 인치 인화지&lt;/option&gt;
                    &lt;option value=&quot;5x7&quot;&gt;5x7 인치 인화지&lt;/option&gt;
                    &lt;option value=&quot;SINGLE&quot;&gt;가공사진 단독 저장&lt;/option&gt;
                    &lt;option value=&quot;CUSTOM&quot;&gt;직접 입력 (mm)&lt;/option&gt;
                &lt;/select&gt;
                &lt;div id=&quot;customPaperInput&quot; style=&quot;display:none; margin-top:8px; gap:5px;&quot;&gt;
                    &lt;input type=&quot;number&quot; id=&quot;customW&quot; placeholder=&quot;가로mm&quot; style=&quot;width:45%; padding:8px;&quot; oninput=&quot;processImage()&quot;&gt;
                    &lt;input type=&quot;number&quot; id=&quot;customH&quot; placeholder=&quot;세로mm&quot; style=&quot;width:45%; padding:8px;&quot; oninput=&quot;processImage()&quot;&gt;
                &lt;/div&gt;
            &lt;/div&gt; 

            &lt;div class=&quot;control-group&quot;&gt;
                &lt;label&gt;✍️ 4. 텍스트 삽입 (선택사항)&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;photoText&quot; placeholder=&quot;사진 하단 문구 입력&quot; oninput=&quot;processImage()&quot; style=&quot;width:100%; padding:8px; margin-bottom:5px; border-radius:8px; border:1px solid #ddd;&quot;&gt;
                &lt;div style=&quot;display:flex; align-items:center; gap:10px;&quot;&gt;
                    &lt;span style=&quot;font-size:11px;&quot;&gt;크기:&lt;/span&gt;
                    &lt;input type=&quot;range&quot; id=&quot;fontSize&quot; min=&quot;10&quot; max=&quot;100&quot; value=&quot;30&quot; oninput=&quot;processImage()&quot;&gt;
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;div class=&quot;control-group&quot;&gt;
                &lt;label&gt; ️ 5. 테두리 설정&lt;/label&gt;
                &lt;div style=&quot;display: flex; gap: 8px;&quot;&gt;
                    &lt;select id=&quot;borderToggle&quot; onchange=&quot;processImage()&quot; style=&quot;flex:1;&quot;&gt;
                        &lt;option value=&quot;N&quot;&gt;테두리 없음&lt;/option&gt;
                        &lt;option value=&quot;Y&quot; selected&gt;흰색 테두리&lt;/option&gt;
                    &lt;/select&gt;
                    &lt;input type=&quot;number&quot; id=&quot;borderWidth&quot; value=&quot;2&quot; min=&quot;1&quot; max=&quot;15&quot; oninput=&quot;processImage()&quot; style=&quot;width:60px; padding:8px; border-radius:8px; border:1px solid #ddd;&quot;&gt;
                &lt;/div&gt;
            &lt;/div&gt; 

            &lt;button onclick=&quot;checkQuality()&quot; class=&quot;check-btn&quot;&gt;  출력 깨짐 테스트&lt;/button&gt;
            &lt;div id=&quot;qualityResult&quot; class=&quot;quality-box&quot;&gt;사진 업로드 후 테스트 진행&lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt; 

    &lt;div class=&quot;photo-card save-section&quot;&gt;
        &lt;div class=&quot;save-grid&quot;&gt;
            &lt;select id=&quot;fileFormat&quot; class=&quot;format-select&quot;&gt;
                &lt;option value=&quot;image/jpeg&quot;&gt;JPG (일반 사진용)&lt;/option&gt;
                &lt;option value=&quot;image/png&quot;&gt;PNG (고품질 그래픽용)&lt;/option&gt;
            &lt;/select&gt;
            &lt;button onclick=&quot;saveImage()&quot; class=&quot;action-btn save-btn&quot;&gt;  가공사진 다운로드&lt;/button&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt; 

&lt;style&gt;
    .photo-editor-container { max-width: 950px; margin: 20px auto; font-family: 'Pretendard', sans-serif; background: #eff3f7; padding: 20px; border-radius: 20px; color: #333; }
    .photo-card { background: white; padding: 20px; border-radius: 15px; box-shadow: 0 4px 15px rgba(0,0,0,0.06); margin-bottom: 15px; }
    .security-notice { background: #e3f2fd; border: 1px solid #bbdefb; padding: 10px; border-radius: 10px; font-size: 13px; color: #1976d2; text-align: center; line-height: 1.5; margin-bottom: 15px; }
    .photo-header h1 { color: #2c3e50; font-size: 24px; text-align: center; margin-bottom: 15px; font-weight: 800; }
    
    .photo-main-grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: 20px; }
    .card-title { font-size: 15px; font-weight: 700; margin: 0 0 12px 0; color: #2d3436; }
    
    .preview-box { width: 100%; min-height: 450px; background: #dfe6e9; border-radius: 10px; display: flex; align-items: center; justify-content: center; overflow: hidden; border: 2px dashed #b2bec3; position: relative; }
    #mainCanvas { max-width: 95%; max-height: 600px; box-shadow: 0 10px 30px rgba(0,0,0,0.15); background: white; }
    
    .control-group { margin-bottom: 15px; padding-bottom: 10px; border-bottom: 1px solid #f1f2f6; }
    .control-group label { display: block; font-weight: 700; font-size: 13px; margin-bottom: 8px; }
    
    select, input[type=&quot;number&quot;], .sub-btn { border-radius: 8px; border: 1px solid #ddd; font-size: 13px; padding: 10px; }
    select { width: 100%; background: #fff; }
    .btn-group { display: flex; gap: 5px; }
    .sub-btn { flex: 1; cursor: pointer; background: #fff; }
    .sub-btn.active { background: #3498db; color: white; border-color: #3498db; }
    
    .tool-btn { background: #636e72; color: white; border: none; padding: 8px 15px; border-radius: 5px; cursor: pointer; font-size: 12px; }
    .check-btn { width: 100%; padding: 12px; background: #27ae60; color: white; border: none; border-radius: 10px; font-weight: 700; cursor: pointer; }
    .quality-box { background: #f8f9fa; padding: 10px; border-radius: 8px; font-size: 12px; margin-top: 8px; text-align: center; border: 1px solid #eee; }
    
    .save-grid { display: grid; grid-template-columns: 0.8fr 1.2fr; gap: 10px; }
    .action-btn { border: none; border-radius: 10px; color: white; font-weight: 700; height: 50px; cursor: pointer; font-size: 15px; }
    .upload-btn { background: #2c3e50; width: 100%; }
    .save-btn { background: #3498db; }
    .small-info { font-size: 11px; text-align: center; margin-top: 10px; color: #7f8c8d; font-weight: 600; }

    #dropZone.dragover { background: #f0f3f5; border: 2px solid #3498db; }
    @media (max-width: 768px) { .photo-main-grid { grid-template-columns: 1fr; } .save-grid { grid-template-columns: 1fr; } }
&lt;/style&gt;

&lt;script&gt;
    let uploadedImg = null;
    let currentOrientation = 'P';
    let rotation = 0;

    // 드래그 앤 드롭 지원
    const dropZone = document.getElementById('dropZone');
    ['dragenter', 'dragover', 'dragleave', 'drop'].forEach(evt =&gt; {
        dropZone.addEventListener(evt, e =&gt; { e.preventDefault(); e.stopPropagation(); }, false);
    });
    dropZone.addEventListener('dragover', () =&gt; dropZone.classList.add('dragover'));
    dropZone.addEventListener('dragleave', () =&gt; dropZone.classList.remove('dragover'));
    dropZone.addEventListener('drop', (e) =&gt; {
        dropZone.classList.remove('dragover');
        handleImage({ target: { files: e.dataTransfer.files } });
    });

    function handleImage(e) {
        const file = e.target.files[0];
        if (!file) return;
        const reader = new FileReader();
        reader.onload = function(event) {
            const img = new Image();
            img.onload = function() {
                uploadedImg = img;
                rotation = 0;
                document.getElementById('placeholderText').style.display = 'none';
                document.getElementById('mainCanvas').style.display = 'block';
                document.getElementById('editTools').style.display = 'block';
                processImage();
            };
            img.src = event.target.result;
        };
        reader.readAsDataURL(file);
    }

    function rotateImage() {
        rotation = (rotation + 90) % 360;
        processImage();
    }

    function setOrientation(o) {
        currentOrientation = o;
        document.getElementById('btnP').classList.toggle('active', o === 'P');
        document.getElementById('btnL').classList.toggle('active', o === 'L');
        processImage();
    }

    function togglePaperInput() {
        const val = document.getElementById('paperSize').value;
        document.getElementById('customPaperInput').style.display = (val === 'CUSTOM') ? 'flex' : 'none';
        processImage();
    }

    function processImage() {
        if (!uploadedImg) return;
        const canvas = document.getElementById('mainCanvas');
        const ctx = canvas.getContext('2d');
        const dpi = 300;
        const mmToPx = (mm) =&gt; Math.round((mm / 25.4) * dpi);

        // 1. 가공 사이즈 설정
        const targetSize = document.getElementById('targetSize').value.split('x');
        const tW = mmToPx(parseFloat(targetSize[0]));
        const tH = mmToPx(parseFloat(targetSize[1]));

        // 2. 용지 사이즈 설정
        const paperType = document.getElementById('paperSize').value;
        let pW, pH;

        const paperMap = {
            'A3': [297, 420], 'A4': [210, 297], 'A5': [148, 210], 'A6': [105, 148],
            'B4': [257, 364], 'B5': [176, 250], 'B6': [125, 176],
            '4x6': [101.6, 152.4], '5x7': [127, 177.8]
        };

        if (paperType === 'SINGLE') {
            const borderVal = document.getElementById('borderToggle').value === 'Y' ? mmToPx(parseFloat(document.getElementById('borderWidth').value)) : 0;
            pW = tW + (borderVal * 2); pH = tH + (borderVal * 2);
        } else if (paperType === 'CUSTOM') {
            pW = mmToPx(parseFloat(document.getElementById('customW').value) || 210);
            pH = mmToPx(parseFloat(document.getElementById('customH').value) || 297);
        } else {
            pW = mmToPx(paperMap[paperType][0]);
            pH = mmToPx(paperMap[paperType][1]);
        }

        if (currentOrientation === 'L' &amp;&amp; paperType !== 'SINGLE') [pW, pH] = [pH, pW];
        canvas.width = pW; canvas.height = pH;

        // 배경 채우기
        ctx.fillStyle = &quot;white&quot;;
        ctx.fillRect(0, 0, pW, pH);

        const useBorder = document.getElementById('borderToggle').value === 'Y';
        const borderPx = useBorder ? mmToPx(parseFloat(document.getElementById('borderWidth').value)) : 0;
        const cellW = tW + (borderPx * 2);
        const cellH = tH + (borderPx * 2);
        
        const maxCols = Math.floor(pW / cellW);
        const maxRows = Math.floor(pH / cellH);
        const count = (paperType === 'SINGLE') ? 1 : maxCols * maxRows;

        const padding = (paperType === 'SINGLE') ? 0 : 30; // 용지 끝 여백

        for (let i = 0; i &lt; count; i++) {
            const col = i % maxCols;
            const row = Math.floor(i / maxCols);
            const x = col * cellW + padding;
            const y = row * cellH + padding;

            if (y + cellH &gt; pH || x + cellW &gt; pW) break;

            if (useBorder) {
                ctx.fillStyle = &quot;white&quot;;
                ctx.fillRect(x, y, cellW, cellH);
                ctx.strokeStyle = &quot;#eee&quot;;
                ctx.lineWidth = 1;
                ctx.strokeRect(x, y, cellW, cellH);
            }

            drawPhoto(ctx, uploadedImg, x + borderPx, y + borderPx, tW, tH, rotation);
            
            // 텍스트 삽입
            const text = document.getElementById('photoText').value;
            if (text) {
                const fSize = document.getElementById('fontSize').value;
                ctx.fillStyle = &quot;black&quot;;
                ctx.font = `${fSize}px Pretendard`;
                ctx.textAlign = &quot;center&quot;;
                ctx.fillText(text, x + cellW/2, y + cellH - borderPx/2 - 5);
            }
        }
        document.getElementById('resultInfo').innerText = `최종: ${canvas.width}x${canvas.height}px (300DPI)`;
    }

    function drawPhoto(ctx, img, x, y, w, h, rot) {
        ctx.save();
        ctx.translate(x + w / 2, y + h / 2);
        ctx.rotate((rot * Math.PI) / 180);
        let rW = w, rH = h;
        if (rot === 90 || rot === 270) [rW, rH] = [h, w];
        const r = Math.min(img.width / rW, img.height / rH);
        const sW = rW * r, sH = rH * r;
        ctx.drawImage(img, (img.width - sW) / 2, (img.height - sH) / 2, sW, sH, -rW / 2, -rH / 2, rW, rH);
        ctx.restore();
    }

    function checkQuality() {
        if (!uploadedImg) return alert('사진을 먼저 업로드해주세요.');
        const targetW = parseFloat(document.getElementById('targetSize').value.split('x')[0]);
        const reqPx = Math.round((targetW / 25.4) * 300);
        const isGood = Math.max(uploadedImg.width, uploadedImg.height) &gt;= reqPx;
        document.getElementById('qualityResult').innerHTML = isGood ? &quot;&lt;span style='color:green; font-weight:bold;'&gt;✅ 선명하게 출력 가능&lt;/span&gt;&quot; : &quot;&lt;span style='color:red; font-weight:bold;'&gt;⚠️ 사진이 작아 흐릴 수 있음&lt;/span&gt;&quot;;
    }

    function saveImage() {
        if (!uploadedImg) return alert('이미지가 없습니다.');
        const canvas = document.getElementById('mainCanvas');
        const link = document.createElement('a');
        link.download = `두성계산기1_완성_${Date.now()}.jpg`;
        link.href = canvas.toDataURL(&quot;image/jpeg&quot;, 0.9);
        link.click();
    }
&lt;/script&gt;</description>
      <category>모두의계산기</category>
      <category>계산기</category>
      <category>사진</category>
      <category>사진가공</category>
      <category>사진가공출력</category>
      <category>사진출력</category>
      <category>여권사진</category>
      <category>증명사진</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/96</guid>
      <comments>https://0-1.kr/96#entry96comment</comments>
      <pubDate>Wed, 28 Jan 2026 13:35:59 +0900</pubDate>
    </item>
    <item>
      <title>모두의 간단출첵계산기 엑셀버전_V1</title>
      <link>https://0-1.kr/95</link>
      <description>&lt;!--
  ✅ 05. 모두의 간단출첵계산기 v3 - 티스토리 전용

  핵심: 스크립트 동적로드 / 전역함수 / 인라인CSS / z-index 최대값

--&gt;



&lt;!-- ① 스타일 (인라인 - CDN link 없음) --&gt;

&lt;style&gt;

#mc5w{font-family:&quot;Malgun Gothic&quot;,&quot;맑은 고딕&quot;,sans-serif;background:#f5f6fa;border:2px solid #4a6fa5;border-radius:10px;padding:8px;margin:10px 0;box-sizing:border-box;position:relative;}

#mc5w.tm-mint{--th:#d4f0e8;--tb:#f0faf7;--bo:#a8dfd1;--hv:#e0f7f1;--ac:#b2ead8;--fc:#1a4a3a;--chk:#1abc9c;}

#mc5w.tm-warm{--th:#f5e6d3;--tb:#fdf8f3;--bo:#e0c8a8;--hv:#fdf0e2;--ac:#f5d9b0;--fc:#5a3a1a;--chk:#c07b3a;}

#mc5w.tm-slate{--th:#2d3748;--tb:#3d4a5c;--bo:#4a5568;--hv:#4a5568;--ac:#667eea;--fc:#e2e8f0;--chk:#a0aec0;}

#mc5w.tm-rose{--th:#fce4ec;--tb:#fff5f8;--bo:#f8bbd0;--hv:#fde8f0;--ac:#f48fb1;--fc:#5a1a2e;--chk:#e91e63;}

#mc5tb{background:#fff;border:1px solid #dde3ef;border-radius:7px;padding:6px 8px;margin-bottom:7px;display:flex;flex-direction:column;gap:5px;}

.mc5row{display:flex;flex-wrap:wrap;gap:4px;align-items:center;}

.mc5b{display:inline-flex;align-items:center;justify-content:center;padding:5px 9px;border:1px solid #c5cfe0;border-radius:5px;background:#f0f4fb;color:#334;font-size:12px;font-weight:bold;cursor:pointer;white-space:nowrap;transition:background .13s;}

.mc5b:hover,.mc5b:active{background:#4a6fa5;color:#fff;border-color:#4a6fa5;}

.mc5blu{background:#4a6fa5!important;color:#fff!important;border-color:#2e5090!important;}

.mc5grn{background:#27ae60!important;color:#fff!important;border-color:#1e8449!important;}

.mc5org{background:#e67e22!important;color:#fff!important;border-color:#ca6f1e!important;}

.mc5red{background:#e74c3c!important;color:#fff!important;border-color:#c0392b!important;}

.mc5pur{background:#8e44ad!important;color:#fff!important;border-color:#6c3483!important;}

.mc5drk{background:#2c3e50!important;color:#fff!important;border-color:#1a252f!important;}

.mc5tel{background:#16a085!important;color:#fff!important;border-color:#0e6655!important;}

.mc5div{width:1px;height:24px;background:#e0e6f0;margin:0 2px;flex-shrink:0;}

.mc5lbl{font-size:10px;color:#aaa;white-space:nowrap;}

select.mc5sel{padding:5px 6px;border:1px solid #c5cfe0;border-radius:5px;background:#f0f4fb;font-size:12px;font-weight:bold;cursor:pointer;height:28px;}

#mc5zlbl{font-size:12px;font-weight:bold;color:#4a6fa5;min-width:36px;text-align:center;}

.mc5sw{display:inline-block;width:19px;height:19px;border-radius:50%;border:2px solid #bbb;cursor:pointer;vertical-align:middle;transition:transform .15s;}

.mc5sw:hover{transform:scale(1.2);}

.mc5sw.on{border-color:#333;transform:scale(1.15);}

.sw0{background:linear-gradient(135deg,#4a6fa5,#e8eef8);}

.sw1{background:linear-gradient(135deg,#1abc9c,#d4f0e8);}

.sw2{background:linear-gradient(135deg,#c07b3a,#f5e6d3);}

.sw3{background:linear-gradient(135deg,#2d3748,#667eea);}

.sw4{background:linear-gradient(135deg,#e91e63,#fce4ec);}

#mc5gw{width:100%;overflow:hidden;border-radius:6px;border:1px solid #c5cfe0;background:#fff;}

#mc5g{width:100%!important;height:460px!important;}

#mc5sb{font-size:11px;color:#666;margin-top:5px;padding:4px 8px;background:#eef1f7;border-radius:4px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:3px;}

/* HOT 셀 테마 */

#mc5w .handsontable th{background:var(--th,#e8eef8)!important;color:var(--fc,#2c3e50)!important;border:1px solid var(--bo,#d0d9ec)!important;vertical-align:middle!important;text-align:center!important;box-shadow:none!important;font-weight:bold;}

#mc5w .handsontable tbody tr:nth-child(even) td{background:var(--tb,#f7f9fd)!important;}

#mc5w .handsontable td{border:1px solid var(--bo,#d0d9ec)!important;vertical-align:middle!important;text-align:center!important;box-shadow:none!important;-webkit-box-shadow:none!important;}

#mc5w .handsontable td.htCheckboxRendererInput{box-shadow:none!important;background:transparent!important;}

#mc5w .handsontable td input[type=checkbox]{width:15px!important;height:15px!important;cursor:pointer;vertical-align:middle;margin:0;accent-color:var(--chk,#4a6fa5);}

#mc5w .handsontable tr:hover td{background:var(--hv,#ebf2ff)!important;}

#mc5w .handsontable td.area,#mc5w .handsontable td.current{background:var(--ac,#c4d9f8)!important;}

#mc5w.tm-slate .handsontable td{color:#e2e8f0!important;background:#2d3748!important;}

/* 모달 - z-index 최대값으로 티스토리 레이어 돌파 */

.mc5mbg{display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.55);z-index:2147483647;align-items:center;justify-content:center;}

.mc5mbg.show{display:flex!important;}

.mc5md{background:#fff;border-radius:12px;padding:18px;max-width:540px;width:94vw;max-height:88vh;overflow-y:auto;box-shadow:0 10px 40px rgba(0,0,0,.3);position:relative;}

.mc5md h3{margin:0 0 13px;font-size:15px;color:#2c3e50;border-bottom:2px solid #4a6fa5;padding-bottom:8px;}

.mc5mx{position:absolute;top:10px;right:13px;background:none;border:none;font-size:21px;cursor:pointer;color:#aaa;line-height:1;}

.mc5mx:hover{color:#e74c3c;}

.mc5ci{display:inline-flex;align-items:center;margin:3px;padding:5px 10px;border:1px solid #c5cfe0;border-radius:5px;cursor:pointer;font-size:12px;user-select:none;background:#f0f4fb;}

.mc5ci.on{background:#4a6fa5;color:#fff;border-color:#2e5090;}

.mc5mgi{background:#eef3fb;border-radius:6px;padding:9px 11px;font-size:12px;color:#2c3e50;margin-bottom:10px;line-height:1.7;}

.mc5mgi b{color:#4a6fa5;}

/* 전화번호 */

.mc5tel-a{color:#27ae60;text-decoration:none;font-weight:bold;}

/* 전체화면 */

#mc5w.mc5fs{position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:100vh!important;z-index:2147483646!important;border-radius:0!important;padding:8px!important;background:#f5f6fa!important;overflow-y:auto;}

#mc5w.mc5fs #mc5g{height:calc(100vh - 130px)!important;}

/* 반응형 */

@media(max-width:600px){.mc5div{display:none;}.mc5lbl{display:none;}.mc5b{font-size:11px;padding:4px 6px;}select.mc5sel{font-size:11px;}}

@media(max-width:400px){.mc5b{font-size:10px;padding:3px 5px;}}

/* PDF 미리보기 */

#mc5pv{border:1px solid #ccc;margin-top:8px;overflow:hidden;background:#fff;max-width:100%;}

#mc5pv img{max-width:100%;}

&lt;/style&gt;



&lt;!-- ② HTML 구조 --&gt;

&lt;div id=&quot;mc5w&quot;&gt;



  &lt;div id=&quot;mc5tb&quot;&gt;

    &lt;!-- 1행 --&gt;

    &lt;div class=&quot;mc5row&quot;&gt;

      &lt;span class=&quot;mc5lbl&quot;&gt; &lt;/span&gt;

      &lt;button class=&quot;mc5b mc5blu&quot; onclick=&quot;mc5LoadExcel()&quot;&gt;  불러오기&lt;/button&gt;

      &lt;button class=&quot;mc5b mc5grn&quot; onclick=&quot;mc5SaveExcel()&quot;&gt;  엑셀저장&lt;/button&gt;

      &lt;button class=&quot;mc5b mc5tel&quot; onclick=&quot;mc5DevSave()&quot;&gt;  기기저장&lt;/button&gt;

      &lt;button class=&quot;mc5b mc5org&quot; onclick=&quot;mc5OpenPdf()&quot;&gt;  PDF&lt;/button&gt;

      &lt;div class=&quot;mc5div&quot;&gt;&lt;/div&gt;

      &lt;span class=&quot;mc5lbl&quot;&gt; &lt;/span&gt;

      &lt;select class=&quot;mc5sel&quot; id=&quot;mc5fzs&quot; onchange=&quot;mc5Freeze()&quot;&gt;

        &lt;option value=&quot;0&quot;&gt; 해제&lt;/option&gt;&lt;option value=&quot;1&quot; selected&gt;A고정&lt;/option&gt;

        &lt;option value=&quot;2&quot;&gt;B까지&lt;/option&gt;&lt;option value=&quot;3&quot;&gt;C까지&lt;/option&gt;

        &lt;option value=&quot;4&quot;&gt;D까지&lt;/option&gt;&lt;option value=&quot;5&quot;&gt;E까지&lt;/option&gt;

      &lt;/select&gt;

      &lt;button class=&quot;mc5b&quot; onclick=&quot;mc5Zoom(-1)&quot;&gt;➖&lt;/button&gt;

      &lt;span id=&quot;mc5zlbl&quot;&gt;100%&lt;/span&gt;

      &lt;button class=&quot;mc5b&quot; onclick=&quot;mc5Zoom(1)&quot;&gt;➕&lt;/button&gt;

      &lt;button class=&quot;mc5b mc5blu&quot; id=&quot;mc5fsb&quot; onclick=&quot;mc5Fullscreen()&quot;&gt;  전체보기&lt;/button&gt;

      &lt;div class=&quot;mc5div&quot;&gt;&lt;/div&gt;

      &lt;span class=&quot;mc5lbl&quot;&gt; &lt;/span&gt;

      &lt;span class=&quot;mc5sw sw0 on&quot; title=&quot;블루&quot; onclick=&quot;mc5Theme('',this)&quot;&gt;&lt;/span&gt;

      &lt;span class=&quot;mc5sw sw1&quot; title=&quot;민트&quot; onclick=&quot;mc5Theme('tm-mint',this)&quot;&gt;&lt;/span&gt;

      &lt;span class=&quot;mc5sw sw2&quot; title=&quot;베이지&quot; onclick=&quot;mc5Theme('tm-warm',this)&quot;&gt;&lt;/span&gt;

      &lt;span class=&quot;mc5sw sw3&quot; title=&quot;다크&quot; onclick=&quot;mc5Theme('tm-slate',this)&quot;&gt;&lt;/span&gt;

      &lt;span class=&quot;mc5sw sw4&quot; title=&quot;로즈&quot; onclick=&quot;mc5Theme('tm-rose',this)&quot;&gt;&lt;/span&gt;

    &lt;/div&gt;

    &lt;!-- 2행 --&gt;

    &lt;div class=&quot;mc5row&quot;&gt;

      &lt;span class=&quot;mc5lbl&quot;&gt;✏️&lt;/span&gt;

      &lt;button class=&quot;mc5b mc5pur&quot; onclick=&quot;mc5OpenChk()&quot;&gt;☑️ 체크열&lt;/button&gt;

      &lt;button class=&quot;mc5b mc5drk&quot; onclick=&quot;mc5OpenMerge()&quot;&gt;⊞ 셀병합&lt;/button&gt;

      &lt;button class=&quot;mc5b mc5red&quot; onclick=&quot;mc5SplitCell()&quot;&gt;⊟ 병합해제&lt;/button&gt;

      &lt;div class=&quot;mc5div&quot;&gt;&lt;/div&gt;

      &lt;span class=&quot;mc5lbl&quot;&gt; &lt;/span&gt;

      &lt;button class=&quot;mc5b&quot; onclick=&quot;mc5Share()&quot;&gt;  링크복사&lt;/button&gt;

      &lt;button class=&quot;mc5b mc5tel&quot; onclick=&quot;mc5OpenQr()&quot;&gt;  QR공유&lt;/button&gt;

      &lt;button class=&quot;mc5b mc5grn&quot; onclick=&quot;mc5GoGs()&quot;&gt;  구글시트&lt;/button&gt;

      &lt;button class=&quot;mc5b mc5org&quot; onclick=&quot;mc5Mail()&quot;&gt;  메일&lt;/button&gt;

      &lt;button class=&quot;mc5b mc5red&quot; onclick=&quot;mc5Reset()&quot;&gt; ️ 리셋&lt;/button&gt;

    &lt;/div&gt;

  &lt;/div&gt;



  &lt;div id=&quot;mc5gw&quot;&gt;

    &lt;div id=&quot;mc5g&quot;&gt;&lt;/div&gt;

  &lt;/div&gt;

  &lt;div id=&quot;mc5sb&quot;&gt;

    &lt;span id=&quot;mc5sc&quot;&gt;선택: -&lt;/span&gt;

    &lt;span id=&quot;mc5sn&quot;&gt;행: 0 / 열: 0&lt;/span&gt;

    &lt;span id=&quot;mc5ss&quot;&gt;합계: -&lt;/span&gt;

  &lt;/div&gt;

&lt;/div&gt;



&lt;input type=&quot;file&quot; id=&quot;mc5fi&quot; accept=&quot;.xlsx,.xls,.csv,.json&quot; style=&quot;display:none&quot; onchange=&quot;mc5HandleFile(event)&quot;&gt;



&lt;!-- 체크열 모달 --&gt;

&lt;div id=&quot;mc5chkbg&quot; class=&quot;mc5mbg&quot;&gt;

  &lt;div class=&quot;mc5md&quot;&gt;

    &lt;button class=&quot;mc5mx&quot; onclick=&quot;mc5CloseM('mc5chkbg')&quot;&gt;✕&lt;/button&gt;

    &lt;h3&gt;☑️ 체크박스 열 설정&lt;/h3&gt;

    &lt;p style=&quot;font-size:12px;color:#666;margin:0 0 9px&quot;&gt;체크박스를 적용할 열을 선택하세요.&lt;/p&gt;

    &lt;div id=&quot;mc5cc&quot;&gt;&lt;/div&gt;

    &lt;div style=&quot;margin-top:12px;display:flex;gap:7px;justify-content:flex-end&quot;&gt;

      &lt;button class=&quot;mc5b&quot; onclick=&quot;mc5CloseM('mc5chkbg')&quot;&gt;취소&lt;/button&gt;

      &lt;button class=&quot;mc5b mc5blu&quot; onclick=&quot;mc5ApplyChk()&quot;&gt;✅ 적용&lt;/button&gt;

    &lt;/div&gt;

  &lt;/div&gt;

&lt;/div&gt;



&lt;!-- 셀병합 모달 --&gt;

&lt;div id=&quot;mc5mgbg&quot; class=&quot;mc5mbg&quot;&gt;

  &lt;div class=&quot;mc5md&quot;&gt;

    &lt;button class=&quot;mc5mx&quot; onclick=&quot;mc5CloseM('mc5mgbg')&quot;&gt;✕&lt;/button&gt;

    &lt;h3&gt;⊞ 셀 병합 / 해제&lt;/h3&gt;

    &lt;div class=&quot;mc5mgi&quot;&gt;

      &lt;b&gt;사용법:&lt;/b&gt;&lt;br&gt;

      1. 그리드에서 병합할 범위를 드래그 선택&lt;br&gt;

      2. [선택 셀 병합] 클릭&lt;br&gt;

      3. 병합 셀 선택 후 [병합 해제] 클릭&lt;br&gt;&lt;br&gt;

      &lt;b&gt;현재 선택:&lt;/b&gt; &lt;span id=&quot;mc5si&quot; style=&quot;color:#e67e22&quot;&gt;없음&lt;/span&gt;

    &lt;/div&gt;

    &lt;div style=&quot;display:flex;gap:7px;flex-wrap:wrap&quot;&gt;

      &lt;button class=&quot;mc5b mc5drk&quot; onclick=&quot;mc5DoMerge()&quot;&gt;⊞ 선택 셀 병합&lt;/button&gt;

      &lt;button class=&quot;mc5b mc5red&quot; onclick=&quot;mc5DoUnmerge()&quot;&gt;⊟ 병합 해제&lt;/button&gt;

      &lt;button class=&quot;mc5b mc5org&quot; onclick=&quot;mc5RefreshSel()&quot;&gt;  선택갱신&lt;/button&gt;

    &lt;/div&gt;

    &lt;div style=&quot;margin-top:10px&quot;&gt;

      &lt;p style=&quot;font-size:11px;color:#888;margin:0 0 5px&quot;&gt;병합된 셀 목록&lt;/p&gt;

      &lt;div id=&quot;mc5ml&quot; style=&quot;font-size:11px;color:#555;max-height:130px;overflow-y:auto;background:#f8fafc;border-radius:4px;padding:5px&quot;&gt;&lt;/div&gt;

    &lt;/div&gt;

    &lt;div style=&quot;margin-top:10px;display:flex;justify-content:flex-end&quot;&gt;

      &lt;button class=&quot;mc5b&quot; onclick=&quot;mc5CloseM('mc5mgbg')&quot;&gt;닫기&lt;/button&gt;

    &lt;/div&gt;

  &lt;/div&gt;

&lt;/div&gt;



&lt;!-- PDF 모달 --&gt;

&lt;div id=&quot;mc5pdfbg&quot; class=&quot;mc5mbg&quot;&gt;

  &lt;div class=&quot;mc5md&quot; style=&quot;max-width:600px&quot;&gt;

    &lt;button class=&quot;mc5mx&quot; onclick=&quot;mc5CloseM('mc5pdfbg')&quot;&gt;✕&lt;/button&gt;

    &lt;h3&gt;  PDF 변환&lt;/h3&gt;

    &lt;div style=&quot;display:flex;gap:8px;flex-wrap:wrap;margin-bottom:9px;align-items:center;font-size:13px&quot;&gt;

      방향: &lt;select id=&quot;mc5po&quot; class=&quot;mc5sel&quot;&gt;&lt;option value=&quot;l&quot;&gt;가로&lt;/option&gt;&lt;option value=&quot;p&quot; selected&gt;세로&lt;/option&gt;&lt;/select&gt;

      크기: &lt;select id=&quot;mc5ps&quot; class=&quot;mc5sel&quot;&gt;&lt;option value=&quot;a4&quot; selected&gt;A4&lt;/option&gt;&lt;option value=&quot;a3&quot;&gt;A3&lt;/option&gt;&lt;/select&gt;

      &lt;label style=&quot;display:flex;align-items:center;gap:4px&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;mc5pf&quot; checked&gt; 1장맞춤&lt;/label&gt;

    &lt;/div&gt;

    &lt;div style=&quot;display:flex;gap:7px&quot;&gt;

      &lt;button class=&quot;mc5b mc5blu&quot; onclick=&quot;mc5PdfPrev(this)&quot;&gt;  미리보기&lt;/button&gt;

      &lt;button class=&quot;mc5b mc5grn&quot; onclick=&quot;mc5PdfDl(this)&quot;&gt;⬇️ PDF다운&lt;/button&gt;

    &lt;/div&gt;

    &lt;div id=&quot;mc5pv&quot;&gt;&lt;/div&gt;

  &lt;/div&gt;

&lt;/div&gt;



&lt;!-- QR 모달 --&gt;

&lt;div id=&quot;mc5qrbg&quot; class=&quot;mc5mbg&quot;&gt;

  &lt;div class=&quot;mc5md&quot; style=&quot;max-width:360px;text-align:center&quot;&gt;

    &lt;button class=&quot;mc5mx&quot; onclick=&quot;mc5CloseM('mc5qrbg')&quot;&gt;✕&lt;/button&gt;

    &lt;h3&gt;  QR 코드 공유&lt;/h3&gt;

    &lt;p style=&quot;font-size:12px;color:#666;margin:0 0 8px&quot;&gt;카메라로 스캔하면 데이터를 공유합니다.&lt;/p&gt;

    &lt;div style=&quot;display:flex;flex-direction:column;align-items:center;gap:9px;padding:8px 0&quot;&gt;

      &lt;div id=&quot;mc5qrbox&quot;&gt;&lt;/div&gt;

      &lt;div id=&quot;mc5qrurl&quot; style=&quot;font-size:11px;color:#666;word-break:break-all;background:#f5f6fa;padding:5px 9px;border-radius:4px;max-width:100%;text-align:left&quot;&gt;&lt;/div&gt;

    &lt;/div&gt;

    &lt;div style=&quot;display:flex;gap:7px;justify-content:center&quot;&gt;

      &lt;button class=&quot;mc5b mc5blu&quot; onclick=&quot;mc5CopyQr()&quot;&gt;  링크복사&lt;/button&gt;

      &lt;button class=&quot;mc5b mc5grn&quot; onclick=&quot;mc5DlQr()&quot;&gt;⬇️ QR저장&lt;/button&gt;

      &lt;button class=&quot;mc5b&quot; onclick=&quot;mc5CloseM('mc5qrbg')&quot;&gt;닫기&lt;/button&gt;

    &lt;/div&gt;

  &lt;/div&gt;

&lt;/div&gt;



&lt;!-- ③ 스크립트 동적 로드 (티스토리 차단 우회) --&gt;

&lt;script&gt;

// 라이브러리 순차 동적 로드 후 앱 초기화

(function(){

  var libs = [

    'https://cdn.jsdelivr.net/npm/handsontable/dist/handsontable.full.min.js',

    'https://cdnjs.cloudflare.com/ajax/libs/lz-string/1.4.4/lz-string.min.js',

    'https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js',

    'https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js',

    'https://cdnjs.cloudflare.com/ajax/libs/html2canvas/1.4.1/html2canvas.min.js',

    'https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js'

  ];

  // HOT CSS도 동적 삽입

  var lnk = document.createElement('link');

  lnk.rel='stylesheet';

  lnk.href='https://cdn.jsdelivr.net/npm/handsontable/dist/handsontable.full.min.css';

  document.head.appendChild(lnk);



  var idx = 0;

  function loadNext(){

    if(idx &gt;= libs.length){ mc5Init(); return; }

    var s = document.createElement('script');

    s.src = libs[idx++];

    s.onload = loadNext;

    s.onerror = loadNext; // 실패해도 계속 진행

    document.head.appendChild(s);

  }

  loadNext();

})();

&lt;/script&gt;



&lt;!-- ④ 앱 로직 (전역 함수 - IIFE 없음) --&gt;

&lt;script&gt;

/* ───── 상수 &amp; 상태 ───── */

var MC5_SK  = 'mc5ts_v1';

var MC5_BF  = 13;

var MC5_BH  = 34;

var mc5hot  = null;

var mc5zoom = 100;

var mc5chk  = [];       // 체크박스 열

var mc5mc   = [];       // mergeCells

var mc5tm   = '';       // 테마

var mc5qUrl = '';



/* ───── 유틸 ───── */

function mc5Empty(r,c){ return Array.from({length:r},function(){return Array(c).fill('');}); }



function mc5IsTel(v){

  if(typeof v!=='string')return false;

  var c=v.replace(/[-s]/g,'');

  return /^(0d{1,2}d{3,4}d{4}|01[016789]d{7,8})$/.test(c);

}



/* ───── 렌더러 ───── */

function mc5TelRender(hi,td,r,c,p,v,cp){

  Handsontable.renderers.TextRenderer.apply(this,arguments);

  var s=String(v||'');

  if(mc5IsTel(s)){

    td.innerHTML='&lt;a class=&quot;mc5tel-a&quot; href=&quot;tel:'+s.replace(/[-s]/g,'')+'&quot; onclick=&quot;event.stopPropagation()&quot;&gt;  '+s+'&lt;/a&gt;';

  }

}



function mc5Cells(r,c){

  if(mc5chk.indexOf(c)&gt;-1) return {type:'checkbox',className:'htCenter htMiddle'};

  return {renderer:mc5TelRender};

}



/* ───── 폰트 주입 ───── */

function mc5ApplyFont(){

  var fs=Math.round(MC5_BF*mc5zoom/100);

  var rh=Math.round(MC5_BH*mc5zoom/100);

  var tds=document.querySelectorAll('#mc5g .handsontable tbody td');

  for(var i=0;i&lt;tds.length;i++){tds[i].style.fontSize=fs+'px';tds[i].style.lineHeight=rh+'px';}

  var ths=document.querySelectorAll('#mc5g .handsontable thead th');

  for(var i=0;i&lt;ths.length;i++){ths[i].style.fontSize=Math.max(9,fs-1)+'px';}

}



/* ───── HOT 초기화 ───── */

function mc5InitHot(data){

  var el=document.getElementById('mc5g');

  if(mc5hot){mc5hot.destroy();mc5hot=null;}

  var rh=Math.round(MC5_BH*mc5zoom/100);

  mc5hot=new Handsontable(el,{

    data:data,

    colHeaders:true,rowHeaders:true,

    width:'100%',height:'100%',stretchH:'all',

    rowHeights:rh,minSpareRows:2,minSpareCols:1,

    manualColumnMove:true,manualColumnResize:true,manualRowResize:true,

    contextMenu:true,copyPaste:true,undo:true,filters:true,dropdownMenu:true,

    mergeCells:mc5mc,fixedColumnsLeft:1,wordWrap:true,

    licenseKey:'non-commercial-and-evaluation',

    cells:function(r,c){return mc5Cells(r,c);},

    afterRender:function(){mc5ApplyFont();},

    /* ★ 붙여넣기 후 행높이 균일화 */

    afterPaste:function(){

      var trh=Math.round(MC5_BH*mc5zoom/100);

      var n=mc5hot.countRows();

      var arr=[];for(var i=0;i&lt;n;i++)arr.push(trh);

      mc5hot.updateSettings({rowHeights:arr});

      requestAnimationFrame(function(){

        mc5hot.updateSettings({rowHeights:trh});

        mc5hot.render();

      });

      mc5Save();mc5UpdateSb();

    },

    /* ★ 복사 시 체크박스 → 1/0 */

    beforeCopy:function(data,coords){

      if(!coords)return;

      for(var ci=0;ci&lt;coords.length;ci++){

        var rng=coords[ci];

        for(var r=rng.startRow;r&lt;=rng.endRow;r++){

          for(var c=rng.startCol;c&lt;=rng.endCol;c++){

            var ri=r-rng.startRow,col=c-rng.startCol;

            if(data[ri]&amp;&amp;mc5chk.indexOf(c)&gt;-1){

              var v=data[ri][col];

              data[ri][col]=(v===true||v==='true')?'1':(v===false||v==='false')?'0':v;

            }

          }

        }

      }

    },

    /* ★ 붙여넣기 시 1/0 → boolean 복원 */

    afterChange:function(changes){

      if(!changes)return;

      var nr=false;

      for(var i=0;i&lt;changes.length;i++){

        var r=changes[i][0],c=changes[i][1],nv=changes[i][3];

        if(mc5chk.indexOf(c)&gt;-1){

          if(nv==='1'||nv===1){mc5hot.setDataAtCell(r,c,true,'norm');nr=true;}

          else if(nv==='0'||nv===0){mc5hot.setDataAtCell(r,c,false,'norm');nr=true;}

        }

      }

      if(nr)mc5hot.render();

      mc5Save();mc5UpdateSb();

    },

    afterSelectionEnd:function(r,c,r2,c2){mc5UpdateSb(r,c,r2,c2);}

  });

}



/* ───── 저장 / 불러오기 ───── */

function mc5Save(){

  if(!mc5hot)return;

  try{

    localStorage.setItem(MC5_SK,JSON.stringify({

      data:mc5hot.getData(),chk:mc5chk,mc:mc5mc,zoom:mc5zoom,tm:mc5tm,

      frz:parseInt(document.getElementById('mc5fzs').value)||1

    }));

  }catch(e){}

}



function mc5LoadSaved(){

  try{

    var s=localStorage.getItem(MC5_SK);

    if(!s)return null;

    var st=JSON.parse(s);

    mc5chk=st.chk||[];mc5mc=st.mc||[];mc5zoom=st.zoom||100;mc5tm=st.tm||'';

    document.getElementById('mc5fzs').value=st.frz||1;

    if(mc5tm)mc5ApplyTmCls(mc5tm);

    return st.data;

  }catch(e){return null;}

}



function mc5LoadUrl(){

  try{

    var d=new URLSearchParams(window.location.search).get('mc5d');

    if(!d)return null;

    var st=JSON.parse(LZString.decompressFromEncodedURIComponent(d));

    mc5chk=st.chk||st.chkCols||[];mc5mc=st.mc||st.mCells||[];mc5tm=st.tm||'';

    if(mc5tm)mc5ApplyTmCls(mc5tm);

    return st.data;

  }catch(e){return null;}

}



/* ───── 상태바 ───── */

function mc5UpdateSb(r,c,r2,c2){

  if(!mc5hot)return;

  document.getElementById('mc5sn').textContent='행: '+mc5hot.countRows()+' / 열: '+mc5hot.countCols();

  if(r===undefined)return;

  var cl=Handsontable.helper.spreadsheetColumnLabel;

  document.getElementById('mc5sc').textContent='선택: '+cl(c)+(r+1)+(r!==r2||c!==c2?' ~ '+cl(c2)+(r2+1):'');

  var sum=0,has=false;

  for(var rr=r;rr&lt;=r2;rr++)for(var cc=c;cc&lt;=c2;cc++){var v=parseFloat(mc5hot.getDataAtCell(rr,cc));if(!isNaN(v)){sum+=v;has=true;}}

  document.getElementById('mc5ss').textContent=has?'합계: '+sum.toLocaleString():'합계: -';

}



/* ───── 줌 ───── */

function mc5ApplyZoom(){

  var rh=Math.round(MC5_BH*mc5zoom/100);

  document.getElementById('mc5zlbl').textContent=mc5zoom+'%';

  if(!mc5hot)return;

  mc5hot.updateSettings({rowHeights:rh,cells:function(r,c){return mc5Cells(r,c);}});

  mc5hot.render();

}

function mc5Zoom(d){mc5zoom=Math.min(200,Math.max(50,mc5zoom+d*10));mc5ApplyZoom();mc5Save();}



/* ───── 열 고정 ───── */

function mc5Freeze(){if(mc5hot)mc5hot.updateSettings({fixedColumnsLeft:parseInt(document.getElementById('mc5fzs').value)});mc5Save();}



/* ───── 테마 ───── */

function mc5ApplyTmCls(t){

  var w=document.getElementById('mc5w');

  ['tm-mint','tm-warm','tm-slate','tm-rose'].forEach(function(x){w.classList.remove(x);});

  if(t)w.classList.add(t);

}

function mc5Theme(t,el){

  mc5tm=t;mc5ApplyTmCls(t);

  document.querySelectorAll('.mc5sw').forEach(function(s){s.classList.remove('on');});

  if(el)el.classList.add('on');

  if(mc5hot)mc5hot.render();

  mc5Save();

}



/* ───── 전체화면 ───── */

function mc5Fullscreen(){

  var w=document.getElementById('mc5w');var b=document.getElementById('mc5fsb');

  w.classList.toggle('mc5fs');

  b.textContent=w.classList.contains('mc5fs')?'↩ 돌아오기':'  전체보기';

  setTimeout(function(){if(mc5hot)mc5hot.render();},200);

}



/* ───── 엑셀 불러오기 ───── */

function mc5LoadExcel(){document.getElementById('mc5fi').click();}



function mc5ParseXlsx(buf){

  var wb=XLSX.read(buf,{type:'array'});

  var ws=wb.Sheets[wb.SheetNames[0]];

  var json=XLSX.utils.sheet_to_json(ws,{header:1,defval:''});

  var mx=Math.max.apply(null,json.map(function(r){return r.length;}).concat([10]));

  return json.map(function(r){while(r.length&lt;mx)r.push('');return r;});

}



function mc5HandleFile(ev){

  var file=ev.target.files[0];if(!file)return;

  if(file.name.toLowerCase().endsWith('.json')){

    var rd=new FileReader();

    rd.onload=function(e){

      try{

        var st=JSON.parse(e.target.result);

        mc5chk=st.chk||st.chkCols||[];mc5mc=st.mc||st.mCells||[];

        mc5zoom=st.zoom||100;mc5tm=st.tm||st.theme||'';

        if(st.frz||st.freeze)document.getElementById('mc5fzs').value=st.frz||st.freeze;

        mc5ApplyTmCls(mc5tm);mc5InitHot(st.data||mc5Empty(20,10));mc5ApplyZoom();mc5Save();

        alert('✅ 파일 복원 완료! 저장일시: '+(st.savedAt||'알 수 없음'));

      }catch(err){alert('오류: '+err.message);}

    };rd.readAsText(file);

  }else{

    var rd=new FileReader();

    rd.onload=function(e){

      try{mc5chk=[];mc5mc=[];mc5InitHot(mc5ParseXlsx(e.target.result));mc5Save();alert('✅ 엑셀 불러오기 완료!');}

      catch(err){alert('오류: '+err.message);}

    };rd.readAsArrayBuffer(file);

  }

  ev.target.value='';

}



/* ───── 엑셀 저장 ───── */

function mc5SaveExcel(){

  if(!mc5hot)return;

  var ws=XLSX.utils.aoa_to_sheet(mc5hot.getData());

  var wb=XLSX.utils.book_new();XLSX.utils.book_append_sheet(wb,ws,'출석체크');

  XLSX.writeFile(wb,'출석체크_'+new Date().toISOString().slice(0,10)+'.xlsx');

}



/* ───── 기기저장 ───── */

function mc5DevSave(){

  if(!mc5hot)return;

  var st={data:mc5hot.getData(),chk:mc5chk,mc:mc5mc,zoom:mc5zoom,tm:mc5tm,

    frz:parseInt(document.getElementById('mc5fzs').value)||1,savedAt:new Date().toISOString()};

  var blob=new Blob([JSON.stringify(st)],{type:'application/json'});

  var a=document.createElement('a');a.href=URL.createObjectURL(blob);

  a.download='출첵저장_'+new Date().toISOString().slice(0,16).replace('T','_')+'.json';

  a.click();URL.revokeObjectURL(a.href);

  alert('✅ 기기에 저장 완료! [불러오기]로 복원 가능합니다.');

}



/* ───── 체크열 ───── */

function mc5OpenChk(){

  if(!mc5hot)return;

  var n=mc5hot.countCols(),d=document.getElementById('mc5cc');d.innerHTML='';

  for(var i=0;i&lt;n;i++){

    var l=Handsontable.helper.spreadsheetColumnLabel(i);

    var sp=document.createElement('span');

    sp.className='mc5ci'+(mc5chk.indexOf(i)&gt;-1?' on':'');

    sp.textContent=l+'열';sp.setAttribute('data-col',i);

    sp.onclick=(function(el){return function(){el.classList.toggle('on');};})(sp);

    d.appendChild(sp);

  }

  document.getElementById('mc5chkbg').classList.add('show');

}

function mc5ApplyChk(){

  mc5chk=[];

  document.querySelectorAll('#mc5cc .mc5ci').forEach(function(x){if(x.classList.contains('on'))mc5chk.push(parseInt(x.getAttribute('data-col')));});

  mc5hot.updateSettings({cells:function(r,c){return mc5Cells(r,c);}});mc5hot.render();mc5Save();mc5CloseM('mc5chkbg');

}



/* ───── 셀 병합 ───── */

function mc5OpenMerge(){mc5RefreshSel();mc5RenderMl();document.getElementById('mc5mgbg').classList.add('show');}

function mc5RefreshSel(){

  if(!mc5hot)return;

  var sel=mc5hot.getSelectedLast(),si=document.getElementById('mc5si');

  if(!sel){si.textContent='없음 (그리드에서 먼저 선택)';return;}

  var r1=sel[0],c1=sel[1],r2=sel[2],c2=sel[3];

  var cl=Handsontable.helper.spreadsheetColumnLabel;

  si.textContent=cl(Math.min(c1,c2))+(Math.min(r1,r2)+1)+' ~ '+cl(Math.max(c1,c2))+(Math.max(r1,r2)+1);

}

function mc5DoMerge(){

  if(!mc5hot)return;var sel=mc5hot.getSelectedLast();

  if(!sel){alert('셀을 먼저 선택하세요.');return;}

  var minR=Math.min(sel[0],sel[2]),maxR=Math.max(sel[0],sel[2]);

  var minC=Math.min(sel[1],sel[3]),maxC=Math.max(sel[1],sel[3]);

  if(minR===maxR&amp;&amp;minC===maxC){alert('2개 이상 선택하세요.');return;}

  mc5mc=mc5mc.filter(function(m){return!(m.row===minR&amp;&amp;m.col===minC&amp;&amp;m.rowspan===(maxR-minR+1)&amp;&amp;m.colspan===(maxC-minC+1));});

  mc5mc.push({row:minR,col:minC,rowspan:maxR-minR+1,colspan:maxC-minC+1});

  mc5hot.updateSettings({mergeCells:mc5mc});mc5hot.render();mc5Save();mc5RefreshSel();mc5RenderMl();alert('✅ 병합 완료!');

}

function mc5DoUnmerge(){

  if(!mc5hot)return;var sel=mc5hot.getSelectedLast();

  if(!sel){alert('해제할 셀을 선택하세요.');return;}

  var minR=Math.min(sel[0],sel[2]),maxR=Math.max(sel[0],sel[2]);

  var minC=Math.min(sel[1],sel[3]),maxC=Math.max(sel[1],sel[3]);

  var before=mc5mc.length;

  mc5mc=mc5mc.filter(function(m){

    var er=m.row+m.rowspan-1,ec=m.col+m.colspan-1;

    return er&lt;minR||m.row&gt;maxR||ec&lt;minC||m.col&gt;maxC;

  });

  if(mc5mc.length===before){alert('병합된 셀이 없습니다.');return;}

  mc5hot.updateSettings({mergeCells:mc5mc});mc5hot.render();mc5Save();mc5RenderMl();alert('✅ 해제 완료!');

}

function mc5SplitCell(){mc5DoUnmerge();}

function mc5RenderMl(){

  var d=document.getElementById('mc5ml');var cl=Handsontable.helper.spreadsheetColumnLabel;

  if(!mc5mc.length){d.textContent='병합 없음';return;}

  d.innerHTML=mc5mc.map(function(m,i){

    return '&lt;span style=&quot;display:inline-block;margin:2px 3px;padding:2px 6px;background:#e8f0fe;border-radius:3px&quot;&gt;'+

      cl(m.col)+(m.row+1)+'~'+cl(m.col+m.colspan-1)+(m.row+m.rowspan)+'&lt;/span&gt;';

  }).join('');

}



/* ───── PDF ───── */

function mc5OpenPdf(){document.getElementById('mc5pdfbg').classList.add('show');}

async function mc5GetCanvas(){return await html2canvas(document.getElementById('mc5gw'),{scale:2,useCORS:true,backgroundColor:'#fff'});}

async function mc5PdfPrev(btn){

  var ot=btn.textContent;btn.textContent='⏳...';

  try{var c=await mc5GetCanvas();var p=document.getElementById('mc5pv');p.innerHTML='';var img=new Image();img.src=c.toDataURL('image/png');img.style.maxWidth='100%';p.appendChild(img);}

  catch(e){alert('미리보기 실패: '+e.message);}

  btn.textContent=ot;

}

async function mc5PdfDl(btn){

  var ot=btn.textContent;btn.textContent='⏳...';

  try{

    var or=document.getElementById('mc5po').value,sz=document.getElementById('mc5ps').value,ft=document.getElementById('mc5pf').checked;

    var c=await mc5GetCanvas();var{jsPDF}=window.jspdf;

    var pdf=new jsPDF({orientation:or,unit:'mm',format:sz});

    var pw=pdf.internal.pageSize.getWidth(),ph=pdf.internal.pageSize.getHeight();

    var iw=pw-10,ih=(c.height/c.width)*iw;

    if(ft&amp;&amp;ih&gt;ph-10){ih=ph-10;iw=(c.width/c.height)*ih;}

    pdf.addImage(c.toDataURL('image/png'),'PNG',5,5,iw,ih);

    pdf.save('출석체크_'+new Date().toISOString().slice(0,10)+'.pdf');

  }catch(e){alert('PDF 실패: '+e.message);}

  btn.textContent=ot;

}



/* ───── QR ───── */

function mc5OpenQr(){

  if(!mc5hot)return;

  var st={data:mc5hot.getData(),chk:mc5chk,mc:mc5mc,tm:mc5tm};

  var comp=LZString.compressToEncodedURIComponent(JSON.stringify(st));

  var url=window.location.origin+window.location.pathname+'?mc5d='+comp;

  if(url.length&gt;2953){alert('⚠️ 데이터가 너무 많아 QR 생성이 어렵습니다. [기기저장]을 이용하세요.');return;}

  mc5qUrl=url;

  document.getElementById('mc5qrbox').innerHTML='';

  document.getElementById('mc5qrurl').textContent=url;

  new QRCode(document.getElementById('mc5qrbox'),{text:url,width:200,height:200,colorDark:'#2c3e50',colorLight:'#ffffff',correctLevel:QRCode.CorrectLevel.M});

  document.getElementById('mc5qrbg').classList.add('show');

}

function mc5CopyQr(){navigator.clipboard.writeText(mc5qUrl).then(function(){alert('✅ 링크 복사 완료!');});}

function mc5DlQr(){var c=document.querySelector('#mc5qrbox canvas');if(!c){alert('QR을 먼저 생성하세요.');return;}var a=document.createElement('a');a.href=c.toDataURL('image/png');a.download='QR공유.png';a.click();}



/* ───── 공유 링크 ───── */

function mc5Share(){

  if(!mc5hot)return;

  var st={data:mc5hot.getData(),chk:mc5chk,mc:mc5mc,tm:mc5tm};

  var comp=LZString.compressToEncodedURIComponent(JSON.stringify(st));

  var url=window.location.origin+window.location.pathname+'?mc5d='+comp;

  if(url.length&gt;8000){alert('⚠️ 데이터가 너무 많습니다. 기기저장을 이용하세요.');return;}

  navigator.clipboard.writeText(url).then(function(){alert('✅ 링크 복사 완료!');});

}



/* ───── 구글시트 / 메일 ───── */

function mc5GoGs(){

  if(!mc5hot)return;

  mc5hot.selectCells([[0,0,mc5hot.countRows()-1,mc5hot.countCols()-1]]);

  document.execCommand('copy');

  alert('  복사 완료! 구글 시트에서 Ctrl+V 하세요.');

  window.open('https://docs.google.com/spreadsheets/u/0/create','_blank');

}

function mc5Mail(){window.location.href='mailto:?subject=출석체크 데이터&amp;body=출첵 데이터를 확인하세요.';}



/* ───── 리셋 ───── */

function mc5Reset(){

  if(!confirm('⚠️ 모든 데이터를 초기화할까요?'))return;

  localStorage.removeItem(MC5_SK);mc5chk=[];mc5mc=[];mc5zoom=100;mc5tm='';

  mc5ApplyTmCls('');mc5ApplyZoom();mc5InitHot(mc5Empty(20,10));

}



/* ───── 모달 ───── */

function mc5CloseM(id){document.getElementById(id).classList.remove('show');}

document.querySelectorAll('.mc5mbg').forEach(function(bg){

  bg.addEventListener('click',function(e){if(e.target===this)this.classList.remove('show');});

});



/* ───── 드래그앤드롭 ───── */

var mc5gw=document.getElementById('mc5gw');

mc5gw.addEventListener('dragover',function(e){e.preventDefault();this.style.border='2px dashed #4a6fa5';});

mc5gw.addEventListener('dragleave',function(){this.style.border='1px solid #c5cfe0';});

mc5gw.addEventListener('drop',function(e){

  e.preventDefault();this.style.border='1px solid #c5cfe0';

  var file=e.dataTransfer.files[0];if(!file)return;

  if(file.name.toLowerCase().endsWith('.json')){

    var rd=new FileReader();rd.onload=function(ev){

      try{var st=JSON.parse(ev.target.result);mc5chk=st.chk||[];mc5mc=st.mc||[];mc5zoom=st.zoom||100;mc5tm=st.tm||'';

        if(st.frz)document.getElementById('mc5fzs').value=st.frz;

        mc5ApplyTmCls(mc5tm);mc5InitHot(st.data||mc5Empty(20,10));mc5ApplyZoom();mc5Save();alert('✅ 복원 완료!');}

      catch(err){alert('오류: '+err.message);}

    };rd.readAsText(file);

  }else if(file.name.match(/.(xlsx|xls|csv)$/i)){

    var rd=new FileReader();rd.onload=function(ev){

      try{mc5chk=[];mc5mc=[];mc5InitHot(mc5ParseXlsx(ev.target.result));mc5Save();alert('✅ 엑셀 불러오기 완료!');}

      catch(err){alert('오류: '+err.message);}

    };rd.readAsArrayBuffer(file);

  }

});



/* ───── 자동저장 5초 ───── */

setInterval(function(){if(mc5hot)mc5Save();},5000);



/* ───── 앱 초기화 (라이브러리 로드 완료 후 호출됨) ───── */

function mc5Init(){

  var ud=mc5LoadUrl();

  if(ud){mc5InitHot(ud);}

  else{var sd=mc5LoadSaved();mc5InitHot(sd||mc5Empty(20,10));}

  mc5ApplyZoom();mc5UpdateSb();

}

&lt;/script&gt;</description>
      <category>모두의계산기</category>
      <category>계산기</category>
      <category>발표</category>
      <category>채점</category>
      <category>출석체크</category>
      <category>출첵</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/95</guid>
      <comments>https://0-1.kr/95#entry95comment</comments>
      <pubDate>Tue, 27 Jan 2026 17:07:50 +0900</pubDate>
    </item>
    <item>
      <title>모두의 텍스트나누기계산기_V2</title>
      <link>https://0-1.kr/93</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
&lt;title&gt;모두의 텍스트나누기 V2&lt;/title&gt;
&lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/handsontable/dist/handsontable.full.min.css&quot;&gt;
&lt;script src=&quot;https://cdn.jsdelivr.net/npm/handsontable/dist/handsontable.full.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
    * { box-sizing: border-box; }
    body { font-family: Arial, sans-serif; margin: 0; padding: 10px; background: #f5f5f5; }
    .excel-app { margin-bottom: 20px; border: 2px solid #333; padding: 15px; border-radius: 8px; background: #fff; }
    .excel-title { font-size: 20px; font-weight: bold; margin-bottom: 5px; color: #333; border-left: 5px solid #28a745; padding-left: 10px; }
    .excel-subtitle { font-size: 13px; color: #666; margin-bottom: 15px; padding-left: 15px; }
    .controls { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 15px; align-items: center; }
    .hot-container { width: 100% !important; height: 500px !important; border: 1px solid #ccc; overflow: hidden; }
    
    button { padding: 8px 12px; cursor: pointer; border-radius: 4px; border: 1px solid #ddd; background: #f8f9fa; font-size: 12px; font-weight: bold; position: relative; }
    button:hover { background: #e2e6ea; }
    button[title]:hover::after {
        content: attr(title); position: absolute; bottom: 125%; left: 50%; transform: translateX(-50%);
        background: #333; color: #fff; padding: 5px 10px; border-radius: 4px; font-size: 11px; white-space: nowrap; z-index: 999;
    }

    .btn-split { background: #28a745; color: white; border: none; }
    .btn-copy { background: #007bff; color: white; border: none; }
    .btn-view-all { background: #17a2b8; color: white; border: none; }
    .btn-sheets { background: #34a853; color: white; border: none; }
    .sep-preset { background: #e9ecef; border: 1px solid #dee2e6; padding: 4px 8px; font-size: 11px; }
    
    .mail-footer { background: #f1f3f5; padding: 15px; border-radius: 8px; display: flex; gap: 10px; align-items: center; margin-top: 10px; border: 1px dashed #adb5bd; flex-wrap: wrap; }
    .mail-input { flex: 1; min-width: 200px; padding: 10px; border-radius: 4px; border: 1px solid #ccc; font-size: 13px; }
    .btn-email-send { background: #ffc107; color: #333; border: none; padding: 10px 20px; font-weight: bold; }

    /* 고정 셀 크기 */
    .handsontable td { 
        vertical-align: middle !important; 
        white-space: nowrap !important;
        overflow: hidden !important;
        text-overflow: ellipsis !important;
        height: 23px !important;
        line-height: 23px !important;
    }
    
    .handsontable th {
        height: 25px !important;
        line-height: 25px !important;
        vertical-align: middle !important;
    }
    
    /* 첫 번째 열 고정 너비 */
    .handsontable col.ht_clone_top:first-child,
    .handsontable col.ht_clone_left:first-child,
    .handsontable col:first-child { 
        width: 120px !important; 
    }
    
    /* 나머지 열 고정 너비 */
    .handsontable col:not(:first-child) { 
        width: 80px !important; 
    }

    /* 전체보기 모달 */
    .modal { display: none; position: fixed; z-index: 1000; left: 0; top: 0; width: 100%; height: 100%; background-color: rgba(0,0,0,0.5); }
    .modal-content { background-color: #fefefe; margin: 5% auto; padding: 20px; border: 1px solid #888; width: 90%; max-width: 800px; border-radius: 8px; max-height: 80vh; overflow-y: auto; }
    .close { color: #aaa; float: right; font-size: 28px; font-weight: bold; cursor: pointer; }
    .close:hover { color: #000; }
    .preview-table { width: 100%; border-collapse: collapse; margin-top: 10px; }
    .preview-table th, .preview-table td { border: 1px solid #ddd; padding: 8px; text-align: left; font-size: 12px; }
    .preview-table th { background-color: #28a745; color: white; }
    .preview-table tr:nth-child(even) { background-color: #f9f9f9; }

    @media (max-width: 768px) {
        .controls { font-size: 11px; }
        button { padding: 6px 10px; font-size: 11px; }
        .hot-container { height: 400px !important; }
    }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div id=&quot;app-wrapper&quot;&gt;
    &lt;div class=&quot;excel-title&quot;&gt;모두의 텍스트나누기 계산기&lt;/div&gt;
    &lt;div class=&quot;excel-subtitle&quot;&gt;주소 : 0-1.kr/93&lt;/div&gt;
    
    &lt;div id=&quot;main-excel&quot; class=&quot;excel-app&quot;&gt;
        &lt;div class=&quot;controls&quot;&gt;
            &lt;span style=&quot;font-size: 12px; font-weight: bold;&quot;&gt;구분자 예시:&lt;/span&gt;
            &lt;button class=&quot;sep-preset&quot; onclick=&quot;setSep('|')&quot;&gt;|&lt;/button&gt;
            &lt;button class=&quot;sep-preset&quot; onclick=&quot;setSep(',')&quot;&gt;,&lt;/button&gt;
            &lt;button class=&quot;sep-preset&quot; onclick=&quot;setSep('.')&quot;&gt;.&lt;/button&gt;
            &lt;button class=&quot;sep-preset&quot; onclick=&quot;setSep('-')&quot;&gt;-&lt;/button&gt;
            &lt;input id=&quot;separator&quot; style=&quot;width: 40px; text-align: center; padding: 5px;&quot; title=&quot;직접 입력도 가능합니다&quot; type=&quot;text&quot; value=&quot;|&quot; /&gt;
            &lt;button class=&quot;btn-split&quot; onclick=&quot;runSplit()&quot; title=&quot;A열의 텍스트를 나눕니다&quot;&gt;⚡ 텍스트 나누기 실행&lt;/button&gt;
            &lt;button class=&quot;btn-copy&quot; onclick=&quot;copyResultOnly()&quot; title=&quot;결과물만 복사합니다&quot;&gt;  결과만 전체복사&lt;/button&gt;
            &lt;button class=&quot;btn-view-all&quot; onclick=&quot;openViewAll()&quot; title=&quot;전체 데이터를 테이블로 확인&quot;&gt; ️ 전체보기&lt;/button&gt;
            &lt;button class=&quot;btn-sheets&quot; onclick=&quot;exportToGoogleSheets()&quot; title=&quot;구글 스프레드시트로 내보내기&quot;&gt;  스프레드시트로&lt;/button&gt;
            &lt;button onclick=&quot;exportToFile()&quot; title=&quot;파일로 저장&quot;&gt;  파일 저장&lt;/button&gt;
            &lt;button onclick=&quot;resetSheet()&quot; style=&quot;color: red;&quot; title=&quot;초기화&quot;&gt;리셋&lt;/button&gt;
        &lt;/div&gt;
        
        &lt;div id=&quot;hot-id&quot; class=&quot;hot-container&quot;&gt;&lt;/div&gt;
        
        &lt;div class=&quot;mail-footer&quot;&gt;
            &lt;span style=&quot;font-weight: bold; font-size: 13px;&quot;&gt;  메일로 결과 전송:&lt;/span&gt;
            &lt;input id=&quot;user-email&quot; class=&quot;mail-input&quot; type=&quot;email&quot; placeholder=&quot;받으실 메일 주소를 입력하세요 (예: test@naver.com)&quot; /&gt;
            &lt;button class=&quot;btn-email-send&quot; onclick=&quot;sendEmail()&quot;&gt;전송하기&lt;/button&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;!-- 전체보기 모달 --&gt;
&lt;div id=&quot;viewAllModal&quot; class=&quot;modal&quot;&gt;
    &lt;div class=&quot;modal-content&quot;&gt;
        &lt;span class=&quot;close&quot; onclick=&quot;closeViewAll()&quot;&gt;&amp;times;&lt;/span&gt;
        &lt;h2&gt;전체 데이터 미리보기&lt;/h2&gt;
        &lt;div id=&quot;previewContent&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
    let hot;
    
    function initExcel() {
        const container = document.getElementById('hot-id');
        hot = new Handsontable(container, {
            data: Array.from({length: 100}, () =&gt; Array(20).fill('')),
            colHeaders: function(col) { 
                return col === 0 ? '나눌텍스트삽입' : col; 
            },
            rowHeaders: true,
            width: '100%',
            height: '100%',
            colWidths: function(col) {
                return col === 0 ? 120 : 80; // 첫 열 120px, 나머지 80px 고정
            },
            rowHeights: 23, // 모든 행 높이 통일
            manualColumnResize: true, // 수동 리사이즈 가능
            manualRowResize: true, // 수동 행 리사이즈 가능
            manualColumnMove: true,
            manualRowMove: true,
            fixedColumnsLeft: 1,
            viewportColumnRenderingOffset: 20,
            copyPaste: true,
            cells: function(row, col) {
                const cellProperties = {};
                cellProperties.renderer = function(instance, td, row, col, prop, value, cellProperties) {
                    Handsontable.renderers.TextRenderer.apply(this, arguments);
                    td.style.whiteSpace = 'nowrap';
                    td.style.overflow = 'hidden';
                    td.style.textOverflow = 'ellipsis';
                    td.style.verticalAlign = 'middle';
                    td.style.height = '23px'; // 셀 높이 고정
                    if (value &amp;&amp; value.length &gt; 50 &amp;&amp; col === 0) {
                        td.style.fontSize = '10px'; // 첫 열 글자 많으면 작게
                    }
                };
                return cellProperties;
            },
            licenseKey: 'non-commercial-and-evaluation'
        });
    }

    function setSep(val) { 
        document.getElementById('separator').value = val; 
    }

    function runSplit() {
        const sep = document.getElementById('separator').value;
        if (!sep) {
            alert('구분자를 입력해주세요!');
            return;
        }
        
        const data = hot.getData();
        const newData = data.map(row =&gt; {
            if (row[0] &amp;&amp; typeof row[0] === 'string') {
                const parts = row[0].split(sep);
                const newRow = [row[0]];
                for(let i=0; i&lt;19; i++) {
                    newRow.push(parts[i] || '');
                }
                return newRow;
            }
            return row;
        });
        hot.loadData(newData);
        alert('텍스트 나누기가 완료되었습니다!');
    }

    function copyResultOnly() {
        const data = hot.getData();
        const results = data.filter(r =&gt; r[0]).map(row =&gt; row.slice(1).join('\t')).join('\n');
        if (!results) {
            alert('복사할 데이터가 없습니다!');
            return;
        }
        navigator.clipboard.writeText(results).then(() =&gt; {
            alert('결과 데이터가 복사되었습니다!');
        }).catch(() =&gt; {
            alert('복사에 실패했습니다. 브라우저 권한을 확인해주세요.');
        });
    }

    function openViewAll() {
        const data = hot.getData();
        const filteredData = data.filter(r =&gt; r.some(cell =&gt; cell));
        
        if (filteredData.length === 0) {
            alert('표시할 데이터가 없습니다!');
            return;
        }
        
        let html = '&lt;table class=&quot;preview-table&quot;&gt;&lt;thead&gt;&lt;tr&gt;';
        html += '&lt;th&gt;행&lt;/th&gt;&lt;th&gt;나눌텍스트삽입&lt;/th&gt;';
        for (let i = 1; i &lt; 20; i++) {
            html += `&lt;th&gt;${i}&lt;/th&gt;`;
        }
        html += '&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;';
        
        filteredData.forEach((row, idx) =&gt; {
            html += `&lt;tr&gt;&lt;td&gt;${idx + 1}&lt;/td&gt;`;
            row.forEach(cell =&gt; {
                html += `&lt;td&gt;${cell || ''}&lt;/td&gt;`;
            });
            html += '&lt;/tr&gt;';
        });
        
        html += '&lt;/tbody&gt;&lt;/table&gt;';
        document.getElementById('previewContent').innerHTML = html;
        document.getElementById('viewAllModal').style.display = 'block';
    }

    function closeViewAll() {
        document.getElementById('viewAllModal').style.display = 'none';
    }

    function exportToGoogleSheets() {
        const data = hot.getData();
        const filteredData = data.filter(r =&gt; r.some(cell =&gt; cell));
        
        if (filteredData.length === 0) {
            alert('내보낼 데이터가 없습니다!');
            return;
        }
        
        // TSV 형식으로 변환
        const tsvContent = filteredData.map(row =&gt; row.join('\t')).join('\n');
        
        // 클립보드에 복사
        navigator.clipboard.writeText(tsvContent).then(() =&gt; {
            const userConfirm = confirm(
                '데이터가 복사되었습니다!\n\n' +
                '1. 구글 스프레드시트를 열어주세요\n' +
                '2. A1 셀을 선택하세요\n' +
                '3. Ctrl+V (또는 Cmd+V)로 붙여넣기\n\n' +
                '확인을 누르면 새 탭에서 구글 스프레드시트가 열립니다.'
            );
            
            if (userConfirm) {
                window.open('https://docs.google.com/spreadsheets/create', '_blank');
            }
        }).catch(() =&gt; {
            alert('복사에 실패했습니다. 브라우저 권한을 확인해주세요.');
        });
    }

    function exportToFile() {
        const data = hot.getData();
        const ws = XLSX.utils.aoa_to_sheet(data);
        const wb = XLSX.utils.book_new();
        XLSX.utils.book_append_sheet(wb, ws, &quot;Results&quot;);
        XLSX.writeFile(wb, `텍스트분리_결과.xlsx`);
    }

    function sendEmail() {
        const email = document.getElementById('user-email').value;
        if(!email) { 
            alert('메일 주소를 입력해주세요!'); 
            return; 
        }
        
        const subject = encodeURIComponent(&quot;[텍스트나누기] 작업 결과 공유&quot;);
        const body = encodeURIComponent(
            `텍스트나누기 계산기에서 작업한 내용입니다.\n\n` +
            `메일 앱의 보안상 파일은 수동으로 첨부하셔야 합니다.\n` +
            `방금 다운로드한 '텍스트분리_결과.xlsx' 파일을 첨부해주세요.`
        );
        window.location.href = `mailto:${email}?subject=${subject}&amp;body=${body}`;
    }

    function resetSheet() {
        if(confirm('모든 데이터를 초기화할까요?')) {
            hot.loadData(Array.from({length: 100}, () =&gt; Array(20).fill('')));
        }
    }

    // 모달 외부 클릭시 닫기
    window.onclick = function(event) {
        const modal = document.getElementById('viewAllModal');
        if (event.target == modal) {
            closeViewAll();
        }
    }

    window.onload = initExcel;
&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</description>
      <category>모두의계산기</category>
      <category>계산기</category>
      <category>모두의계산기</category>
      <category>텍스트나누기</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/93</guid>
      <comments>https://0-1.kr/93#entry93comment</comments>
      <pubDate>Tue, 27 Jan 2026 10:31:46 +0900</pubDate>
    </item>
    <item>
      <title>모두의계산기3_메뉴오더</title>
      <link>https://0-1.kr/88</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot;&gt;
    &lt;title&gt;모두의계산기3_메뉴오더&lt;/title&gt;
    &lt;style&gt;
        :root {
            --primary: #2c3e50;
            --accent: #f1c40f; 
            --danger: #e74c3c;
            --success: #27ae60;
            --bg: #f1f2f6;
        }

        body { font-family: 'Pretendard', sans-serif; background-color: var(--bg); margin: 0; padding: 10px; color: #333; -webkit-tap-highlight-color: transparent; }
        .container { width: 100% !important; max-width: 100% !important; margin: 0; background: #fff; padding: 12px; border-radius: 12px; box-shadow: 0 4px 10px rgba(0,0,0,0.1); box-sizing: border-box; }
        
        h2 { text-align: center; color: var(--primary); font-weight: 900; margin-bottom: 15px; font-size: 19px; border-bottom: 2px solid var(--accent); padding-bottom: 8px; }

        .shop-selector { display: grid; grid-template-columns: repeat(5, 1fr); gap: 4px; margin-bottom: 15px; }
        .shop-btn { padding: 8px 2px; border: 1px solid #ddd; background: #fff; border-radius: 6px; cursor: pointer; font-size: 11px; font-weight: bold; }
        .shop-btn.active { background: var(--accent); color: #000; border-color: var(--accent); }

        .menu-header { display: flex; gap: 4px; padding: 8px 0; border-bottom: 2px solid #eee; margin-bottom: 5px; font-size: 13px; font-weight: 900; color: #444; text-align: center; }
        .menu-row { display: flex; gap: 4px; padding: 6px 0; border-bottom: 1px solid #f9f9f9; align-items: center; }
        
        .col-name { flex: 3; min-width: 0; }
        .col-price { flex: 2; min-width: 0; }
        .col-qty { flex: 2.8; display: flex; align-items: center; justify-content: space-around; text-align: center; } 
        .col-req { flex: 2.5; min-width: 0; }
        .col-del { width: 20px; flex-shrink: 0; text-align: center; }

        input, textarea { width: 100%; padding: 8px 4px; border: 1px solid #ddd; border-radius: 4px; font-size: 14px; box-sizing: border-box; font-weight: 500; }
        
        input::placeholder { color: #e0e0e0 !important; font-weight: normal; }
        .col-name input { color: #aaa; } 

        .circ-btn { width: 22px; height: 22px; border-radius: 50%; border: 1px solid #ddd; background: #fff; font-size: 16px; font-weight: bold; cursor: pointer; display: flex; align-items: center; justify-content: center; color: var(--primary); }
        .qty-num-display { font-size: 15px; font-weight: 900; color: var(--primary); min-width: 18px; text-align: center; }
        
        .del-text-btn { background: none; border: none; color: #999; font-size: 16px; font-weight: bold; cursor: pointer; padding: 0; }

        .summary-box { background: #f8f9fa; padding: 12px; border-radius: 10px; margin-top: 15px; border: 1px solid #eee; }
        .summary-line { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; font-weight: bold; font-size: 14px; }
        .summary-line.total { border-top: 1px solid #ddd; padding-top: 8px; margin-top: 8px; color: #d63031; font-size: 17px; }

        #matchStatus { font-size: 12px; font-weight: bold; text-align: right; padding-top: 4px; }
        .match-ok { color: var(--success); }
        .match-no { color: var(--danger); }

        .people-ctrl { display: flex; align-items: center; gap: 8px; background: #fff; padding: 4px 8px; border: 1px solid #ddd; border-radius: 20px; }
        .p-display { font-size: 16px; font-weight: 900; color: var(--primary); min-width: 30px; text-align: center; }

        .btn-save-wrap { text-align: center; width: 100%; margin: 10px 0; }
        .btn-save { width: 92%; background: var(--success); color: white; padding: 12px; border: none; border-radius: 6px; font-size: 16px; font-weight: 900; cursor: pointer; box-shadow: 0 3px 0 #1e8449; }

        .section-title { font-size: 14px; font-weight: bold; margin: 15px 0 5px 0; color: var(--primary); border-left: 3px solid #f1c40f; padding-left: 8px; }
        .order-summary-area { width: 100%; height: 120px; background: #fffbe6; border: 1px solid #ffe58f; padding: 10px; font-size: 13px; line-height: 1.5; color: #856404; overflow-y: auto; white-space: pre-wrap; }
        
        .btn-group { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; margin-top: 10px; }
        .action-btn { padding: 12px; border: none; border-radius: 6px; font-weight: 900; cursor: pointer; font-size: 14px; }
        .btn-copy { background: #3498db; color: white; }
        .btn-mail { background: #9b59b6; color: white; }
        .btn-reset { background: #95a5a6; color: white; grid-column: span 2; margin-top: 10px; }
        .mail-input { margin-top: 5px; border-color: #9b59b6; font-size: 12px; }
        .save-notice { text-align: center; font-size: 11px; color: #e67e22; font-weight: bold; margin-top: 4px; }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div class=&quot;container&quot;&gt;
    &lt;h2&gt;모두의계산기3_메뉴오더&lt;/h2&gt;

    &lt;div class=&quot;shop-selector&quot;&gt;
        &lt;button class=&quot;shop-btn active&quot; onclick=&quot;changeShop('coffee', this)&quot;&gt;☕커피/차&lt;/button&gt;
        &lt;button class=&quot;shop-btn&quot; onclick=&quot;changeShop('mine', this)&quot;&gt;⭐내맘&lt;/button&gt;
        &lt;button class=&quot;shop-btn&quot; onclick=&quot;changeShop('lunch', this)&quot;&gt; 점심&lt;/button&gt;
        &lt;button class=&quot;shop-btn&quot; onclick=&quot;changeShop('dinner', this)&quot;&gt; 저녁&lt;/button&gt;
        &lt;button class=&quot;shop-btn&quot; onclick=&quot;changeShop('snack', this)&quot;&gt; 분식&lt;/button&gt;
    &lt;/div&gt;

    &lt;div class=&quot;menu-header&quot;&gt;
        &lt;div class=&quot;col-name&quot;&gt;메뉴명&lt;/div&gt;
        &lt;div class=&quot;col-price&quot;&gt;단가&lt;/div&gt;
        &lt;div class=&quot;col-qty&quot;&gt;개수&lt;/div&gt;
        &lt;div class=&quot;col-req&quot;&gt;요청&lt;/div&gt;
        &lt;div class=&quot;col-del&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div id=&quot;menuList&quot;&gt;&lt;/div&gt;

    &lt;button onclick=&quot;addMenuRow()&quot; style=&quot;width:100%; padding:10px; background:#fff; border:1px dashed #ccc; margin-top:5px; border-radius:5px; font-size:14px; font-weight:bold; cursor:pointer;&quot;&gt;+ 메뉴 줄 추가&lt;/button&gt;

    &lt;div class=&quot;summary-box&quot;&gt;
        &lt;div class=&quot;summary-line&quot;&gt;
            &lt;span&gt;  총 인원 확인&lt;/span&gt;
            &lt;div class=&quot;people-ctrl&quot;&gt;
                &lt;button class=&quot;circ-btn&quot; onclick=&quot;changePeople(-1)&quot;&gt;-&lt;/button&gt;
                &lt;div id=&quot;pDisplay&quot; class=&quot;p-display&quot;&gt;0&lt;/div&gt;
                &lt;button class=&quot;circ-btn&quot; onclick=&quot;changePeople(1)&quot;&gt;+&lt;/button&gt;
            &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;summary-line&quot;&gt;
            &lt;span&gt;  메뉴개수 / 총금액&lt;/span&gt;
            &lt;span&gt;&lt;span id=&quot;totalQty&quot;&gt;0&lt;/span&gt;개 / &lt;span id=&quot;grandTotal&quot;&gt;0&lt;/span&gt;원&lt;/span&gt;
        &lt;/div&gt;
        
        &lt;div class=&quot;summary-line total&quot;&gt;
            &lt;span&gt;  1인당 예상 금액&lt;/span&gt;
            &lt;div style=&quot;text-align: right;&quot;&gt;
                &lt;span id=&quot;perPerson&quot;&gt;0 원&lt;/span&gt;
                &lt;div id=&quot;matchStatus&quot; class=&quot;match-no&quot;&gt;인원_메뉴개수 불일치&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;btn-save-wrap&quot;&gt;
        &lt;button class=&quot;btn-save&quot; onclick=&quot;saveAndSummary(true)&quot;&gt;  내용저장 및 요약&lt;/button&gt;
        &lt;div class=&quot;save-notice&quot;&gt;&quot;저장 클릭 시 초기화 버튼 삭제전까지 내용이 저장됨&quot;&lt;/div&gt;
    &lt;/div&gt;
    
    &lt;div class=&quot;section-title&quot;&gt;주문요약&lt;/div&gt;
    &lt;div id=&quot;orderSummary&quot; class=&quot;order-summary-area&quot;&gt;저장된 내용이 없습니다.&lt;/div&gt;

    &lt;div class=&quot;section-title&quot;&gt;  추가메모&lt;/div&gt;
    &lt;textarea id=&quot;extraMemo&quot; rows=&quot;4&quot; placeholder=&quot;여청사항을 입력해주세요&quot; oninput=&quot;updateAll()&quot;&gt;&lt;/textarea&gt;

    &lt;div class=&quot;btn-group&quot;&gt;
        &lt;button class=&quot;action-btn btn-copy&quot; onclick=&quot;saveAndCopy(event)&quot;&gt;  주문요약 내용 복사&lt;/button&gt;
        &lt;button class=&quot;action-btn btn-mail&quot; onclick=&quot;sendEmail()&quot;&gt;  메일발송(폰)&lt;/button&gt;
    &lt;/div&gt;
    &lt;input type=&quot;email&quot; id=&quot;userEmail&quot; class=&quot;mail-input&quot; placeholder=&quot;수신메일주소_폰전용&quot;&gt;

    &lt;button class=&quot;action-btn btn-reset&quot; onclick=&quot;resetAll()&quot;&gt;  초기화&lt;/button&gt;
&lt;/div&gt;

&lt;script&gt;
    const STORAGE_KEY = 'EVERY_3_MENU_ORDER_DATA_V14';
    let currentPeople = 0;
    const shopMenus = {
        coffee: [&quot;아메(아)&quot;, &quot;아메(따)&quot;, &quot;라떼(아)&quot;, &quot;라떼(따)&quot;, &quot;바닐라라떼&quot;, &quot;에이드&quot;],
        mine: [&quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;, &quot;&quot;],
        lunch: [&quot;김치찌개&quot;, &quot;된장찌개&quot;, &quot;제육볶음&quot;, &quot;돈까스&quot;, &quot;비빔밥&quot;, &quot;육개장&quot;],
        dinner: [&quot;삼겹살&quot;, &quot;목살&quot;, &quot;피자&quot;, &quot;파스타&quot;, &quot;치킨&quot;, &quot;맥주&quot;],
        snack: [&quot;떡볶이&quot;, &quot;튀김&quot;, &quot;순대&quot;, &quot;김밥&quot;, &quot;라면&quot;, &quot;만두&quot;]
    };

    function addMenuRow(name = &quot;&quot;, price = &quot;&quot;, qty = 0, req = &quot;&quot;) {
        const container = document.getElementById('menuList');
        const div = document.createElement('div');
        div.className = 'menu-row';
        div.innerHTML = `
            &lt;div class=&quot;col-name&quot;&gt;&lt;input type=&quot;text&quot; value=&quot;${name}&quot; placeholder=&quot;메뉴수정&quot; oninput=&quot;updateAll()&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;col-price&quot;&gt;&lt;input type=&quot;number&quot; value=&quot;${price}&quot; placeholder=&quot;0&quot; oninput=&quot;updateAll()&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;col-qty&quot;&gt;
                &lt;button class=&quot;circ-btn&quot; onclick=&quot;changeQty(this, -1)&quot;&gt;-&lt;/button&gt;
                &lt;div class=&quot;qty-num-display&quot;&gt;${qty}&lt;/div&gt;
                &lt;button class=&quot;circ-btn&quot; onclick=&quot;changeQty(this, 1)&quot;&gt;+&lt;/button&gt;
            &lt;/div&gt;
            &lt;div class=&quot;col-req&quot;&gt;&lt;input type=&quot;text&quot; value=&quot;${req}&quot; placeholder=&quot;요청&quot; oninput=&quot;updateAll()&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;col-del&quot;&gt;&lt;button class=&quot;del-text-btn&quot; onclick=&quot;removeRow(this)&quot;&gt;×&lt;/button&gt;&lt;/div&gt;
        `;
        container.appendChild(div);
        updateAll();
    }

    function changeShop(type, btn) {
        document.querySelectorAll('.shop-btn').forEach(b =&gt; b.classList.remove('active'));
        btn.classList.add('active');
        document.getElementById('menuList').innerHTML = '';
        shopMenus[type].forEach(m =&gt; addMenuRow(m));
        document.getElementById('orderSummary').innerText = &quot;메뉴가 변경되었습니다. 다시 저장해주세요.&quot;;
    }

    function changeQty(btn, delta) {
        const display = btn.parentElement.querySelector('.qty-num-display');
        let val = parseInt(display.innerText) + delta;
        display.innerText = val &lt; 0 ? 0 : val;
        updateAll();
    }

    function changePeople(delta) {
        currentPeople += delta;
        if(currentPeople &lt; 0) currentPeople = 0;
        document.getElementById('pDisplay').innerText = currentPeople;
        updateAll();
    }

    function removeRow(btn) {
        btn.closest('.menu-row').remove();
        updateAll();
    }

    function updateAll() {
        let totalQty = 0;
        let grandTotal = 0;
        document.querySelectorAll('.menu-row').forEach(row =&gt; {
            const price = parseInt(row.querySelector('.col-price input').value) || 0;
            const qty = parseInt(row.querySelector('.qty-num-display').innerText) || 0;
            totalQty += qty;
            grandTotal += (price * qty);
        });
        document.getElementById('totalQty').innerText = totalQty;
        document.getElementById('grandTotal').innerText = grandTotal.toLocaleString();
        const perPerson = currentPeople &gt; 0 ? Math.ceil(grandTotal / currentPeople) : 0;
        document.getElementById('perPerson').innerText = perPerson.toLocaleString() + &quot; 원&quot;;

        const statusBox = document.getElementById('matchStatus');
        if (currentPeople === totalQty &amp;&amp; currentPeople &gt; 0) {
            statusBox.innerText = &quot;✨ 인원_메뉴개수 일치&quot;;
            statusBox.className = &quot;match-ok&quot;;
        } else {
            statusBox.innerText = &quot;⚠️ 인원_메뉴개수 불일치&quot;;
            statusBox.className = &quot;match-no&quot;;
        }
    }

    // 저장 및 요약 생성 함수 (showAlert 인자로 알림 여부 결정)
    function saveAndSummary(showAlert = false) {
        let hasItem = false;
        let summaryText = &quot;[주문 내역]\n&quot;;
        const memoVal = document.getElementById('extraMemo').value;
        const emailVal = document.getElementById('userEmail').value;
        const data = {
            people: currentPeople,
            memo: memoVal,
            email: emailVal,
            rows: []
        };

        document.querySelectorAll('.menu-row').forEach(row =&gt; {
            const name = row.querySelector('.col-name input').value;
            const price = row.querySelector('.col-price input').value;
            const qty = row.querySelector('.qty-num-display').innerText;
            const req = row.querySelector('.col-req input').value;
            data.rows.push({ name, price, qty, req });
            if(parseInt(qty) &gt; 0) {
                summaryText += `• ${name || '메뉴명'} ${qty}개 ${req ? '('+req+')' : ''}\n`;
                hasItem = true;
            }
        });

        if(!hasItem) {
            summaryText = &quot;선택된 메뉴가 없습니다.&quot;;
        } else {
            summaryText += `\n총 ${currentPeople}명 / 합계 ${document.getElementById('grandTotal').innerText}원\n`;
            if(memoVal.trim()) summaryText += `\n[추가메모]\n${memoVal}`;
        }

        document.getElementById('orderSummary').innerText = summaryText;
        localStorage.setItem(STORAGE_KEY, JSON.stringify(data));
        if(showAlert) alert(&quot;내용이 저장 및 요약되었습니다!&quot;);
        return summaryText;
    }

    // 복사 버튼을 누를 때 저장도 같이 진행하는 통합 함수
    async function saveAndCopy(e) {
        e.preventDefault();
        
        // 1. 저장 및 요약문 최신화 (메모 포함)
        const content = saveAndSummary(false); 
        
        if(content === &quot;선택된 메뉴가 없습니다.&quot;) {
            alert(&quot;선택된 메뉴가 없습니다. 먼저 수량을 조절해주세요.&quot;);
            return;
        }

        // 2. 복사 수행 (V13의 출처방지 로직 그대로 사용)
        if (navigator.clipboard &amp;&amp; navigator.clipboard.writeText) {
            try {
                await navigator.clipboard.writeText(content);
                alert(&quot;주문내역과 추가메모가 저장 및 복사되었습니다!&quot;);
            } catch (err) {
                fallbackCopy(content);
            }
        } else {
            fallbackCopy(content);
        }
    }

    function fallbackCopy(text) {
        const t = document.createElement(&quot;textarea&quot;);
        t.value = text;
        t.style.position = &quot;fixed&quot;; t.style.left = &quot;-9999px&quot;; t.style.top = &quot;0&quot;;
        document.body.appendChild(t);
        t.focus(); t.select();
        try {
            document.execCommand('copy');
            alert(&quot;주문내역과 추가메모가 저장 및 복사되었습니다!&quot;);
        } catch (err) {
            alert(&quot;복사 실패. 요약창 내용을 길게 눌러 복사해주세요.&quot;);
        }
        document.body.removeChild(t);
    }

    function sendEmail() {
        const email = document.getElementById('userEmail').value;
        const bodyContent = saveAndSummary(false); // 보낼 때도 최신화
        if(!email || bodyContent === &quot;선택된 메뉴가 없습니다.&quot;) {
            alert(&quot;메일 주소 확인 또는 주문 내역을 확인해주세요.&quot;); return;
        }
        const subject = encodeURIComponent(&quot;[주문오더] &quot; + new Date().toLocaleDateString());
        const body = encodeURIComponent(bodyContent);
        window.location.href = `mailto:${email}?subject=${subject}&amp;body=${body}`;
    }

    function loadData() {
        const saved = localStorage.getItem(STORAGE_KEY);
        if(saved) {
            const data = JSON.parse(saved);
            currentPeople = parseInt(data.people) || 0;
            document.getElementById('pDisplay').innerText = currentPeople;
            document.getElementById('extraMemo').value = data.memo || &quot;&quot;;
            document.getElementById('userEmail').value = data.email || &quot;&quot;;
            document.getElementById('menuList').innerHTML = '';
            data.rows.forEach(r =&gt; addMenuRow(r.name, r.price, r.qty, r.req));
            saveAndSummary(false);
        } else {
            shopMenus.coffee.forEach(m =&gt; addMenuRow(m));
        }
    }

    function resetAll() {
        if(confirm(&quot;초기화하시겠습니까?&quot;)) {
            localStorage.removeItem(STORAGE_KEY);
            location.reload();
        }
    }
    window.onload = loadData;
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>모두의계산기</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/88</guid>
      <comments>https://0-1.kr/88#entry88comment</comments>
      <pubDate>Sun, 11 Jan 2026 14:33:38 +0900</pubDate>
    </item>
    <item>
      <title>모두의채점계산기_V3(260211)</title>
      <link>https://0-1.kr/85</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
&lt;title&gt;모두의 채점계산기&lt;/title&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/lz-string/1.5.0/lz-string.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js&quot;&gt;&lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;master-app-v3&quot;&gt;
&lt;style&gt;
    :root {
        --primary-color: #4a90e2; --success-color: #2ecc71; --warn-color: #fbc02d; --danger-color: #e74c3c;
        --bg-color: #f5f7fa; --selected-yellow: #fff176; --completed-black: #333;
    }
    body { font-family: 'Pretendard', sans-serif; background-color: var(--bg-color); margin: 0; padding: 5px; color: #333; line-height: 1.4; -webkit-tap-highlight-color: transparent; }
    .card { background: #fff; border-radius: 12px; padding: 12px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); margin-bottom: 15px; box-sizing: border-box; width:100%; }
    .main-title { font-size: 22px; font-weight: 900; text-align: center; margin: 10px 0; color: #2c3e50; }
    .top-btn-row { display: flex; gap: 4px; margin-bottom: 8px; align-items: center; flex-wrap: wrap; }
    .btn-top { flex: 1; padding: 10px 2px; border: none; border-radius: 6px; color: white; font-weight: bold; cursor: pointer; font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    /* 전구 아이콘 버튼 */
    .btn-wakelock-mini { width: 60px; height: 42px; padding: 4px; border: none; border-radius: 6px; font-weight: bold; cursor: pointer; font-size: 18px; background: #d0d0d0; display: flex; flex-direction: column; align-items: center; justify-content: center; line-height: 1; }
    .btn-wakelock-mini.on { background: #f1c40f; }
    .wake-icon { font-size: 20px; }
    .wake-text { font-size: 9px; margin-top: 2px; color: #666; font-weight: bold; }
    .btn-wakelock-mini.on .wake-text { color: #000; }
    .share-mini-box { display: flex; gap: 5px; background: #eee; padding: 5px; border-radius: 5px; margin-bottom: 10px; align-items: center; flex-wrap: wrap; }
    .share-mini-box input { flex: 1; border: 1px solid #ccc; font-size: 10px; height: 22px; padding: 0 5px; min-width: 100px; }
    .share-url-notice { font-size: 9px; color: #e74c3c; margin-top: 3px; display: none; line-height: 1.5; }
    .id-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; margin-top: 10px; }
    .id-box { height: 42px; border: 1px solid #ddd; background: #fff; border-radius: 4px; cursor: pointer; font-weight: 800; display: flex; align-items: center; justify-content: center; font-size: 14px; }
    .id-box.selected { background: var(--selected-yellow) !important; border-color: #fbc02d; }
    .id-box.completed { background: var(--completed-black) !important; color: #fff; }
    .id-ctrl { height: 42px; border: 1px solid #ddd; background: transparent; border-radius: 4px; font-weight: 900; cursor: pointer; font-size: 16px; }
    .status-black-box { background: #000; color: #fff; padding: 15px; border-radius: 8px; text-align: center; font-size: 18px; font-weight: bold; margin-bottom: 8px; }
    .status-n-val { color: var(--warn-color); }
    .t-info-container { background: #fffde7; padding: 10px; border-radius: 8px; border: 1px solid #fff59d; }
    .t-input-full { width: 100%; padding: 8px; border: 1px solid #ddd; border-radius: 4px; font-size: 13px; margin-bottom: 5px; box-sizing: border-box; background: #fff; }
    .q-row { display: flex; align-items: center; gap: 3px; margin-bottom: 10px; border-bottom: 1px solid #f0f0f0; padding-bottom: 8px; }
    .q-label { width: 54px; min-width: 54px; max-width: 54px; height: 38px; max-height: 38px; border: 1px solid #ccc; padding: 2px; text-align: center; border-radius: 4px; font-weight: bold; background: #f9f9f9; line-height: 1.2; overflow: hidden; display: flex; align-items: center; justify-content: center; word-break: break-all; }
    .q-label-text { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
    .score-group { display: flex; gap: 2px; flex: 1; }
    .btn-score { min-width: 42px; flex: 1; height: 42px; border: 1px solid #ddd; background: #fff; border-radius: 4px; font-size: 18px; font-weight: 900; cursor: pointer; }
    .btn-score.active { background: #000; color: #fff; }
    .btn-score.active.pass-active { background: var(--warn-color) !important; color: #000 !important; }
    .q-text-input { flex: 1; height: 38px; border: 1px solid #ddd; border-radius: 4px; font-size: 13px; padding: 0 8px; box-sizing: border-box; }
    .btn-main-save { width: 100%; padding: 20px; background: var(--primary-color); color: #fff; border: none; border-radius: 12px; font-size: 20px; font-weight: bold; cursor: pointer; margin: 15px 0; }
    .total-view { width: 35%; background: #000; color: #fff; padding: 15px 5px; border-radius: 10px; text-align: center; font-size: 14px; font-weight: 900; }
    .total-view.is-pass { background: var(--success-color) !important; }
    .op-btn { flex: 1; padding: 8px 2px; border: none; background: #e0e0e0; border-radius: 6px; font-size: 11px; cursor: pointer; line-height: 1.3; word-break: keep-all; text-align: center; }
    .op-btn.active { background: var(--primary-color) !important; color: #fff !important; }
    /* 불참 버튼 - 회색으로 변경 */
    .op-btn-absent { flex: 1; padding: 8px 2px; border: none; background: #e0e0e0; border-radius: 6px; font-size: 11px; cursor: pointer; line-height: 1.3; word-break: keep-all; text-align: center; font-weight: bold; }
    .op-btn-absent.active { background: #222 !important; color: #fff !important; }
    .excel-table { width: 100%; border-collapse: collapse; font-size: 11px; background: #fff; table-layout: auto; }
    .excel-table th, .excel-table td { border: 1px solid #ccc; padding: 4px 2px; text-align: center; word-break: break-word; }
    .excel-table td.opinion-cell { max-width: 80px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .bulk-input-cell { width: 100%; border: none; font-size: 11px; text-align: center; padding: 5px 2px; box-sizing: border-box; }
    .btn-flex-row { display: flex; gap: 5px; margin-top: 5px; }
    .btn-wakelock { width: 100%; padding: 15px; background: #34495e; color: #fff; border: none; border-radius: 8px; font-weight: bold; cursor: pointer; font-size: 14px; display: flex; align-items: center; justify-content: center; gap: 10px; }
    .btn-wakelock.on { background: #f1c40f; color: #000; }
    .manual-container { background: #f0f4f8; border-radius: 8px; padding: 15px; margin-bottom: 15px; }
    .manual-header { cursor: pointer; font-weight: bold; font-size: 14px; padding: 10px; background: #34495e; color: white; border-radius: 6px; display: flex; justify-content: space-between; align-items: center; }
    .manual-content { display: none; margin-top: 10px; }
    .manual-notice { background: #fff3cd; padding: 10px; border-radius: 6px; margin-bottom: 10px; font-size: 12px; line-height: 1.6; }
    .manual-tabs { display: flex; gap: 5px; margin-bottom: 10px; }
    .manual-tab { flex: 1; padding: 10px; background: #e0e0e0; border: none; border-radius: 6px; cursor: pointer; font-weight: bold; font-size: 12px; }
    .manual-tab.active { background: var(--primary-color); color: white; }
    .manual-tab-content { display: none; background: white; padding: 15px; border-radius: 6px; font-size: 12px; line-height: 1.8; }
    .manual-tab-content.active { display: block; }
    .manual-tab-content ol { margin: 10px 0; padding-left: 20px; }
    .manual-tab-content li { margin-bottom: 8px; }
    .data-table-section { border-top: 4px double #34495e; padding-top: 20px; margin-top: 20px; }
    .btn-del-q { background: none; border: none; color: #e74c3c; cursor: pointer; font-size: 16px; font-weight: bold; padding: 0; line-height: 1; }
    .btn-del-record { background: #e74c3c; color: #fff; border: none; padding: 2px 6px; border-radius: 3px; cursor: pointer; font-size: 10px; }
    .bulk-section { background: #f8f9fa; padding: 12px; border-radius: 8px; margin-bottom: 10px; }
    .bulk-section-title { font-weight: bold; color: #34495e; margin-bottom: 8px; font-size: 13px; }
    .info-table { width: 100%; border-collapse: collapse; font-size: 11px; background: #fff; margin-top: 8px; table-layout: fixed; }
    .info-table th, .info-table td { border: 1px solid #ddd; padding: 6px 2px; text-align: center; word-break: break-word; }
    .info-table th { background: #e8f4f8; font-weight: bold; }
    .btn-opinion-save { width: 100%; padding: 10px; background: #16a085; color: #fff; border: none; border-radius: 6px; font-size: 12px; font-weight: bold; cursor: pointer; margin-top: 8px; }
    .mail-option-row { margin-top: 6px; padding: 6px 8px; background: #f8f9fa; border-radius: 6px; font-size: 11px; color: #555; display: flex; align-items: center; gap: 6px; }
    .mail-option-row input[type=checkbox] { width: 15px; height: 15px; cursor: pointer; }
    /* 툴팁 말풍선 */
    .tooltip-wrap { position: relative; display: inline-block; }
    .tooltip-wrap .tooltip-box {
        display: none; position: fixed; bottom: auto; left: auto;
        background: #2c3e50; color: #fff; font-size: 11px; padding: 10px 12px; border-radius: 8px;
        white-space: normal; word-break: keep-all; z-index: 9999; line-height: 1.7;
        width: 220px; max-width: calc(100vw - 24px);
        box-shadow: 0 4px 16px rgba(0,0,0,0.35);
    }
    .tooltip-wrap .tooltip-box::after {
        content: ''; position: absolute; top: 100%; left: 20px;
        border: 6px solid transparent; border-top-color: #2c3e50;
    }
    .tooltip-wrap:hover .tooltip-box, .tooltip-wrap.active .tooltip-box { display: block; }
    .tooltip-btn { padding: 8px 12px; background: #8e44ad; color: #fff; border: none; border-radius: 6px; font-size: 11px; cursor: pointer; }
    .opinion-guide {
        width: 100%; min-height: 80px; margin-top: 10px; padding: 10px; box-sizing: border-box;
        border: 1px solid #ddd; border-radius: 4px; font-size: 12px; color: #aaa; cursor: pointer;
        background: #fafafa; line-height: 1.6;
    }
    /* QR 팝업 */
    .qr-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.6); z-index: 99999; align-items: center; justify-content: center; }
    .qr-overlay.show { display: flex; }
    .qr-modal { background: #fff; border-radius: 12px; padding: 20px; max-width: 340px; width: 90%; max-height: 90vh; overflow-y: auto; }
    .qr-modal h3 { margin: 0 0 12px; font-size: 16px; text-align: center; }
    .qr-box { text-align: center; margin: 10px 0; }
    .qr-url-text { font-size: 9px; color: #666; word-break: break-all; margin: 5px 0; text-align: center; }
    .qr-close { width: 100%; padding: 10px; background: #e74c3c; color: #fff; border: none; border-radius: 6px; cursor: pointer; margin-top: 10px; font-weight: bold; }
    .qr-tiny-section { margin-top: 12px; padding-top: 12px; border-top: 1px solid #eee; }
    .qr-tiny-label { font-size: 11px; color: #555; display: flex; align-items: center; gap: 6px; }
    .qr-tiny-label input { width: 16px; height: 16px; cursor: pointer; }
    .qr-tiny-result { margin-top: 10px; display: none; }
    .qr-tiny-notice { font-size: 10px; color: #888; text-align: center; margin: 4px 0; }
    /* 평가의견 + 검토 네비 레이아웃 */
    .opinion-nav-row { display: flex; gap: 8px; align-items: flex-start; margin-top: 8px; }
    .opinion-nav-btns { display: flex; flex-direction: column; gap: 6px; }
    .nav-btn { width: 38px; height: 38px; border: 1px solid #ddd; background: #f5f5f5; border-radius: 6px; font-size: 18px; font-weight: 900; cursor: pointer; display: flex; align-items: center; justify-content: center; }
    .nav-btn:hover { background: #e0e0e0; }
    .opinion-main-area { flex: 1; }
    /* 외부키보드 버튼 행 */
    .ext-kb-row { display: flex; gap: 4px; margin-bottom: 8px; }
    .btn-ext-kb { flex: 1; padding: 8px 4px; border: 2px solid #bbb; border-radius: 6px; background: #f0f0f0; color: #555; font-weight: bold; font-size: 11px; cursor: pointer; text-align: center; }
    .btn-ext-kb.on { background: #2ecc71; color: #fff; border-color: #27ae60; }
    /* 데이터 복사 버튼 하단 설명 */
    .btn-sub-text { font-size: 9px; color: #e74c3c; text-align: center; margin-top: 3px; }
    .btn-sub-text-gray { font-size: 9px; color: #888; text-align: center; margin-top: 3px; }
&lt;/style&gt;

&lt;div class=&quot;master-container&quot;&gt;
    &lt;div class=&quot;main-title&quot;&gt;모두의 채점계산기_V12(260319)&lt;/div&gt;

    &lt;!-- 상단 버튼 행 --&gt;
    &lt;div class=&quot;top-btn-row&quot;&gt;
        &lt;!-- A. 공초 버튼: 캐시 삭제+초기화 (링크 없음) --&gt;
        &lt;div class=&quot;tooltip-wrap&quot; style=&quot;flex:1;&quot; id=&quot;factoryResetWrap&quot;&gt;
            &lt;button class=&quot;btn-top&quot; style=&quot;background:var(--danger-color); width:100%;&quot; onclick=&quot;factoryReset()&quot;&gt;  공초&lt;/button&gt;
            &lt;div class=&quot;tooltip-box&quot;&gt;공장초기화 버튼. 입력한 서식과 값들 모두 삭제&lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- 초기화: 평가의견만 삭제 --&gt;
        &lt;div class=&quot;tooltip-wrap&quot; style=&quot;flex:1;&quot; id=&quot;softResetWrap&quot;&gt;
            &lt;button class=&quot;btn-top&quot; style=&quot;background:#7f8c8d; width:100%;&quot; onclick=&quot;softReset()&quot;&gt;초기화&lt;/button&gt;
            &lt;div class=&quot;tooltip-box&quot;&gt;⚠️ 점수입력값과 평가의견만 삭제됩니다.&lt;br&gt;소속·성명·서식·대상자정보는 유지됩니다.&lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- 장치저장 --&gt;
        &lt;button class=&quot;btn-top&quot; style=&quot;background:#27ae60;&quot; onclick=&quot;saveToDevice()&quot;&gt;장치저장&lt;/button&gt;
        &lt;!-- 주소복사 --&gt;
        &lt;button class=&quot;btn-top&quot; style=&quot;background:var(--primary-color);&quot; onclick=&quot;copyShareUrl()&quot;&gt;주소복사&lt;/button&gt;
        &lt;!-- QR 버튼 --&gt;
        &lt;button class=&quot;btn-top&quot; style=&quot;background:#8e44ad;&quot; onclick=&quot;openQR()&quot;&gt;QR&lt;/button&gt;
        &lt;!-- 항시켜짐: off=꺼진전구, on=켜진전구 --&gt;
        &lt;button id=&quot;wakeLockBtnMini&quot; class=&quot;btn-wakelock-mini&quot; onclick=&quot;toggleWakeLock()&quot;&gt;
            &lt;span id=&quot;wakeIcon&quot; class=&quot;wake-icon&quot;&gt; &lt;/span&gt;
            &lt;span id=&quot;wakeText&quot; class=&quot;wake-text&quot;&gt;off&lt;/span&gt;
        &lt;/button&gt;
    &lt;/div&gt;

    &lt;!-- 외부키보드 제어 버튼 행 --&gt;
    &lt;div class=&quot;ext-kb-row&quot;&gt;
        &lt;button id=&quot;extKbBtn&quot; class=&quot;btn-ext-kb&quot; onclick=&quot;toggleExtKb()&quot;&gt;⌨️ 외부키보드X &amp;nbsp;&lt;span style=&quot;font-size:9px;font-weight:normal;&quot;&gt;(클릭 시 내부키보드 차단)&lt;/span&gt;&lt;/button&gt;
    &lt;/div&gt;

    &lt;!-- 주소 표시 박스 --&gt;
    &lt;div class=&quot;share-mini-box&quot;&gt;
        &lt;input type=&quot;text&quot; id=&quot;shareUrlInput&quot; readonly placeholder=&quot;장치저장 또는 주소복사 시 생성됩니다.&quot;&gt;
    &lt;/div&gt;
    &lt;div id=&quot;shareUrlNotice&quot; class=&quot;share-url-notice&quot;&gt;*주소가 복사되었습니다. 동일한 브라우저를 오픈하여 타 기기에 붙여 넣으면 서식이 전달됩니다&lt;/div&gt;

    &lt;!-- 1번: 크롬 브라우저 안내 --&gt;
    &lt;div style=&quot;text-align:center; margin-bottom:6px;&quot;&gt;
        &lt;span style=&quot;color:#e74c3c; font-size:11px; font-weight:bold;&quot;&gt;※ Chrome(크롬) 브라우저 최적화. 타 브라우저 사용금지&lt;/span&gt;
    &lt;/div&gt;

    &lt;!-- 사용설명서 --&gt;
    &lt;div class=&quot;manual-container&quot;&gt;
        &lt;div class=&quot;manual-header&quot; onclick=&quot;toggleManual()&quot;&gt;
              사용설명서
            &lt;span id=&quot;manualArrow&quot;&gt;▼&lt;/span&gt;
        &lt;/div&gt;
        &lt;div id=&quot;manualContent&quot; class=&quot;manual-content&quot;&gt;
            &lt;div class=&quot;manual-notice&quot;&gt;
                &lt;strong&gt;** 해당 계산기는 서버에 저장되지 않습니다.(입력장치에 임시저장)&lt;/strong&gt;&lt;br&gt;
                &lt;strong&gt;** 공정한 심사를 위해 본인에게 맞는 서식 세팅 후 공유해서 태블릿으로 활용. (태블릿 추천)&lt;/strong&gt;&lt;br&gt;
                &lt;strong&gt;** PC로 활용 시 엑셀파일저장 기능으로 활용가능 (메일발송 불가)&lt;/strong&gt;
            &lt;/div&gt;
            &lt;!-- 2번: 탭순서 [평가자][담당자][유의사항] --&gt;
            &lt;div class=&quot;manual-tabs&quot;&gt;
                &lt;button class=&quot;manual-tab active&quot; onclick=&quot;showManualTab(0)&quot;&gt;평가자&lt;/button&gt;
                &lt;button class=&quot;manual-tab&quot; onclick=&quot;showManualTab(1)&quot;&gt;담당자&lt;/button&gt;
                &lt;button class=&quot;manual-tab&quot; onclick=&quot;showManualTab(2)&quot;&gt;유의사항&lt;/button&gt;
            &lt;/div&gt;
            &lt;!-- 3번: 평가자 탭 (0번) - 항목 추가 --&gt;
            &lt;div id=&quot;manualTab0&quot; class=&quot;manual-tab-content active&quot;&gt;
                &lt;strong&gt;1. 평가자 가이드&lt;/strong&gt;
                &lt;ol&gt;
                    &lt;li&gt;&lt;strong&gt;[소속입력],[성명]:&lt;/strong&gt; 필수 입력&lt;/li&gt;
                    &lt;li&gt;&lt;strong&gt;평가의견:&lt;/strong&gt; 필수 클릭 (없으면 [의견없음] 클릭)&lt;/li&gt;
                    &lt;li&gt;&lt;strong&gt;합격 표시:&lt;/strong&gt; 합격점 도달 시 모든 선택된 점수가 노란색으로 표시&lt;/li&gt;
                    &lt;li&gt;&lt;strong&gt;저장:&lt;/strong&gt; [각 채점 저장 및 다음 이동(필수)] 클릭 필수&lt;/li&gt;
                    &lt;li&gt;&lt;strong&gt;채점종료 후 메일발송:&lt;/strong&gt; [데이터엑셀저장(pc)] 버튼을 반드시 클릭 후 메일 첨부&lt;br&gt;
                        &amp;nbsp;- 첨부파일(클립모양 등) 버튼을 클릭 후 &lt;em&gt;[소속_성함_금일날짜시간]&lt;/em&gt;으로 된 최신 파일을 클릭 후 첨부&lt;br&gt;
                        &amp;nbsp;- 태블릿인 경우 대부분 최신파일이 최상단에 배치되어 있으며 최종시간명을 확인 후 첨부
                    &lt;/li&gt;
                &lt;/ol&gt;
            &lt;/div&gt;
            &lt;!-- 4번: 담당자 탭 (1번) - 안내 추가 --&gt;
            &lt;div id=&quot;manualTab1&quot; class=&quot;manual-tab-content&quot;&gt;
                &lt;strong&gt;2. 담당자 가이드&lt;/strong&gt;
                &lt;ol&gt;
                    &lt;li&gt;&lt;strong&gt;인원수:&lt;/strong&gt; 발표순번에서 체크(+-로 조정)&lt;/li&gt;
                    &lt;li&gt;&lt;strong&gt;채점항목 및 점수:&lt;/strong&gt; 우측 X 버튼 모두 클릭 후 [채점항목&amp;amp;가산점추가] 버튼으로 조정&lt;/li&gt;
                    &lt;li&gt;&lt;strong&gt;항목 전체삭제:&lt;/strong&gt; Q2항목 15점 버튼 6회 연속 클릭 (채점 저장 전에만 작동)&lt;/li&gt;
                    &lt;li&gt;&lt;strong&gt;합격기준:&lt;/strong&gt; TOTAL 옆 합격기준 점수에 입력 (합격점 도달 시 모든 선택 버튼이 노란색으로 변경됨)&lt;/li&gt;
                    &lt;li&gt;&lt;strong&gt;서식 공유:&lt;/strong&gt; [장치저장] 클릭 후 채점기계에 전달&lt;/li&gt;
                &lt;/ol&gt;
                &lt;div style=&quot;background:#fff3cd; border-radius:6px; padding:10px; margin-top:8px; font-size:12px; line-height:1.9;&quot;&gt;
                    &lt;strong&gt;** 채점이 완료되면 [데이터엑셀저장(pc)] 클릭하여 메일로 발송하는 기능으로 활용하세요&lt;/strong&gt;&lt;br&gt;
                    &lt;strong&gt;** 태블릿 상 이메일 어플이 하나는 설치되어야 가능합니다.&lt;/strong&gt;&lt;br&gt;
                    &lt;strong&gt;** 반드시 태블릿과 PC가 동일 브라우저를 활용하세요. 현재 크롬 사용을 추천드립니다.&lt;/strong&gt;&lt;br&gt;
                    &lt;strong&gt;** 모든 테스트 시도 후 활용바랍니다.&lt;/strong&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div id=&quot;manualTab2&quot; class=&quot;manual-tab-content&quot;&gt;
                &lt;strong&gt;3. 유의사항&lt;/strong&gt;
                &lt;ol&gt;
                    &lt;li&gt;채점 중 [공초] 버튼 클릭 금지&lt;/li&gt;
                    &lt;li&gt;태블릿에 최적화되어 있습니다&lt;/li&gt;
                    &lt;li&gt;엑셀 여러 셀 복사 시 각 셀에 자동 분배됩니다&lt;/li&gt;
                &lt;/ol&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;card&quot; style=&quot;background:#fff9c4;&quot;&gt;
        &lt;span style=&quot;font-weight:bold;&quot;&gt;  평가 시 전달사항&lt;/span&gt;
        &lt;textarea id=&quot;notice&quot; style=&quot;width:100%; border:none; background:transparent; min-height:60px; resize:none;&quot;
            onfocus=&quot;clearNoticeDefault(this)&quot;
            placeholder=&quot;내용을 입력하세요.&amp;#10;소속 및 성명 입력 → 각채점 저장 → 완료 시 [데이터엑셀저장] 클릭 후 [메일발송] / 발송 시 저장한 엑셀데이터 첨부 순서로 진행합니다.&quot;&gt;&lt;/textarea&gt;
    &lt;/div&gt;

    &lt;div class=&quot;card&quot;&gt;
        &lt;span style=&quot;font-weight:bold;&quot;&gt;  0. 소속입력 (*엑셀 및 메일 제목)&lt;/span&gt;
        &lt;input type=&quot;text&quot; id=&quot;eventTitle&quot; class=&quot;t-input-full&quot; placeholder=&quot;행사명 입력&quot; oninput=&quot;autoSaveInputs()&quot;&gt;
        &lt;span style=&quot;font-weight:bold;&quot;&gt;  1. 채점자 성명&lt;/span&gt;
        &lt;input type=&quot;text&quot; id=&quot;judgeName&quot; class=&quot;t-input-full&quot; placeholder=&quot;성명 입력&quot; oninput=&quot;autoSaveInputs()&quot;&gt;
    &lt;/div&gt;

    &lt;div class=&quot;card&quot;&gt;
        &lt;span style=&quot;font-weight:bold;&quot;&gt;  2. 발표순번(N1:첫번째발표자)&lt;/span&gt;
        &lt;div id=&quot;idList&quot; class=&quot;id-grid&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;status-black-box&quot; style=&quot;margin-top:10px;&quot;&gt;현재순번: &lt;span id=&quot;currentN&quot; class=&quot;status-n-val&quot;&gt;N1&lt;/span&gt;&lt;/div&gt;
        &lt;div class=&quot;t-info-container&quot;&gt;
            &lt;input type=&quot;text&quot; id=&quot;t1_disp&quot; class=&quot;t-input-full&quot; placeholder=&quot;대상자 정보1&quot; readonly&gt;
            &lt;input type=&quot;text&quot; id=&quot;t2_disp&quot; class=&quot;t-input-full&quot; style=&quot;margin-bottom:0;&quot; placeholder=&quot;대상자 정보2&quot; readonly&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;card&quot; id=&quot;qSection&quot;&gt;
        &lt;span style=&quot;font-weight:bold; display:block; margin-bottom:10px;&quot;&gt;  2-1. 채점항목 입력&lt;/span&gt;
        &lt;div id=&quot;qArea&quot;&gt;&lt;/div&gt;
        &lt;button onclick=&quot;promptAddQ()&quot; style=&quot;width:100%; padding:10px; border:2px dashed #ccc; background:none; border-radius:8px; cursor:pointer; font-size:12px; margin-top:10px;&quot;&gt;+ 채점항목 or 가산점 추가&lt;/button&gt;
        &lt;p style=&quot;font-size:9px; color:#bbb; text-align:center; margin:3px 0 0;&quot;&gt;q2항목 15점 6회 클릭시 모두 삭제&lt;/p&gt;
    &lt;/div&gt;

    &lt;!-- 3. 평가의견 (수정: Enter 금지, 직접입력 기본값 파란색, 불참 회색, 검토 화살표 추가) --&gt;
    &lt;div class=&quot;card&quot;&gt;
        &lt;div style=&quot;display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:4px;&quot;&gt;
            &lt;span style=&quot;font-weight:bold;&quot;&gt;  3. 평가의견(필수클릭)&lt;/span&gt;
            &lt;!-- 4번 요청: 순번표기 + 검토용 화살표 --&gt;
            &lt;div style=&quot;display:flex; gap:4px; align-items:center; background:#f0f4f8; border-radius:8px; padding:3px 6px; border:1px solid #ddd;&quot;&gt;
                &lt;button class=&quot;nav-btn&quot; onclick=&quot;moveN(-1)&quot; title=&quot;이전 순번 검토&quot; style=&quot;background:#e8ecf0; border:1px solid #ccc;&quot;&gt;◀&lt;/button&gt;
                &lt;span id=&quot;reviewNLabel&quot; style=&quot;font-size:13px; font-weight:900; color:#2c3e50; min-width:32px; text-align:center; letter-spacing:1px;&quot;&gt;N1&lt;/span&gt;
                &lt;button class=&quot;nav-btn&quot; onclick=&quot;moveN(1)&quot; title=&quot;다음 순번 검토&quot; style=&quot;background:#e8ecf0; border:1px solid #ccc;&quot;&gt;▶&lt;/button&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div style=&quot;display:flex; gap:4px; margin-top:8px; flex-wrap:nowrap;&quot;&gt;
            &lt;button class=&quot;op-btn&quot; id=&quot;opBtn_직접입력&quot; onclick=&quot;setOp('직접입력')&quot;&gt;직접&lt;br&gt;입력&lt;/button&gt;
            &lt;button class=&quot;op-btn&quot; id=&quot;opBtn_지원적정함&quot; onclick=&quot;setOp('지원적정함')&quot;&gt;지원&lt;br&gt;적정함&lt;/button&gt;
            &lt;button class=&quot;op-btn&quot; id=&quot;opBtn_조정필요&quot; onclick=&quot;setOp('조정필요')&quot;&gt;조정&lt;br&gt;필요&lt;/button&gt;
            &lt;button class=&quot;op-btn&quot; id=&quot;opBtn_지원부적정&quot; onclick=&quot;setOp('지원부적정')&quot;&gt;지원&lt;br&gt;부적정&lt;/button&gt;
            &lt;button class=&quot;op-btn&quot; id=&quot;opBtn_의견없음&quot; onclick=&quot;setOp('의견없음')&quot;&gt;의견&lt;br&gt;없음&lt;/button&gt;
            &lt;button class=&quot;op-btn-absent&quot; id=&quot;absentBtn&quot; onclick=&quot;setAbsent()&quot;&gt;미출석&lt;/button&gt;
        &lt;/div&gt;
        &lt;!-- 안내문구 --&gt;
        &lt;div id=&quot;opinionGuide&quot; class=&quot;opinion-guide&quot; onclick=&quot;showOpinionTextarea()&quot;&gt;
            &lt;span style=&quot;color:#e74c3c; font-weight:900; font-size:13px;&quot;&gt;⚠️ Enter 키 사용금지&lt;/span&gt; 의견을 입력하세요. 상단의 입력값과 평가입력이 완료되면 하단의 파란버튼인 [각 채점 저장 및 다음이동]을 클릭하시고, 기 저장한 평가입력 내용을 수정시에는 평가의견 수정 후 녹색버튼인 [평가의견 수정저장_(반드시 평가의견 수정시에만 클릭)] 버튼을 클릭하세요.
        &lt;/div&gt;
        &lt;!-- Enter 금지 textarea --&gt;
        &lt;textarea id=&quot;opinion&quot; style=&quot;width:100%; height:80px; margin-top:0; padding:10px; box-sizing:border-box; border:1px solid #ddd; display:none;&quot; placeholder=&quot;의견을 직접 입력하세요...&quot; oninput=&quot;autoSaveOpinion()&quot; onkeydown=&quot;return preventEnter(event)&quot;&gt;&lt;/textarea&gt;
        &lt;!-- 3번 요청: 버튼명 수정 --&gt;
        &lt;button class=&quot;btn-opinion-save&quot; onclick=&quot;saveOpinionOnly()&quot;&gt;  평가의견 수정저장_(반드시 평가의견 수정시에만 클릭)&lt;/button&gt;
    &lt;/div&gt;

    &lt;!-- TOTAL + 합격기준 (5번 요청: 서식저장 버튼 삭제, TOTAL 배치) --&gt;
    &lt;div class=&quot;card&quot;&gt;
        &lt;div style=&quot;display:flex; align-items:center; gap:8px;&quot;&gt;
            &lt;div id=&quot;totalBox&quot; class=&quot;total-view&quot;&gt;TOTAL: 0&lt;/div&gt;
            &lt;div style=&quot;flex:1; font-size:11px;&quot;&gt;
                합격기준: &lt;input type=&quot;number&quot; id=&quot;passLimit&quot; value=&quot;60&quot; oninput=&quot;recalc()&quot; style=&quot;width:60px; height:25px; font-size:14px; font-weight:bold;&quot;&gt; 점 이상&lt;br&gt;
                &lt;span id=&quot;gasunDisplay&quot; style=&quot;color:var(--danger-color); font-weight:bold;&quot;&gt;가산점: -&lt;/span&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;button class=&quot;btn-main-save&quot; onclick=&quot;saveData()&quot;&gt;각 채점 저장 및 다음 이동(필수)&lt;/button&gt;
    &lt;div style=&quot;text-align:center; margin:-10px 0 8px; line-height:1.8;&quot;&gt;
        &lt;div style=&quot;font-size:10px; color:#e74c3c; font-weight:bold;&quot;&gt;※ 채점 종료 후 [데이터엑셀저장(PC)] 클릭 → 메일발송 시 엑셀첨부 요망&lt;/div&gt;
        &lt;div style=&quot;font-size:10px; color:#e74c3c;&quot;&gt;※ 엑셀파일명은 소속_성함으로 설정됨&lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 4. 이메일 --&gt;
    &lt;div class=&quot;card&quot;&gt;
        &lt;span style=&quot;font-weight:bold;&quot;&gt;  4. 채점값 이메일전달_엑셀저장 후 메일발송&lt;/span&gt;
        &lt;p style=&quot;font-size:11px; color:#e67e22; margin:5px 0 2px;&quot;&gt;* 메일 제목은 [소속_성명_날짜_시간_평가표]로 자동 생성됩니다.&lt;/p&gt;
        &lt;p style=&quot;font-size:11px; color:#e67e22; margin:2px 0 5px;&quot;&gt;* 하단 엑셀저장 클릭 후 메일발송 (발송 시 저장한 엑셀데이터 첨부 후 발송)&lt;/p&gt;
        &lt;input type=&quot;text&quot; id=&quot;emailTo&quot; class=&quot;t-input-full&quot; style=&quot;margin-top:5px;&quot;
               placeholder=&quot;다수메일 발송 시 , 로 구분&quot; oninput=&quot;autoSaveInputs()&quot;&gt;
        &lt;div style=&quot;display:flex; gap:4px; margin-top:8px;&quot;&gt;
            &lt;button class=&quot;btn-top&quot; style=&quot;background:#27ae60&quot; onclick=&quot;downloadCSV()&quot;&gt;  데이터엑셀저장(pc)&lt;/button&gt;
            &lt;button class=&quot;btn-top&quot; style=&quot;background:#8e44ad&quot; onclick=&quot;sendEmailWithUpdate()&quot;&gt;  메일발송(태블릿용)&lt;/button&gt;
        &lt;/div&gt;

        &lt;!-- 실험실 접기/펼치기 (체크박스 + 완료&amp;reply + TinyURL 전체 포함) --&gt;
        &lt;div style=&quot;margin-top:8px; border:1px solid #ddd; border-radius:8px; overflow:hidden;&quot;&gt;
            &lt;div onclick=&quot;toggleLabSection()&quot; style=&quot;display:flex; justify-content:space-between; align-items:center; padding:9px 12px; background:#ecf0f1; cursor:pointer; font-size:12px; font-weight:bold; color:#555;&quot;&gt;
                &lt;span&gt;  실험실_(백업용_준비중)&lt;/span&gt;
                &lt;span id=&quot;labArrow&quot;&gt;▼&lt;/span&gt;
            &lt;/div&gt;
            &lt;div id=&quot;labContent&quot; style=&quot;display:none; padding:10px; background:#fafafa;&quot;&gt;
                &lt;!-- 복구가능여부확인 최상단 배치 --&gt;
                &lt;button onclick=&quot;checkRecoverability()&quot; style=&quot;width:100%; padding:8px; background:#3498db; color:#fff; border:none; border-radius:6px; font-size:11px; font-weight:bold; cursor:pointer; margin-bottom:8px;&quot;&gt;
                      복구가능여부 확인 (먼저 클릭 후 하단 기능 사용)
                &lt;/button&gt;
                &lt;p style=&quot;font-size:10px; color:#e74c3c; margin:0 0 8px; line-height:1.6;&quot;&gt;
                    ⚠️ 아래 기능은 URL 길이 제한으로 복구가 불안정할 수 있습니다.&lt;br&gt;
                    채점 항목이 많을수록 복구 실패 가능성이 높아집니다. 반드시 엑셀 첨부를 우선 활용하세요.
                &lt;/p&gt;

                &lt;!-- 엑셀 옵션 체크박스 (구분선) --&gt;
                &lt;div style=&quot;border-top:1px solid #ddd; margin:6px 0 8px; padding-top:8px;&quot;&gt;
                    &lt;div style=&quot;font-size:10px; color:#888; font-weight:bold; margin-bottom:6px;&quot;&gt;  엑셀 저장 옵션&lt;/div&gt;
                    &lt;!-- 체크1: 1-1~정보2 포함 --&gt;
                    &lt;div class=&quot;mail-option-row&quot;&gt;
                        &lt;input type=&quot;checkbox&quot; id=&quot;excelIncludeInfo&quot;&gt;
                        &lt;label for=&quot;excelIncludeInfo&quot; style=&quot;cursor:pointer;&quot;&gt;데이터엑셀저장 시 1-1~정보2 입력내용 포함&lt;/label&gt;
                    &lt;/div&gt;
                    &lt;!-- 체크2: 첫행 제목 넣기 --&gt;
                    &lt;div class=&quot;mail-option-row&quot;&gt;
                        &lt;input type=&quot;checkbox&quot; id=&quot;excelIncludeTitle&quot; onchange=&quot;toggleExcelTitleInput()&quot;&gt;
                        &lt;label for=&quot;excelIncludeTitle&quot; style=&quot;cursor:pointer;&quot;&gt;엑셀 첫행 입력값 넣기&lt;/label&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;excelTitleInputWrap&quot; style=&quot;display:none; margin-top:4px;&quot;&gt;
                        &lt;input type=&quot;text&quot; id=&quot;excelTitleText&quot; class=&quot;t-input-full&quot; placeholder=&quot;첫 행에 넣을 제목 입력...&quot; style=&quot;margin-bottom:0; font-size:12px;&quot;&gt;
                    &lt;/div&gt;
                &lt;/div&gt;

                &lt;!-- 메일 관련 체크박스 --&gt;
                &lt;div style=&quot;border-top:1px solid #ddd; margin:6px 0 8px; padding-top:8px;&quot;&gt;
                    &lt;div style=&quot;font-size:10px; color:#888; font-weight:bold; margin-bottom:6px;&quot;&gt;  메일 옵션&lt;/div&gt;
                    &lt;div class=&quot;mail-option-row&quot;&gt;
                        &lt;input type=&quot;checkbox&quot; id=&quot;includeRecoveryUrl&quot;&gt;
                        &lt;label for=&quot;includeRecoveryUrl&quot; style=&quot;cursor:pointer;&quot;&gt;메일상 복구주소 포함 (3-1.데이터복구주소)&lt;/label&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;mail-option-row&quot;&gt;
                        &lt;input type=&quot;checkbox&quot; id=&quot;includeScoreDetail&quot;&gt;
                        &lt;label for=&quot;includeScoreDetail&quot; style=&quot;cursor:pointer;&quot;&gt;2.전체 상세 정보리스트 포함 (대상자 1-1~정보2 포함 전체 데이터)&lt;/label&gt;
                    &lt;/div&gt;
                &lt;/div&gt;

                &lt;!-- TinyURL --&gt;
                &lt;div style=&quot;display:flex; flex-direction:column; gap:4px;&quot;&gt;
                    &lt;div style=&quot;display:flex; align-items:center; gap:6px;&quot;&gt;
                        &lt;input type=&quot;checkbox&quot; id=&quot;includeTinyUrl&quot;&gt;
                        &lt;label for=&quot;includeTinyUrl&quot; style=&quot;cursor:pointer; flex:1; font-size:11px;&quot;&gt;TinyURL 단축링크 메일본문 포함_압축률 높음&lt;/label&gt;
                    &lt;/div&gt;
                    &lt;div id=&quot;tinyUrlPreview&quot; style=&quot;font-size:10px; color:#555; word-break:break-all; display:none; padding:4px 6px; background:#fff3e0; border-radius:4px;&quot;&gt;&lt;/div&gt;
                &lt;/div&gt;
                &lt;!-- 완료&amp;reply + 백업용TinyURL 한 줄 두 버튼 --&gt;
                &lt;div style=&quot;display:flex; gap:6px; margin-top:8px;&quot;&gt;
                    &lt;button onclick=&quot;generateAndCopyReplyUrl()&quot; style=&quot;flex:1; padding:8px; background:#2c3e50; color:#fff; border:none; border-radius:6px; font-size:11px; font-weight:bold; cursor:pointer;&quot;&gt;
                          완료&amp;amp;reply
                    &lt;/button&gt;
                    &lt;button onclick=&quot;generateAndCopyTiny()&quot; style=&quot;flex:1; padding:8px; background:#e67e22; color:#fff; border:none; border-radius:6px; font-size:11px; font-weight:bold; cursor:pointer;&quot;&gt;
                          백업용_tinyURL
                    &lt;/button&gt;
                &lt;/div&gt;
                &lt;div style=&quot;font-size:9px; color:#e74c3c; text-align:center; margin-top:3px;&quot;&gt;*채점브라우저와 동일브라우저로만 작동_(크롬추천)&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 5. 실시간 데이터 (8번 요청: 버튼명 수정, 댓글 붙여넣기 기능) --&gt;
    &lt;div class=&quot;card data-table-section&quot; style=&quot;overflow-x:auto;&quot;&gt;
        &lt;span style=&quot;font-weight:bold;&quot;&gt;  5. 실시간 데이터 저장 확인표&lt;/span&gt;
        &lt;div style=&quot;overflow-x:auto; margin-top:10px;&quot;&gt;
            &lt;table class=&quot;excel-table&quot;&gt;
                &lt;thead id=&quot;thr&quot;&gt;&lt;/thead&gt;
                &lt;tbody id=&quot;tbr&quot;&gt;&lt;/tbody&gt;
            &lt;/table&gt;
        &lt;/div&gt;
        &lt;div style=&quot;display:flex; gap:5px; margin-top:10px;&quot;&gt;
            &lt;div style=&quot;flex:1;&quot;&gt;
                &lt;button onclick=&quot;copyTableData()&quot; style=&quot;width:100%; padding:10px; background:#95a5a6; color:#fff; border:none; border-radius:6px; font-size:12px;&quot;&gt;  데이터복사(준비중)&lt;/button&gt;
            &lt;/div&gt;
            &lt;div style=&quot;flex:1;&quot;&gt;
                &lt;button onclick=&quot;copyForComment()&quot; style=&quot;width:100%; padding:10px; background:#95a5a6; color:#fff; border:none; border-radius:6px; font-size:12px;&quot;&gt;  붙여넣기(준비중)&lt;/button&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;!-- 구간복사 접기/펼치기 --&gt;
        &lt;div style=&quot;margin-top:10px; border:1px solid #ddd; border-radius:8px; overflow:hidden;&quot;&gt;
            &lt;div onclick=&quot;toggleRangeSection()&quot; style=&quot;display:flex; justify-content:space-between; align-items:center; padding:9px 12px; background:#ecf0f1; cursor:pointer; font-size:12px; font-weight:bold; color:#555;&quot;&gt;
                &lt;span&gt;  구간복사[준비중]&lt;/span&gt;
                &lt;span id=&quot;rangeArrow&quot;&gt;▼&lt;/span&gt;
            &lt;/div&gt;
            &lt;div id=&quot;rangeContent&quot; style=&quot;display:none; padding:8px; background:#fafafa;&quot;&gt;
                &lt;div id=&quot;commentRangeButtons&quot; style=&quot;display:flex; flex-wrap:wrap; gap:4px;&quot;&gt;&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 6. 담당자전용 --&gt;
    &lt;div class=&quot;card&quot; style=&quot;overflow-x:auto;&quot;&gt;
        &lt;span style=&quot;font-weight:bold;&quot;&gt;  6. 채점 서식 및 각 대상자 정보입력_담당자전용&lt;/span&gt;
        &lt;p style=&quot;font-size:11px; color:#7f8c8d; margin:5px 0;&quot;&gt;엑셀에서 여러 셀 복사 후 첫 셀 클릭하여 붙여넣으면 자동 분배됩니다.&lt;/p&gt;
        &lt;div class=&quot;bulk-section&quot;&gt;
            &lt;div class=&quot;bulk-section-title&quot;&gt;  채점항목명 설정&lt;/div&gt;
            &lt;table class=&quot;info-table&quot; id=&quot;qNameTable&quot;&gt;
                &lt;thead&gt;&lt;tr id=&quot;qNameHeader&quot;&gt;&lt;/tr&gt;&lt;/thead&gt;
            &lt;/table&gt;
            &lt;div style=&quot;display:flex; gap:5px; margin-top:8px; align-items:center;&quot;&gt;
                &lt;button onclick=&quot;extractQNames()&quot; style=&quot;flex:1; padding:8px; background:#3498db; color:#fff; border:none; border-radius:6px; font-size:11px;&quot;&gt;항목명 삽입 대체&lt;/button&gt;
                &lt;button onclick=&quot;resetQNames()&quot; id=&quot;resetQNamesBtn&quot; style=&quot;padding:8px 12px; background:#95a5a6; color:#fff; border:none; border-radius:6px; font-size:11px;&quot;&gt;초기화&lt;/button&gt;
                &lt;div class=&quot;tooltip-wrap&quot; id=&quot;descBtnWrap&quot;&gt;
                    &lt;button class=&quot;tooltip-btn&quot; onclick=&quot;descBtnClick(event)&quot;&gt;설명&lt;/button&gt;
                    &lt;div class=&quot;tooltip-box&quot; id=&quot;descTooltipBox&quot;&gt;
                          &lt;strong&gt;채점항목명 설정이란?&lt;/strong&gt;&lt;br&gt;
                        Q1~Q12 항목명을 원하는 이름으로 바꿀 수 있어요.&lt;br&gt;&lt;br&gt;
                        &lt;strong&gt;사용 예시:&lt;/strong&gt;&lt;br&gt;
                        ① 셀에 직접 항목명 입력&lt;br&gt;
                        ② 엑셀에서 항목명 복사 후 첫 셀에 붙여넣기&lt;br&gt;
                        ③ [항목명 삽입 대체] 버튼 클릭
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;bulk-section&quot;&gt;
            &lt;div class=&quot;bulk-section-title&quot;&gt;  대상자 정보 입력&lt;/div&gt;
            &lt;div style=&quot;overflow-x:auto;&quot; id=&quot;bulkArea&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;btn-flex-row&quot;&gt;
                &lt;button onclick=&quot;extractTInfo()&quot; style=&quot;flex:1; padding:8px; background:#16a085; color:#fff; border:none; border-radius:6px; font-size:11px;&quot;&gt;대상자정보 삽입&lt;/button&gt;
                &lt;button onclick=&quot;clearBulkTable()&quot; style=&quot;flex:1; padding:8px; background:#e74c3c; color:#fff; border:none; border-radius:6px; font-size:11px;&quot;&gt;대상자정보 초기화&lt;/button&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;

    &lt;button id=&quot;wakeLockBtn&quot; class=&quot;btn-wakelock&quot; onclick=&quot;toggleWakeLock()&quot;&gt;
        &lt;span id=&quot;lockIcon&quot;&gt; &lt;/span&gt;
        &lt;span id=&quot;lockText&quot;&gt;화면항시켜짐off&lt;/span&gt;
    &lt;/button&gt;
&lt;/div&gt;

&lt;!-- QR 팝업 --&gt;
&lt;div class=&quot;qr-overlay&quot; id=&quot;qrOverlay&quot; onclick=&quot;closeQROutside(event)&quot;&gt;
    &lt;div class=&quot;qr-modal&quot; id=&quot;qrModal&quot;&gt;
        &lt;h3&gt;  QR 코드&lt;/h3&gt;
        &lt;div id=&quot;qrMainSection&quot;&gt;
            &lt;div class=&quot;qr-box&quot; id=&quot;qrCodeBox&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;qr-url-text&quot; id=&quot;qrUrlText&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;qr-tiny-section&quot;&gt;
            &lt;label class=&quot;qr-tiny-label&quot;&gt;
                &lt;input type=&quot;checkbox&quot; id=&quot;qrTinyCheck&quot; onchange=&quot;toggleTinyQR()&quot;&gt;
                상단 QR코드 접속 불가 시 해당 QR코드 생성 (TinyURL 단축링크)
            &lt;/label&gt;
            &lt;div class=&quot;qr-tiny-result&quot; id=&quot;qrTinyResult&quot;&gt;
                &lt;div class=&quot;qr-box&quot; id=&quot;qrTinyCodeBox&quot;&gt;&lt;/div&gt;
                &lt;div class=&quot;qr-url-text&quot; id=&quot;qrTinyUrlText&quot;&gt;&lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
        &lt;button class=&quot;qr-close&quot; onclick=&quot;closeQR()&quot;&gt;닫기&lt;/button&gt;
    &lt;/div&gt;
&lt;/div&gt;

&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/lz-string/1.5.0/lz-string.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;
    let qCfgs = [
        {n:'Q1',s:[3,6,9,12,15],type:'num'},{n:'Q2',s:[3,6,9,12,15],type:'num'},{n:'Q3',s:[3,6,9,12,15],type:'num'},
        {n:'Q4',s:[1,2,3,4,5],type:'num'},{n:'Q5',s:[1,2,3,4,5],type:'num'},{n:'Q6',s:[1,2,3,4,5],type:'num'},
        {n:'Q7',s:[1,2,3,4,5],type:'num'},{n:'Q8',s:[1,2,3,4,5],type:'num'},{n:'Q9',s:[1,2,3,4,5],type:'num'},
        {n:'Q10',s:[1,2,3,4,5],type:'num'},{n:'Q11',s:[2,4,6,8,10],type:'num'},{n:'Q12',s:[2,4,6,8,10],type:'num'}
    ];
    const defaultQCfgs = JSON.parse(JSON.stringify(qCfgs));
    let tMap = {}, recs = {}, selScores = {}, curIdx = 1, idMax = 20, wakeLock = null;
    let middleClickCount = 0, middleClickTimer = null;
    let hasFirstSave = false;
    let currentOpinionBtn = null;
    let isAbsent = false;
    let descClickCount = 0, descClickTimer = null;
    let q2DelClickCount = 0, q2DelClickTimer = null;
    const secretQNames = ['창업의지','기획력','추진력','차별성','확장성','생산역량','품질관리','시장규모','시장전망','마케팅','수익성','고용창출'];

    /* ===== Enter 키 차단 (평가의견 textarea) ===== */
    function preventEnter(e) {
        if(e.key === 'Enter' || e.keyCode === 13) {
            e.preventDefault();
            return false;
        }
        return true;
    }

    /* ===== 설명버튼 비밀기능 ===== */
    function descBtnClick(event) {
        descClickCount++;
        if(descClickTimer) clearTimeout(descClickTimer);
        descClickTimer = setTimeout(() =&gt; { descClickCount = 0; }, 3000);
        if(descClickCount &gt;= 6) {
            descClickCount = 0;
            const cells = document.querySelectorAll('#qNameHeader th');
            secretQNames.forEach((name, i) =&gt; { if(cells[i]) cells[i].innerText = name; });
            alert('확인');
            qCfgs.forEach((q, i) =&gt; { if(secretQNames[i]) q.n = secretQNames[i]; });
            saveQ(); renderQs(); renderQNameTable();
            document.getElementById('descBtnWrap').classList.remove('active');
            return;
        }
        const wrap = document.getElementById('descBtnWrap');
        const box = document.getElementById('descTooltipBox');
        const btn = event.currentTarget;
        const rect = btn.getBoundingClientRect();
        if(wrap.classList.contains('active')) { wrap.classList.remove('active'); return; }
        const boxW = 220;
        let left = rect.left;
        if(left + boxW &gt; window.innerWidth - 8) left = window.innerWidth - boxW - 8;
        if(left &lt; 8) left = 8;
        box.style.left = left + 'px';
        wrap.classList.add('active');
        requestAnimationFrame(() =&gt; { box.style.top = (rect.top - box.offsetHeight - 10) + 'px'; });
        if(descClickTimer) clearTimeout(descClickTimer);
        descClickTimer = setTimeout(() =&gt; { wrap.classList.remove('active'); descClickCount = 0; }, 4000);
    }

    /* ===== 평가의견 안내문구 처리 ===== */
    function showOpinionTextarea() {
        document.getElementById('opinionGuide').style.display = 'none';
        const ta = document.getElementById('opinion');
        ta.style.display = 'block';
        ta.focus();
    }

    /* ===== 실시간 자동저장 ===== */
    function autoSaveInputs() {
        localStorage.setItem('v3_eventTitle', document.getElementById('eventTitle').value);
        localStorage.setItem('v3_judgeName', document.getElementById('judgeName').value);
        localStorage.setItem('v3_emailTo', document.getElementById('emailTo').value);
    }

    function autoSaveOpinion() {
        const val = document.getElementById('opinion').value;
        localStorage.setItem('v3_opinion_tmp_' + curIdx, val);
    }

    function saveOpinionOnly() {
        const opVal = document.getElementById('opinion').value.replace(/[\r\n]+/g, ' ').trim();
        if (!recs[curIdx]) {
            localStorage.setItem('v3_opinion_tmp_' + curIdx, opVal);
            alert('의견이 임시저장되었습니다.\n채점 저장 시 함께 반영됩니다.');
            return;
        }
        recs[curIdx].op = opVal;
        localStorage.setItem('v3_recs', JSON.stringify(recs));
        renderTable();
        alert('평가의견이 수정저장되었습니다.');
    }

    function init() {
        const params = new URLSearchParams(window.location.search);
        if(params.has('c')) applyShared(params.get('c'));
        else if(params.has('d')) applyShared(params.get('d'));
        else if(params.has('s')) applyShared(params.get('s'));

        // 파라미터 없으면 장치저장 데이터 복원
        if(!params.has('c') &amp;&amp; !params.has('d') &amp;&amp; !params.has('s')) {
            const deviceSaved = localStorage.getItem('v3_device_save');
            if(deviceSaved) {
                try {
                    const d = JSON.parse(LZString.decompressFromEncodedURIComponent(deviceSaved));
                    qCfgs = d.q || qCfgs;
                    tMap = d.t || {};
                    if(d.e) document.getElementById('eventTitle').value = d.e;
                    if(d.l) document.getElementById('passLimit').value = d.l;
                    if(d.n) document.getElementById('notice').value = d.n;
                    if(d.j) document.getElementById('judgeName').value = d.j;
                    saveQ(); localStorage.setItem('v3_tmap', JSON.stringify(tMap));
                } catch(e) {}
            }
        }

        const saved = localStorage.getItem('v3_qcf');
        if(saved) qCfgs = JSON.parse(saved);
        const savedT = localStorage.getItem('v3_tmap');
        if(savedT) tMap = JSON.parse(savedT);
        const savedR = localStorage.getItem('v3_recs');
        if(savedR) { recs = JSON.parse(savedR); hasFirstSave = Object.keys(recs).length &gt; 0; }
        const se = localStorage.getItem('v3_eventTitle'); if(se !== null) document.getElementById('eventTitle').value = se;
        const sj = localStorage.getItem('v3_judgeName'); if(sj !== null) document.getElementById('judgeName').value = sj;
        const sm = localStorage.getItem('v3_emailTo'); if(sm !== null) document.getElementById('emailTo').value = sm;

        renderIds(); renderQs(); renderBulk(); renderQNameTable(); loadN(1); renderTable();
        renderCommentRangeButtons();
        // 직접입력 기본값 파란색
        setOpDefault();
    }

    function setOpDefault() {
        // 직접입력 기본 활성화
        document.querySelectorAll('.op-btn').forEach(b =&gt; b.classList.remove('active'));
        const btn = document.getElementById('opBtn_직접입력');
        if(btn) {
            btn.classList.add('active');
            currentOpinionBtn = btn;
        }
    }

    function toggleManual() {
        const content = document.getElementById('manualContent');
        const arrow = document.getElementById('manualArrow');
        if(content.style.display === 'none' || content.style.display === '') {
            content.style.display = 'block'; arrow.innerText = '▲';
        } else { content.style.display = 'none'; arrow.innerText = '▼'; }
    }

    function showManualTab(index) {
        document.querySelectorAll('.manual-tab').forEach((t,i) =&gt; i===index ? t.classList.add('active') : t.classList.remove('active'));
        document.querySelectorAll('.manual-tab-content').forEach((c,i) =&gt; i===index ? c.classList.add('active') : c.classList.remove('active'));
    }

    function renderIds() {
        const div = document.getElementById('idList');
        let h = '';
        for(let i=1; i&lt;=idMax; i++) {
            const cls = (i===curIdx ? 'id-box selected' : (recs[i] ? 'id-box completed' : 'id-box'));
            h += `&lt;button class=&quot;${cls}&quot; onclick=&quot;loadN(${i})&quot;&gt;N${i}&lt;/button&gt;`;
        }
        h += '&lt;button class=&quot;id-ctrl&quot; onclick=&quot;adjM(1)&quot;&gt;+&lt;/button&gt;';
        h += '&lt;button class=&quot;id-ctrl&quot; onclick=&quot;adjM(-1)&quot;&gt;-&lt;/button&gt;';
        h += '&lt;button class=&quot;id-ctrl&quot; onclick=&quot;moveN(-1)&quot;&gt;◀&lt;/button&gt;';
        h += '&lt;button class=&quot;id-ctrl&quot; onclick=&quot;moveN(1)&quot;&gt;▶&lt;/button&gt;';
        div.innerHTML = h;
    }

    function loadN(n) {
        curIdx = n; selScores = {};
        document.getElementById('currentN').innerText = `N${n}`;
        // 4번: 검토 순번 표시 업데이트
        const rnLabel = document.getElementById('reviewNLabel');
        if(rnLabel) rnLabel.innerText = `N${n}`;
        const guide = document.getElementById('opinionGuide');
        const ta = document.getElementById('opinion');

        document.querySelectorAll('.op-btn').forEach(b =&gt; b.classList.remove('active'));
        document.getElementById('absentBtn').classList.remove('active');
        currentOpinionBtn = null; isAbsent = false;

        if(recs[n]) {
            selScores = {...recs[n].sc};
            ta.value = recs[n].op || '';
            if(recs[n].op) { ta.style.display = 'block'; guide.style.display = 'none'; }
            else { ta.style.display = 'none'; guide.style.display = 'block'; }
            if(recs[n].absent) {
                isAbsent = true;
                document.getElementById('absentBtn').classList.add('active');
                currentOpinionBtn = document.getElementById('absentBtn');
            }
        } else {
            const tmpOp = localStorage.getItem('v3_opinion_tmp_' + n);
            if(tmpOp) { ta.value = tmpOp; ta.style.display = 'block'; guide.style.display = 'none'; }
            else { ta.value = ''; ta.style.display = 'none'; guide.style.display = 'block'; }
        }

        const info = tMap[n] || ['','','','',''];
        document.getElementById('t1_disp').value = info.slice(0,4).filter(v=&gt;v).join(' / ');
        document.getElementById('t2_disp').value = info[4] || '';

        // 직접입력 기본 활성 (저장된 값 없을 때)
        if(!recs[n] &amp;&amp; !isAbsent) setOpDefault();

        renderQs(); renderIds();
    }

    function fmtNum(v) { return (v % 1 === 0) ? v.toString() : parseFloat(v.toFixed(4)).toString(); }

    function renderQs() {
        const div = document.getElementById('qArea');
        const passLimit = parseFloat(document.getElementById('passLimit').value);
        let totalScore = 0;
        for(let i=0; i&lt;qCfgs.length; i++) {
            const val = parseFloat(selScores[i] || 0);
            if(!qCfgs[i].n.includes(&quot;가산점&quot;)) totalScore += val;
        }
        const isPassed = totalScore &gt;= passLimit;
        div.innerHTML = qCfgs.map((q,i) =&gt; {
            const showDelBtn = !hasFirstSave;
            const delBtnHtml = showDelBtn ? `&lt;button class=&quot;btn-del-q&quot; onclick=&quot;delQ(${i})&quot; title=&quot;삭제&quot;&gt;×&lt;/button&gt;` : '';
            const fontSize = q.n.length &lt;= 4 ? '12px' : '9px';
            const isText = (q.type === 'text');
            if(isText) {
                const curVal = selScores[i] !== undefined ? selScores[i] : '';
                return `&lt;div class=&quot;q-row&quot; id=&quot;q_row_${i+1}&quot;&gt;
                    &lt;div class=&quot;q-label&quot;&gt;&lt;span class=&quot;q-label-text&quot; style=&quot;font-size:${fontSize}&quot;&gt;${q.n}&lt;/span&gt;&lt;/div&gt;
                    &lt;input class=&quot;q-text-input&quot; type=&quot;text&quot; placeholder=&quot;주관식 입력&quot; value=&quot;${curVal}&quot;
                        oninput=&quot;setTextScore(${i}, this.value)&quot;&gt;
                    ${delBtnHtml}
                &lt;/div&gt;`;
            } else {
                return `&lt;div class=&quot;q-row&quot; id=&quot;q_row_${i+1}&quot;&gt;
                    &lt;div class=&quot;q-label&quot;&gt;&lt;span class=&quot;q-label-text&quot; style=&quot;font-size:${fontSize}&quot;&gt;${q.n}&lt;/span&gt;&lt;/div&gt;
                    &lt;div class=&quot;score-group&quot;&gt;${q.s.map(s =&gt; {
                        const isActive = (selScores[i] == s);
                        const isPass = isActive &amp;&amp; isPassed;
                        return `&lt;button class=&quot;btn-score ${isActive?'active':''} ${isPass?'pass-active':''}&quot;
                                onclick=&quot;selectScore(${i},${s})&quot;&gt;${fmtNum(s)}&lt;/button&gt;`;
                    }).join('')}&lt;/div&gt;
                    ${delBtnHtml}
                &lt;/div&gt;`;
            }
        }).join('');
        recalc();
        applyExtKbAfterRender();
    }

    function setTextScore(qIdx, val) { selScores[qIdx] = val; }

    function selectScore(qIdx, score) {
        if(selScores[qIdx] == score) { delete selScores[qIdx]; renderQs(); return; }
        if(qIdx === 1 &amp;&amp; score == 15 &amp;&amp; !hasFirstSave) {
            q2DelClickCount++;
            if(q2DelClickTimer) clearTimeout(q2DelClickTimer);
            q2DelClickTimer = setTimeout(() =&gt; { q2DelClickCount = 0; }, 3000);
            if(q2DelClickCount &gt;= 6) {
                q2DelClickCount = 0;
                if(confirm('모든항목을 삭제합니다. 정말하시겠습니까?')) {
                    if(confirm('심사중 클릭 시 채점이 불가합니다. 채점전이면 ok를 클릭하세요')) {
                        qCfgs = []; selScores = {};
                        saveQ(); renderQs(); renderQNameTable(); return;
                    }
                }
                return;
            }
        }
        if(qIdx === 0) {
            const midIdx = Math.floor(qCfgs[0].s.length / 2);
            const midScore = qCfgs[0].s[midIdx];
            if(score == midScore) {
                middleClickCount++;
                if(middleClickTimer) clearTimeout(middleClickTimer);
                middleClickTimer = setTimeout(() =&gt; { middleClickCount = 0; }, 2000);
                if(middleClickCount === 6) {
                    for(let i=0; i&lt;Math.min(12,qCfgs.length); i++) {
                        if(qCfgs[i].type !== 'text') selScores[i] = qCfgs[i].s[Math.floor(qCfgs[i].s.length/2)];
                    }
                    middleClickCount = 0; renderQs();
                    alert('✨ 비밀기능 발동! Q1~Q12 모든 항목이 중간값으로 설정되었습니다.');
                    return;
                }
            } else { middleClickCount = 0; }
        }
        selScores[qIdx] = score; renderQs();
    }

    function delQ(idx) {
        if(!confirm('항목을 삭제하시겠습니까?')) return;
        qCfgs.splice(idx,1); saveQ(); renderQs(); renderQNameTable();
    }

    function deleteRecord(idx) {
        if(!confirm('해당 입력값이 삭제됩니다')) return;
        delete recs[idx];
        localStorage.setItem('v3_recs', JSON.stringify(recs));
        if(Object.keys(recs).length === 0) hasFirstSave = false;
        renderTable(); renderIds(); renderQs();
        alert('삭제되었습니다.');
    }

    function setAbsent() {
        const guide = document.getElementById('opinionGuide');
        const ta = document.getElementById('opinion');
        const absentBtn = document.getElementById('absentBtn');
        const opBtns = document.querySelectorAll('.op-btn');
        if(isAbsent) {
            isAbsent = false; absentBtn.classList.remove('active');
            ta.value = ''; ta.readOnly = false; ta.style.display = 'none';
            guide.style.display = 'block'; currentOpinionBtn = null;
            autoSaveOpinion(); return;
        }
        isAbsent = true; opBtns.forEach(b =&gt; b.classList.remove('active'));
        absentBtn.classList.add('active'); currentOpinionBtn = absentBtn;
        guide.style.display = 'none'; ta.style.display = 'block';
        // 미출석_ 기본값, 뒤에 사유 직접 입력 가능
        ta.readOnly = false;
        if(!ta.value || ta.value === '불참' || ta.value === '미출석_') ta.value = '미출석_';
        ta.focus();
        // 커서를 맨 뒤로
        ta.setSelectionRange(ta.value.length, ta.value.length);
        autoSaveOpinion();
    }

    function setOp(t, e) {
        const guide = document.getElementById('opinionGuide');
        const ta = document.getElementById('opinion');
        const btns = document.querySelectorAll('.op-btn');
        const clickedBtn = document.getElementById('opBtn_' + t) || (e &amp;&amp; e.currentTarget) || (typeof event !== 'undefined' ? event.target : null);
        isAbsent = false;
        document.getElementById('absentBtn').classList.remove('active');
        if(currentOpinionBtn === clickedBtn &amp;&amp; t !== '직접입력') {
            btns.forEach(b =&gt; b.classList.remove('active'));
            ta.value = ''; ta.readOnly = false; ta.style.display = 'none';
            guide.style.display = 'block'; currentOpinionBtn = null; autoSaveOpinion(); return;
        }
        btns.forEach(b =&gt; b.classList.remove('active'));
        if(clickedBtn) clickedBtn.classList.add('active');
        currentOpinionBtn = clickedBtn;
        guide.style.display = 'none'; ta.style.display = 'block';
        if(t === '직접입력') { ta.readOnly = false; ta.value = ''; ta.focus(); }
        else if(t === '의견없음') { ta.readOnly = true; ta.value = ''; }
        else { ta.readOnly = true; ta.value = t; }
        autoSaveOpinion();
    }

    function renderQNameTable() {
        const header = document.getElementById('qNameHeader');
        header.innerHTML = qCfgs.map((q,i) =&gt; {
            const w = 100/qCfgs.length;
            return `&lt;th contenteditable=&quot;true&quot; class=&quot;bulk-input-cell&quot; style=&quot;width:${w}%&quot;&gt;${q.n}&lt;/th&gt;`;
        }).join('');
        const cells = document.querySelectorAll('#qNameHeader th');
        cells.forEach((cell,idx) =&gt; {
            cell.addEventListener('paste', function(e) {
                e.preventDefault();
                const text = (e.clipboardData||window.clipboardData).getData('text');
                const values = text.split('\t');
                values.forEach((val,i) =&gt; { if(cells[idx+i]) cells[idx+i].innerText = val.trim(); });
            });
        });
    }

    function extractQNames() {
        const cells = Array.from(document.querySelectorAll('#qNameHeader th'));
        qCfgs.forEach((q,i) =&gt; { if(cells[i]) { const n=cells[i].innerText.trim(); if(n) q.n=n; } });
        saveQ(); renderQs(); renderQNameTable();
        alert('항목명이 업데이트되었습니다.');
    }

    function resetQNames() {
        if(!confirm('초기값으로 변경됩니다.')) return;
        qCfgs = JSON.parse(JSON.stringify(defaultQCfgs));
        saveQ(); renderQs(); renderQNameTable();
        alert('초기값으로 변경되었습니다.');
    }

    function renderBulk() {
        const div = document.getElementById('bulkArea');
        const table = document.createElement('table');
        table.className = 'info-table'; table.style.marginTop = '0';
        const thead = document.createElement('thead');
        const trh = document.createElement('tr');
        trh.innerHTML = '&lt;th style=&quot;width:10%&quot;&gt;순번&lt;/th&gt;&lt;th style=&quot;width:18%&quot;&gt;1-1&lt;/th&gt;&lt;th style=&quot;width:18%&quot;&gt;1-2&lt;/th&gt;&lt;th style=&quot;width:18%&quot;&gt;1-3&lt;/th&gt;&lt;th style=&quot;width:18%&quot;&gt;1-4&lt;/th&gt;&lt;th style=&quot;width:18%&quot;&gt;정보2&lt;/th&gt;';
        thead.appendChild(trh); table.appendChild(thead);
        const tbody = document.createElement('tbody');
        for(let i=1; i&lt;=idMax; i++) {
            const tr = document.createElement('tr');
            const info = tMap[i] || ['','','','',''];
            tr.innerHTML = `&lt;td style=&quot;background:#f0f0f0; font-weight:bold;&quot;&gt;N${i}&lt;/td&gt;`;
            info.forEach((v, colIdx) =&gt; {
                const td = document.createElement('td');
                td.contentEditable = true; td.className = 'bulk-input-cell'; td.innerText = v;
                td.addEventListener('paste', function(e) {
                    e.preventDefault();
                    const text = (e.clipboardData||window.clipboardData).getData('text');
                    const rows = text.split('\n').filter(r=&gt;r.trim());
                    rows.forEach((rowText, rowOffset) =&gt; {
                        const tgtRowIdx = (i-1)+rowOffset;
                        if(tgtRowIdx &gt;= idMax) return;
                        const values = rowText.split('\t');
                        const tgtRow = tbody.querySelectorAll('tr')[tgtRowIdx];
                        if(!tgtRow) return;
                        const tgtCells = Array.from(tgtRow.querySelectorAll('td')).slice(1);
                        values.forEach((val,valIdx) =&gt; { const ci=colIdx+valIdx; if(tgtCells[ci]) tgtCells[ci].innerText=val.trim(); });
                    });
                });
                tr.appendChild(td);
            });
            tbody.appendChild(tr);
        }
        table.appendChild(tbody); div.innerHTML = ''; div.appendChild(table);
    }

    function extractTInfo() {
        const rows = document.querySelector('#bulkArea table').querySelectorAll('tbody tr');
        rows.forEach((tr,idx) =&gt; {
            const cells = Array.from(tr.querySelectorAll('td')).slice(1);
            tMap[idx+1] = cells.map(c=&gt;c.innerText.trim());
        });
        localStorage.setItem('v3_tmap', JSON.stringify(tMap));
        loadN(curIdx);
        alert('대상자 정보가 업데이트되었습니다.');
    }

    function clearBulkTable() {
        if(!confirm('대상자 정보를 모두 초기화하시겠습니까?')) return;
        tMap = {};
        localStorage.setItem('v3_tmap', JSON.stringify(tMap));
        renderBulk(); loadN(curIdx);
        alert('대상자 정보가 초기화되었습니다.');
    }

    function recalc() {
        let sum = 0, gasun = 0;
        qCfgs.forEach((q,i) =&gt; {
            if(q.type === 'text') return;
            let v = parseFloat(selScores[i]||0);
            if(q.n.includes(&quot;가산점&quot;)) {
                if(q.n.includes(&quot;%&quot;)) gasun += (sum*(v/100));
                else gasun += v;
            } else { sum += v; }
        });
        const total = sum + gasun;
        const totalDisplay = (total % 1 === 0) ? total.toString() : parseFloat(total.toFixed(4)).toString();
        document.getElementById('totalBox').innerText = `TOTAL: ${totalDisplay}`;
        document.getElementById('gasunDisplay').innerText = `가산점: ${fmtNum(gasun)}`;
        const passLimit = parseFloat(document.getElementById('passLimit').value);
        document.getElementById('totalBox').className = (total &gt;= passLimit &amp;&amp; total &gt; 0) ? 'total-view is-pass' : 'total-view';
    }

    function saveData() {
        if(!document.getElementById('eventTitle').value || !document.getElementById('judgeName').value) {
            alert('소속 및 성명을 입력해주세요!');
            document.getElementById('eventTitle').focus(); return;
        }
        if(isAbsent) {
            const absentScores = {};
            qCfgs.forEach((q,i) =&gt; { if(q.type !== 'text') absentScores[i] = 0; });
            const absentOpVal = document.getElementById('opinion').value.replace(/[\r\n]+/g,' ').trim() || '미출석_';
            recs[curIdx] = { sc: absentScores, op: absentOpVal, tot: '0', absent: true };
            localStorage.setItem('v3_recs', JSON.stringify(recs));
            localStorage.removeItem('v3_opinion_tmp_' + curIdx);
            hasFirstSave = true;
            alert(`N${curIdx} [미출석] 저장완료! 다음으로 이동합니다.`);
            let next = curIdx+1&gt;idMax ? 1 : curIdx+1;
            loadN(next); renderTable(); renderIds(); return;
        }
        for(let i=0; i&lt;qCfgs.length; i++) {
            if(qCfgs[i].type === 'text') continue;
            if(selScores[i]===undefined) {
                alert(`${qCfgs[i].n} 점수가 누락되었습니다!`);
                const targetRow = document.getElementById(`q_row_${i+1}`);
                if(targetRow) { targetRow.scrollIntoView({behavior:'smooth',block:'center'}); targetRow.style.background='#ffcccc'; setTimeout(()=&gt;{targetRow.style.background='';},2000); }
                return;
            }
        }
        // 평가의견 저장 시 Enter 제거
        const rawOpVal = document.getElementById('opinion').value;
        const opVal = rawOpVal.replace(/[\r\n]+/g, ' ').trim();
        document.getElementById('opinion').value = opVal;

        if(!currentOpinionBtn &amp;&amp; !opVal.trim()) {
            alert('평가의견을 선택하거나 직접 입력해주세요!');
            document.querySelector('.op-btn').scrollIntoView({behavior:'smooth',block:'center'}); return;
        }
        const totDisplay = document.getElementById('totalBox').innerText.split(': ')[1];
        recs[curIdx] = { sc:{...selScores}, op:opVal, tot:totDisplay };
        localStorage.setItem('v3_recs', JSON.stringify(recs));
        localStorage.removeItem('v3_opinion_tmp_' + curIdx);
        const isFirstSave = !hasFirstSave;
        hasFirstSave = true;
        if(isFirstSave) alert(`N${curIdx} 저장완료! 다음으로 이동합니다.\n\n⚠️ 항목삭제버튼이 사라집니다.`);
        else alert(`N${curIdx} 저장완료! 다음으로 이동합니다.`);
        let next = curIdx+1&gt;idMax ? 1 : curIdx+1;
        loadN(next); renderTable(); renderIds();
        const target = document.getElementById('q_row_1');
        if(target) target.scrollIntoView({behavior:'smooth',block:'center'});
    }

    function truncOp(text) {
        if(!text) return '';
        return text.length &gt; 10 ? text.substring(0,10) + '...' : text;
    }

    function renderTable() {
        const hr = document.getElementById('thr'), br = document.getElementById('tbr');
        hr.innerHTML = '&lt;th&gt;순번&lt;/th&gt;' + qCfgs.map(q=&gt;`&lt;th&gt;${q.n}&lt;/th&gt;`).join('') + '&lt;th&gt;합계&lt;/th&gt;&lt;th&gt;의견&lt;/th&gt;&lt;th&gt;1-1&lt;/th&gt;&lt;th&gt;1-2&lt;/th&gt;&lt;th&gt;1-3&lt;/th&gt;&lt;th&gt;1-4&lt;/th&gt;&lt;th&gt;정보2&lt;/th&gt;&lt;th&gt;삭제&lt;/th&gt;';
        br.innerHTML = '';
        Object.keys(recs).sort((a,b)=&gt;a-b).forEach(idx =&gt; {
            const r = recs[idx];
            // 7번 버그수정: info 항상 5칸 보장
            const rawInfo = tMap[idx] || [];
            const info = [rawInfo[0]||'', rawInfo[1]||'', rawInfo[2]||'', rawInfo[3]||'', rawInfo[4]||''];
            const tr = document.createElement('tr');
            if(r.absent) tr.style.background = '#ffe0e0';
            const opSafe = (r.op||'').replace(/&quot;/g,'&amp;quot;').replace(/&lt;/g,'&amp;lt;');
            tr.innerHTML = `&lt;td&gt;N${idx}&lt;/td&gt;` + qCfgs.map((q,i)=&gt;`&lt;td&gt;${r.sc[i]!==undefined?r.sc[i]:0}&lt;/td&gt;`).join('') +
                `&lt;td&gt;${r.tot}&lt;/td&gt;&lt;td class=&quot;opinion-cell&quot; title=&quot;${opSafe}&quot;&gt;${truncOp(r.op)}&lt;/td&gt;` +
                info.map(v=&gt;`&lt;td&gt;${(v||'').replace(/&lt;/g,'&amp;lt;')}&lt;/td&gt;`).join('') +
                `&lt;td&gt;&lt;button class=&quot;btn-del-record&quot; onclick=&quot;deleteRecord(${idx})&quot;&gt;X&lt;/button&gt;&lt;/td&gt;`;
            br.appendChild(tr);
        });
    }

    /* ===== 데이터 복사 (엑셀용) ===== */
    function copyTableData() {
        const cleanOp = (op) =&gt; (op||'').replace(/[\r\n\t]+/g,' ').trim();
        let text = &quot;순번\t&quot; + qCfgs.map(q=&gt;q.n).join(&quot;\t&quot;) + &quot;\t합계\t의견\t1-1\t1-2\t1-3\t1-4\t정보2\n&quot;;
        Object.keys(recs).sort((a,b)=&gt;a-b).forEach(idx =&gt; {
            const r = recs[idx], info = tMap[idx] || ['','','','',''];
            text += `N${idx}\t` + qCfgs.map((q,i)=&gt;r.sc[i]!==undefined?r.sc[i]:0).join(&quot;\t&quot;) + `\t${r.tot}\t${cleanOp(r.op)}\t${info.join('\t')}\n`;
        });
        navigator.clipboard.writeText(text).then(() =&gt; {
            alert('데이터가 클립보드에 복사되었습니다!\n엑셀에 붙여넣기(Ctrl+V) 하세요.');
        }).catch(() =&gt; { alert('복사 실패. 브라우저 권한을 확인해주세요.'); });
    }

    /* ===== 댓글 붙여넣기 (티스토리 댓글 최적화: ▶ 구분자, 한 줄 출력) ===== */
    function copyForComment() {
        const eventTitle = document.getElementById('eventTitle').value || '채점결과';
        const judgeName = document.getElementById('judgeName').value || '평가자';
        const cleanOp = (op) =&gt; (op||'').replace(/[\r\n|▶]+/g,' ').trim();
        // 헤더
        const header = &quot;순번|&quot; + qCfgs.map(q=&gt;q.n).join(&quot;|&quot;) + &quot;|합계|의견&quot;;
        // 각 N 레코드를 ▶ 로 이어 한 줄로
        const rows = Object.keys(recs).sort((a,b)=&gt;a-b).map(idx =&gt; {
            const r = recs[idx];
            return `N${idx}|` + qCfgs.map((q,i)=&gt;r.sc[i]!==undefined?r.sc[i]:0).join(&quot;|&quot;) + `|${r.tot}|${cleanOp(r.op)}`;
        });
        // 라인1: 제목+헤더 / 라인2: 데이터 한 줄 (▶ 구분)
        const line1 = `[${eventTitle}_${judgeName}] ${header}`;
        const line2 = rows.join(' ▶ ');
        const text = line1 + '\n' + line2;
        navigator.clipboard.writeText(text).then(() =&gt; {
            alert('댓글용 데이터가 복사되었습니다!\n\n  헤더줄 + 데이터줄(▶구분) 2줄로 구성됩니다.\n티스토리 댓글란에 붙여넣기 하세요.\n(티스토리 특성상 줄바꿈이 합쳐질 수 있으나, ▶ 기호로 구분 확인 가능합니다)');
        }).catch(() =&gt; { alert('복사 실패.'); });
    }

    /* ===== 날짜시간 문자열 생성 헬퍼 ===== */
    function getNowStr() {
        const d = new Date();
        const pad = n =&gt; String(n).padStart(2,'0');
        return `${d.getFullYear()}${pad(d.getMonth()+1)}${pad(d.getDate())}_${pad(d.getHours())}${pad(d.getMinutes())}`;
    }

    /* ===== 엑셀 제목행 입력 토글 ===== */
    function toggleExcelTitleInput() {
        const checked = document.getElementById('excelIncludeTitle').checked;
        document.getElementById('excelTitleInputWrap').style.display = checked ? 'block' : 'none';
    }

    /* ===== 파일명: 소속_성명_날짜_현재시간 ===== */
    function downloadCSV() {
        const eventTitle = document.getElementById('eventTitle').value || '채점결과';
        const judgeName  = document.getElementById('judgeName').value  || '평가자';
        const nowStr     = getNowStr();

        // 옵션 체크 상태
        const includeInfo  = !!(document.getElementById('excelIncludeInfo')  &amp;&amp; document.getElementById('excelIncludeInfo').checked);
        const includeTitle = !!(document.getElementById('excelIncludeTitle') &amp;&amp; document.getElementById('excelIncludeTitle').checked);
        const titleText    = includeTitle ? (document.getElementById('excelTitleText').value.trim()) : '';

        // 날짜 YYMMDD
        const d = new Date();
        const pad = n =&gt; String(n).padStart(2,'0');
        const dateShort = `${String(d.getFullYear()).slice(2)}${pad(d.getMonth()+1)}${pad(d.getDate())}`;

        // ── 구버전과 동일한 단순 문자열 조합 방식 ──
        let csv = '\uFEFF'; // BOM

        // [옵션] 첫행 제목: 체크+내용 있을 때만 첫 번째 셀에 딱 한 번, 나머지는 그대로
        if(includeTitle &amp;&amp; titleText &amp;&amp; titleText.length &gt; 0) {
            csv += '&quot;' + titleText.replace(/&quot;/g, '&quot;&quot;') + '&quot;\n';
        }

        // 헤더행 (구버전 방식 그대로 + info 옵션)
        if(includeInfo) {
            csv += '순번,' + qCfgs.map(q=&gt;q.n).join(',') + ',합계,의견,1-1,1-2,1-3,1-4,정보2\n';
        } else {
            csv += '순번,' + qCfgs.map(q=&gt;q.n).join(',') + ',합계,의견\n';
        }

        // 데이터행 (구버전 방식 그대로)
        Object.keys(recs).sort((a,b)=&gt;a-b).forEach(idx =&gt; {
            const r    = recs[idx];
            const info = tMap[idx] || ['','','','',''];
            if(includeInfo) {
                csv += `N${idx},` + qCfgs.map((q,i)=&gt;r.sc[i]!==undefined?r.sc[i]:0).join(',') + `,&quot;${r.tot}&quot;,&quot;${r.op}&quot;,&quot;${info.join('&quot;,&quot;')}&quot;\n`;
            } else {
                csv += `N${idx},` + qCfgs.map((q,i)=&gt;r.sc[i]!==undefined?r.sc[i]:0).join(',') + `,&quot;${r.tot}&quot;,&quot;${r.op}&quot;\n`;
            }
        });

        // 서명란: 빈 행 1개 뒤, (인)이 [의견] 열 바로 아래 위치
        // 의견 열 인덱스 = 순번(1) + qCfgs.length + 합계(1) + 의견(1) - 1 = qCfgs.length + 2
        // (인) 앞에 날짜, 성함:, 성함 3칸이 오므로 시작 쉼표 = 의견열인덱스 - 3
        const opColIdx = 1 + qCfgs.length + 2; // 의견 열 (0-based 인덱스)
        const sigStart = Math.max(0, opColIdx - 3); // 날짜 시작 위치
        csv += '\n'; // 빈 행 1
        csv += ','.repeat(sigStart) + dateShort + ',성함 :,' + judgeName + ',(인)\n';

        const blob = new Blob([csv], {type:'text/csv;charset=utf-8;'});
        const link = document.createElement('a');
        link.href  = URL.createObjectURL(blob);
        link.download = `${eventTitle}_${judgeName}_${nowStr}.csv`;
        link.click();
    }

    /* ===== 메일 발송 (TinyURL 실제 단축링크 비동기 생성 포함) ===== */
    async function sendEmailWithUpdate() {
        const includeRecovery = document.getElementById('includeRecoveryUrl').checked;
        const includeScoreDetail = document.getElementById('includeScoreDetail').checked;
        const includeTiny = document.getElementById('includeTinyUrl').checked;

        const fullDataObj = {
            q:qCfgs, t:tMap, r:recs,
            e:document.getElementById('eventTitle').value,
            l:document.getElementById('passLimit').value,
            n:document.getElementById('notice').value,
            j:document.getElementById('judgeName').value
        };
        const compressed1 = LZString.compressToEncodedURIComponent(JSON.stringify(fullDataObj));
        const fullDataUrl = window.location.origin + window.location.pathname + '?d=' + compressed1;

        const compressed2 = LZString.compressToEncodedURIComponent(JSON.stringify({r:recs}));
        const ultraCompressedUrl = window.location.origin + window.location.pathname + '?c=' + btoa(compressed2);

        const urlLength1 = fullDataUrl.length;
        const urlLength3 = ultraCompressedUrl.length;
        let urlWarning = '';
        if(urlLength1 &gt; 2000) urlWarning = `\n주의: 데이터 복구 주소가 ${urlLength1}자로 매우 깁니다.\n`;

        // TinyURL 실제 생성 (체크 시)
        let tinyShortUrl = '';
        if(includeTiny) {
            try {
                const res = await fetch(`https://tinyurl.com/api-create.php?url=${encodeURIComponent(fullDataUrl)}`);
                tinyShortUrl = (await res.text()).trim();
            } catch(e) {
                tinyShortUrl = '(TinyURL 생성 실패 - 네트워크 확인)';
            }
        }

        const to         = document.getElementById('emailTo').value;
        const eventTitle = document.getElementById('eventTitle').value || '채점';
        const judgeName  = document.getElementById('judgeName').value  || '평가자';
        const nowStr     = getNowStr();
        const subject    = encodeURIComponent(`${eventTitle}_${judgeName}_${nowStr}_평가표`);
        const cleanOp    = (op) =&gt; (op||'').replace(/[\r\n]+/g,' ').trim();

        let body = `${eventTitle}_${judgeName} 의 평가지입니다! (${nowStr})\n\n`;

        body += &quot;★★★ [데이터엑셀저장(pc)](녹색버튼)을 반드시 클릭 후 엑셀파일 첨부 ★★★\n&quot;;
        body += &quot;★★★ 첨부(ex)클립) 파일 버튼 클릭 후 [소속_성함_금일날짜시간]으로 된 파일을 클릭 후 첨부 ★★★\n&quot;;
        body += &quot;★★★ 파일은 대부분 최상단에 배치되어 있으며 최종시간명 확인 후 첨부 ★★★\n\n&quot;;

        body += &quot;★ 엑셀데이터로 채점 시 오류가 없습니다. 채점 후 엑셀데이터를 첨부하여 메일 발송을 유도하세요.\n&quot;;
        body += &quot;  단, 첨부파일이 없는 경우에만 하단 내용을 참고바랍니다.\n\n&quot;;
        body += &quot;하단 점수를 복사 후 https://0-1.kr/93 으로 텍스트 나누기 실행이 가능함.\n\n&quot;;

        body += &quot;=&quot;.repeat(51) + &quot;\n1. 실시간 데이터 정산내용 (요약)\n&quot; + &quot;=&quot;.repeat(51) + &quot;\n&quot;;
        body += &quot;순번|&quot; + qCfgs.map(q=&gt;q.n).join(&quot;|&quot;) + &quot;|합계|의견\n&quot;;
        Object.keys(recs).sort((a,b)=&gt;a-b).forEach(idx =&gt; {
            const r = recs[idx];
            body += `N${idx}|` + qCfgs.map((q,i)=&gt;r.sc[i]!==undefined?r.sc[i]:0).join(&quot;|&quot;) + `|${r.tot}|${cleanOp(r.op)}\n`;
        });

        body += &quot;\n&quot; + &quot;=&quot;.repeat(51) + &quot;\n1-3. 평가항목(기본값) 정산내용\n&quot; + &quot;=&quot;.repeat(51) + &quot;\n&quot;;
        body += &quot;순번|&quot; + qCfgs.map((q,i)=&gt;`Q${i+1}`).join(&quot;|&quot;) + &quot;|합계|의견\n&quot;;
        Object.keys(recs).sort((a,b)=&gt;a-b).forEach(idx =&gt; {
            const r = recs[idx];
            body += `N${idx}|` + qCfgs.map((q,i)=&gt;r.sc[i]!==undefined?r.sc[i]:0).join(&quot;|&quot;) + `|${r.tot}|${cleanOp(r.op)}\n`;
        });

        body += &quot;\n&quot; + &quot;=&quot;.repeat(51) + &quot;\n1-2. 점수값만 (순번 제외, | 구분)\n&quot; + &quot;=&quot;.repeat(51) + &quot;\n&quot;;
        body += qCfgs.map(q=&gt;q.n).join(&quot;|&quot;) + &quot;|합계|의견\n&quot;;
        Object.keys(recs).sort((a,b)=&gt;a-b).forEach(idx =&gt; {
            const r = recs[idx];
            body += qCfgs.map((q,i)=&gt;r.sc[i]!==undefined?r.sc[i]:0).join(&quot;|&quot;) + `|${r.tot}|${cleanOp(r.op)}\n`;
        });

        body += &quot;\n&quot;;

        if(includeScoreDetail) {
            body += &quot;=&quot;.repeat(51) + &quot;\n2. 전체 상세 정보리스트\n&quot; + &quot;=&quot;.repeat(51) + &quot;\n&quot;;
            body += &quot;순번|&quot; + qCfgs.map(q=&gt;q.n).join(&quot;|&quot;) + &quot;|합계|의견|1-1|1-2|1-3|1-4|정보2\n&quot;;
            Object.keys(recs).sort((a,b)=&gt;a-b).forEach(idx =&gt; {
                const r = recs[idx], info = tMap[idx]||['','','','',''];
                body += `N${idx}|` + qCfgs.map((q,i)=&gt;r.sc[i]!==undefined?r.sc[i]:0).join(&quot;|&quot;) + `|${r.tot}|${cleanOp(r.op)}|${info.join('|')}\n`;
            });
            body += &quot;\n&quot;;
        }

        if(includeTiny) {
            body += &quot;=&quot;.repeat(51) + &quot;\n3-3. Tiny URL 짧은 링크 안내\n&quot; + &quot;=&quot;.repeat(51) + &quot;\n&quot;;
            body += `단축 링크: ${tinyShortUrl}\n\n`;
            body += &quot;TinyURL은 긴 링크를 짧게 줄여주는 무료 단축 서비스입니다.\n&quot;;
            body += &quot;공식 사이트: https://tinyurl.com\n&quot;;
            body += &quot;장점: URL 길이 제한 없이 공유 가능, 모바일·문자 메시지 전달 편리\n\n&quot;;
            body += &quot;※ 해당 링크는 채점자의 채점정보를 링크를 통해서 모두 확인 가능합니다.\n&quot;;
            body += &quot;※ 해당 기능 체크 시 첨부파일을 링크를 통해 직접 다운받을 수 있습니다.\n&quot;;
            body += &quot;※ 긴 채점은 오류가 있을 수 있으니 반드시 엑셀데이터를 메일에 첨부해서 확인바랍니다.\n\n&quot;;
        }

        if(includeRecovery) {
            body += &quot;=&quot;.repeat(51) + &quot;\n3-1. 데이터 복구 주소 (서식 + 입력값)\n&quot; + &quot;=&quot;.repeat(51) + &quot;\n&quot;;
            body += `주소 길이: ${urlLength1}자 (압축적용)\n${fullDataUrl}\n${urlWarning}\n`;
        }

        body += &quot;=&quot;.repeat(51) + &quot;\n4. 접속 정보\n&quot; + &quot;=&quot;.repeat(51) + &quot;\n&quot;;
        body += &quot;모두의채점계산기(원본) 바로가기: https://0-1.kr/85\n&quot;;
        body += &quot;모두의계산기 카테고리 바로가기: https://0-1.kr/category/%EB%AA%A8%EB%91%90%EC%9D%98%EA%B3%84%EC%82%B0%EA%B8%B0\n&quot;;
        body += &quot;\n⚠️ 데이터 복구는 반드시 입력한 브라우저와 동일 브라우저에서만 작동합니다.\n&quot;;
        body += &quot;   값이 나오지 않은 경우 다른 브라우저이오니 이점 반드시 확인바랍니다.\n&quot;;
        body += &quot;\n  데이터 복구 주소가 작동하지 않으면:\n1. 위 바로가기로 접속\n2. [데이터엑셀저장] 버튼으로 받은 CSV 파일 열기\n3. 데이터 복사 후 계산기에 붙여넣기\n&quot;;

        window.location.href = `mailto:${to}?subject=${subject}&amp;body=${encodeURIComponent(body)}`;
    }

    /* ===== A번: 장치저장 (파라미터 없는 링크에서도 복원) ===== */
    function saveToDevice() {
        const dataObj = {
            q:qCfgs, t:tMap,
            e:document.getElementById('eventTitle').value,
            l:document.getElementById('passLimit').value,
            n:document.getElementById('notice').value,
            j:document.getElementById('judgeName').value
        };
        const compressed = LZString.compressToEncodedURIComponent(JSON.stringify(dataObj));
        localStorage.setItem('v3_device_save', compressed);
        // 주소 표시 (파라미터 포함 버전도 함께 생성)
        const url = window.location.origin + window.location.pathname + '?d=' + compressed;
        document.getElementById('shareUrlInput').value = url;
        document.getElementById('shareUrlNotice').style.display = 'none';
        const urlLength = url.length;
        if(urlLength &gt; 2000) alert(`서식이 장치에 저장되었습니다!\n\n주의: URL이 ${urlLength}자로 매우 깁니다.\n일부 브라우저에서 작동하지 않을 수 있습니다.`);
        else alert(`서식이 장치에 저장되었습니다!\n이 기기에서 링크 재접속 시 자동으로 복원됩니다.`);
    }

    /* ===== A번: 주소복사 ===== */
    function copyShareUrl() {
        const dataObj = {
            q:qCfgs, t:tMap,
            e:document.getElementById('eventTitle').value,
            l:document.getElementById('passLimit').value,
            n:document.getElementById('notice').value,
            j:document.getElementById('judgeName').value
        };
        const compressed = LZString.compressToEncodedURIComponent(JSON.stringify(dataObj));
        const url = window.location.origin + window.location.pathname + '?d=' + compressed;
        document.getElementById('shareUrlInput').value = url;
        // 복사
        const inp = document.getElementById('shareUrlInput');
        inp.select(); document.execCommand('copy');
        // 안내문구 표시
        const notice = document.getElementById('shareUrlNotice');
        notice.style.display = 'block';
        const urlLength = url.length;
        if(urlLength &gt; 2000) alert(`주소가 복사되었습니다!\n\n주의: URL이 ${urlLength}자로 매우 깁니다.`);
    }

    /* ===== A번: 공초 - 캐시 직접 삭제 (링크 없음) ===== */
    function factoryReset() {
        if(!confirm(&quot;⚠️ 채점 중 클릭 시 모든 데이터가 삭제됩니다&quot;)) return;
        if(!confirm(&quot;❗ 정말 삭제하시겠습니까?&quot;)) return;
        localStorage.clear();
        // 페이지 새로고침 (링크 이동 없이 자체 초기화)
        qCfgs = JSON.parse(JSON.stringify(defaultQCfgs));
        tMap = {}; recs = {}; selScores = {}; curIdx = 1; idMax = 20;
        hasFirstSave = false; currentOpinionBtn = null; isAbsent = false;
        document.getElementById('eventTitle').value = '';
        document.getElementById('judgeName').value = '';
        document.getElementById('emailTo').value = '';
        document.getElementById('notice').value = '';
        document.getElementById('passLimit').value = 60;
        document.getElementById('shareUrlInput').value = '';
        document.getElementById('shareUrlNotice').style.display = 'none';
        renderIds(); renderQs(); renderBulk(); renderQNameTable(); loadN(1); renderTable();
        alert('공장초기화 완료. 모든 데이터가 삭제되었습니다.');
    }

    /* ===== 초기화: 평가의견만 삭제 ===== */
    function softReset() {
        if(confirm(&quot;점수입력값과 평가의견만 삭제됩니다.\n소속·성명·서식·대상자정보는 유지됩니다.\n\n계속하시겠습니까?&quot;)) {
            localStorage.removeItem('v3_recs');
            for(let i=1; i&lt;=idMax; i++) localStorage.removeItem('v3_opinion_tmp_' + i);
            hasFirstSave = false; recs = {}; selScores = {};
            renderIds(); renderQs(); renderTable(); loadN(curIdx);
        }
    }

    function saveQ() { localStorage.setItem('v3_qcf', JSON.stringify(qCfgs)); }

    function promptAddQ() {
        const name = prompt(&quot;항목명(예: Q13, 가산점, 특이사항)&quot;);
        if(!name) return;
        const typeChoice = confirm(&quot;숫자 점수 항목이면 [확인], 주관식 텍스트 항목이면 [취소]&quot;);
        if(typeChoice) {
            const scores = prompt(&quot;점수(쉼표구분, 예: 1,2,3 또는 소수 0.5,1,1.5)&quot;);
            if(scores) {
                qCfgs.push({n:name, s:scores.split(',').map(Number), type:'num'});
                saveQ(); renderQs(); renderQNameTable();
            }
        } else {
            qCfgs.push({n:name, s:[], type:'text'});
            saveQ(); renderQs(); renderQNameTable();
        }
    }

    function moveN(d) { let n=curIdx+d; if(n&lt;1) n=idMax; if(n&gt;idMax) n=1; loadN(n); }
    function adjM(d) { idMax=Math.max(1,idMax+d); renderIds(); renderBulk(); renderCommentRangeButtons(); }

    /* ===== WakeLock: off=꺼진전구( ), on=켜진전구( ) ===== */
    async function toggleWakeLock() {
        const btn=document.getElementById('wakeLockBtn'), btnMini=document.getElementById('wakeLockBtnMini');
        const icon=document.getElementById('lockIcon'), text=document.getElementById('lockText');
        const miniIcon=document.getElementById('wakeIcon'), miniText=document.getElementById('wakeText');
        if(!wakeLock) {
            try {
                wakeLock = await navigator.wakeLock.request('screen');
                btn.classList.add('on'); btnMini.classList.add('on');
                icon.innerText=' '; text.innerText='on'; miniIcon.innerText=' '; miniText.innerText='on';
                wakeLock.addEventListener('release', () =&gt; {
                    wakeLock=null; btn.classList.remove('on'); btnMini.classList.remove('on');
                    icon.innerText=' '; text.innerText='off'; miniIcon.innerText=' '; miniText.innerText='off';
                });
            } catch(err) { alert('이 브라우저는 화면 켜짐 유지 기능을 지원하지 않습니다.'); }
        } else { wakeLock.release(); wakeLock=null; }
    }

    function applyShared(s) {
        try {
            let d;
            if(window.location.search.includes('?c=')) {
                const decompressed = LZString.decompressFromEncodedURIComponent(atob(s));
                d = JSON.parse(decompressed);
                if(d.r &amp;&amp; !d.q) {
                    recs=d.r; localStorage.setItem('v3_recs',JSON.stringify(recs));
                    hasFirstSave=Object.keys(recs).length&gt;0;
                    renderTable(); renderIds();
                    alert('입력 데이터가 복구되었습니다!\n서식 설정은 기존 값을 사용합니다.');
                    return;
                }
            } else if(window.location.search.includes('?d=')) {
                d = JSON.parse(LZString.decompressFromEncodedURIComponent(s));
            } else {
                d = JSON.parse(decodeURIComponent(atob(s)));
            }
            qCfgs=d.q; tMap=d.t; if(d.r) recs=d.r;
            document.getElementById('eventTitle').value=d.e||'';
            document.getElementById('passLimit').value=d.l||60;
            document.getElementById('notice').value=d.n||'';
            document.getElementById('judgeName').value=d.j||'';
            saveQ(); localStorage.setItem('v3_tmap',JSON.stringify(tMap));
            if(recs&amp;&amp;Object.keys(recs).length&gt;0) { localStorage.setItem('v3_recs',JSON.stringify(recs)); hasFirstSave=true; }
            renderQs(); renderIds(); renderBulk(); renderQNameTable(); renderTable();
        } catch(e) {
            alert('데이터 복구 실패!\nURL이 손상되었거나 브라우저 제한을 초과했습니다.');
        }
    }

    /* ===== QR 코드 팝업 ===== */
    let qrInstance = null;
    let qrTinyInstance = null;

    function buildShareUrl() {
        const dataObj = {
            q:qCfgs, t:tMap,
            e:document.getElementById('eventTitle').value,
            l:document.getElementById('passLimit').value,
            n:document.getElementById('notice').value,
            j:document.getElementById('judgeName').value
        };
        const compressed = LZString.compressToEncodedURIComponent(JSON.stringify(dataObj));
        return window.location.origin + window.location.pathname + '?d=' + compressed;
    }

    function openQR() {
        const url = buildShareUrl();
        document.getElementById('qrOverlay').classList.add('show');
        document.getElementById('qrUrlText').textContent = url;
        document.getElementById('qrCodeBox').innerHTML = '';
        document.getElementById('qrTinyResult').style.display = 'none';
        document.getElementById('qrTinyCheck').checked = false;
        document.getElementById('qrMainSection').style.display = 'block';
        try {
            qrInstance = new QRCode(document.getElementById('qrCodeBox'), {
                text: url, width: 200, height: 200,
                colorDark: '#000000', colorLight: '#ffffff',
                correctLevel: QRCode.CorrectLevel.M
            });
        } catch(e) {
            document.getElementById('qrCodeBox').innerHTML = '&lt;p style=&quot;color:red;font-size:12px;&quot;&gt;QR 생성 실패 (URL이 너무 깁니다)&lt;br&gt;TinyURL 체크박스를 이용해 주세요.&lt;/p&gt;';
        }
    }

    function closeQR() { document.getElementById('qrOverlay').classList.remove('show'); }
    function closeQROutside(e) { if(e.target.id === 'qrOverlay') closeQR(); }

    async function toggleTinyQR() {
        const checked = document.getElementById('qrTinyCheck').checked;
        const resultDiv = document.getElementById('qrTinyResult');
        // 체크 시: 상단 기본 QR 숨기고 TinyURL QR만 표시
        document.getElementById('qrMainSection').style.display = checked ? 'none' : 'block';
        if(!checked) { resultDiv.style.display = 'none'; return; }
        resultDiv.style.display = 'block';
        document.getElementById('qrTinyCodeBox').innerHTML = '';
        document.getElementById('qrTinyUrlText').textContent = '단축 링크 생성 중...';
        const longUrl = buildShareUrl();
        try {
            const res = await fetch(`https://tinyurl.com/api-create.php?url=${encodeURIComponent(longUrl)}`);
            const shortUrl = (await res.text()).trim();
            document.getElementById('qrTinyUrlText').textContent = shortUrl;
            document.getElementById('qrTinyCodeBox').innerHTML = '';
            try {
                qrTinyInstance = new QRCode(document.getElementById('qrTinyCodeBox'), {
                    text: shortUrl, width: 200, height: 200,
                    colorDark: '#000000', colorLight: '#ffffff',
                    correctLevel: QRCode.CorrectLevel.M
                });
            } catch(e2) {
                document.getElementById('qrTinyCodeBox').innerHTML = '&lt;p style=&quot;color:red;font-size:12px;&quot;&gt;QR 생성 실패&lt;/p&gt;';
            }
        } catch(e) {
            document.getElementById('qrTinyUrlText').textContent = 'TinyURL 생성 실패 (네트워크 확인)';
        }
    }

    /* ===== 평가 시 전달사항 기본문구 초기화 ===== */
    function clearNoticeDefault(el) {
        // 내용이 없을 때만 포커스 시 아무것도 안 함 (placeholder가 자동 처리)
        // 실제 값이 있으면 유지, 없으면 placeholder 표시 상태 그대로
    }

    /* ===== 구간복사 접기/펼치기 ===== */
    function toggleRangeSection() {
        const content = document.getElementById('rangeContent');
        const arrow = document.getElementById('rangeArrow');
        if(content.style.display === 'none' || content.style.display === '') {
            content.style.display = 'block'; arrow.textContent = '▲';
        } else {
            content.style.display = 'none'; arrow.textContent = '▼';
        }
    }

    /* ===== 실험실 접기/펼치기 ===== */
    function toggleLabSection() {
        const content = document.getElementById('labContent');
        const arrow = document.getElementById('labArrow');
        if(content.style.display === 'none' || content.style.display === '') {
            content.style.display = 'block'; arrow.textContent = '▲';
        } else {
            content.style.display = 'none'; arrow.textContent = '▼';
        }
    }

    /* ===== 복구가능여부 확인 ===== */
    function checkRecoverability() {
        const fullDataObj = {
            q: qCfgs, t: tMap, r: recs,
            e: document.getElementById('eventTitle').value,
            l: document.getElementById('passLimit').value,
            n: document.getElementById('notice').value,
            j: document.getElementById('judgeName').value
        };
        const compressed = LZString.compressToEncodedURIComponent(JSON.stringify(fullDataObj));
        const url = window.location.origin + window.location.pathname + '?d=' + compressed;
        const len = url.length;

        if(len &lt;= 999) {
            alert(`✅ 복구 가능\nURL 길이: ${len}자 (999자 이하)\n댓글 붙여넣기 및 복구 모두 가능합니다.`);
        } else if(len &lt;= 2000) {
            alert(`⚠️ 댓글 복구 불가 / 메일 복구 가능\nURL 길이: ${len}자\n댓글(999자 초과)엔 붙여넣기 불가하나,\n메일 본문 복구주소로는 복구 가능합니다.`);
        } else if(len &lt;= 8000) {
            alert(`⚠️ 모바일 복구 주의\nURL 길이: ${len}자\nPC 브라우저에서는 복구 가능하나,\n모바일에서는 브라우저 제한으로 실패할 수 있습니다.\n반드시 엑셀 첨부를 활용하세요.`);
        } else {
            alert(`❌ 복구 불가\nURL 길이: ${len}자 (8000자 초과)\n채점 항목이 너무 많아 URL 복구가 불가능합니다.\n엑셀 저장 및 첨부만 활용하세요.`);
        }
    }

    /* ===== 완료&amp;reply: 자체 복구URL 생성+복사 (999자 초과 시 경고) ===== */
    function generateAndCopyReplyUrl() {
        const fullDataObj = {
            q: qCfgs, t: tMap, r: recs,
            e: document.getElementById('eventTitle').value,
            l: document.getElementById('passLimit').value,
            n: document.getElementById('notice').value,
            j: document.getElementById('judgeName').value
        };
        const compressed = LZString.compressToEncodedURIComponent(JSON.stringify(fullDataObj));
        const url = window.location.origin + window.location.pathname + '?d=' + compressed;

        if(url.length &gt; 999) {
            alert('복사불가.메일전송요망');
            return;
        }
        navigator.clipboard.writeText(url).then(() =&gt; {
            alert('복사완료');
        }).catch(() =&gt; {
            // 클립보드 API 실패 시 fallback
            const ta = document.createElement('textarea');
            ta.value = url;
            ta.style.position = 'fixed'; ta.style.opacity = '0';
            document.body.appendChild(ta);
            ta.select();
            document.execCommand('copy');
            document.body.removeChild(ta);
            alert('복사완료');
        });
    }

    /* ===== TinyURL 즉시생성 + 클립보드 복사 ===== */
    async function generateAndCopyTiny() {
        const preview = document.getElementById('tinyUrlPreview');
        preview.style.display = 'block';
        preview.textContent = '  단축링크 생성 중...';
        const longUrl = buildShareUrl();
        try {
            const res = await fetch(`https://tinyurl.com/api-create.php?url=${encodeURIComponent(longUrl)}`);
            const shortUrl = (await res.text()).trim();
            preview.textContent = '✅ ' + shortUrl;
            try {
                await navigator.clipboard.writeText(shortUrl);
                alert(`TinyURL 생성 완료!\n\n${shortUrl}\n\n클립보드에 복사되었습니다. 바로 붙여넣기 가능합니다.`);
            } catch(ce) {
                // 복사 실패 시 텍스트 선택 fallback
                const range = document.createRange();
                range.selectNodeContents(preview);
                window.getSelection().removeAllRanges();
                window.getSelection().addRange(range);
                alert(`TinyURL 생성 완료!\n\n${shortUrl}\n\n(자동복사 실패 - 위 텍스트를 길게 눌러 복사하세요)`);
            }
        } catch(e) {
            preview.textContent = '❌ 생성 실패 (네트워크 확인)';
            alert('TinyURL 생성 실패. 네트워크 연결을 확인해주세요.');
        }
    }

    /* ===== 중간정산 구간별 댓글 복사 ===== */
    function renderCommentRangeButtons() {
        const div = document.getElementById('commentRangeButtons');
        if(!div) return;
        div.innerHTML = '';
        // idMax와 35 중 큰 값까지 버튼 생성 (최소 N1~N35 보장)
        const maxRange = Math.max(idMax, 35);
        const step = 5;
        for(let start = 1; start &lt;= maxRange; start += step) {
            const end = start + step - 1;
            const label = `N${start}~N${end}`;
            const btn = document.createElement('button');
            btn.textContent = label;
            // 11번: 회색 스타일 (기능은 동작)
            btn.style.cssText = 'padding:6px 8px; background:#95a5a6; color:#fff; border:none; border-radius:5px; font-size:11px; font-weight:bold; cursor:pointer;';
            btn.onclick = () =&gt; copyCommentRange(start, end, label);
            div.appendChild(btn);
        }
    }

    function copyCommentRange(start, end, label) {
        const eventTitle = document.getElementById('eventTitle').value || '채점결과';
        const judgeName = document.getElementById('judgeName').value || '평가자';
        const cleanOp = (op) =&gt; (op||'').replace(/[\r\n|▶]+/g,' ').trim();

        // 해당 구간의 저장된 레코드만 필터
        const keys = Object.keys(recs).map(Number).filter(i =&gt; i &gt;= start &amp;&amp; i &lt;= end).sort((a,b)=&gt;a-b);
        if(keys.length === 0) {
            alert(`${label} 구간에 저장된 채점 데이터가 없습니다.`);
            return;
        }
        const header = &quot;순번|&quot; + qCfgs.map(q=&gt;q.n).join(&quot;|&quot;) + &quot;|합계|의견&quot;;
        const rows = keys.map(idx =&gt; {
            const r = recs[idx];
            return `N${idx}|` + qCfgs.map((q,i)=&gt;r.sc[i]!==undefined?r.sc[i]:0).join(&quot;|&quot;) + `|${r.tot}|${cleanOp(r.op)}`;
        });
        const line1 = `[${eventTitle}_${judgeName}] ${label} / ${header}`;
        const line2 = rows.join(' ▶ ');
        const text = line1 + '\n' + line2;

        navigator.clipboard.writeText(text).then(() =&gt; {
            alert(`${label} 구간 데이터가 복사되었습니다!\n(${keys.length}건)\n티스토리 댓글란에 붙여넣기 하세요.`);
        }).catch(() =&gt; { alert('복사 실패. 브라우저 권한을 확인해주세요.'); });
    }

    /* ===== 2번: 외부키보드 제어 ===== */
    let extKbMode = false;
    const EXT_KB_INPUT_SELECTOR = 'input[type=text], input[type=number], textarea';

    function toggleExtKb() {
        extKbMode = !extKbMode;
        const btn = document.getElementById('extKbBtn');
        if(extKbMode) {
            btn.classList.add('on');
            btn.innerHTML = '⌨️ 외부키보드O &amp;nbsp;&lt;span style=&quot;font-size:9px;font-weight:normal;&quot;&gt;(내부키보드 차단중)&lt;/span&gt;';
        } else {
            btn.classList.remove('on');
            btn.innerHTML = '⌨️ 외부키보드X &amp;nbsp;&lt;span style=&quot;font-size:9px;font-weight:normal;&quot;&gt;(클릭 시 내부키보드 차단)&lt;/span&gt;';
        }
        applyExtKbMode();
    }

    function applyExtKbMode() {
        document.querySelectorAll(EXT_KB_INPUT_SELECTOR).forEach(el =&gt; {
            if(extKbMode) {
                el.dataset.origInputmode = el.getAttribute('inputmode') || '';
                el.setAttribute('inputmode', 'none');
            } else {
                const orig = el.dataset.origInputmode;
                if(orig !== undefined &amp;&amp; orig !== '') el.setAttribute('inputmode', orig);
                else el.removeAttribute('inputmode');
            }
        });
    }

    // 동적으로 생성되는 input에도 적용: renderQs 호출 시 자동 처리
    function applyExtKbAfterRender() {
        if(extKbMode) {
            setTimeout(() =&gt; {
                document.querySelectorAll(EXT_KB_INPUT_SELECTOR).forEach(el =&gt; {
                    el.setAttribute('inputmode', 'none');
                });
            }, 50);
        }
    }

    window.onload = init;
&lt;/script&gt;
&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>모두의계산기</category>
      <category>계산기</category>
      <category>모두시리즈</category>
      <category>모두의계산기</category>
      <category>채점</category>
      <category>채점계산기</category>
      <category>채점표</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/85</guid>
      <comments>https://0-1.kr/85#entry85comment</comments>
      <pubDate>Sun, 11 Jan 2026 12:03:09 +0900</pubDate>
    </item>
    <item>
      <title>모두의 채점계산기 V3_활용법</title>
      <link>https://0-1.kr/77</link>
      <description>&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;모두의 채점계산기 활용&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;멀티플러그설치, PC대여 및 설치, 보조모니터 세팅, 각종 필기구 세팅 등&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;평가채점마다&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;세팅 공포에 시달리는 고생 많은 담당자들&lt;/b&gt;을 위해 만들었습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;&lt;a href=&quot;https://0-1.kr/85&quot;&gt;https://0-1.kr/85&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1771832489964&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;모두의채점계산기_V3(260211)&quot; data-og-description=&quot;모두의 채점계산기_V3(260211)   공장초기화 초기화 서식저장/주소복사   off URL복사   사용설명서 ▼ ** 해당 계산기는 서버에 저장되지 않습니다.(입력장치에 임시저장) ** 공정한 심사를 위&quot; data-og-host=&quot;0-1.kr&quot; data-og-source-url=&quot;https://0-1.kr/85&quot; data-og-url=&quot;https://0-1.kr/85&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fRfNY/dJMb89yaqzS/B9OGlwPbeAWRLkQxCscPgK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/cZWNPD/dJMb87f3iP8/ZwmyEwN7EnNz7FKgk5M490/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://0-1.kr/85&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://0-1.kr/85&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fRfNY/dJMb89yaqzS/B9OGlwPbeAWRLkQxCscPgK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/cZWNPD/dJMb87f3iP8/ZwmyEwN7EnNz7FKgk5M490/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모두의채점계산기_V3(260211)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;모두의 채점계산기_V3(260211)   공장초기화 초기화 서식저장/주소복사   off URL복사   사용설명서 ▼ ** 해당 계산기는 서버에 저장되지 않습니다.(입력장치에 임시저장) ** 공정한 심사를 위&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;0-1.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;사실&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;[평가위원들의 휴대폰 하나로 채점이 가능한 시스템]&lt;/b&gt;을 만들어 심플하게 채점해보자&quot;가 목표였습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;(현재 휴대폰으로도 가능은 합니다. 평가자들의 시력이 좋으시다면 충분합니다.ㅠ)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;현재 심사위원들이&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;테블릿으로 직접 입력한 평가점수를 파일 또는 메일로 전달받아&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;&lt;b&gt;담당자들이 가공하여 결과지를 출력하는 것이 해당 채점표의 핵심기능&lt;/b&gt;입니다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;어떤 테블릿에서나&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;크롬 브라우저로 0-1.kr/85&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;를 주소창에 입력하시면 사용가능하며 ,&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;각 기관의 서식에 맞는 형식으로 저장 후 배포하시면 됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;(배포시 주소는 0-1.kr/85로 시작되며 꽤 긴 주소가 생성됩니다. 긴 주소는 데이터입력이 길 수록 길어져요!)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;각종 평가들이 많은 기관에서 활용해보시고 혹시나 수정하다가 낭패보실수 있으니 활용하실때&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;댓글이나 방명록에 좀 남겨주세요. 저도 현재 활용 중&lt;/b&gt;입니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;-------&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;1. 회원가입X, 로그인X, 개인정보유출X, 서버저장이 되지 않습니다. 안심하고 쓰세요.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;&amp;nbsp;1) 현 입력하는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;장치의 브라우저에만&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;임시저장&lt;/b&gt;되며 [공장초기화]버튼 클릭 시 입력한 내용&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;모두삭제 가능&lt;/b&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;&amp;nbsp;2) 입력(채점)완료 후&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;메일발송 시&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;원하는 데이터 값 확인가능.(입력값,전체입력값,데이터포함입력값주소 등)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;&amp;nbsp;3) 저는 여러분의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;개인정보, 채점결과에 1도 관심없으며&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;현재 저도 실무에서 활용 중이며 계속 수정해 나가고 있습니다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;&amp;nbsp;4) 테블릿 배터리 완충 후 활용하시면&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;전력공급없이 8시간은 거뜬히 사용가능한 것 같습니다&lt;/b&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;&amp;nbsp;5) 채점 방식은 크게&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;[평가자 정보입력] -&amp;gt; [채점점수 입력 및 평가의견 저장] -&amp;gt;[평가자 정보에 맞게 채점 후 결과 메일발송]-&amp;gt;[결과지 가공 및 출력 후 검토한 평가지 서명]&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;의 단계로 진행하시면 됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;--------&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;2.해당 계산기는 PC보다 테블릿에 최적화 되어 있습니다. pc로의 채점은 비추천드립니다.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;*** 채점 담당자 활용 ***&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;&amp;nbsp;1)테블릿 활용 Tip01 (모든기능 활용)&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;- 심사위원 정보입력 -&amp;gt; 평가대상 수 입력(N1~N0) -&amp;gt; 채점항목 조정 -&amp;gt; 합격점수 입력 -&amp;gt;채점항목 입력 및 삽입대체 클릭 -&amp;gt; 대상자정보입력 후 대상자 정보 삽입 -&amp;gt; [서식저장/주소복사] 클릭 후 저장된 주소 전달(각 채점 태블릿에 메일or카톡) -&amp;gt;채점완료 후 [공장초기화] 클릭 후 삭제&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;&amp;nbsp;2)테블릿 활용 Tip02 (심플한 방법)&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;- 심사위원 정보입력(필수) -&amp;gt; 채점항목 개수조정 및 점수 수정 -&amp;gt; [서식저장/주소복사] 버튼 클릭 후 주소 전달 -&amp;gt; 채점결과를 이메일로 확인 후 데이터 가공&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;&amp;nbsp;3)PC 활용 Tip03(메일발송버튼 X)&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;- 테블릿과 같이 활용하되 결과를 [데이터엑셀저장(pc)]로 저장 후 별도의 개인 메일로 파일 첨부 후 발송&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;해당 입력값들은 이메일을 제외하고 3초뒤 자동저장됩니다. 해당 사이트를 나갔다가 다시 복귀해도 점수가 그대로 있어요. 공장초기화 버튼 삭제전까지 남아 있습니다!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;서버 저장이란 개념이 아니라 현재 접속한 브라우저의 임시 저장장소를 쓰고 있으니 안심하고 수천번 테스트 후 활용하시기 바랍니다. 안믿으시는 분들이 많네요.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;모든 값들이 메일발송 시 내용으로 자동생성되므로 테블릿 사용을 추천드립니다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;*** 채점자 활용 ***&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;1) 상단 개인소속과 성함을 필수로 입력해야지만 넘어갑니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;2) 평가 인원을 확인하고 [발표순번] 으로 현재 채점자를 확인합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;- N1의 버튼이 노란색 배경인 경우 현재 채점 중임을 뜻하며, 검정색 배경인 경우 이미 채점저장이 됨을 의미합니다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;3) 현재순번을 확인하고 각 항목당 점수를 입력합니다. 점수가 합격점수 이상인 경우 노란색으로 변경됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;4) 반드시 평가의견을 클릭해 입력하고 [각 채점 저장 및 다음이동] 버튼을 클릭해 다음 채점자로 이어갑니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;5) 평가 수정은 발표순번의 N0 을 직접 클릭 해 수정가능하며 삭제는 [5.실시간 데이터 저장 확인표]의 오른쪽에 있는 X 버튼을 클릭하세요&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;6) 채점이 종료되면 [4.채점값 이메일 전달]에 [데이터엑셀저장] 버튼 클릭 후 입력된 이메일 확인 후 [메일발송] 버튼을 클릭해 전달 바랍니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;- 쉬는 시간마다 전송 시 채점이 원활해 집니다.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot; data-original-fontsize=&quot;13.3333px&quot; data-original-lineheight=&quot;19.9999px&quot;&gt;7) 채점이 종료되면 담당자의 확인을 요청하고 최종 완료 시 [초기화] 버튼을 클릭 바랍니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageslideblock alignCenter&quot; data-image=&quot;[{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/cIGXcn/dJMcahX7bhD/ukrsmBIuFOenFmZGHNnUY1/img.jpg&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/co9ks2/dJMcad2qVsW/IaLIPPzs366laq45WsD3eK/img.jpg&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/oAi4n/dJMcad2qVsU/ANm99MOHHuiRMffH5xZBK1/img.jpg&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/bKv4Nr/dJMcahX7bhC/SmKpKDzKaBbufE7u2Nwpz0/img.jpg&amp;quot;},{&amp;quot;src&amp;quot;:&amp;quot;https://blog.kakaocdn.net/dn/cGrIg8/dJMb99Mwvki/AKVYUIM4U3XrNgqrQiWFt0/img.jpg&amp;quot;}]&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span class=&quot;image-wrap selected&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIGXcn/dJMcahX7bhD/ukrsmBIuFOenFmZGHNnUY1/img.jpg&quot; data-url=&quot;https://blog.kakaocdn.net/dn/cIGXcn/dJMcahX7bhD/ukrsmBIuFOenFmZGHNnUY1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIGXcn/dJMcahX7bhD/ukrsmBIuFOenFmZGHNnUY1/img.jpg&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIGXcn%2FdJMcahX7bhD%2FukrsmBIuFOenFmZGHNnUY1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2123&quot; data-is-animation=&quot;false&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/co9ks2/dJMcad2qVsW/IaLIPPzs366laq45WsD3eK/img.jpg&quot; data-url=&quot;https://blog.kakaocdn.net/dn/co9ks2/dJMcad2qVsW/IaLIPPzs366laq45WsD3eK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/co9ks2/dJMcad2qVsW/IaLIPPzs366laq45WsD3eK/img.jpg&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fco9ks2%2FdJMcad2qVsW%2FIaLIPPzs366laq45WsD3eK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2123&quot; data-is-animation=&quot;false&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oAi4n/dJMcad2qVsU/ANm99MOHHuiRMffH5xZBK1/img.jpg&quot; data-url=&quot;https://blog.kakaocdn.net/dn/oAi4n/dJMcad2qVsU/ANm99MOHHuiRMffH5xZBK1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oAi4n/dJMcad2qVsU/ANm99MOHHuiRMffH5xZBK1/img.jpg&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoAi4n%2FdJMcad2qVsU%2FANm99MOHHuiRMffH5xZBK1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2123&quot; data-is-animation=&quot;false&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKv4Nr/dJMcahX7bhC/SmKpKDzKaBbufE7u2Nwpz0/img.jpg&quot; data-url=&quot;https://blog.kakaocdn.net/dn/bKv4Nr/dJMcahX7bhC/SmKpKDzKaBbufE7u2Nwpz0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKv4Nr/dJMcahX7bhC/SmKpKDzKaBbufE7u2Nwpz0/img.jpg&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKv4Nr%2FdJMcahX7bhC%2FSmKpKDzKaBbufE7u2Nwpz0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2123&quot; data-is-animation=&quot;false&quot;/&gt;&lt;/span&gt;&lt;span class=&quot;image-wrap &quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGrIg8/dJMb99Mwvki/AKVYUIM4U3XrNgqrQiWFt0/img.jpg&quot; data-url=&quot;https://blog.kakaocdn.net/dn/cGrIg8/dJMb99Mwvki/AKVYUIM4U3XrNgqrQiWFt0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGrIg8/dJMb99Mwvki/AKVYUIM4U3XrNgqrQiWFt0/img.jpg&quot; loading=&quot;lazy&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGrIg8%2FdJMb99Mwvki%2FAKVYUIM4U3XrNgqrQiWFt0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2123&quot; data-is-animation=&quot;false&quot;/&gt;&lt;/span&gt;&lt;button class=&quot;btn btn-prev&quot;&gt;&lt;span class=&quot;ico-prev&quot;&gt;이전&lt;/span&gt;&lt;/button&gt;&lt;button class=&quot;btn btn-next&quot;&gt;&lt;span class=&quot;ico-next&quot;&gt;다음&lt;/span&gt;&lt;/button&gt;&lt;/div&gt;
  &lt;div class=&quot;mark&quot;&gt;&lt;span data-index=&quot;0&quot;&gt;0&lt;/span&gt;&lt;span data-index=&quot;1&quot;&gt;1&lt;/span&gt;&lt;span data-index=&quot;2&quot;&gt;2&lt;/span&gt;&lt;span data-index=&quot;3&quot;&gt;3&lt;/span&gt;&lt;span data-index=&quot;4&quot;&gt;4&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;001.채점종료후001.JPG&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOnYGy/dJMcahcJZo6/vQ5hWBrTyzcsFSDCWaZlCK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOnYGy/dJMcahcJZo6/vQ5hWBrTyzcsFSDCWaZlCK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOnYGy/dJMcahcJZo6/vQ5hWBrTyzcsFSDCWaZlCK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOnYGy%2FdJMcahcJZo6%2FvQ5hWBrTyzcsFSDCWaZlCK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;2123&quot; data-filename=&quot;001.채점종료후001.JPG&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2123&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;001.채점종료후001-1.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t0VRP/dJMcahcJZo9/xfXQEqhkQ36r1nYHYSGJn0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t0VRP/dJMcahcJZo9/xfXQEqhkQ36r1nYHYSGJn0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t0VRP/dJMcahcJZo9/xfXQEqhkQ36r1nYHYSGJn0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft0VRP%2FdJMcahcJZo9%2FxfXQEqhkQ36r1nYHYSGJn0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;2123&quot; data-filename=&quot;001.채점종료후001-1.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2123&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;001.채점종료후002.JPG&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3mzvu/dJMcahcJZo7/ju7ITb7jaJSTM4bXDSjKZk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3mzvu/dJMcahcJZo7/ju7ITb7jaJSTM4bXDSjKZk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3mzvu/dJMcahcJZo7/ju7ITb7jaJSTM4bXDSjKZk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3mzvu%2FdJMcahcJZo7%2Fju7ITb7jaJSTM4bXDSjKZk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;2123&quot; data-filename=&quot;001.채점종료후002.JPG&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2123&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;001.채점종료후003.JPG&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EcsPE/dJMcahKBm7Q/cLCXKN4wxK6EsKFbRtlKEk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EcsPE/dJMcahKBm7Q/cLCXKN4wxK6EsKFbRtlKEk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EcsPE/dJMcahKBm7Q/cLCXKN4wxK6EsKFbRtlKEk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEcsPE%2FdJMcahKBm7Q%2FcLCXKN4wxK6EsKFbRtlKEk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;2123&quot; data-filename=&quot;001.채점종료후003.JPG&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2123&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;001.채점종료후004.JPG&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGHpau/dJMcahcJZo8/BOKSQLbm7eJYNy2CMeWJKk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGHpau/dJMcahcJZo8/BOKSQLbm7eJYNy2CMeWJKk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGHpau/dJMcahcJZo8/BOKSQLbm7eJYNy2CMeWJKk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGHpau%2FdJMcahcJZo8%2FBOKSQLbm7eJYNy2CMeWJKk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;2123&quot; data-filename=&quot;001.채점종료후004.JPG&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2123&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>모두의계산기</category>
      <category>모두의계산기</category>
      <category>설명서</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/77</guid>
      <comments>https://0-1.kr/77#entry77comment</comments>
      <pubDate>Wed, 7 Jan 2026 09:45:17 +0900</pubDate>
    </item>
    <item>
      <title>모두의 전화메모 계산기_V1(260208)</title>
      <link>https://0-1.kr/73</link>
      <description>&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/lz-string/1.4.4/lz-string.min.js&quot;&gt;&lt;/script&gt;
&lt;div id=&quot;master-app-phone&quot; class=&quot;master-container&quot;&gt;
&lt;h1 class=&quot;main-title&quot;&gt;모두의 전화메모 계산기&lt;/h1&gt;
&lt;details class=&quot;card info-details&quot;&gt;
&lt;summary&gt;ℹ️ [0. 사용설명서] 클릭하여 보기&lt;/summary&gt;
&lt;div class=&quot;info-content&quot;&gt;
&amp;bull; &lt;b&gt;공초:&lt;/b&gt; 서식 초기화 페이지로 이동합니다.&lt;br /&gt;
&amp;bull; &lt;b&gt;RE:&lt;/b&gt; 질문에 대한 답변을 무한으로 추가할 수 있습니다.&lt;br /&gt;
&amp;bull; &lt;b&gt;요약:&lt;/b&gt; 모든 작성 내용을 취합해 기록탭으로 보냅니다.&lt;br /&gt;
&amp;bull; &lt;b&gt;자주쓰는 문구:&lt;/b&gt; 클릭하면 커서 위치에 자동으로 삽입됩니다.
&lt;/div&gt;
&lt;/details&gt;
&lt;div class=&quot;card s1-box&quot;&gt;
&lt;div class=&quot;top-btn-row&quot;&gt;
&lt;button class=&quot;btn-top btn-factory&quot; onclick=&quot;location.href='https://0-1.kr/73'&quot; title=&quot;공장초기화(0-1.kr/73 이동)&quot;&gt;  공초&lt;/button&gt;
&lt;button class=&quot;btn-top btn-reset&quot; onclick=&quot;dataReset()&quot; title=&quot;데이터만 리셋(원 데이터 유지)&quot;&gt;  리셋&lt;/button&gt;
&lt;button class=&quot;btn-top btn-save&quot; title=&quot;데이터 포함 압축 주소 복사&quot;&gt;  링크저장&lt;/button&gt;
&lt;button class=&quot;btn-top btn-mail&quot; title=&quot;메일로 데이터 전달&quot;&gt;  메일(폰)&lt;/button&gt;
&lt;button id=&quot;wakeLockBtn&quot; class=&quot;btn-top btn-light&quot; onclick=&quot;toggleWakeLock()&quot; title=&quot;화면 항상 켜기&quot;&gt;  OFF&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;memo-sections-container&quot;&gt;&lt;/div&gt;
&lt;button class=&quot;add-section-btn&quot; onclick=&quot;addMemoSection()&quot;&gt;➕ 섹션추가&lt;/button&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;style&gt;
/* 디자인 시스템: 반응형 &amp; 모바일 최적화 */
* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
:root { 
    --ios-blue: #007AFF; 
    --ios-green: #34C759; 
    --ios-red: #FF3B30; 
    --ios-orange: #FF9500;
    --ios-purple: #5856D6;
    --ios-bg: #F2F2F7; 
    --ios-gray: #8E8E93;
    --ios-lightgray: #E5E5EA;
}

body { 
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; 
    background: var(--ios-bg); 
    margin: 0; 
    padding: 8px; 
    overflow-x: hidden; 
}

.master-container { 
    width: 100%; 
    max-width: 100%; 
    margin: 0 auto; 
    padding: 0 4px;
}

@media (min-width: 768px) {
    .master-container { max-width: 720px; }
}

.card { 
    background: white; 
    border-radius: 14px; 
    padding: 12px; 
    margin-bottom: 12px; 
    box-shadow: 0 2px 8px rgba(0,0,0,0.05); 
}

.main-title { 
    font-size: 20px; 
    font-weight: 800; 
    text-align: center; 
    margin: 10px 0; 
    color: #333;
}

.info-details summary {
    cursor: pointer;
    font-weight: 600;
    padding: 8px;
    border-radius: 8px;
    background: var(--ios-lightgray);
}

.info-content {
    margin-top: 10px;
    font-size: 13px;
    line-height: 1.6;
    color: #555;
}

/* 섹션 1 버튼 */
.top-btn-row { display: flex; gap: 4px; flex-wrap: wrap; }
.btn-top { 
    flex: 1; 
    min-width: 60px;
    height: 38px; 
    border: none; 
    border-radius: 8px; 
    color: white; 
    font-size: 11px; 
    font-weight: 600; 
    cursor: pointer;
    transition: opacity 0.2s;
}
.btn-top:active { opacity: 0.7; }
.btn-factory { background: var(--ios-gray); } 
.btn-reset { background: var(--ios-red); }
.btn-save { background: var(--ios-blue); } 
.btn-mail { background: var(--ios-purple); }
.btn-light { background: var(--ios-lightgray); color: #000; flex: 0.4 !important; }

/* 메모 섹션 */
.memo-group { 
    border: 2.5px solid var(--ios-lightgray); 
    border-radius: 16px; 
    background: white; 
    padding: 14px; 
    margin-bottom: 16px; 
    width: 100%; 
}

.dynamic-title { 
    font-size: 18px; 
    font-weight: 800; 
    border-bottom: 2px solid #F2F2F7; 
    padding: 8px 0; 
    margin-bottom: 12px; 
    display: block; 
    outline: none;
    color: #333;
}

/* 탭 UI */
.tab-menu { 
    display: flex; 
    background: #F2F2F7; 
    border-radius: 10px; 
    padding: 2px; 
    margin-bottom: 12px; 
}
.tab-link { 
    flex: 1; 
    border: none; 
    background: none; 
    padding: 8px; 
    font-size: 12px; 
    font-weight: 600; 
    border-radius: 8px; 
    cursor: pointer;
    transition: all 0.2s;
    color: #666;
}
.tab-link.active { 
    background: white; 
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    color: #000;
}

.tab-content { display: none; width: 100%; }
.tab-content.active { display: block; }

/* 수발신 버튼 (해시태그) */
.pill-row { display: flex; gap: 6px; margin-bottom: 12px; flex-wrap: wrap; }
.pill-btn { 
    padding: 6px 12px; 
    border-radius: 16px; 
    border: 1.5px solid #DDD; 
    background: white; 
    font-size: 12px; 
    font-weight: 600; 
    cursor: pointer;
    transition: all 0.2s;
    min-height: 32px;
}
.pill-btn.active { 
    background: var(--ios-blue); 
    color: white; 
    border-color: var(--ios-blue); 
}
.pill-btn:active { transform: scale(0.95); }

/* 전화번호 입력 영역 */
.phone-input-area {
    margin-bottom: 12px;
}

.phone-row {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 8px;
}

.phone-icon {
    font-size: 16px;
    width: 28px;
    text-align: center;
    flex-shrink: 0;
}

.phone-field {
    flex: 1;
    display: flex;
    border: 1.5px solid #DDD;
    border-radius: 10px;
    overflow: hidden;
    background: white;
    align-items: center;
}

.phone-input {
    flex: 1;
    border: none;
    padding: 10px 12px;
    font-size: 14px;
    outline: none;
    min-width: 0;
}

.call-btn {
    background: var(--ios-blue);
    color: white;
    border: none;
    padding: 10px 16px;
    font-weight: 600;
    font-size: 13px;
    cursor: pointer;
    transition: opacity 0.2s;
    flex-shrink: 0;
}
.call-btn:active { opacity: 0.7; }

.add-phone-btn {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    border: 1.5px solid var(--ios-blue);
    background: white;
    color: var(--ios-blue);
    font-size: 18px;
    font-weight: 600;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: all 0.2s;
}
.add-phone-btn:active {
    background: var(--ios-blue);
    color: white;
}

.remove-phone-btn {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    border: 1.5px solid var(--ios-red);
    background: white;
    color: var(--ios-red);
    font-size: 16px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: all 0.2s;
}
.remove-phone-btn:active {
    background: var(--ios-red);
    color: white;
}

/* 자주쓰는 문구 버튼 */
.quick-phrase-section {
    margin: 12px 0;
}

.quick-phrase-title {
    font-size: 11px;
    font-weight: 800;
    color: #555;
    margin-bottom: 8px;
    display: block;
}

.quick-phrase-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(55px, 1fr));
    gap: 5px;
}

.phrase-btn {
    padding: 6px 8px;
    border: 1px solid #DDD;
    border-radius: 8px;
    background: #FAFAFA;
    font-size: 11px;
    font-weight: 600;
    color: #333;
    cursor: pointer;
    text-align: center;
    transition: all 0.15s;
    min-height: 28px;
}
.phrase-btn:active {
    background: var(--ios-blue);
    color: white;
    border-color: var(--ios-blue);
    transform: scale(0.95);
}

/* 메모 텍스트영역 */
.memo-label {
    font-size: 11px;
    margin: 12px 0 6px 2px;
    font-weight: 800;
    color: #555;
    display: block;
}

.memo-textarea {
    width: 100%;
    height: 100px;
    border: 1.5px solid #E0E0E0;
    border-radius: 10px;
    padding: 10px;
    font-size: 14px;
    font-family: inherit;
    resize: vertical;
    outline: none;
    transition: border-color 0.2s;
}
.memo-textarea:focus {
    border-color: var(--ios-blue);
}

.stats-row {
    text-align: right;
    font-size: 10px;
    color: #AAA;
    margin-top: 4px;
}

/* 요청사항 (질문/답변) */
.todo-container {
    margin-top: 12px;
}

.todo-header {
    font-size: 12px;
    font-weight: 800;
    margin-bottom: 8px;
    color: #333;
    display: flex;
    align-items: center;
    gap: 5px;
}

.todo-list-root {
    margin-bottom: 8px;
}

.todo-row {
    display: flex;
    gap: 6px;
    align-items: flex-start;
    margin-bottom: 8px;
}

.todo-row.indent {
    margin-left: 24px;
}

.todo-icon {
    width: 24px;
    height: 24px;
    border-radius: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    font-weight: 700;
    flex-shrink: 0;
    margin-top: 6px;
}

.todo-icon.question {
    background: #E3F2FD;
    color: #1976D2;
}

.todo-icon.answer {
    background: #E8F5E9;
    color: #388E3C;
}

.todo-input-wrapper {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.todo-input-field {
    display: flex;
    border: 1.5px solid #DDD;
    border-radius: 8px;
    overflow: hidden;
    background: white;
}

.todo-input {
    flex: 1;
    border: none;
    padding: 8px 10px;
    font-size: 13px;
    outline: none;
    min-width: 0;
}

.todo-actions {
    display: flex;
    gap: 4px;
    align-items: center;
}

.re-btn {
    background: #F0F0F0;
    border: none;
    padding: 5px 10px;
    border-radius: 6px;
    font-size: 10px;
    font-weight: 700;
    color: var(--ios-green);
    cursor: pointer;
    transition: all 0.2s;
    flex-shrink: 0;
}
.re-btn:active {
    background: var(--ios-green);
    color: white;
}

.x-btn {
    color: var(--ios-red);
    border: none;
    background: none;
    font-size: 16px;
    padding: 4px 8px;
    cursor: pointer;
    flex-shrink: 0;
}

.add-todo-btn {
    border: none;
    background: none;
    color: var(--ios-blue);
    font-size: 12px;
    font-weight: 700;
    padding: 8px 0;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

/* 기본정보 탭 */
.info-label {
    font-size: 12px;
    font-weight: 600;
    margin: 10px 0 6px 2px;
    color: #333;
    display: block;
}

.info-field {
    display: flex;
    border: 1.5px solid #E0E0E0;
    border-radius: 10px;
    background: white;
    overflow: hidden;
    margin-bottom: 10px;
}

.info-input {
    flex: 1;
    border: none;
    padding: 10px 12px;
    font-size: 14px;
    outline: none;
    min-width: 0;
}
.info-input:focus {
    border: none;
}

.info-textarea {
    width: 100%;
    height: 70px;
    border: 1.5px solid #E0E0E0;
    border-radius: 10px;
    padding: 10px 12px;
    font-size: 14px;
    font-family: inherit;
    resize: vertical;
    outline: none;
    transition: border-color 0.2s;
}
.info-textarea:focus {
    border-color: var(--ios-blue);
}

/* 문자 발송 영역 */
.sms-section {
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px solid #F2F2F7;
}

.sms-title {
    font-size: 13px;
    font-weight: 700;
    margin-bottom: 10px;
    color: #333;
    display: flex;
    align-items: center;
    gap: 6px;
}

.sms-textarea {
    width: 100%;
    height: 90px;
    border: 1.5px solid #E0E0E0;
    border-radius: 10px;
    padding: 10px 12px;
    font-size: 14px;
    font-family: inherit;
    resize: vertical;
    outline: none;
    margin-bottom: 6px;
    transition: border-color 0.2s;
}
.sms-textarea:focus {
    border-color: var(--ios-green);
}

.sms-stats {
    text-align: right;
    font-size: 10px;
    color: #AAA;
    margin-bottom: 10px;
}

.sms-recipient {
    font-size: 12px;
    color: #666;
    margin-bottom: 10px;
    padding: 8px 12px;
    background: #F9F9F9;
    border-radius: 8px;
}

.sms-send-btn {
    width: 100%;
    padding: 12px;
    background: var(--ios-green);
    color: white;
    border: none;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    transition: opacity 0.2s;
}
.sms-send-btn:active {
    opacity: 0.7;
}

/* 기록&amp;전달 탭 */
.summary-display {
    width: 100%;
    min-height: 120px;
    border: 1.5px solid #E0E0E0;
    border-radius: 10px;
    padding: 12px;
    font-size: 13px;
    line-height: 1.6;
    background: #FAFAFA;
    margin-bottom: 12px;
    overflow-y: auto;
    max-height: 300px;
}

.action-buttons {
    display: flex;
    gap: 8px;
    margin-bottom: 12px;
}

.summary-btn {
    flex: 1;
    padding: 12px;
    background: var(--ios-blue);
    color: white;
    border: none;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: opacity 0.2s;
}
.summary-btn:active {
    opacity: 0.7;
}

.send-btn {
    flex: 1;
    padding: 12px;
    background: var(--ios-orange);
    color: white;
    border: none;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: opacity 0.2s;
}
.send-btn:active {
    opacity: 0.7;
}

.email-section {
    display: none;
    margin-top: 12px;
}

.email-section.active {
    display: block;
}

.email-input-row {
    display: flex;
    gap: 8px;
    align-items: center;
}

.email-input-field {
    flex: 1;
    display: flex;
    border: 1.5px solid #E0E0E0;
    border-radius: 10px;
    overflow: hidden;
    background: white;
}

.email-input {
    flex: 1;
    border: none;
    padding: 10px 12px;
    font-size: 14px;
    outline: none;
}

.email-send-btn {
    padding: 10px 20px;
    background: var(--ios-purple);
    color: white;
    border: none;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    white-space: nowrap;
    transition: opacity 0.2s;
}
.email-send-btn:active {
    opacity: 0.7;
}

/* 하단 버튼들 */
.bottom-actions {
    display: flex;
    gap: 8px;
    margin-top: 16px;
}

.save-btn {
    flex: 1;
    padding: 12px;
    background: var(--ios-green);
    color: white;
    border: none;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: opacity 0.2s;
}
.save-btn:active {
    opacity: 0.7;
}

.goto-record-btn {
    flex: 2;
    padding: 12px;
    background: #F2F2F7;
    color: #333;
    border: none;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    transition: all 0.2s;
}
.goto-record-btn:active {
    background: #E0E0E0;
}

/* 섹션 추가 버튼 */
.add-section-btn {
    width: 100%;
    padding: 16px;
    border: 2px dashed #C7C7CC;
    border-radius: 12px;
    background: white;
    color: var(--ios-gray);
    font-weight: 700;
    font-size: 14px;
    margin-top: 8px;
    margin-bottom: 20px;
    cursor: pointer;
    transition: all 0.2s;
}
.add-section-btn:active {
    background: #F9F9F9;
    border-color: var(--ios-blue);
    color: var(--ios-blue);
}

/* 반응형 */
@media (max-width: 480px) {
    .main-title { font-size: 18px; }
    .top-btn-row { gap: 3px; }
    .btn-top { font-size: 10px; height: 36px; }
    .quick-phrase-grid { grid-template-columns: repeat(auto-fill, minmax(50px, 1fr)); }
}
&lt;/style&gt;
&lt;/div&gt;
&lt;script&gt;
let sectionCount = 0;
let wakeLock = null;

window.onload = () =&gt; {
    addMemoSection();
    addMemoSection();
};

function addMemoSection() {
    sectionCount++;
    const id = sectionCount;
    const label = id &lt; 10 ? `0${id}` : id;
    
    const html = `
        &lt;div class=&quot;memo-group&quot; id=&quot;sec-${id}&quot;&gt;
            &lt;span class=&quot;dynamic-title&quot; contenteditable=&quot;true&quot; id=&quot;title-${id}&quot;&gt;${label}. &lt;/span&gt;
            
            &lt;div class=&quot;tab-menu&quot;&gt;
                &lt;button class=&quot;tab-link active&quot; onclick=&quot;openTab(event, 'tab-m-${id}')&quot;&gt;전화메모&lt;/button&gt;
                &lt;button class=&quot;tab-link&quot; onclick=&quot;openTab(event, 'tab-i-${id}')&quot;&gt;기본정보&lt;/button&gt;
                &lt;button class=&quot;tab-link&quot; onclick=&quot;openTab(event, 'tab-r-${id}')&quot;&gt;기록&amp;전달&lt;/button&gt;
            &lt;/div&gt;

            &lt;!-- 전화메모 탭 --&gt;
            &lt;div id=&quot;tab-m-${id}&quot; class=&quot;tab-content active&quot;&gt;
                &lt;div class=&quot;pill-row&quot;&gt;
                    &lt;button class=&quot;pill-btn active&quot; onclick=&quot;togglePill(this)&quot;&gt;  수신메모&lt;/button&gt;
                    &lt;button class=&quot;pill-btn&quot; onclick=&quot;togglePill(this)&quot;&gt;  발신예정&lt;/button&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;phone-input-area&quot; id=&quot;phone-area-${id}&quot;&gt;
                    &lt;div class=&quot;phone-row&quot;&gt;
                        &lt;span class=&quot;phone-icon&quot;&gt; &lt;/span&gt;
                        &lt;div class=&quot;phone-field&quot;&gt;
                            &lt;input type=&quot;tel&quot; class=&quot;phone-input&quot; placeholder=&quot;010-0000-0000&quot; data-section=&quot;${id}&quot; data-phone-index=&quot;0&quot;&gt;
                            &lt;button class=&quot;call-btn&quot; onclick=&quot;makeCall(${id}, 0)&quot;&gt;CALL&lt;/button&gt;
                        &lt;/div&gt;
                        &lt;button class=&quot;add-phone-btn&quot; onclick=&quot;addPhoneInput(${id})&quot; title=&quot;번호 추가&quot;&gt;+&lt;/button&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                
                &lt;span class=&quot;memo-label&quot;&gt;  내용정리&lt;/span&gt;
                &lt;textarea class=&quot;memo-textarea&quot; id=&quot;memo-${id}&quot; placeholder=&quot;통화 내용을 작성하세요...&quot; oninput=&quot;updateStats(this, ${id})&quot;&gt;&lt;/textarea&gt;
                &lt;div class=&quot;stats-row&quot;&gt;
                    &lt;span id=&quot;char-${id}&quot;&gt;0&lt;/span&gt;자 / &lt;span id=&quot;byte-${id}&quot;&gt;0&lt;/span&gt;byte
                &lt;/div&gt;
                
                &lt;div class=&quot;quick-phrase-section&quot;&gt;
                    &lt;span class=&quot;quick-phrase-title&quot;&gt;⚡ 자주쓰는 문구 (클릭 시 삽입)&lt;/span&gt;
                    &lt;div class=&quot;quick-phrase-grid&quot;&gt;
                        &lt;button class=&quot;phrase-btn&quot; onclick=&quot;insertPhrase(${id}, 'ㄴ ')&quot;&gt;ㄴ&lt;/button&gt;
                        &lt;button class=&quot;phrase-btn&quot; onclick=&quot;insertPhrase(${id}, '- ')&quot;&gt;-&lt;/button&gt;
                        &lt;button class=&quot;phrase-btn&quot; onclick=&quot;insertPhrase(${id}, ': ')&quot;&gt;:&lt;/button&gt;
                        &lt;button class=&quot;phrase-btn&quot; onclick=&quot;insertPhrase(${id}, 're: ')&quot;&gt;re&lt;/button&gt;
                        &lt;button class=&quot;phrase-btn&quot; onclick=&quot;insertPhrase(${id}, '[확인] ')&quot;&gt;확인&lt;/button&gt;
                        &lt;button class=&quot;phrase-btn&quot; onclick=&quot;insertPhrase(${id}, '[완료] ')&quot;&gt;완료&lt;/button&gt;
                        &lt;button class=&quot;phrase-btn&quot; onclick=&quot;insertPhrase(${id}, '[요청] ')&quot;&gt;요청&lt;/button&gt;
                        &lt;button class=&quot;phrase-btn&quot; onclick=&quot;insertPhrase(${id}, '[메일] ')&quot;&gt;메일&lt;/button&gt;
                        &lt;button class=&quot;phrase-btn&quot; onclick=&quot;insertPhrase(${id}, '[오전] ')&quot;&gt;오전&lt;/button&gt;
                        &lt;button class=&quot;phrase-btn&quot; onclick=&quot;insertPhrase(${id}, '[오후] ')&quot;&gt;오후&lt;/button&gt;
                        &lt;button class=&quot;phrase-btn&quot; onclick=&quot;insertPhrase(${id}, '[기한] ')&quot;&gt;기한&lt;/button&gt;
                        &lt;button class=&quot;phrase-btn&quot; onclick=&quot;insertPhrase(${id}, '[진행중] ')&quot;&gt;진행중&lt;/button&gt;
                        &lt;button class=&quot;phrase-btn&quot; onclick=&quot;insertPhrase(${id}, '@ ')&quot;&gt;@&lt;/button&gt;
                        &lt;button class=&quot;phrase-btn&quot; onclick=&quot;insertPhrase(${id}, '[답변] ')&quot;&gt;답변&lt;/button&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;todo-container&quot; id=&quot;todo-box-${id}&quot;&gt;
                    &lt;div class=&quot;todo-header&quot;&gt;
                        &lt;span&gt;  질문 &amp; 답변&lt;/span&gt;
                    &lt;/div&gt;
                    &lt;div class=&quot;todo-list-root&quot; id=&quot;todo-list-${id}&quot;&gt;
                        ${renderTodoRow(id, false)}
                        ${renderTodoRow(id, false)}
                    &lt;/div&gt;
                    &lt;button class=&quot;add-todo-btn&quot; onclick=&quot;addTodoRow(${id})&quot;&gt;
                        &lt;span&gt;+&lt;/span&gt;
                        &lt;span&gt;질문 추가&lt;/span&gt;
                    &lt;/button&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;bottom-actions&quot;&gt;
                    &lt;button class=&quot;save-btn&quot; onclick=&quot;manualSave(${id})&quot;&gt;  저장&lt;/button&gt;
                    &lt;button class=&quot;goto-record-btn&quot; onclick=&quot;generateSummary(${id})&quot;&gt;  요약 후 기록탭 이동&lt;/button&gt;
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;!-- 기본정보 탭 --&gt;
            &lt;div id=&quot;tab-i-${id}&quot; class=&quot;tab-content&quot;&gt;
                &lt;span class=&quot;info-label&quot;&gt;  성함&lt;/span&gt;
                &lt;div class=&quot;info-field&quot;&gt;
                    &lt;input type=&quot;text&quot; class=&quot;info-input&quot; id=&quot;name-${id}&quot; placeholder=&quot;이름을 입력하세요&quot;&gt;
                &lt;/div&gt;
                
                &lt;span class=&quot;info-label&quot;&gt;  이메일&lt;/span&gt;
                &lt;div class=&quot;info-field&quot;&gt;
                    &lt;input type=&quot;email&quot; class=&quot;info-input&quot; id=&quot;email-${id}&quot; placeholder=&quot;email@example.com&quot;&gt;
                &lt;/div&gt;
                
                &lt;span class=&quot;info-label&quot;&gt;  회사전화&lt;/span&gt;
                &lt;div class=&quot;info-field&quot;&gt;
                    &lt;input type=&quot;tel&quot; class=&quot;info-input&quot; id=&quot;ctel-${id}&quot; placeholder=&quot;02-0000-0000&quot;&gt;
                &lt;/div&gt;
                
                &lt;span class=&quot;info-label&quot;&gt;  기타기록&lt;/span&gt;
                &lt;textarea class=&quot;info-textarea&quot; id=&quot;info-${id}&quot; placeholder=&quot;추가 정보를 입력하세요&quot;&gt;&lt;/textarea&gt;
                
                &lt;div class=&quot;sms-section&quot;&gt;
                    &lt;div class=&quot;sms-title&quot;&gt;
                        &lt;span&gt; &lt;/span&gt;
                        &lt;span&gt;문자 메시지 작성&lt;/span&gt;
                    &lt;/div&gt;
                    &lt;textarea class=&quot;sms-textarea&quot; id=&quot;sms-${id}&quot; placeholder=&quot;문자 내용을 입력하세요...&quot; oninput=&quot;updateSmsStats(this, ${id})&quot;&gt;&lt;/textarea&gt;
                    &lt;div class=&quot;sms-stats&quot;&gt;
                        &lt;span id=&quot;sms-char-${id}&quot;&gt;0&lt;/span&gt;자 / &lt;span id=&quot;sms-byte-${id}&quot;&gt;0&lt;/span&gt;byte
                    &lt;/div&gt;
                    &lt;div class=&quot;sms-recipient&quot; id=&quot;sms-recipient-${id}&quot;&gt;
                        수신번호: &lt;span id=&quot;sms-phone-display-${id}&quot;&gt;입력된 번호가 없습니다&lt;/span&gt;
                    &lt;/div&gt;
                    &lt;button class=&quot;sms-send-btn&quot; onclick=&quot;sendSMS(${id})&quot;&gt;  문자 발송&lt;/button&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;bottom-actions&quot; style=&quot;margin-top: 16px;&quot;&gt;
                    &lt;button class=&quot;save-btn&quot; onclick=&quot;manualSave(${id})&quot;&gt;  정보 저장&lt;/button&gt;
                &lt;/div&gt;
            &lt;/div&gt;

            &lt;!-- 기록&amp;전달 탭 --&gt;
            &lt;div id=&quot;tab-r-${id}&quot; class=&quot;tab-content&quot;&gt;
                &lt;div class=&quot;summary-display&quot; id=&quot;summary-display-${id}&quot;&gt;
                    &lt;div style=&quot;color: #999; text-align: center; padding: 20px;&quot;&gt;
                          요약 버튼을 클릭하면&lt;br&gt;전화메모와 기본정보가 여기에 표시됩니다
                    &lt;/div&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;action-buttons&quot;&gt;
                    &lt;button class=&quot;summary-btn&quot; onclick=&quot;createSummary(${id})&quot;&gt;  요약 생성&lt;/button&gt;
                    &lt;button class=&quot;send-btn&quot; onclick=&quot;toggleEmailSection(${id})&quot;&gt;  발송&lt;/button&gt;
                &lt;/div&gt;
                
                &lt;div class=&quot;email-section&quot; id=&quot;email-section-${id}&quot;&gt;
                    &lt;div class=&quot;email-input-row&quot;&gt;
                        &lt;div class=&quot;email-input-field&quot;&gt;
                            &lt;input type=&quot;email&quot; class=&quot;email-input&quot; id=&quot;email-to-${id}&quot; placeholder=&quot;받는 사람 이메일&quot;&gt;
                        &lt;/div&gt;
                        &lt;button class=&quot;email-send-btn&quot; onclick=&quot;sendEmail(${id})&quot;&gt;  이메일 발송&lt;/button&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    `;
    
    document.getElementById('memo-sections-container').insertAdjacentHTML('beforeend', html);
}

function renderTodoRow(sectionId, isReply = false) {
    const timestamp = Date.now();
    const uniqueId = `${sectionId}-${timestamp}-${Math.random().toString(36).substr(2, 9)}`;
    const indentClass = isReply ? 'indent' : '';
    const iconClass = isReply ? 'answer' : 'question';
    const iconText = isReply ? ' ' : ' ';
    const placeholder = isReply ? '답변을 입력하세요...' : '질문을 입력하세요...';
    
    return `
        &lt;div class=&quot;todo-row ${indentClass}&quot; data-id=&quot;${uniqueId}&quot;&gt;
            &lt;div class=&quot;todo-icon ${iconClass}&quot;&gt;${iconText}&lt;/div&gt;
            &lt;div class=&quot;todo-input-wrapper&quot;&gt;
                &lt;div class=&quot;todo-input-field&quot;&gt;
                    &lt;input type=&quot;text&quot; class=&quot;todo-input&quot; placeholder=&quot;${placeholder}&quot; data-section=&quot;${sectionId}&quot;&gt;
                &lt;/div&gt;
                &lt;div class=&quot;todo-actions&quot;&gt;
                    &lt;button class=&quot;re-btn&quot; onclick=&quot;addReply(this, ${sectionId})&quot;&gt;  답변&lt;/button&gt;
                    &lt;button class=&quot;x-btn&quot; onclick=&quot;this.closest('.todo-row').remove()&quot;&gt;×&lt;/button&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    `;
}

function addTodoRow(sectionId) {
    const listRoot = document.getElementById(`todo-list-${sectionId}`);
    listRoot.insertAdjacentHTML('beforeend', renderTodoRow(sectionId, false));
}

function addReply(btn, sectionId) {
    const currentRow = btn.closest('.todo-row');
    currentRow.insertAdjacentHTML('afterend', renderTodoRow(sectionId, true));
}

function togglePill(btn) {
    const pillRow = btn.parentElement;
    pillRow.querySelectorAll('.pill-btn').forEach(b =&gt; b.classList.remove('active'));
    btn.classList.add('active');
}

function addPhoneInput(sectionId) {
    const phoneArea = document.getElementById(`phone-area-${sectionId}`);
    const currentPhones = phoneArea.querySelectorAll('.phone-row');
    const newIndex = currentPhones.length;
    
    if (newIndex &gt;= 5) {
        alert('최대 5개까지 전화번호를 추가할 수 있습니다.');
        return;
    }
    
    const newPhoneRow = `
        &lt;div class=&quot;phone-row&quot;&gt;
            &lt;span class=&quot;phone-icon&quot;&gt; &lt;/span&gt;
            &lt;div class=&quot;phone-field&quot;&gt;
                &lt;input type=&quot;tel&quot; class=&quot;phone-input&quot; placeholder=&quot;010-0000-0000&quot; data-section=&quot;${sectionId}&quot; data-phone-index=&quot;${newIndex}&quot;&gt;
                &lt;button class=&quot;call-btn&quot; onclick=&quot;makeCall(${sectionId}, ${newIndex})&quot;&gt;CALL&lt;/button&gt;
            &lt;/div&gt;
            &lt;button class=&quot;remove-phone-btn&quot; onclick=&quot;removePhoneInput(this)&quot; title=&quot;번호 삭제&quot;&gt;×&lt;/button&gt;
        &lt;/div&gt;
    `;
    
    phoneArea.insertAdjacentHTML('beforeend', newPhoneRow);
    updateSmsPhoneDisplay(sectionId);
}

function removePhoneInput(btn) {
    const phoneRow = btn.closest('.phone-row');
    const phoneArea = phoneRow.parentElement;
    
    if (phoneArea.querySelectorAll('.phone-row').length &lt;= 1) {
        alert('최소 1개의 전화번호는 유지되어야 합니다.');
        return;
    }
    
    phoneRow.remove();
    const sectionId = phoneArea.id.replace('phone-area-', '');
    updateSmsPhoneDisplay(sectionId);
}

function makeCall(sectionId, phoneIndex) {
    const phoneInput = document.querySelector(`input[data-section=&quot;${sectionId}&quot;][data-phone-index=&quot;${phoneIndex}&quot;]`);
    const num = phoneInput.value.replace(/[^0-9]/g, '');
    
    if (num) {
        window.location.href = `tel:${num}`;
    } else {
        alert('전화번호를 입력해주세요.');
    }
}

function insertPhrase(sectionId, phrase) {
    const textarea = document.getElementById(`memo-${sectionId}`);
    const cursorPos = textarea.selectionStart;
    const textBefore = textarea.value.substring(0, cursorPos);
    const textAfter = textarea.value.substring(cursorPos);
    
    textarea.value = textBefore + phrase + textAfter;
    textarea.focus();
    textarea.setSelectionRange(cursorPos + phrase.length, cursorPos + phrase.length);
    
    updateStats(textarea, sectionId);
}

function updateStats(textarea, sectionId) {
    const charCount = textarea.value.length;
    const byteCount = new Blob([textarea.value]).size;
    
    document.getElementById(`char-${sectionId}`).innerText = charCount;
    document.getElementById(`byte-${sectionId}`).innerText = byteCount;
}

function updateSmsStats(textarea, sectionId) {
    const charCount = textarea.value.length;
    const byteCount = new Blob([textarea.value]).size;
    
    document.getElementById(`sms-char-${sectionId}`).innerText = charCount;
    document.getElementById(`sms-byte-${sectionId}`).innerText = byteCount;
}

function updateSmsPhoneDisplay(sectionId) {
    const phoneInputs = document.querySelectorAll(`input[data-section=&quot;${sectionId}&quot;][data-phone-index]`);
    const phoneNumbers = Array.from(phoneInputs)
        .map(input =&gt; input.value)
        .filter(val =&gt; val.trim() !== '');
    
    const displayElem = document.getElementById(`sms-phone-display-${sectionId}`);
    
    if (phoneNumbers.length &gt; 0) {
        displayElem.innerText = phoneNumbers.join(', ');
    } else {
        displayElem.innerText = '입력된 번호가 없습니다';
    }
}

// 전화번호 입력 시 실시간 업데이트
document.addEventListener('input', function(e) {
    if (e.target.classList.contains('phone-input')) {
        const sectionId = e.target.dataset.section;
        updateSmsPhoneDisplay(sectionId);
    }
});

function sendSMS(sectionId) {
    const smsText = document.getElementById(`sms-${sectionId}`).value;
    const phoneInputs = document.querySelectorAll(`input[data-section=&quot;${sectionId}&quot;][data-phone-index]`);
    const phoneNumbers = Array.from(phoneInputs)
        .map(input =&gt; input.value.replace(/[^0-9]/g, ''))
        .filter(val =&gt; val !== '');
    
    if (!smsText.trim()) {
        alert('문자 내용을 입력해주세요.');
        return;
    }
    
    if (phoneNumbers.length === 0) {
        alert('전화번호를 입력해주세요.');
        return;
    }
    
    const primaryPhone = phoneNumbers[0];
    
    if (confirm(`${primaryPhone}로 문자를 발송하시겠습니까?`)) {
        // SMS 프로토콜 사용 (모바일에서 작동)
        window.location.href = `sms:${primaryPhone}?body=${encodeURIComponent(smsText)}`;
    }
}

function openTab(evt, tabName) {
    const group = evt.currentTarget.closest('.memo-group');
    group.querySelectorAll('.tab-content').forEach(c =&gt; c.classList.remove('active'));
    group.querySelectorAll('.tab-link').forEach(l =&gt; l.classList.remove('active'));
    group.querySelector(`#${tabName}`).classList.add('active');
    evt.currentTarget.classList.add('active');
}

function manualSave(sectionId) {
    const btn = event.target;
    const originalText = btn.innerText;
    btn.innerText = '✅ 저장완료';
    btn.style.background = '#4CAF50';
    
    // LocalStorage에 데이터 저장 (간단한 구현)
    try {
        const sectionData = collectSectionData(sectionId);
        localStorage.setItem(`section-${sectionId}`, JSON.stringify(sectionData));
    } catch (e) {
        console.error('저장 실패:', e);
    }
    
    setTimeout(() =&gt; {
        btn.innerText = originalText;
        btn.style.background = '';
    }, 2000);
}

function collectSectionData(sectionId) {
    const data = {
        title: document.getElementById(`title-${sectionId}`)?.innerText || '',
        memo: document.getElementById(`memo-${sectionId}`)?.value || '',
        name: document.getElementById(`name-${sectionId}`)?.value || '',
        email: document.getElementById(`email-${sectionId}`)?.value || '',
        ctel: document.getElementById(`ctel-${sectionId}`)?.value || '',
        info: document.getElementById(`info-${sectionId}`)?.value || '',
        sms: document.getElementById(`sms-${sectionId}`)?.value || '',
        phones: [],
        todos: []
    };
    
    // 전화번호들 수집
    const phoneInputs = document.querySelectorAll(`input[data-section=&quot;${sectionId}&quot;][data-phone-index]`);
    data.phones = Array.from(phoneInputs).map(input =&gt; input.value);
    
    // 질문/답변 수집
    const todoInputs = document.querySelectorAll(`#sec-${sectionId} .todo-input`);
    data.todos = Array.from(todoInputs).map(input =&gt; input.value);
    
    return data;
}

function generateSummary(sectionId) {
    createSummary(sectionId);
    
    // 기록&amp;전달 탭으로 이동
    const group = document.getElementById(`sec-${sectionId}`);
    const recordTab = group.querySelectorAll('.tab-link')[2];
    recordTab.click();
}

function createSummary(sectionId) {
    const data = collectSectionData(sectionId);
    const group = document.getElementById(`sec-${sectionId}`);
    const callType = group.querySelector('.pill-btn.active')?.innerText || '미설정';
    
    const now = new Date();
    const timeStr = `${now.getFullYear()}.${String(now.getMonth()+1).padStart(2,'0')}.${String(now.getDate()).padStart(2,'0')} ${String(now.getHours()).padStart(2,'0')}:${String(now.getMinutes()).padStart(2,'0')}`;
    
    let summaryHtml = `
        &lt;div style=&quot;border-left: 4px solid var(--ios-blue); padding-left: 12px; margin-bottom: 16px; background: white; padding: 12px; border-radius: 8px;&quot;&gt;
            &lt;div style=&quot;font-weight: 700; color: var(--ios-blue); margin-bottom: 8px;&quot;&gt;
                  ${timeStr} 요약
            &lt;/div&gt;
            &lt;div style=&quot;font-size: 13px; line-height: 1.8;&quot;&gt;
                &lt;div&gt;&lt;strong&gt;제목:&lt;/strong&gt; ${data.title}&lt;/div&gt;
                &lt;div&gt;&lt;strong&gt;유형:&lt;/strong&gt; ${callType}&lt;/div&gt;
                ${data.phones.filter(p =&gt; p).length &gt; 0 ? `&lt;div&gt;&lt;strong&gt;전화:&lt;/strong&gt; ${data.phones.filter(p =&gt; p).join(', ')}&lt;/div&gt;` : ''}
                ${data.name ? `&lt;div&gt;&lt;strong&gt;성함:&lt;/strong&gt; ${data.name}&lt;/div&gt;` : ''}
                ${data.email ? `&lt;div&gt;&lt;strong&gt;이메일:&lt;/strong&gt; ${data.email}&lt;/div&gt;` : ''}
                ${data.memo ? `&lt;div style=&quot;margin-top: 8px;&quot;&gt;&lt;strong&gt;메모:&lt;/strong&gt;&lt;br&gt;${data.memo.replace(/\n/g, '&lt;br&gt;')}&lt;/div&gt;` : ''}
                ${data.todos.filter(t =&gt; t).length &gt; 0 ? `&lt;div style=&quot;margin-top: 8px;&quot;&gt;&lt;strong&gt;질문/답변:&lt;/strong&gt;&lt;br&gt;${data.todos.filter(t =&gt; t).map((t, i) =&gt; `${i+1}. ${t}`).join('&lt;br&gt;')}&lt;/div&gt;` : ''}
            &lt;/div&gt;
        &lt;/div&gt;
    `;
    
    const displayElem = document.getElementById(`summary-display-${sectionId}`);
    displayElem.innerHTML = summaryHtml;
}

function toggleEmailSection(sectionId) {
    const emailSection = document.getElementById(`email-section-${sectionId}`);
    emailSection.classList.toggle('active');
}

function sendEmail(sectionId) {
    const emailTo = document.getElementById(`email-to-${sectionId}`).value;
    const summaryDisplay = document.getElementById(`summary-display-${sectionId}`);
    
    if (!emailTo.trim()) {
        alert('이메일 주소를 입력해주세요.');
        return;
    }
    
    // 이메일 검증
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    if (!emailRegex.test(emailTo)) {
        alert('올바른 이메일 주소를 입력해주세요.');
        return;
    }
    
    if (!summaryDisplay.innerText.includes('요약')) {
        alert('먼저 요약을 생성해주세요.');
        return;
    }
    
    const data = collectSectionData(sectionId);
    const subject = `전화메모: ${data.title}`;
    const bodyParts = [
        `제목: ${data.title}`,
        `성함: ${data.name}`,
        `이메일: ${data.email}`,
        `전화: ${data.phones.filter(p =&gt; p).join(', ')}`,
        '',
        `메모:`,
        data.memo,
        '',
        `질문/답변:`,
        data.todos.filter(t =&gt; t).map((t, i) =&gt; `${i+1}. ${t}`).join('\n')
    ];
    
    const body = bodyParts.join('\n');
    
    // mailto 프로토콜 사용
    const mailtoLink = `mailto:${emailTo}?subject=${encodeURIComponent(subject)}&amp;body=${encodeURIComponent(body)}`;
    
    window.location.href = mailtoLink;
}

function dataReset() {
    if (confirm('모든 데이터를 리셋하시겠습니까?\n\n이 작업은 되돌릴 수 없습니다.')) {
        localStorage.clear();
        location.reload();
    }
}

async function toggleWakeLock() {
    const btn = document.getElementById('wakeLockBtn');
    
    if (!('wakeLock' in navigator)) {
        alert('이 브라우저는 화면 켜기 기능을 지원하지 않습니다.');
        return;
    }
    
    if (!wakeLock) {
        try {
            wakeLock = await navigator.wakeLock.request('screen');
            btn.style.background = '#FFD60A';
            btn.style.color = '#000';
            btn.innerText = '  ON';
            
            wakeLock.addEventListener('release', () =&gt; {
                console.log('Wake Lock released');
            });
        } catch (err) {
            console.error('Wake Lock error:', err);
            alert('화면 켜기 기능을 활성화할 수 없습니다.');
        }
    } else {
        await wakeLock.release();
        wakeLock = null;
        btn.style.background = '';
        btn.style.color = '';
        btn.innerText = '  OFF';
    }
}

// 자동저장 (3초마다)
setInterval(() =&gt; {
    const sections = document.querySelectorAll('.memo-group');
    sections.forEach(section =&gt; {
        const id = section.id.replace('sec-', '');
        try {
            const data = collectSectionData(id);
            localStorage.setItem(`section-${id}`, JSON.stringify(data));
        } catch (e) {
            console.error('자동저장 실패:', e);
        }
    });
}, 3000);

// 페이지 로드 시 데이터 복원
window.addEventListener('load', () =&gt; {
    setTimeout(() =&gt; {
        const sections = document.querySelectorAll('.memo-group');
        sections.forEach(section =&gt; {
            const id = section.id.replace('sec-', '');
            try {
                const savedData = localStorage.getItem(`section-${id}`);
                if (savedData) {
                    const data = JSON.parse(savedData);
                    restoreSectionData(id, data);
                }
            } catch (e) {
                console.error('데이터 복원 실패:', e);
            }
        });
    }, 500);
});

function restoreSectionData(sectionId, data) {
    if (data.title &amp;&amp; document.getElementById(`title-${sectionId}`)) {
        document.getElementById(`title-${sectionId}`).innerText = data.title;
    }
    if (data.memo &amp;&amp; document.getElementById(`memo-${sectionId}`)) {
        document.getElementById(`memo-${sectionId}`).value = data.memo;
        updateStats(document.getElementById(`memo-${sectionId}`), sectionId);
    }
    if (data.name &amp;&amp; document.getElementById(`name-${sectionId}`)) {
        document.getElementById(`name-${sectionId}`).value = data.name;
    }
    if (data.email &amp;&amp; document.getElementById(`email-${sectionId}`)) {
        document.getElementById(`email-${sectionId}`).value = data.email;
    }
    if (data.ctel &amp;&amp; document.getElementById(`ctel-${sectionId}`)) {
        document.getElementById(`ctel-${sectionId}`).value = data.ctel;
    }
    if (data.info &amp;&amp; document.getElementById(`info-${sectionId}`)) {
        document.getElementById(`info-${sectionId}`).value = data.info;
    }
    if (data.sms &amp;&amp; document.getElementById(`sms-${sectionId}`)) {
        document.getElementById(`sms-${sectionId}`).value = data.sms;
        updateSmsStats(document.getElementById(`sms-${sectionId}`), sectionId);
    }
}
&lt;/script&gt;</description>
      <category>모두의계산기</category>
      <category>메모</category>
      <category>모두의계산기</category>
      <category>발신</category>
      <category>수신</category>
      <category>전화</category>
      <category>전화메모</category>
      <category>전화메모계산기</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/73</guid>
      <comments>https://0-1.kr/73#entry73comment</comments>
      <pubDate>Wed, 7 Jan 2026 00:13:26 +0900</pubDate>
    </item>
    <item>
      <title>모두의 00 계산기 설명서_사업과 업무 시리즈</title>
      <link>https://0-1.kr/63</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;모두의 계산기 시리즈들을 소개합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;모두의 계산기는 이런분들을 위해 만들었어요&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;모두의 00계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;a href=&quot;https://startupex.tistory.com/category/%EB%AA%A8%EB%91%90%EC%9D%98%EA%B3%84%EC%82%B0%EA%B8%B0&quot; target=&quot;_blank&quot; title=&quot;모두의계산기 모두보기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvAJjM/dJMcadHIfPE/PnjJOPwcTRIGy3r5EcHVb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvAJjM%2FdJMcadHIfPE%2FPnjJOPwcTRIGy3r5EcHVb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;200&quot; height=&quot;1024&quot; data-filename=&quot;모두의 00계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/a&gt;&lt;figcaption&gt;모두의계산기 모두보기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #006dd7;&quot;&gt;가입 X, 로그인X, 설치X, 개인정보X&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;모두의 계산기는 위의 4가지가 없어요&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이거 싫어하는 분들을 위해 만들었습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;접속쉽고, 링크짧고, 누구나 설치된 앱 중에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인터넷 브라우저가 있죠.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;PC 또는 휴대폰과 약간의 기억력(?)만 있음&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;전세계 어디서나 사용이 가능합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;http? 없이 주소창에 [&lt;span style=&quot;color: #006dd7;&quot;&gt;0-1.kr]&lt;/span&gt; 만 쓰세요&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;서버없이 조금 번거로운 작업은 필요하지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;누구나 본인에 맞게 설정 후&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사용할 수있게 해놨으니 맘껏 테스트하세요&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;꼭 개인용, 사업용이 필요하다면&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;연락주세요.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;***** 모든 정보들은 여러분의 장치에만 저장됩니다. *****&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #6164c6;&quot;&gt;(캐쉬삭제,공장초기화로 데이터가 삭제됩니다.)&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #ee2323;&quot;&gt;활용팁 1.&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;PC &amp;amp; 모바일을 통해 즐겨찾기 동기화(?)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;엄밀히 말하면 동기화는 아닙니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;PC 작업 후 즐겨찾기에 추가 시 모바일에서 작업 가능&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;단 동일 브라우저로 작업 시 가능. 반드시 저장 후 변경된 주소로 저장해야 활용가능&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;클라우드를 활용하기 어려운 곳에서 활용&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;구글 or 클라우드 미 가입자들이 은근 많음&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(크롬 및 웨일브라우저 추천)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;모바일 및 테블릿에 최적화&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;별도 설치없이 링크 접속만으로도 가능&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;짧은 링크라 외우기도 쉬움. 저장도 입력 시 항시저장됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;모두의 00계산기 모두보기&quot; href=&quot;https://0-1.kr/category/%EB%AA%A8%EB%91%90%EC%9D%98%EA%B3%84%EC%82%B0%EA%B8%B0&quot;&gt;모두의 땡땡 계산기 모두보기&lt;/a&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #22315b; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;1.모두의 채점계산기_V3(260211)&lt;/h2&gt;
&lt;figure data-ke-type=&quot;image&quot; data-ke-style=&quot;alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-link=&quot;http://0-1.kr/85&quot; data-link-islinknewwindow=&quot;true&quot;&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1) 링크 : &lt;a title=&quot;모두의 채점계산기&quot; href=&quot;http://0-1.kr/85&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;0-1.kr/85&lt;/a&gt; &lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;[설명서 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;color: #0070d1; text-align: left;&quot; href=&quot;http://0-1.kr/77&quot;&gt;0-1.kr/77&lt;/a&gt;]&lt;/p&gt;
&lt;figure id=&quot;og_1773539023329&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;모두의채점계산기_V3(260211)&quot; data-og-description=&quot;모두의 채점계산기_V3(260211)   공장초기화 초기화 ⚠️ 점수입력값과 평가의견만 삭제됩니다.소속&amp;middot;성명&amp;middot;서식&amp;middot;대상자정보는 유지됩니다. 서식저장/주소복사   off URL복사   사용설명서 ▼ &quot; data-og-host=&quot;0-1.kr&quot; data-og-source-url=&quot;http://0-1.kr/85&quot; data-og-url=&quot;https://0-1.kr/85&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/5OTDl/dJMb9iaPMQo/vgvrsojPZsJkGvgbuHgXfK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/FZLuV/dJMb8Rj0zMo/DzwihjocbOBzjzOQYBdFK0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;http://0-1.kr/85&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://0-1.kr/85&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/5OTDl/dJMb9iaPMQo/vgvrsojPZsJkGvgbuHgXfK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/FZLuV/dJMb8Rj0zMo/DzwihjocbOBzjzOQYBdFK0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모두의채점계산기_V3(260211)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;모두의 채점계산기_V3(260211)   공장초기화 초기화 ⚠️ 점수입력값과 평가의견만 삭제됩니다.소속&amp;middot;성명&amp;middot;서식&amp;middot;대상자정보는 유지됩니다. 서식저장/주소복사   off URL복사   사용설명서 ▼&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;0-1.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2) 사유 : 평가가 잦고 평가항목이 다양한 기관에서 멀티탭 없이 태블릿(또는 휴대폰)으로 심플하고 공정한 심사를 하기 위해 만듦.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;3) 기능&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 태블릿에 최적화.(배터리 오래가는 태블릿이면 멀티탭없이 채점 가능할듯?)&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 채점항목을 자유롭게 수정하여 공유 가능.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;**수정한 서식을 배포 및 공유.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 각 채점자의 정보를 한페이지에서 쉽게 입력.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 입력값 전달 시 메일, 파일화 가능.(메일 내용 필수 확인요망)&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;기본서식 수정 후 공유 시 다소 긴 링크가 생성됩니다. 앞 링크는 0-1.kr로 시작되오니 이점 참고바랍니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;수정 후 서식을 각 채점자에게 공유하는 링크는 아래와 같아요. 테스트 한번 해보세요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://0-1.kr/85?d=N4IgjiBcDaoHZRIDCHCoEwRhAGhAZytNTAJkwGZMAWTAVgF1sAXATwAcBTROAVwFsQBfTPESoiWXPhJUAbJgAcmNAAZ6IZu068BqhlGCCQHSCHEAbRMvEJj4gFaIBQA&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://0-1.kr/85?d=N4IgjiBcDaoHZRIDCHCoEwRhAGhAZytNTAJkwGZMAWTAVgF1sAXATwAcBTROAVwFsQBfTPESoiWXPhJUAbJgAcmNAAZ6IZu068BqhlGCCQHSCHEAbRMvEJj4gFaIBQA&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저 링크들을 줄여서 공유하셔도 됩니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/buTqCY/dJMcadHIfzi/EFyQLydT9RNavCYgKvhJkK/01.%EB%AA%A8%EB%91%90%EC%9D%98%20%EC%B1%84%EC%A0%90%EA%B3%84%EC%82%B0%EA%B8%B0%20V3_%EB%8B%B4%EB%8B%B9%EC%9E%90%EC%9A%A9.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;01.모두의 채점계산기 V3_담당자용.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.07MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/AIXIU/dJMcagxG7Be/QrxVjucOvMFiiR41JCpF21/02.%EB%AA%A8%EB%91%90%EC%9D%98%20%EC%B1%84%EC%A0%90%EA%B3%84%EC%82%B0%EA%B8%B0%20V3_%ED%8F%89%EA%B0%80%EC%9E%90%EC%9A%A9.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;02.모두의 채점계산기 V3_평가자용.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.06MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #22315b; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;2.모두의 간단메모계산기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 링크 : &lt;a href=&quot;https://0-1.kr/107&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;0-1.kr/107&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1773539772899&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;모두의 간단메모계산기(프롬프트제작기)&quot; data-og-description=&quot;  모두의 간단 메모계산기 드래그앤드롭 &amp;middot; 자동저장   공유가능 | ✏️ 프롬프트 편집기 |   카테고리   사용설명서 (클릭하여 펼치기) ▼   사용팁   활용   공유 ✏️ 편집기 웹으&quot; data-og-host=&quot;0-1.kr&quot; data-og-source-url=&quot;https://0-1.kr/107&quot; data-og-url=&quot;https://0-1.kr/107&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cS5XVG/dJMb89ycd0N/kNuiisapV8NNZ2lP82iOx1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dBveY6/dJMb9fZtYZ9/6Gclq2cgYoKNNkl2Ma8B8k/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://0-1.kr/107&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://0-1.kr/107&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cS5XVG/dJMb89ycd0N/kNuiisapV8NNZ2lP82iOx1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dBveY6/dJMb9fZtYZ9/6Gclq2cgYoKNNkl2Ma8B8k/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모두의 간단메모계산기(프롬프트제작기)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;  모두의 간단 메모계산기 드래그앤드롭 &amp;middot; 자동저장   공유가능 | ✏️ 프롬프트 편집기 |   카테고리   사용설명서 (클릭하여 펼치기) ▼   사용팁   활용   공유 ✏️ 편집기 웹으&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;0-1.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;2) 사유 :&lt;span&gt; 뉴스를 보면서 프롬프트 쓰다 보니 내가 한 말들이 순서가 뒤죽박죽이고 중복되고 어이가 없더만요. 좀 체계적으로 정리해볼까해서 만들었어요. 근데 기자분들이 휴대폰을 보면서 기사를 읽더만요. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;작성도 쉽고 보기도 쉽고 읽기도 쉽고 한 메모장! 게다가 휴대폰으로도 쉽게 쓰는 간단메모장을 만들어 볼려고 만들었습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 기능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 문장마다 섹션을 나눠 작성. 섹션마다 구분이 쉽게 작성.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 섹션 이동 및 들여쓰기로 아이디어 정리 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 발표 기획 및 목차설정(아이디어단계), 강의준비 및 대본으로 활용, 프롬프트 작성기로 활용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 작성 후 리딩이 편한 전체보기 기능&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #22315b; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;3.모두의 출장계산기&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1) 링크 : &lt;a href=&quot;http://0-1.kr/91&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;0-1.kr/91&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1773539612279&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;모두의 출장계산기_V4(260217)&quot; data-og-description=&quot; ️ 출장계산기 V3 ️ 날씨    QR   즐겨찾기 0 / 0 완료   복사 ️ 초기화   기기저장   화면켜짐  자동저장 대기중 ＋ 섹션 추가 저장 복구 요약 카톡바로가기 메일  사용설&quot; data-og-host=&quot;0-1.kr&quot; data-og-source-url=&quot;http://0-1.kr/91&quot; data-og-url=&quot;https://0-1.kr/91&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hMouA/dJMb9jgvRIN/xcdwnuG9aCxfgxyPoxCKL0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/AbBgr/dJMb9jgvRIO/shKJZw4P6Mn8kMcpRFQ2k0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;http://0-1.kr/91&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://0-1.kr/91&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hMouA/dJMb9jgvRIN/xcdwnuG9aCxfgxyPoxCKL0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/AbBgr/dJMb9jgvRIO/shKJZw4P6Mn8kMcpRFQ2k0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모두의 출장계산기_V4(260217)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt; ️ 출장계산기 V3 ️ 날씨    QR   즐겨찾기 0 / 0 완료   복사 ️ 초기화   기기저장   화면켜짐  자동저장 대기중 ＋ 섹션 추가 저장 복구 요약 카톡바로가기 메일  사용설&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;0-1.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2) 사유 : 출장이 잦은 업무라 한달 출장을 미리 세팅하고자 제작. 용도에 따라 내비를 바꿔쓰는데 주소만 적으면 내비를 선택하고 싶어 제작함. 티비를 보는데 [틈만나면]에 유연석씨가 제가 초딩때 보물처럼 쓰던 자석 전화번호 메모지를 길게 작성해서 다니는 모습을 보고 한참 추억에 빠졌다가 유느님한테 혼나는 거 보고 만들어 봤습니다.ㅎ 혼나지 마시옵소서.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2) 활용팁 :&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 저장 후 공유 가능(동일 브라우저로) | 국내 스마트폰 네비 바로가기 연결가능.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 출장 시 마다 메모 및 체크리스트 저장 가능.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 여행 시 스케쥴 정리용으로도 활용가능.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 버튼 중 작동안하는 기능이 꽤 있으니 필요한 기능만 활용해 쓰세요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #22315b; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;4.모두의 내차어디 계산기&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1) 링크 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://0-1.kr/90&quot;&gt;0-1.kr/90&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1773543006769&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;모두의 내차어디 계산기_V2(260217)&quot; data-og-description=&quot;  모두의 내차어디 계산기 V2.0 &amp;middot; 자동저장 ⏱ 주차 경과시간 --:--:-- 저장된 주차 기록이 없습니다   복귀 예정까지 --:-- 예정시간 미설정 ⚠️ 공장초기화 (전체 데이터 삭제)   사용설명서 &quot; data-og-host=&quot;0-1.kr&quot; data-og-source-url=&quot;http://0-1.kr/90&quot; data-og-url=&quot;https://0-1.kr/90&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bJs9Ox/dJMb9cBGLaD/QBKjPwGqmd9w7RKcnLsGwK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/brt4RQ/dJMb9frD78y/CCxJgrvCYMZHx5k4dUMZG0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;http://0-1.kr/90&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://0-1.kr/90&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bJs9Ox/dJMb9cBGLaD/QBKjPwGqmd9w7RKcnLsGwK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/brt4RQ/dJMb9frD78y/CCxJgrvCYMZHx5k4dUMZG0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모두의 내차어디 계산기_V2(260217)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;  모두의 내차어디 계산기 V2.0 &amp;middot; 자동저장 ⏱ 주차 경과시간 --:--:-- 저장된 주차 기록이 없습니다   복귀 예정까지 --:-- 예정시간 미설정 ⚠️ 공장초기화 (전체 데이터 삭제)   사용설명서&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;0-1.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2) 사유 : 운전을 별로 안 좋아해서 차를 자주 방치하는데 내차가 어디 있는지..젤 짜증나는건 몇층에 주차한지 기억이 잘 안나서 만들었습니다. 경찰 부르기 전에 만들어야 겠다고 해서 만들었습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2) 활용팁 :&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 모든 항목은 필수가 아니니 원하는 기능만 입력.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 입력한 휴대폰 내에서 해당 주소만 클릭하면 입력값을 볼 수 있음.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 내위치 전송 기능으로도 활용가능.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #22315b; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;5.모두의 출첵계산기&lt;/h2&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1) 링크 : &lt;a href=&quot;https://0-1.kr/95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;0-1.kr/95&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1773543200313&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;모두의 간단출첵계산기 엑셀버전_V1&quot; data-og-description=&quot;모두의 간단출첵2   해제A 고정 B까지C까지 D까지E까지   전체보기   데이터전송   구글시트 리셋 * 마우스 우클릭으로 행 추가/삭제가 가능합니다. 열 너비도 자유롭게 조절해보세요!   &quot; data-og-host=&quot;0-1.kr&quot; data-og-source-url=&quot;https://0-1.kr/95&quot; data-og-url=&quot;https://0-1.kr/95&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cwrhEt/dJMb8SXwqWx/rdHKKkaRkl0CQNKeeVELkK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/b9IMXA/dJMb8Zvz7ns/UnHkTmS3cEVWXO9KUg7mJk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://0-1.kr/95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://0-1.kr/95&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cwrhEt/dJMb8SXwqWx/rdHKKkaRkl0CQNKeeVELkK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/b9IMXA/dJMb8Zvz7ns/UnHkTmS3cEVWXO9KUg7mJk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모두의 간단출첵계산기 엑셀버전_V1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;모두의 간단출첵2   해제A 고정 B까지C까지 D까지E까지   전체보기   데이터전송   구글시트 리셋 * 마우스 우클릭으로 행 추가/삭제가 가능합니다. 열 너비도 자유롭게 조절해보세요!  &lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;0-1.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2) 사유 : 발표장에서 대기실에 있는 분들이 폰으로 통제 가능하도록 엑셀 내용을 복붙해서 통제 가능하도록 설계함&lt;/p&gt;
&lt;figure data-ke-type=&quot;image&quot; data-ke-style=&quot;alignLeft&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-link=&quot;http://0-1.kr/95&quot; data-link-islinknewwindow=&quot;true&quot;&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2) 활용팁 :&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #22315b; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;5.모두의 전화메모 계산기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 링크 : &lt;a href=&quot;http://0-1.kr/73&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;0-1.kr/73&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1773544022253&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;모두의 전화메모 계산기_V1(260208)&quot; data-og-description=&quot;모두의 전화메모 계산기ℹ️ [0. 사용설명서] 클릭하여 보기&amp;bull; 공초: 서식 초기화 페이지로 이동합니다.&amp;bull; RE: 질문에 대한 답변을 무한으로 추가할 수 있습니다.&amp;bull; 요약: 모든 작성 내용을 취합&quot; data-og-host=&quot;0-1.kr&quot; data-og-source-url=&quot;http://0-1.kr/73&quot; data-og-url=&quot;https://0-1.kr/73&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/A3Bd2/dJMb8Zvz7pQ/W0X3EXYOAvBGGBMiIWzxsk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/B4lQs/dJMb88F3xW2/kkbq4P7N9CeYO0EzHesmA1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;http://0-1.kr/73&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://0-1.kr/73&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/A3Bd2/dJMb8Zvz7pQ/W0X3EXYOAvBGGBMiIWzxsk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/B4lQs/dJMb88F3xW2/kkbq4P7N9CeYO0EzHesmA1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모두의 전화메모 계산기_V1(260208)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;모두의 전화메모 계산기ℹ️ [0. 사용설명서] 클릭하여 보기&amp;bull; 공초: 서식 초기화 페이지로 이동합니다.&amp;bull; RE: 질문에 대한 답변을 무한으로 추가할 수 있습니다.&amp;bull; 요약: 모든 작성 내용을 취합&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;0-1.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 사유 :&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;활용 시 주의&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;각 장치에 임시폴더로 저장되어 캐시 삭제 시 삭제됨&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(즐겨찾기로 저장을 추천함)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;PC 및 모바일 활용 시 동일 브라우저 활용&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(크롬과 웨일브라우저 추천. 안드로이드인 경우 삼성브라우저로 이동이 많네요)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;데이터양이 많은 경우 저장 불가. 보조기구로 활용&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(A4 10장분량의 텍스트는 가능)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;업데이트 시마다 수정하겠습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아래내용들은 정리되는대로 올려드릴게요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;채점계산기_V3.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oFu8f/dJMcafeO2ej/355zwENEEPvtiXGvz6vlW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oFu8f/dJMcafeO2ej/355zwENEEPvtiXGvz6vlW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oFu8f/dJMcafeO2ej/355zwENEEPvtiXGvz6vlW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoFu8f%2FdJMcafeO2ej%2F355zwENEEPvtiXGvz6vlW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;150&quot; height=&quot;1024&quot; data-filename=&quot;채점계산기_V3.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;출장계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y73C1/dJMcacbh8KO/ixvK9wvAuOMtnNxz4NYfN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y73C1/dJMcacbh8KO/ixvK9wvAuOMtnNxz4NYfN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y73C1/dJMcacbh8KO/ixvK9wvAuOMtnNxz4NYfN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy73C1%2FdJMcacbh8KO%2FixvK9wvAuOMtnNxz4NYfN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;100&quot; data-filename=&quot;출장계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;모두의 출첵계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bns20T/dJMcaibfgg5/KuoK0T04zVdLDOTYmkuqK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bns20T/dJMcaibfgg5/KuoK0T04zVdLDOTYmkuqK1/img.png&quot; data-alt=&quot;모드의계산기_출첵계산기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bns20T/dJMcaibfgg5/KuoK0T04zVdLDOTYmkuqK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbns20T%2FdJMcaibfgg5%2FKuoK0T04zVdLDOTYmkuqK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;100&quot; data-filename=&quot;모두의 출첵계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모드의계산기_출첵계산기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;전화메모계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wnDgU/dJMcadHIfTy/YC0m4UVGUbVzg6RDMUCiak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wnDgU/dJMcadHIfTy/YC0m4UVGUbVzg6RDMUCiak/img.png&quot; data-alt=&quot;모두의계산기_전화메모계산기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wnDgU/dJMcadHIfTy/YC0m4UVGUbVzg6RDMUCiak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwnDgU%2FdJMcadHIfTy%2FYC0m4UVGUbVzg6RDMUCiak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;100&quot; data-filename=&quot;전화메모계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모두의계산기_전화메모계산기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;크기비율계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tHWNH/dJMcajgQU75/e9P93RuahXrQgKaLYkKt1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tHWNH/dJMcajgQU75/e9P93RuahXrQgKaLYkKt1K/img.png&quot; data-alt=&quot;모두의계산기_크기비율계산기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tHWNH/dJMcajgQU75/e9P93RuahXrQgKaLYkKt1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtHWNH%2FdJMcajgQU75%2Fe9P93RuahXrQgKaLYkKt1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;100&quot; data-filename=&quot;크기비율계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모두의계산기_크기비율계산기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;모두의 날짜계산기_V1.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UWF1k/dJMcadnpTmw/TZoZ4zFk7H8GM7OkmYWyAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UWF1k/dJMcadnpTmw/TZoZ4zFk7H8GM7OkmYWyAK/img.png&quot; data-alt=&quot;모두의계산기_날짜계산기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UWF1k/dJMcadnpTmw/TZoZ4zFk7H8GM7OkmYWyAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUWF1k%2FdJMcadnpTmw%2FTZoZ4zFk7H8GM7OkmYWyAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;100&quot; data-filename=&quot;모두의 날짜계산기_V1.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모두의계산기_날짜계산기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;모두의 간단엑셀계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6MJZJ/dJMcaca16uh/iYfIlXdwU2kkFcttJ1bX2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6MJZJ/dJMcaca16uh/iYfIlXdwU2kkFcttJ1bX2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6MJZJ/dJMcaca16uh/iYfIlXdwU2kkFcttJ1bX2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6MJZJ%2FdJMcaca16uh%2FiYfIlXdwU2kkFcttJ1bX2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;100&quot; data-filename=&quot;모두의 간단엑셀계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스프레드출력계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LMGPE/dJMcadVfo2C/xkhQ6MjlgHbt5d3emvWQi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LMGPE/dJMcadVfo2C/xkhQ6MjlgHbt5d3emvWQi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LMGPE/dJMcadVfo2C/xkhQ6MjlgHbt5d3emvWQi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLMGPE%2FdJMcadVfo2C%2FxkhQ6MjlgHbt5d3emvWQi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;100&quot; data-filename=&quot;스프레드출력계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;사진출력.png&quot; data-origin-width=&quot;230&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3tsl9/dJMcac9RGB9/dkmGgJS2ZLiRDjPMPikh01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3tsl9/dJMcac9RGB9/dkmGgJS2ZLiRDjPMPikh01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3tsl9/dJMcac9RGB9/dkmGgJS2ZLiRDjPMPikh01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3tsl9%2FdJMcac9RGB9%2FdkmGgJS2ZLiRDjPMPikh01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;130&quot; data-filename=&quot;사진출력.png&quot; data-origin-width=&quot;230&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>모두의계산기</category>
      <category>모계</category>
      <category>모두</category>
      <category>모두의계산기</category>
      <category>모두의계산기시리즈</category>
      <category>시리즈</category>
      <category>업무용</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/63</guid>
      <comments>https://0-1.kr/63#entry63comment</comments>
      <pubDate>Tue, 6 Jan 2026 17:52:51 +0900</pubDate>
    </item>
    <item>
      <title>창업기업 범위 해설</title>
      <link>https://0-1.kr/59</link>
      <description>&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bd1lH3/dJMcagYqR8j/549fLYhiPoD3C885AEAwo1/25%EB%85%84%20%EC%B0%BD%EC%97%85%EA%B8%B0%EC%97%85%20%EB%B2%94%EC%9C%84%20%ED%95%B4%EC%84%A4%28%EC%B5%9C%EC%A2%85%29_%EC%A4%91%EC%86%8C%EB%B2%A4%EC%B2%98%EA%B8%B0%EC%97%85%EB%B6%80.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;25년 창업기업 범위 해설(최종)_중소벤처기업부.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;1.32MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;창업기업에 대한 기준이 정리된 책자가 있어 공유드립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각종 사례들을 중심으로 정리되어 있으니 참고하시구요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한장한장 살펴보시죠&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032928.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1465&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmOhYg/dJMcagqBeWs/c6TFc1l1o2wVATOH51ZMB0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmOhYg/dJMcagqBeWs/c6TFc1l1o2wVATOH51ZMB0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmOhYg/dJMcagqBeWs/c6TFc1l1o2wVATOH51ZMB0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmOhYg%2FdJMcagqBeWs%2Fc6TFc1l1o2wVATOH51ZMB0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1465&quot; data-filename=&quot;1000032928.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1465&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032929.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0SmMs/dJMcacIwqzq/kkUAndiff0PTcRKKcn5qS1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0SmMs/dJMcacIwqzq/kkUAndiff0PTcRKKcn5qS1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0SmMs/dJMcacIwqzq/kkUAndiff0PTcRKKcn5qS1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0SmMs%2FdJMcacIwqzq%2FkkUAndiff0PTcRKKcn5qS1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032929.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032930.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lCeRr/dJMcadtPGo9/oxOVZ48950DXzkwSGpbCS1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lCeRr/dJMcadtPGo9/oxOVZ48950DXzkwSGpbCS1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lCeRr/dJMcadtPGo9/oxOVZ48950DXzkwSGpbCS1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlCeRr%2FdJMcadtPGo9%2FoxOVZ48950DXzkwSGpbCS1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032930.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032931.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ecDFyX/dJMcagqBeWr/MrCDHYLYbXqVzfibuFvCR1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ecDFyX/dJMcagqBeWr/MrCDHYLYbXqVzfibuFvCR1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ecDFyX/dJMcagqBeWr/MrCDHYLYbXqVzfibuFvCR1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FecDFyX%2FdJMcagqBeWr%2FMrCDHYLYbXqVzfibuFvCR1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032931.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032932.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clEgpq/dJMcah37eU6/r8zhNOl6Ennr1zWs4aDbqk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clEgpq/dJMcah37eU6/r8zhNOl6Ennr1zWs4aDbqk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clEgpq/dJMcah37eU6/r8zhNOl6Ennr1zWs4aDbqk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclEgpq%2FdJMcah37eU6%2Fr8zhNOl6Ennr1zWs4aDbqk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032932.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032933.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bg1g8/dJMcadtPGpc/nlmMcxPy0inEGAExkxdvcK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bg1g8/dJMcadtPGpc/nlmMcxPy0inEGAExkxdvcK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bg1g8/dJMcadtPGpc/nlmMcxPy0inEGAExkxdvcK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBg1g8%2FdJMcadtPGpc%2FnlmMcxPy0inEGAExkxdvcK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032933.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032934.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MmPNd/dJMcacIwqzt/EuPx8YSC7739NQGvAfDtK0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MmPNd/dJMcacIwqzt/EuPx8YSC7739NQGvAfDtK0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MmPNd/dJMcacIwqzt/EuPx8YSC7739NQGvAfDtK0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMmPNd%2FdJMcacIwqzt%2FEuPx8YSC7739NQGvAfDtK0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032934.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032935.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o27Cf/dJMcagqBeWt/356Jm6DZipfBkIRER7ZrHk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o27Cf/dJMcagqBeWt/356Jm6DZipfBkIRER7ZrHk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o27Cf/dJMcagqBeWt/356Jm6DZipfBkIRER7ZrHk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo27Cf%2FdJMcagqBeWt%2F356Jm6DZipfBkIRER7ZrHk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032935.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032936.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d5ozNb/dJMcai2YkIR/qJkEiW0Uj0NeUMbKreuWlk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d5ozNb/dJMcai2YkIR/qJkEiW0Uj0NeUMbKreuWlk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d5ozNb/dJMcai2YkIR/qJkEiW0Uj0NeUMbKreuWlk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd5ozNb%2FdJMcai2YkIR%2FqJkEiW0Uj0NeUMbKreuWlk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032936.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032937.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ip2fc/dJMcah37eU7/gdIUZQdVpJ8tLeWL69WEN0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ip2fc/dJMcah37eU7/gdIUZQdVpJ8tLeWL69WEN0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ip2fc/dJMcah37eU7/gdIUZQdVpJ8tLeWL69WEN0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIp2fc%2FdJMcah37eU7%2FgdIUZQdVpJ8tLeWL69WEN0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032937.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032938.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wp2zh/dJMcah37eU5/KTohcWdd7b9nC869INMiv0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wp2zh/dJMcah37eU5/KTohcWdd7b9nC869INMiv0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wp2zh/dJMcah37eU5/KTohcWdd7b9nC869INMiv0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWp2zh%2FdJMcah37eU5%2FKTohcWdd7b9nC869INMiv0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032938.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032939.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpGAbx/dJMcai2YkIP/KEKGbew6fTtfnHbHELMbD1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpGAbx/dJMcai2YkIP/KEKGbew6fTtfnHbHELMbD1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpGAbx/dJMcai2YkIP/KEKGbew6fTtfnHbHELMbD1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpGAbx%2FdJMcai2YkIP%2FKEKGbew6fTtfnHbHELMbD1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032939.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032940.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uohbH/dJMcadtPGpb/BsaZyMIzDKTEOezU3sKEL0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uohbH/dJMcadtPGpb/BsaZyMIzDKTEOezU3sKEL0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uohbH/dJMcadtPGpb/BsaZyMIzDKTEOezU3sKEL0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuohbH%2FdJMcadtPGpb%2FBsaZyMIzDKTEOezU3sKEL0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032940.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032941.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zqk3z/dJMcacIwqzu/zoxCGtOIrie4WhGxMcQNTK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zqk3z/dJMcacIwqzu/zoxCGtOIrie4WhGxMcQNTK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zqk3z/dJMcacIwqzu/zoxCGtOIrie4WhGxMcQNTK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fzqk3z%2FdJMcacIwqzu%2FzoxCGtOIrie4WhGxMcQNTK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032941.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032942.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btJ7lQ/dJMcadtPGpa/VHdZ0uqd3V93K42wKruukk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btJ7lQ/dJMcadtPGpa/VHdZ0uqd3V93K42wKruukk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btJ7lQ/dJMcadtPGpa/VHdZ0uqd3V93K42wKruukk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtJ7lQ%2FdJMcadtPGpa%2FVHdZ0uqd3V93K42wKruukk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032942.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032943.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b95QOn/dJMcacV2pJ7/sFKKQoHmDWntkJ2KxVCfvk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b95QOn/dJMcacV2pJ7/sFKKQoHmDWntkJ2KxVCfvk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b95QOn/dJMcacV2pJ7/sFKKQoHmDWntkJ2KxVCfvk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb95QOn%2FdJMcacV2pJ7%2FsFKKQoHmDWntkJ2KxVCfvk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032943.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032944.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dW2pFc/dJMcacV2pJ9/nfTBND4OUrFkLOVPUI4bbk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dW2pFc/dJMcacV2pJ9/nfTBND4OUrFkLOVPUI4bbk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dW2pFc/dJMcacV2pJ9/nfTBND4OUrFkLOVPUI4bbk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdW2pFc%2FdJMcacV2pJ9%2FnfTBND4OUrFkLOVPUI4bbk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032944.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032945.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLjqqI/dJMcadUTSUl/zFz2b3qni3YSSqvVlkd6Ok/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLjqqI/dJMcadUTSUl/zFz2b3qni3YSSqvVlkd6Ok/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLjqqI/dJMcadUTSUl/zFz2b3qni3YSSqvVlkd6Ok/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLjqqI%2FdJMcadUTSUl%2FzFz2b3qni3YSSqvVlkd6Ok%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032945.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032946.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/exePhY/dJMcadUTSUi/3ZLBepgYUdxSkOnd4TRkGK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/exePhY/dJMcadUTSUi/3ZLBepgYUdxSkOnd4TRkGK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/exePhY/dJMcadUTSUi/3ZLBepgYUdxSkOnd4TRkGK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FexePhY%2FdJMcadUTSUi%2F3ZLBepgYUdxSkOnd4TRkGK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032946.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032947.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B1eOK/dJMcadUTSUm/j6Gev5fxOld4wXRsIyupYk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B1eOK/dJMcadUTSUm/j6Gev5fxOld4wXRsIyupYk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B1eOK/dJMcadUTSUm/j6Gev5fxOld4wXRsIyupYk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB1eOK%2FdJMcadUTSUm%2Fj6Gev5fxOld4wXRsIyupYk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032947.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032948.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2m1Q2/dJMcadUTSUk/CK7k9OQ2srLmCsoBKFlwf1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2m1Q2/dJMcadUTSUk/CK7k9OQ2srLmCsoBKFlwf1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2m1Q2/dJMcadUTSUk/CK7k9OQ2srLmCsoBKFlwf1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2m1Q2%2FdJMcadUTSUk%2FCK7k9OQ2srLmCsoBKFlwf1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032948.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032949.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bU3uZj/dJMcadUTSUg/5eQKWo6kBGn45tptqt6HtK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bU3uZj/dJMcadUTSUg/5eQKWo6kBGn45tptqt6HtK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bU3uZj/dJMcadUTSUg/5eQKWo6kBGn45tptqt6HtK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbU3uZj%2FdJMcadUTSUg%2F5eQKWo6kBGn45tptqt6HtK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032949.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032950.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vPEmI/dJMcadUTSUh/7pgTC4TN6UnwK9zl4EdRgK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vPEmI/dJMcadUTSUh/7pgTC4TN6UnwK9zl4EdRgK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vPEmI/dJMcadUTSUh/7pgTC4TN6UnwK9zl4EdRgK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvPEmI%2FdJMcadUTSUh%2F7pgTC4TN6UnwK9zl4EdRgK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032950.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032951.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PrzuH/dJMcadUTSUj/s1SJ3tjkKkBQB83mPjp8V1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PrzuH/dJMcadUTSUj/s1SJ3tjkKkBQB83mPjp8V1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PrzuH/dJMcadUTSUj/s1SJ3tjkKkBQB83mPjp8V1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPrzuH%2FdJMcadUTSUj%2Fs1SJ3tjkKkBQB83mPjp8V1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032951.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032952.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHAt8A/dJMcagRFy2e/j8ZlJjB7Pkq6TuOoOiARa0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHAt8A/dJMcagRFy2e/j8ZlJjB7Pkq6TuOoOiARa0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHAt8A/dJMcagRFy2e/j8ZlJjB7Pkq6TuOoOiARa0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHAt8A%2FdJMcagRFy2e%2Fj8ZlJjB7Pkq6TuOoOiARa0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032952.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032953.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BIpgM/dJMcacV2pJ6/M5FuikAHPbTkrdd1JXyUvk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BIpgM/dJMcacV2pJ6/M5FuikAHPbTkrdd1JXyUvk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BIpgM/dJMcacV2pJ6/M5FuikAHPbTkrdd1JXyUvk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBIpgM%2FdJMcacV2pJ6%2FM5FuikAHPbTkrdd1JXyUvk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032953.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032954.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kL2PY/dJMcacV2pKa/RSK4mv10kKlEGbnKlUqaZK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kL2PY/dJMcacV2pKa/RSK4mv10kKlEGbnKlUqaZK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kL2PY/dJMcacV2pKa/RSK4mv10kKlEGbnKlUqaZK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkL2PY%2FdJMcacV2pKa%2FRSK4mv10kKlEGbnKlUqaZK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032954.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032955.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0vqyY/dJMcadUTSUn/sBnWIVasQSBLLwIvqqa38k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0vqyY/dJMcadUTSUn/sBnWIVasQSBLLwIvqqa38k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0vqyY/dJMcadUTSUn/sBnWIVasQSBLLwIvqqa38k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0vqyY%2FdJMcadUTSUn%2FsBnWIVasQSBLLwIvqqa38k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032955.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032956.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfrwaE/dJMcacV2pJ8/4kKdeGjZ3dK1OOnOX7zis0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfrwaE/dJMcacV2pJ8/4kKdeGjZ3dK1OOnOX7zis0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfrwaE/dJMcacV2pJ8/4kKdeGjZ3dK1OOnOX7zis0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfrwaE%2FdJMcacV2pJ8%2F4kKdeGjZ3dK1OOnOX7zis0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032956.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032957.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Dqo7s/dJMcadN7IOf/Bsjhvm2w53NYcq0ZKL6kB1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Dqo7s/dJMcadN7IOf/Bsjhvm2w53NYcq0ZKL6kB1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Dqo7s/dJMcadN7IOf/Bsjhvm2w53NYcq0ZKL6kB1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDqo7s%2FdJMcadN7IOf%2FBsjhvm2w53NYcq0ZKL6kB1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032957.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032958.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3KquB/dJMcai2YkVf/byA0sOcoIKvA4jI7xuA0l0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3KquB/dJMcai2YkVf/byA0sOcoIKvA4jI7xuA0l0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3KquB/dJMcai2YkVf/byA0sOcoIKvA4jI7xuA0l0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3KquB%2FdJMcai2YkVf%2FbyA0sOcoIKvA4jI7xuA0l0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032958.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032959.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/otrXM/dJMcai2YkVe/yH4KiHrvIFfYLyXPHQqVoK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/otrXM/dJMcai2YkVe/yH4KiHrvIFfYLyXPHQqVoK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/otrXM/dJMcai2YkVe/yH4KiHrvIFfYLyXPHQqVoK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FotrXM%2FdJMcai2YkVe%2FyH4KiHrvIFfYLyXPHQqVoK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032959.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032960.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PSKjr/dJMcag5dTPL/vrfjD5JPEQ0nNCIdUi8kL0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PSKjr/dJMcag5dTPL/vrfjD5JPEQ0nNCIdUi8kL0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PSKjr/dJMcag5dTPL/vrfjD5JPEQ0nNCIdUi8kL0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPSKjr%2FdJMcag5dTPL%2FvrfjD5JPEQ0nNCIdUi8kL0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032960.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032961.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p6d6K/dJMcabQmyiY/shW7NWnSJc1Dk835g3Vr00/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p6d6K/dJMcabQmyiY/shW7NWnSJc1Dk835g3Vr00/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p6d6K/dJMcabQmyiY/shW7NWnSJc1Dk835g3Vr00/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp6d6K%2FdJMcabQmyiY%2FshW7NWnSJc1Dk835g3Vr00%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032961.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032962.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4Rxly/dJMcag5dTPK/znqc6wKQs2k6bT0jW582Vk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4Rxly/dJMcag5dTPK/znqc6wKQs2k6bT0jW582Vk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4Rxly/dJMcag5dTPK/znqc6wKQs2k6bT0jW582Vk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4Rxly%2FdJMcag5dTPK%2Fznqc6wKQs2k6bT0jW582Vk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032962.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032963.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3kPdt/dJMcadtPGIC/TqAvkLWgN75Mk7tO6nlTxK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3kPdt/dJMcadtPGIC/TqAvkLWgN75Mk7tO6nlTxK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3kPdt/dJMcadtPGIC/TqAvkLWgN75Mk7tO6nlTxK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3kPdt%2FdJMcadtPGIC%2FTqAvkLWgN75Mk7tO6nlTxK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032963.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032964.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6hbDv/dJMcafysClf/pVOGcAmLhkk6KnvugRipDk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6hbDv/dJMcafysClf/pVOGcAmLhkk6KnvugRipDk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6hbDv/dJMcafysClf/pVOGcAmLhkk6KnvugRipDk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6hbDv%2FdJMcafysClf%2FpVOGcAmLhkk6KnvugRipDk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032964.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032965.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPf1wj/dJMcafysClg/ClZkObqkxKjhZf4FYRGR91/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPf1wj/dJMcafysClg/ClZkObqkxKjhZf4FYRGR91/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPf1wj/dJMcafysClg/ClZkObqkxKjhZf4FYRGR91/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPf1wj%2FdJMcafysClg%2FClZkObqkxKjhZf4FYRGR91%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032965.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032966.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/79AZt/dJMcafysCle/dGBh1PB8TNHoyRfR5FnGB0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/79AZt/dJMcafysCle/dGBh1PB8TNHoyRfR5FnGB0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/79AZt/dJMcafysCle/dGBh1PB8TNHoyRfR5FnGB0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F79AZt%2FdJMcafysCle%2FdGBh1PB8TNHoyRfR5FnGB0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032966.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032967.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bv6CnI/dJMcahQAvBF/FHlLX57YgpckSyF7KFf8bk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bv6CnI/dJMcahQAvBF/FHlLX57YgpckSyF7KFf8bk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bv6CnI/dJMcahQAvBF/FHlLX57YgpckSyF7KFf8bk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbv6CnI%2FdJMcahQAvBF%2FFHlLX57YgpckSyF7KFf8bk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032967.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032968.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u6q3h/dJMcadtPGID/2LUVO8U7beovVHOAZHqdM0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u6q3h/dJMcadtPGID/2LUVO8U7beovVHOAZHqdM0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u6q3h/dJMcadtPGID/2LUVO8U7beovVHOAZHqdM0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu6q3h%2FdJMcadtPGID%2F2LUVO8U7beovVHOAZHqdM0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032968.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032969.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DJWQl/dJMcag5dTPM/zIVhtr0ZqmULGp1MbjtTKK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DJWQl/dJMcag5dTPM/zIVhtr0ZqmULGp1MbjtTKK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DJWQl/dJMcag5dTPM/zIVhtr0ZqmULGp1MbjtTKK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDJWQl%2FdJMcag5dTPM%2FzIVhtr0ZqmULGp1MbjtTKK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032969.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032970.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbmxRx/dJMcadtPGIB/XHSzKIbQIzs7nb7mklKld0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbmxRx/dJMcadtPGIB/XHSzKIbQIzs7nb7mklKld0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbmxRx/dJMcadtPGIB/XHSzKIbQIzs7nb7mklKld0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbmxRx%2FdJMcadtPGIB%2FXHSzKIbQIzs7nb7mklKld0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032970.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032971.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OQqJ7/dJMcag5dTPN/O8OVA61pvGLQCkxcb9N8KK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OQqJ7/dJMcag5dTPN/O8OVA61pvGLQCkxcb9N8KK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OQqJ7/dJMcag5dTPN/O8OVA61pvGLQCkxcb9N8KK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOQqJ7%2FdJMcag5dTPN%2FO8OVA61pvGLQCkxcb9N8KK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032971.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032972.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bazgRU/dJMcahQAvBG/8DAr7cvN7wei0YTFzStm50/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bazgRU/dJMcahQAvBG/8DAr7cvN7wei0YTFzStm50/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bazgRU/dJMcahQAvBG/8DAr7cvN7wei0YTFzStm50/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbazgRU%2FdJMcahQAvBG%2F8DAr7cvN7wei0YTFzStm50%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032972.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032979.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QRwzF/dJMcafysB6T/j1F6kbuCI6fZ73TookxWg1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QRwzF/dJMcafysB6T/j1F6kbuCI6fZ73TookxWg1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QRwzF/dJMcafysB6T/j1F6kbuCI6fZ73TookxWg1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQRwzF%2FdJMcafysB6T%2Fj1F6kbuCI6fZ73TookxWg1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032979.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032980.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwRTrI/dJMcafysB6S/FddhUvC6BiPUJgJCaZ4Q91/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwRTrI/dJMcafysB6S/FddhUvC6BiPUJgJCaZ4Q91/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwRTrI/dJMcafysB6S/FddhUvC6BiPUJgJCaZ4Q91/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwRTrI%2FdJMcafysB6S%2FFddhUvC6BiPUJgJCaZ4Q91%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032980.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032981.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/923SV/dJMcafLZ4Gp/XA5VJcCuufIxvk0dlYYFX1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/923SV/dJMcafLZ4Gp/XA5VJcCuufIxvk0dlYYFX1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/923SV/dJMcafLZ4Gp/XA5VJcCuufIxvk0dlYYFX1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F923SV%2FdJMcafLZ4Gp%2FXA5VJcCuufIxvk0dlYYFX1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032981.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032982.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cAmofC/dJMcafysB6Q/4eSljmu0lv5DCdtqPb9cq0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cAmofC/dJMcafysB6Q/4eSljmu0lv5DCdtqPb9cq0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cAmofC/dJMcafysB6Q/4eSljmu0lv5DCdtqPb9cq0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcAmofC%2FdJMcafysB6Q%2F4eSljmu0lv5DCdtqPb9cq0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032982.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032983.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vdS6U/dJMcahC2z0u/ZcKk9RGT5RMoslGWNAipzK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vdS6U/dJMcahC2z0u/ZcKk9RGT5RMoslGWNAipzK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vdS6U/dJMcahC2z0u/ZcKk9RGT5RMoslGWNAipzK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvdS6U%2FdJMcahC2z0u%2FZcKk9RGT5RMoslGWNAipzK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032983.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032984.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DrLuw/dJMcafysB6O/rKC6pNCLMkj9YzVkoyYGE1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DrLuw/dJMcafysB6O/rKC6pNCLMkj9YzVkoyYGE1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DrLuw/dJMcafysB6O/rKC6pNCLMkj9YzVkoyYGE1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDrLuw%2FdJMcafysB6O%2FrKC6pNCLMkj9YzVkoyYGE1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032984.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032985.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MuNFo/dJMcafLZ4Gq/OPSIxpMt9nz3BKXFgXW8v1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MuNFo/dJMcafLZ4Gq/OPSIxpMt9nz3BKXFgXW8v1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MuNFo/dJMcafLZ4Gq/OPSIxpMt9nz3BKXFgXW8v1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMuNFo%2FdJMcafLZ4Gq%2FOPSIxpMt9nz3BKXFgXW8v1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032985.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032986.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bT0xA5/dJMcahQAvnK/ELS4arPIrhVPBlhOsdj7c1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bT0xA5/dJMcahQAvnK/ELS4arPIrhVPBlhOsdj7c1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bT0xA5/dJMcahQAvnK/ELS4arPIrhVPBlhOsdj7c1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbT0xA5%2FdJMcahQAvnK%2FELS4arPIrhVPBlhOsdj7c1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032986.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032987.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/og82v/dJMcafysB6P/GzYvp0R1U4N2HWZ0ZIzgtk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/og82v/dJMcafysB6P/GzYvp0R1U4N2HWZ0ZIzgtk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/og82v/dJMcafysB6P/GzYvp0R1U4N2HWZ0ZIzgtk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fog82v%2FdJMcafysB6P%2FGzYvp0R1U4N2HWZ0ZIzgtk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032987.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032988.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfxfbh/dJMcahC2z0v/YWlt944Ef5wVsRDdADvxsK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfxfbh/dJMcahC2z0v/YWlt944Ef5wVsRDdADvxsK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfxfbh/dJMcahC2z0v/YWlt944Ef5wVsRDdADvxsK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbfxfbh%2FdJMcahC2z0v%2FYWlt944Ef5wVsRDdADvxsK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032988.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032989.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9ZLid/dJMcafysB6R/Su11mkSAfP95IivwOzJfhk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9ZLid/dJMcafysB6R/Su11mkSAfP95IivwOzJfhk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9ZLid/dJMcafysB6R/Su11mkSAfP95IivwOzJfhk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9ZLid%2FdJMcafysB6R%2FSu11mkSAfP95IivwOzJfhk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032989.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032990.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNqZub/dJMcaiPrLmn/q1I2u2Zakt6bZlQFegzNlk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNqZub/dJMcaiPrLmn/q1I2u2Zakt6bZlQFegzNlk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNqZub/dJMcaiPrLmn/q1I2u2Zakt6bZlQFegzNlk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNqZub%2FdJMcaiPrLmn%2Fq1I2u2Zakt6bZlQFegzNlk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032990.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032991.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pLpIU/dJMcafLZ4Gr/OkKYBq03GjMVLnbk0FRJn1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pLpIU/dJMcafLZ4Gr/OkKYBq03GjMVLnbk0FRJn1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pLpIU/dJMcafLZ4Gr/OkKYBq03GjMVLnbk0FRJn1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpLpIU%2FdJMcafLZ4Gr%2FOkKYBq03GjMVLnbk0FRJn1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032991.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032992.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/baFTXY/dJMcadN7Jf4/rcVUGCjrOoljVRhV852w8K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/baFTXY/dJMcadN7Jf4/rcVUGCjrOoljVRhV852w8K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/baFTXY/dJMcadN7Jf4/rcVUGCjrOoljVRhV852w8K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbaFTXY%2FdJMcadN7Jf4%2FrcVUGCjrOoljVRhV852w8K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032992.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032993.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ha6af/dJMcadN7Jf5/4jCMfzAbrEXBX5Ssw7n9HK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ha6af/dJMcadN7Jf5/4jCMfzAbrEXBX5Ssw7n9HK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ha6af/dJMcadN7Jf5/4jCMfzAbrEXBX5Ssw7n9HK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHa6af%2FdJMcadN7Jf5%2F4jCMfzAbrEXBX5Ssw7n9HK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032993.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032994.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbaagX/dJMcaajCUGL/Ynjukowk7OJs0KFNwSYGyk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbaagX/dJMcaajCUGL/Ynjukowk7OJs0KFNwSYGyk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbaagX/dJMcaajCUGL/Ynjukowk7OJs0KFNwSYGyk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbaagX%2FdJMcaajCUGL%2FYnjukowk7OJs0KFNwSYGyk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032994.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032995.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkD7sW/dJMcaajCUGM/ZKCqqgSXM4LiPzKvWtBzVk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkD7sW/dJMcaajCUGM/ZKCqqgSXM4LiPzKvWtBzVk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkD7sW/dJMcaajCUGM/ZKCqqgSXM4LiPzKvWtBzVk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkD7sW%2FdJMcaajCUGM%2FZKCqqgSXM4LiPzKvWtBzVk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032995.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032996.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjYrES/dJMcadN7Jf3/tMGoRVoStDQc6BWSUk9fBK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjYrES/dJMcadN7Jf3/tMGoRVoStDQc6BWSUk9fBK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjYrES/dJMcadN7Jf3/tMGoRVoStDQc6BWSUk9fBK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjYrES%2FdJMcadN7Jf3%2FtMGoRVoStDQc6BWSUk9fBK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032996.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032997.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M5vJk/dJMb99ZkcXt/QtvT9RxtrxHLxAihlej7v1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M5vJk/dJMb99ZkcXt/QtvT9RxtrxHLxAihlej7v1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M5vJk/dJMb99ZkcXt/QtvT9RxtrxHLxAihlej7v1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM5vJk%2FdJMb99ZkcXt%2FQtvT9RxtrxHLxAihlej7v1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032997.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032998.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FLERT/dJMcafLZ5gb/2UE21PyjOBju0mCEVXzYK0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FLERT/dJMcafLZ5gb/2UE21PyjOBju0mCEVXzYK0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FLERT/dJMcafLZ5gb/2UE21PyjOBju0mCEVXzYK0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFLERT%2FdJMcafLZ5gb%2F2UE21PyjOBju0mCEVXzYK0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032998.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000032999.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UDxDY/dJMcahC2Axi/TrqhhcFqWmO1bidVC5GKE1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UDxDY/dJMcahC2Axi/TrqhhcFqWmO1bidVC5GKE1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UDxDY/dJMcahC2Axi/TrqhhcFqWmO1bidVC5GKE1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUDxDY%2FdJMcahC2Axi%2FTrqhhcFqWmO1bidVC5GKE1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000032999.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033000.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lmewt/dJMcafLZ5ga/aQTyMeeEqPBTaqNa5nijUk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lmewt/dJMcafLZ5ga/aQTyMeeEqPBTaqNa5nijUk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lmewt/dJMcafLZ5ga/aQTyMeeEqPBTaqNa5nijUk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flmewt%2FdJMcafLZ5ga%2FaQTyMeeEqPBTaqNa5nijUk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033000.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033001.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c41kbx/dJMcadtPGpy/kQTnSqlLqkztZFoztjzZE1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c41kbx/dJMcadtPGpy/kQTnSqlLqkztZFoztjzZE1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c41kbx/dJMcadtPGpy/kQTnSqlLqkztZFoztjzZE1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc41kbx%2FdJMcadtPGpy%2FkQTnSqlLqkztZFoztjzZE1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033001.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033002.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3CaLS/dJMcadtPGps/4EEZsfKNjuY3k3nKfIbtf1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3CaLS/dJMcadtPGps/4EEZsfKNjuY3k3nKfIbtf1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3CaLS/dJMcadtPGps/4EEZsfKNjuY3k3nKfIbtf1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3CaLS%2FdJMcadtPGps%2F4EEZsfKNjuY3k3nKfIbtf1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033002.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033003.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Z6T7e/dJMcadtPGpt/5MzoazK8HKMrUtj2K18lS1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Z6T7e/dJMcadtPGpt/5MzoazK8HKMrUtj2K18lS1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Z6T7e/dJMcadtPGpt/5MzoazK8HKMrUtj2K18lS1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZ6T7e%2FdJMcadtPGpt%2F5MzoazK8HKMrUtj2K18lS1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033003.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033004.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJoTF2/dJMcahJPdoN/4UxXS4lsDeHYNhzcphj2Ck/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJoTF2/dJMcahJPdoN/4UxXS4lsDeHYNhzcphj2Ck/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJoTF2/dJMcahJPdoN/4UxXS4lsDeHYNhzcphj2Ck/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJoTF2%2FdJMcahJPdoN%2F4UxXS4lsDeHYNhzcphj2Ck%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033004.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033005.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VQZke/dJMcadtPGpu/5ffKMyk4J32WFilRpdPugk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VQZke/dJMcadtPGpu/5ffKMyk4J32WFilRpdPugk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VQZke/dJMcadtPGpu/5ffKMyk4J32WFilRpdPugk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVQZke%2FdJMcadtPGpu%2F5ffKMyk4J32WFilRpdPugk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033005.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033006.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmmGk1/dJMcadtPGpr/V8N4OZGwvzaZjBvOBEXYvK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmmGk1/dJMcadtPGpr/V8N4OZGwvzaZjBvOBEXYvK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmmGk1/dJMcadtPGpr/V8N4OZGwvzaZjBvOBEXYvK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmmGk1%2FdJMcadtPGpr%2FV8N4OZGwvzaZjBvOBEXYvK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033006.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033007.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FC7kU/dJMcacIwqzG/2z9NBx3bqGehPiRMyY1XkK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FC7kU/dJMcacIwqzG/2z9NBx3bqGehPiRMyY1XkK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FC7kU/dJMcacIwqzG/2z9NBx3bqGehPiRMyY1XkK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFC7kU%2FdJMcacIwqzG%2F2z9NBx3bqGehPiRMyY1XkK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033007.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033008.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rTkX1/dJMcagYqSXd/o0gLXSKzviykmankL6LWg0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rTkX1/dJMcagYqSXd/o0gLXSKzviykmankL6LWg0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rTkX1/dJMcagYqSXd/o0gLXSKzviykmankL6LWg0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrTkX1%2FdJMcagYqSXd%2Fo0gLXSKzviykmankL6LWg0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033008.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033009.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/br8E1l/dJMcadtPGpw/uUGjErJg8cLiaVAZccsYnk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/br8E1l/dJMcadtPGpw/uUGjErJg8cLiaVAZccsYnk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/br8E1l/dJMcadtPGpw/uUGjErJg8cLiaVAZccsYnk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbr8E1l%2FdJMcadtPGpw%2FuUGjErJg8cLiaVAZccsYnk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033009.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033010.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XA9wz/dJMcahJPdoP/RS4er4yFK9MLoTBS0hKTaK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XA9wz/dJMcahJPdoP/RS4er4yFK9MLoTBS0hKTaK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XA9wz/dJMcahJPdoP/RS4er4yFK9MLoTBS0hKTaK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXA9wz%2FdJMcahJPdoP%2FRS4er4yFK9MLoTBS0hKTaK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033010.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033011.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q6nea/dJMcadtPGpv/nUqVdmZ6r2lnCTCyYBSHnK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q6nea/dJMcadtPGpv/nUqVdmZ6r2lnCTCyYBSHnK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q6nea/dJMcadtPGpv/nUqVdmZ6r2lnCTCyYBSHnK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq6nea%2FdJMcadtPGpv%2FnUqVdmZ6r2lnCTCyYBSHnK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033011.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033012.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b72tYr/dJMcadtPGpx/VuDOBbgCrcC41V8USVnCwk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b72tYr/dJMcadtPGpx/VuDOBbgCrcC41V8USVnCwk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b72tYr/dJMcadtPGpx/VuDOBbgCrcC41V8USVnCwk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb72tYr%2FdJMcadtPGpx%2FVuDOBbgCrcC41V8USVnCwk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033012.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033013.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clc4Vd/dJMcacIwqzF/DPmQKCXY90GbICpaeHyRlK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clc4Vd/dJMcacIwqzF/DPmQKCXY90GbICpaeHyRlK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clc4Vd/dJMcacIwqzF/DPmQKCXY90GbICpaeHyRlK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fclc4Vd%2FdJMcacIwqzF%2FDPmQKCXY90GbICpaeHyRlK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033013.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033014.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYyj6U/dJMcahJPdoM/85Lr17YY04M6bxl0cnc7QK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYyj6U/dJMcahJPdoM/85Lr17YY04M6bxl0cnc7QK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYyj6U/dJMcahJPdoM/85Lr17YY04M6bxl0cnc7QK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYyj6U%2FdJMcahJPdoM%2F85Lr17YY04M6bxl0cnc7QK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033014.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033015.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDSDh6/dJMcahJPdoO/KKFIW3Ddbu9XOT2opqlkp1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDSDh6/dJMcahJPdoO/KKFIW3Ddbu9XOT2opqlkp1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDSDh6/dJMcahJPdoO/KKFIW3Ddbu9XOT2opqlkp1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDSDh6%2FdJMcahJPdoO%2FKKFIW3Ddbu9XOT2opqlkp1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033015.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1000033016.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcDIKW/dJMcagYqSXc/ZAg3KXkxCskqa8azXz0R20/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcDIKW/dJMcagYqSXc/ZAg3KXkxCskqa8azXz0R20/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcDIKW/dJMcagYqSXc/ZAg3KXkxCskqa8azXz0R20/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcDIKW%2FdJMcagYqSXc%2FZAg3KXkxCskqa8azXz0R20%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1464&quot; data-filename=&quot;1000033016.jpg&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>청년전용창업자금 AtoZ</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/59</guid>
      <comments>https://0-1.kr/59#entry59comment</comments>
      <pubDate>Mon, 29 Dec 2025 10:03:09 +0900</pubDate>
    </item>
    <item>
      <title>02] 청년전용창업자금 자격요건 (250708)</title>
      <link>https://0-1.kr/56</link>
      <description>&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;청창자금 자격요건 확인&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데..자격요건을 먼저 소개하지 않은 이유는 뭘까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공고문만으로 자격요건이 되는지 않되는 지는 접수 후 상담을 진행 한 후에&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;판단해도 늦이 않아서 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;청년전용창업자금 이란 명칭때문에&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 청년들이 접수가 가능한 것은 아닙니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;중소벤처기업진흥공단은 [소기업], [중기업]&amp;nbsp; 이상의 기업만 지원 가능&lt;br /&gt;&lt;br /&gt;단, 제조업과 중점지원분야는 예외로 [소상공인]도 지원 가능&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소기업 : 짧게 말해 직원 5명 이상을 1년간 유지한 기업 또는 중소기업확인서 상 소기업&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(매출,종업원 기준으로 나뉨.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bvALGe/btsO8Vaxl9k/QcPfPgs73pBjUVSOo5zkW0/003.%EC%A4%91%EC%A0%90%EC%A7%80%EC%9B%90%EB%B6%84%EC%95%BC%2825%EB%85%84%20%EA%B8%B0%EC%A4%80%29_%28p.1%7Ep.24%EA%B9%8C%EC%A7%80%29.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;003.중점지원분야(25년 기준)_(p.1~p.24까지).pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.63MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;접수완료 및 상담 진행&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bo4P2o/btsO7HEpWLx/Xm2u6O50Hn7tToWrA4HJD0/001.2025%EB%85%84%20%EC%A0%95%EC%B1%85%EC%9E%90%EA%B8%88%20%EC%98%A8%EB%9D%BC%EC%9D%B8%20%EC%8B%A0%EC%B2%AD%20%EB%A7%A4%EB%89%B4%EC%96%BC%28%EA%B8%B0%EC%97%85%EC%9A%A9%29%20%281%29.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;001.2025년 정책자금 온라인 신청 매뉴얼(기업용) (1).pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;6.19MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;접수완료 후&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/8_zuvcjGEiI?si=T2QiMUTnHrHv5Yxe&quot; width=&quot;560&quot; height=&quot;315&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영상은 아래의 링크에서 확인 가능합니다. 다음 페이지에서 자세히 설명드릴게요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/8_zuvcjGEiI?si=T2QiMUTnHrHv5Yxe&quot;&gt;https://youtu.be/8_zuvcjGEiI?si=T2QiMUTnHrHv5Yxe&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>청년전용창업자금 AtoZ</category>
      <category>청창자금</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/56</guid>
      <comments>https://0-1.kr/56#entry56comment</comments>
      <pubDate>Tue, 8 Jul 2025 12:23:54 +0900</pubDate>
    </item>
    <item>
      <title>01]청년전용창업자금 접수관련 (250708)</title>
      <link>https://0-1.kr/55</link>
      <description>&lt;blockquote data-ke-style=&quot;style3&quot;&gt;접수가능일 확인(매월 1일 홈페이지) -&amp;gt; 접수일 접속 -&amp;gt; 상담일 선점 -&amp;gt; 공인인증서로 마무리&lt;br /&gt;*공인인증서로 마무리를 하지 않은 경우 정상접수가 되지 않은 경우입니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중소벤처기업진흥공단의 청년전용창업자금 접수와 수령까지 가이드를 진행하고자 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 분들이 비대면으로 변경되어 어려워 하시고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지원대상 및 정확한 정보가 많이 없어 혼란을 겪는 부분들이 많아&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 직접 자세히 설명드리려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞으로 소개드릴 영상과 자료들은 모두 중소벤처기업진흥공단 홈페이지에&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다 업로드 된 내용이오니 안심하시고 공유하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중진공 홈페이지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.kosmes.or.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.kosmes.or.kr/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1751944178190&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;중소벤처기업진흥공단&quot; data-og-description=&quot;&quot; data-og-host=&quot;www.kosmes.or.kr&quot; data-og-source-url=&quot;https://www.kosmes.or.kr/&quot; data-og-url=&quot;https://www.kosmes.or.kr/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.kosmes.or.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.kosmes.or.kr/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;중소벤처기업진흥공단&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.kosmes.or.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;청년전용창업자금 접수 시작&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;접수가 되어야 뭐든 시작을 하죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 분들이 정상 접수가 되지 않았는데&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 아래의 영상으로 모두 확인이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정말 이대로만 따라하시면 되는데 안보시네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간이 된다면 분 초로 나눠 설명드리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/w0Q0eYzHAwk?si=a69RG6VRXKXjcTG6&quot; width=&quot;560&quot; height=&quot;315&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보다 큰 화면은 링크와 함께 아래 영상을 확인하시면 됩니다.(동일영상)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://youtu.be/w0Q0eYzHAwk?si=Grb2M176XR8KP1tz&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://youtu.be/w0Q0eYzHAwk?si=Grb2M176XR8KP1tz&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=w0Q0eYzHAwk&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bbU3UL/hyZftvHHu7/ZfT4NV29Wp8k0lzEXgaCi1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=188_322_278_420,https://scrap.kakaocdn.net/dn/yb4ER/hyZfvUADNs/9d3PEnrHkKsdq3jkOtEl7k/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=188_322_278_420&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;[2024ver] 중진공 정책자금 온라인 신청, 이대로 따라하세요 ~!&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/w0Q0eYzHAwk&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 장에선 자격요건에 관해 설명드릴게요!&lt;/p&gt;</description>
      <category>청년전용창업자금 AtoZ</category>
      <category>청창자금</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/55</guid>
      <comments>https://0-1.kr/55#entry55comment</comments>
      <pubDate>Tue, 8 Jul 2025 12:12:59 +0900</pubDate>
    </item>
    <item>
      <title>2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)</title>
      <link>https://0-1.kr/53</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;초기창업자를 위한 자금확보 로드맵입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_02.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/We74P/btsMNr3ivXj/2kDEv9mO5WY2Yk0SRfhrP0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/We74P/btsMNr3ivXj/2kDEv9mO5WY2Yk0SRfhrP0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/We74P/btsMNr3ivXj/2kDEv9mO5WY2Yk0SRfhrP0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWe74P%2FbtsMNr3ivXj%2F2kDEv9mO5WY2Yk0SRfhrP0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_02.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_03.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4HYTl/btsMLVLqrin/qJ0QzRrnKtgg8LcSByrKOk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4HYTl/btsMLVLqrin/qJ0QzRrnKtgg8LcSByrKOk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4HYTl/btsMLVLqrin/qJ0QzRrnKtgg8LcSByrKOk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4HYTl%2FbtsMLVLqrin%2FqJ0QzRrnKtgg8LcSByrKOk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_03.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_04.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cKmFQc/btsMMCR0G7e/yxvB5mjlHKQlqZO0IsDyLk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cKmFQc/btsMMCR0G7e/yxvB5mjlHKQlqZO0IsDyLk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cKmFQc/btsMMCR0G7e/yxvB5mjlHKQlqZO0IsDyLk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcKmFQc%2FbtsMMCR0G7e%2FyxvB5mjlHKQlqZO0IsDyLk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_04.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_05.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rxiTP/btsMLK4A8AQ/eadToEAYfWyoWJ1gZSjTnk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rxiTP/btsMLK4A8AQ/eadToEAYfWyoWJ1gZSjTnk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rxiTP/btsMLK4A8AQ/eadToEAYfWyoWJ1gZSjTnk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrxiTP%2FbtsMLK4A8AQ%2FeadToEAYfWyoWJ1gZSjTnk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_05.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_06.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mAY3b/btsMNpYIcb1/5U6KmgR3S3ugLWOv6MrQR1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mAY3b/btsMNpYIcb1/5U6KmgR3S3ugLWOv6MrQR1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mAY3b/btsMNpYIcb1/5U6KmgR3S3ugLWOv6MrQR1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmAY3b%2FbtsMNpYIcb1%2F5U6KmgR3S3ugLWOv6MrQR1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_06.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_07.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CCSvC/btsMNr3iuB6/ckQRTVyHwDBbRVkhC9sgC0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CCSvC/btsMNr3iuB6/ckQRTVyHwDBbRVkhC9sgC0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CCSvC/btsMNr3iuB6/ckQRTVyHwDBbRVkhC9sgC0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCCSvC%2FbtsMNr3iuB6%2FckQRTVyHwDBbRVkhC9sgC0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_07.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혁신 플랫폼 : &lt;a href=&quot;https://www.mssmiv.com/portal/Main&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.mssmiv.com/portal/Main&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_08.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cd1Srb/btsMMHS4vDg/PoIbKaNKHymKFsBJ2fZwW1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cd1Srb/btsMMHS4vDg/PoIbKaNKHymKFsBJ2fZwW1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cd1Srb/btsMMHS4vDg/PoIbKaNKHymKFsBJ2fZwW1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd1Srb%2FbtsMMHS4vDg%2FPoIbKaNKHymKFsBJ2fZwW1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_08.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_10.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckZUIN/btsMLvTUf4m/msUxUQDPPRAVlUNCOSqGaK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckZUIN/btsMLvTUf4m/msUxUQDPPRAVlUNCOSqGaK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckZUIN/btsMLvTUf4m/msUxUQDPPRAVlUNCOSqGaK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckZUIN%2FbtsMLvTUf4m%2FmsUxUQDPPRAVlUNCOSqGaK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_10.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a href=&quot;https://www.k-startup.go.kr/web/s/FRAgC7i5n&quot;&gt;https://www.k-startup.go.kr/web/s/FRAgC7i5n&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_11.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSZsZn/btsMMdStY2U/Oib0SDyH0awuEc1GcRWO8k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSZsZn/btsMMdStY2U/Oib0SDyH0awuEc1GcRWO8k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSZsZn/btsMMdStY2U/Oib0SDyH0awuEc1GcRWO8k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSZsZn%2FbtsMMdStY2U%2FOib0SDyH0awuEc1GcRWO8k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_11.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_12.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2NUuU/btsMKSoqnOG/9eCnwDx3n2h6Wnm5akKul1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2NUuU/btsMKSoqnOG/9eCnwDx3n2h6Wnm5akKul1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2NUuU/btsMKSoqnOG/9eCnwDx3n2h6Wnm5akKul1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2NUuU%2FbtsMKSoqnOG%2F9eCnwDx3n2h6Wnm5akKul1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_12.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_13.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHXf6G/btsMMzucRwu/KN57AB5PkdkOKzafPJN9rK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHXf6G/btsMMzucRwu/KN57AB5PkdkOKzafPJN9rK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHXf6G/btsMMzucRwu/KN57AB5PkdkOKzafPJN9rK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHXf6G%2FbtsMMzucRwu%2FKN57AB5PkdkOKzafPJN9rK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_13.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_14.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boNAYo/btsMME3iYkG/LkwwNYWCNiVn43H5ND586k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boNAYo/btsMME3iYkG/LkwwNYWCNiVn43H5ND586k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boNAYo/btsMME3iYkG/LkwwNYWCNiVn43H5ND586k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboNAYo%2FbtsMME3iYkG%2FLkwwNYWCNiVn43H5ND586k%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_14.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;25&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;년 중앙부처 및 지자체 창업지원사업 통합공고 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a href=&quot;https://www.k-startup.go.kr/web/s/XhqLSnDO&quot;&gt;https://www.k-startup.go.kr/web/s/XhqLSnDO&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;년&amp;nbsp;생애최초 청년창업 지원 창업자 모집 공고 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: (&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;중심대학과 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;창진원&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 공지 구분&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://www.k-startup.go.kr/web/s/Oh4twbQA5&quot;&gt;https://www.k-startup.go.kr/web/s/Oh4twbQA5&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;년&amp;nbsp;예비창업패키지&amp;nbsp;일반분야 주관기관 모집공고&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a href=&quot;https://www.k-startup.go.kr/web/s/dsNewbQA5&quot;&gt;https://www.k-startup.go.kr/web/s/dsNewbQA5&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;년&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;신사업창업사관학교 예비창업자 모집&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;a href=&quot;https://www.k-startup.go.kr/web/s/kHOPibQA5&quot;&gt;https://www.k-startup.go.kr/web/s/kHOPibQA5&lt;/a&gt; (&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;소진공&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;년&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;초기창업패키지 창업기업 모집&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;a href=&quot;https://www.k-startup.go.kr/web/s/A5hOibQA5&quot;&gt;https://www.k-startup.go.kr/web/s/A5hOibQA5&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;25&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;년 창업도약패키지 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;a href=&quot;https://www.k-startup.go.kr/web/s/LycOibQA5&quot;&gt;https://www.k-startup.go.kr/web/s/LycOibQA5&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_15.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E5MwE/btsMLLbewPS/l8PHyI7oXoyEpuIwkItow0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E5MwE/btsMLLbewPS/l8PHyI7oXoyEpuIwkItow0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E5MwE/btsMLLbewPS/l8PHyI7oXoyEpuIwkItow0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE5MwE%2FbtsMLLbewPS%2Fl8PHyI7oXoyEpuIwkItow0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_15.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_16.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVlDic/btsMMA7HDk2/MeldSiPULmU0DQZOzMNf0K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVlDic/btsMMA7HDk2/MeldSiPULmU0DQZOzMNf0K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVlDic/btsMMA7HDk2/MeldSiPULmU0DQZOzMNf0K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVlDic%2FbtsMMA7HDk2%2FMeldSiPULmU0DQZOzMNf0K%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_16.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_17.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4xrNV/btsMMJQUpcu/8RkN1ULtXKTHWPkfjA8upk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4xrNV/btsMMJQUpcu/8RkN1ULtXKTHWPkfjA8upk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4xrNV/btsMMJQUpcu/8RkN1ULtXKTHWPkfjA8upk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4xrNV%2FbtsMMJQUpcu%2F8RkN1ULtXKTHWPkfjA8upk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_17.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_19.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpqE2O/btsMMGmvfs9/5G8C800zd0PfjUPpPVZfY1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpqE2O/btsMMGmvfs9/5G8C800zd0PfjUPpPVZfY1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpqE2O/btsMMGmvfs9/5G8C800zd0PfjUPpPVZfY1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpqE2O%2FbtsMMGmvfs9%2F5G8C800zd0PfjUPpPVZfY1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_19.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_20.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTDdUK/btsMNfaV1Ti/HYomx9E62e7WD1Ubc1xml1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTDdUK/btsMNfaV1Ti/HYomx9E62e7WD1Ubc1xml1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTDdUK/btsMNfaV1Ti/HYomx9E62e7WD1Ubc1xml1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTDdUK%2FbtsMNfaV1Ti%2FHYomx9E62e7WD1Ubc1xml1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_20.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;amp;투자)_VF(250320)_페이지_21.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CGJIR/btsMMfvZOrf/jJylTXvzZaS4689YeP8HWk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CGJIR/btsMMfvZOrf/jJylTXvzZaS4689YeP8HWk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CGJIR/btsMMfvZOrf/jJylTXvzZaS4689YeP8HWk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCGJIR%2FbtsMMfvZOrf%2FjJylTXvzZaS4689YeP8HWk%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2667&quot; height=&quot;1500&quot; data-filename=&quot;2025 초기창업자의 자금확보 로드맵(창업지원금vs융자&amp;amp;투자)_VF(250320)_페이지_21.jpg&quot; data-origin-width=&quot;2667&quot; data-origin-height=&quot;1500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>스타트업 운영TIP/정부지원사업 TIP</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/53</guid>
      <comments>https://0-1.kr/53#entry53comment</comments>
      <pubDate>Sun, 16 Mar 2025 13:32:39 +0900</pubDate>
    </item>
    <item>
      <title>24년 중기부 창업지원기관 총정리_25년 대비</title>
      <link>https://0-1.kr/52</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uuPGt/btsKeCHG7cx/M8Yxr8dFQUoreSOoI4kjK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uuPGt/btsKeCHG7cx/M8Yxr8dFQUoreSOoI4kjK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uuPGt/btsKeCHG7cx/M8Yxr8dFQUoreSOoI4kjK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuuPGt%2FbtsKeCHG7cx%2FM8Yxr8dFQUoreSOoI4kjK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1080&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;스타트업EX 여요!&lt;br /&gt;&lt;br /&gt;24년이 마무리 되어가는 시점에서 갑자기 24년자료라&lt;br /&gt;&lt;br /&gt;많이 당황하셨을건데요&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;009&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/009.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/009.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;25년에도 응용할 수 있는&lt;br /&gt;&lt;br /&gt;창업을 지원하는 기관을 24년 자료로 정리해 볼까 합니다.&lt;br /&gt;&lt;br /&gt;해당자료는 매년 1월 k-startup이란 사이트에서&lt;br /&gt;&lt;br /&gt;업로드하고 있으며 방대한 자료다 보니&lt;br /&gt;&lt;br /&gt;그냥 넘어가는 경우가 있는데&lt;br /&gt;&lt;br /&gt;본인이 적극 활용할 수 있는 팁을 알려드리고자 합니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/OwtzD/btsKeEL5XCf/cpNlkt2aq1VpSR7GPcmZDK/20241022_131654.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;20241022_131654.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;14.28MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;해당 자료는 &lt;br /&gt;[24년도 중앙부처 및 기초광역지자체 창업지원사업안내]&lt;br /&gt;&lt;br /&gt;라는 책자인데요.&lt;br /&gt;&lt;br /&gt;여기 나와있는 센터 및 기관들이 정부가 자금을 지원하여 운영하는 기관이라 보심 됩니다.&lt;br /&gt;&lt;br /&gt;해당 자료 활용팁은 0-4.co.kr/49 에 &lt;br /&gt;자세히 정리해놨으니 참고하시구요&lt;br /&gt;&lt;br /&gt;이제부터&lt;br /&gt;여기 있는 기관들을 앞으로 하나하나 뜯어 볼텐데요&lt;br /&gt;&lt;br /&gt;해당 자료를 다운 받아 대표님이 운영하는 대표 키워드로 기관을 검색하시면 됩니다.&lt;br /&gt;&lt;br /&gt;가령 [디자인업] 을 운영하고 있으시면 &lt;br /&gt;&lt;br /&gt;#&lt;b&gt;콘텐츠, #디자인&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;등 으로 검색해보시구요. &lt;br /&gt;&lt;br /&gt;스포츠 관련 사업을 운영하시면&lt;br /&gt;&lt;br /&gt;#&lt;b&gt;스포츠, #운동, #체육, #헬스 &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;등으로 키워드를 검색해 보시면&lt;br /&gt;대표님 아이템을 지원하고 있는&lt;br /&gt;&lt;br /&gt;다소 생소한 기관까지 검색이 될겁니다.&lt;br /&gt;&lt;br /&gt;이제 한번 같이&lt;br /&gt;하나하나 뜯어보시죠.ㅎ&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;025&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/025.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/025.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>창업지원기관소개</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/52</guid>
      <comments>https://0-1.kr/52#entry52comment</comments>
      <pubDate>Tue, 22 Oct 2024 13:31:39 +0900</pubDate>
    </item>
    <item>
      <title>2024 하동창업지원사업 스케쥴링</title>
      <link>https://0-1.kr/51</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드2.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMjkHh/btsIRfzipyj/ek5ZulvVOVinbzmHBYnnf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMjkHh/btsIRfzipyj/ek5ZulvVOVinbzmHBYnnf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMjkHh/btsIRfzipyj/ek5ZulvVOVinbzmHBYnnf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMjkHh%2FbtsIRfzipyj%2Fek5ZulvVOVinbzmHBYnnf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드2.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드4.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zBugx/btsIRUOZLKg/9vuBBk4E4OwMkXcg1bde4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zBugx/btsIRUOZLKg/9vuBBk4E4OwMkXcg1bde4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zBugx/btsIRUOZLKg/9vuBBk4E4OwMkXcg1bde4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzBugx%2FbtsIRUOZLKg%2F9vuBBk4E4OwMkXcg1bde4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드4.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드5.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qO8GL/btsIRU2wUea/KHKPHInyM0POUl1t4Oy9Wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qO8GL/btsIRU2wUea/KHKPHInyM0POUl1t4Oy9Wk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qO8GL/btsIRU2wUea/KHKPHInyM0POUl1t4Oy9Wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqO8GL%2FbtsIRU2wUea%2FKHKPHInyM0POUl1t4Oy9Wk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드5.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드6.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rPbm0/btsIPUiFYSG/M3R0xf7hEi6wcNavFKK4qk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rPbm0/btsIPUiFYSG/M3R0xf7hEi6wcNavFKK4qk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rPbm0/btsIPUiFYSG/M3R0xf7hEi6wcNavFKK4qk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrPbm0%2FbtsIPUiFYSG%2FM3R0xf7hEi6wcNavFKK4qk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드6.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드7.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wkqs6/btsIPwCstda/pfmzJSCZf25SQd97NQG9lK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wkqs6/btsIPwCstda/pfmzJSCZf25SQd97NQG9lK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wkqs6/btsIPwCstda/pfmzJSCZf25SQd97NQG9lK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWkqs6%2FbtsIPwCstda%2FpfmzJSCZf25SQd97NQG9lK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드7.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드8.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfAiSH/btsIRupub0o/0ClEh03jvnjF3YRLUbLBlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfAiSH/btsIRupub0o/0ClEh03jvnjF3YRLUbLBlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfAiSH/btsIRupub0o/0ClEh03jvnjF3YRLUbLBlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfAiSH%2FbtsIRupub0o%2F0ClEh03jvnjF3YRLUbLBlK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드8.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드9.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cuqRAx/btsIPtFOB27/LsvTKM39qhYk0TkqChW9j1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cuqRAx/btsIPtFOB27/LsvTKM39qhYk0TkqChW9j1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cuqRAx/btsIPtFOB27/LsvTKM39qhYk0TkqChW9j1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcuqRAx%2FbtsIPtFOB27%2FLsvTKM39qhYk0TkqChW9j1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드9.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드10.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXziH9/btsIQy0qelA/4kkjXjCw1IPaWoCwx2XDa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXziH9/btsIQy0qelA/4kkjXjCw1IPaWoCwx2XDa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXziH9/btsIQy0qelA/4kkjXjCw1IPaWoCwx2XDa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXziH9%2FbtsIQy0qelA%2F4kkjXjCw1IPaWoCwx2XDa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드10.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드11.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o7Ok3/btsIPteJb5p/jMWwWjpiIz52wRbYZzJv81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o7Ok3/btsIPteJb5p/jMWwWjpiIz52wRbYZzJv81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o7Ok3/btsIPteJb5p/jMWwWjpiIz52wRbYZzJv81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo7Ok3%2FbtsIPteJb5p%2FjMWwWjpiIz52wRbYZzJv81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드11.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드12.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wMB6A/btsIRV1rgJa/Le0PuSHo2GfSx1GrvjNkg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wMB6A/btsIRV1rgJa/Le0PuSHo2GfSx1GrvjNkg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wMB6A/btsIRV1rgJa/Le0PuSHo2GfSx1GrvjNkg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwMB6A%2FbtsIRV1rgJa%2FLe0PuSHo2GfSx1GrvjNkg1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드12.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드13.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ri3Tf/btsIOU4Mm71/dsNyoxZ46foZam0as3jkX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ri3Tf/btsIOU4Mm71/dsNyoxZ46foZam0as3jkX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ri3Tf/btsIOU4Mm71/dsNyoxZ46foZam0as3jkX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fri3Tf%2FbtsIOU4Mm71%2FdsNyoxZ46foZam0as3jkX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드13.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드14.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B3y17/btsIRxsYvUv/L0MPLSQDOR0VgYMzLVHE6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B3y17/btsIRxsYvUv/L0MPLSQDOR0VgYMzLVHE6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B3y17/btsIRxsYvUv/L0MPLSQDOR0VgYMzLVHE6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB3y17%2FbtsIRxsYvUv%2FL0MPLSQDOR0VgYMzLVHE6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드14.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드16.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RtGMR/btsIO1Jx7lY/LZAioKKFMK1BEnlnek8zjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RtGMR/btsIO1Jx7lY/LZAioKKFMK1BEnlnek8zjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RtGMR/btsIO1Jx7lY/LZAioKKFMK1BEnlnek8zjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRtGMR%2FbtsIO1Jx7lY%2FLZAioKKFMK1BEnlnek8zjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드16.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드17.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bedu4M/btsIQwVRqf6/vV9NQsbKRKQ9EVI3z4Xjb0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bedu4M/btsIQwVRqf6/vV9NQsbKRKQ9EVI3z4Xjb0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bedu4M/btsIQwVRqf6/vV9NQsbKRKQ9EVI3z4Xjb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbedu4M%2FbtsIQwVRqf6%2FvV9NQsbKRKQ9EVI3z4Xjb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드17.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드18.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LyULx/btsIQwnY41x/tCm1w1PQstMicYYfgSzKP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LyULx/btsIQwnY41x/tCm1w1PQstMicYYfgSzKP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LyULx/btsIQwnY41x/tCm1w1PQstMicYYfgSzKP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLyULx%2FbtsIQwnY41x%2FtCm1w1PQstMicYYfgSzKP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드18.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드19.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brsOLT/btsIPwCstec/L3en1g8aXu6jUkkxFInmU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brsOLT/btsIPwCstec/L3en1g8aXu6jUkkxFInmU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brsOLT/btsIPwCstec/L3en1g8aXu6jUkkxFInmU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrsOLT%2FbtsIPwCstec%2FL3en1g8aXu6jUkkxFInmU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드19.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드20.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7Yt5G/btsIPME51Ys/DNqkVRVnuWjQWC3evcqz71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7Yt5G/btsIPME51Ys/DNqkVRVnuWjQWC3evcqz71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7Yt5G/btsIPME51Ys/DNqkVRVnuWjQWC3evcqz71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7Yt5G%2FbtsIPME51Ys%2FDNqkVRVnuWjQWC3evcqz71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드20.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드21.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sNAiq/btsIPiRTBVY/z9Afl4rUWccrLNnVzIF0S1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sNAiq/btsIPiRTBVY/z9Afl4rUWccrLNnVzIF0S1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sNAiq/btsIPiRTBVY/z9Afl4rUWccrLNnVzIF0S1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsNAiq%2FbtsIPiRTBVY%2Fz9Afl4rUWccrLNnVzIF0S1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드21.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드22.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmsGEl/btsIPteJb7r/ISpgd5LcMGNSEswm3oNrL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmsGEl/btsIPteJb7r/ISpgd5LcMGNSEswm3oNrL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmsGEl/btsIPteJb7r/ISpgd5LcMGNSEswm3oNrL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmsGEl%2FbtsIPteJb7r%2FISpgd5LcMGNSEswm3oNrL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드22.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드23.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCXrHU/btsIOVbxPvx/mK3hT8puoxiUsicIMDdks1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCXrHU/btsIOVbxPvx/mK3hT8puoxiUsicIMDdks1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCXrHU/btsIOVbxPvx/mK3hT8puoxiUsicIMDdks1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCXrHU%2FbtsIOVbxPvx%2FmK3hT8puoxiUsicIMDdks1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드23.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드24.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbokNg/btsIQJm5Uyy/0dbrWYjGLijJOrRq6fRHAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbokNg/btsIQJm5Uyy/0dbrWYjGLijJOrRq6fRHAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbokNg/btsIQJm5Uyy/0dbrWYjGLijJOrRq6fRHAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbokNg%2FbtsIQJm5Uyy%2F0dbrWYjGLijJOrRq6fRHAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드24.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드25.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/W6FAZ/btsIRwgvZIB/p3JtCf0KeiHAeZveSS3Ai0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W6FAZ/btsIRwgvZIB/p3JtCf0KeiHAeZveSS3Ai0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W6FAZ/btsIRwgvZIB/p3JtCf0KeiHAeZveSS3Ai0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW6FAZ%2FbtsIRwgvZIB%2Fp3JtCf0KeiHAeZveSS3Ai0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드25.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드26.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lyRlh/btsIRf0mJq0/x3kdUeSALcKGouTy5p6kI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lyRlh/btsIRf0mJq0/x3kdUeSALcKGouTy5p6kI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lyRlh/btsIRf0mJq0/x3kdUeSALcKGouTy5p6kI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlyRlh%2FbtsIRf0mJq0%2Fx3kdUeSALcKGouTy5p6kI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드26.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드27.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/doBVZE/btsIRpognRn/KzvnwLDRoeYj0M0a9GEYLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/doBVZE/btsIRpognRn/KzvnwLDRoeYj0M0a9GEYLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/doBVZE/btsIRpognRn/KzvnwLDRoeYj0M0a9GEYLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdoBVZE%2FbtsIRpognRn%2FKzvnwLDRoeYj0M0a9GEYLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드27.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드28.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HANt0/btsIQeA643E/wwiACsp9mVZLnYGtluUv7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HANt0/btsIQeA643E/wwiACsp9mVZLnYGtluUv7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HANt0/btsIQeA643E/wwiACsp9mVZLnYGtluUv7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHANt0%2FbtsIQeA643E%2FwwiACsp9mVZLnYGtluUv7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드28.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;슬라이드29.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpEyP4/btsIQpoW0qS/c76pJKAc03Rlcm02QjSfvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpEyP4/btsIQpoW0qS/c76pJKAc03Rlcm02QjSfvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpEyP4/btsIQpoW0qS/c76pJKAc03Rlcm02QjSfvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpEyP4%2FbtsIQpoW0qS%2Fc76pJKAc03Rlcm02QjSfvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;슬라이드29.PNG&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;2024 지역창업지원 스케쥴링_V8(240728).png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;a href=&quot;https://drive.google.com/file/d/1xMrT5DuJWLsAzvlbJwA48wzNjvFqllmB/view?usp=sharing&quot; target=&quot;_blank&quot; title=&quot;down&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tNh5E/btsIQocuKWa/tg9MKah0KTcURbVI3XQqV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtNh5E%2FbtsIQocuKWa%2Ftg9MKah0KTcURbVI3XQqV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;2024 지역창업지원 스케쥴링_V8(240728).png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/b0q3Z0/btsIO4M3zZw/mK7qONrnDhdsQrz8x3pu3k/2024%20%EC%A7%80%EC%97%AD%EC%B0%BD%EC%97%85%EC%A7%80%EC%9B%90%20%EC%8A%A4%EC%BC%80%EC%A5%B4%EB%A7%81_V8%28240728%29.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;2024 지역창업지원 스케쥴링_V8(240728).pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;1.42MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>스타트업 운영TIP/정부지원사업 TIP</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/51</guid>
      <comments>https://0-1.kr/51#entry51comment</comments>
      <pubDate>Mon, 29 Jul 2024 08:10:24 +0900</pubDate>
    </item>
    <item>
      <title>[증빙][매출]03. 매출세금계산서합계표 및 매출세금계산서합계표 매출처별 발급하기</title>
      <link>https://0-1.kr/50</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;개인적으로 첫 창업의 시작은&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;매출세금계산서를&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;끊어보는 것이 시작이라 생각합니다.&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사업자등록증은 첫 세금계산서를&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;발행하고자 할때&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;내시는 것을 추천드립니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;대출, 투자, 정부지원사업 수주시&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;매출증빙을 가장 많이 요청합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;발표는 내일인데 어제 매출이 났으면&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;해당파일로 증빙이 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;001&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;[매출전자세금계산서합계표]&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;[매출전자세금계산서합계표] 매출처별&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;01.전자세금계산서합계표.jpg&quot; data-origin-width=&quot;2339&quot; data-origin-height=&quot;1654&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Hzelg/btsHqjKIsf4/oBpUjmITNGoTGfhR8lUEtK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Hzelg/btsHqjKIsf4/oBpUjmITNGoTGfhR8lUEtK/img.jpg&quot; data-alt=&quot;매출세금계산서합계표&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Hzelg/btsHqjKIsf4/oBpUjmITNGoTGfhR8lUEtK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHzelg%2FbtsHqjKIsf4%2FoBpUjmITNGoTGfhR8lUEtK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2339&quot; height=&quot;1654&quot; data-filename=&quot;01.전자세금계산서합계표.jpg&quot; data-origin-width=&quot;2339&quot; data-origin-height=&quot;1654&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;매출세금계산서합계표&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;매출세금계산서 합계표는 거래기간동안&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;매출금액만 표기가 가능하죠.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;매출처 공개가 꺼려지면 이걸로 증빙하시면 되고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;업종구분, 매출처 표기를 원하는 기관에는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아래의 합계표 매출처별로 끊으시면 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;걍 두개다 끊어주시면 담당자가&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;알아서 쓰실거에요.ㅎ 가급적&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;둘다 끊어서 보내주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;02.세금계산서_매출처별계산서합계표(전자).jpg&quot; data-origin-width=&quot;1654&quot; data-origin-height=&quot;2339&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7G5Db/btsHqNqXAnu/cqaKu87JNGZnqlFGhRv1C1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7G5Db/btsHqNqXAnu/cqaKu87JNGZnqlFGhRv1C1/img.jpg&quot; data-alt=&quot;매출세금계산서합계표매출처별&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7G5Db/btsHqNqXAnu/cqaKu87JNGZnqlFGhRv1C1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7G5Db%2FbtsHqNqXAnu%2FcqaKu87JNGZnqlFGhRv1C1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1654&quot; height=&quot;2339&quot; data-filename=&quot;02.세금계산서_매출처별계산서합계표(전자).jpg&quot; data-origin-width=&quot;1654&quot; data-origin-height=&quot;2339&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;매출세금계산서합계표매출처별&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;발급방법은 아래를 따라해주시면&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;홈텍스가 매년 개편을 해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;젤 쉬운 방법은 검색어로 찾는 것입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아래와 같이&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&quot;세금계산서합계표&quot; 라고 검색하시면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;알와 같이 ~ 제출/내역조회가 뜨니 저걸 선택해주세요&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;000001.png&quot; data-origin-width=&quot;1336&quot; data-origin-height=&quot;524&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cqaHBv/btsHpNZNKgF/gCAkhE9iK0Z5lNVph8X061/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cqaHBv/btsHpNZNKgF/gCAkhE9iK0Z5lNVph8X061/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cqaHBv/btsHpNZNKgF/gCAkhE9iK0Z5lNVph8X061/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcqaHBv%2FbtsHpNZNKgF%2FgCAkhE9iK0Z5lNVph8X061%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1336&quot; height=&quot;524&quot; data-filename=&quot;000001.png&quot; data-origin-width=&quot;1336&quot; data-origin-height=&quot;524&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>스타트업 운영TIP/문서작성&amp;amp;증빙 TIP</category>
      <category>매출세금계산서합계표</category>
      <category>매출증빙</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/50</guid>
      <comments>https://0-1.kr/50#entry50comment</comments>
      <pubDate>Thu, 16 May 2024 11:53:12 +0900</pubDate>
    </item>
    <item>
      <title>24년 중앙부처 및 지자체 창업지원사업 통합공고 첨부파일 활용법</title>
      <link>https://0-1.kr/49</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;매년 1월 초&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중소벤처기업부에서는 창업자금을 뿌립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떻게 뿌리는 지는 공개해야되겠죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 안내됩니다. 24년 링크를 공유해 드릴게요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://me2.do/GZsLTnyo&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://me2.do/GZsLTnyo&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1708846428422&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2024년 중앙부처 및 지자체 창업지원사업 통합공고&quot; data-og-description=&quot;2024년 중앙부처 및 지자체 창업지원사업 통합공고&quot; data-og-host=&quot;www.k-startup.go.kr&quot; data-og-source-url=&quot;https://me2.do/GZsLTnyo&quot; data-og-url=&quot;https://www.k-startup.go.kr/web/contents/bizpbanc-ongoing.do?schM=view&amp;amp;pbancSn=167274#none&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bqeI2V/hyVqoDA1Fe/cCg96juaEpATlefijC50Kk/img.jpg?width=359&amp;amp;height=250&amp;amp;face=0_0_359_250&quot;&gt;&lt;a href=&quot;https://me2.do/GZsLTnyo&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://me2.do/GZsLTnyo&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bqeI2V/hyVqoDA1Fe/cCg96juaEpATlefijC50Kk/img.jpg?width=359&amp;amp;height=250&amp;amp;face=0_0_359_250');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;2024년 중앙부처 및 지자체 창업지원사업 통합공고&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2024년 중앙부처 및 지자체 창업지원사업 통합공고&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.k-startup.go.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매년 중기부 홈페이지를 통해 [창업지원사업 통합공고] 라는 제목으로 업로드 하는데요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상하게 중기부 싸이트에선 찾기가 힘들더라구요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 k-startup 을 통해 찾는 것을 추천드립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매년 k-startup 싸이트의 메인에 업로드를 해 두더군요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;k-startup을 간단히 소개해 드리자면&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정부지원기관 및 민간 창업지원프로그램을 소개해주는 사이트입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그램을 업로드하려면 까다로운 조건을 거쳐야 되기 때문에&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;믿을만한 싸이트라고 할 수 있죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;링크는 &lt;a href=&quot;https://www.k-startup.go.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.k-startup.go.kr&lt;/a&gt; 이오니 꼭 참고하시고&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 24년 포함해서 매년 창업지원사업 통합공고를 통해&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러분이 필요한 지원사업을 확인하는 방법부터 안내해드릴게요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러분께는 몇장 필요없으니 필요한 자료만 스크랩 하세요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;그림2.png&quot; data-origin-width=&quot;3371&quot; data-origin-height=&quot;1901&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dgVxZD/btsFfUfCR7Y/tB98K3OgTEKg7pkkTCKAZK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dgVxZD/btsFfUfCR7Y/tB98K3OgTEKg7pkkTCKAZK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dgVxZD/btsFfUfCR7Y/tB98K3OgTEKg7pkkTCKAZK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdgVxZD%2FbtsFfUfCR7Y%2FtB98K3OgTEKg7pkkTCKAZK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3371&quot; height=&quot;1901&quot; data-filename=&quot;그림2.png&quot; data-origin-width=&quot;3371&quot; data-origin-height=&quot;1901&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a style=&quot;color: #606060; text-align: left;&quot;&gt;1.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;&lt;a style=&quot;color: #606060; text-align: left;&quot;&gt;(공고문) 2024년도 중앙부처 및 지자체 창업지원사업 통합공고문.hwp 로 된 한글 파일을 다운&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/q6bsO/btsFiO6gu5a/ZSo8HG87gpdmhYkFRMIBg0/%E2%98%85%20%28%EA%B3%B5%EA%B3%A0%EB%AC%B8%29%202024%EB%85%84%EB%8F%84%20%EC%A4%91%EC%95%99%EB%B6%80%EC%B2%98%20%EB%B0%8F%20%EC%A7%80%EC%9E%90%EC%B2%B4%20%EC%B0%BD%EC%97%85%EC%A7%80%EC%9B%90%EC%82%AC%EC%97%85%20%ED%86%B5%ED%95%A9%EA%B3%B5%EA%B3%A0%EB%AC%B8.hwp?attach=1&amp;amp;knm=tfile.hwp&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;★ (공고문) 2024년도 중앙부처 및 지자체 창업지원사업 통합공고문.hwp&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.36MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 사업별 세부내역에서 본인의 아이템과 맞는 소속부처를 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 확인 후 해당부처에서 운영하는 사업명을 확인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 사업개요를 확인하고 메모.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 부처 홈페이지 또는 k-startup을 통해 작년에 공고된 해당프로그램 확인.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/uCpqR/btsFfd7C8H9/YIp0QGdKVKUrPeY0upztVk/%E2%98%85%20%28%EC%95%88%EB%82%B4%EC%B1%85%EC%9E%90%29%202024%EB%85%84%EB%8F%84%20%EC%A4%91%EC%95%99%EB%B6%80%EC%B2%98%20%EB%B0%8F%20%EA%B8%B0%EC%B4%88%EA%B4%91%EC%97%AD%EC%A7%80%EC%9E%90%EC%B2%B4%20%EC%B0%BD%EC%97%85%EC%A7%80%EC%9B%90%EC%82%AC%EC%97%85%20%EC%95%88%EB%82%B4.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;★ (안내책자) 2024년도 중앙부처 및 기초광역지자체 창업지원사업 안내.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;14.28MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6. 안내책자를 통해 프로그램 성격 확인 후 하단과 같이 연락처 확인&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;그림3.png&quot; data-origin-width=&quot;3371&quot; data-origin-height=&quot;1901&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d73iQ1/btsFjW33eFH/gTaB3b9OKpzbWYcAxxgXjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d73iQ1/btsFjW33eFH/gTaB3b9OKpzbWYcAxxgXjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d73iQ1/btsFjW33eFH/gTaB3b9OKpzbWYcAxxgXjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd73iQ1%2FbtsFjW33eFH%2FgTaB3b9OKpzbWYcAxxgXjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3371&quot; height=&quot;1901&quot; data-filename=&quot;그림3.png&quot; data-origin-width=&quot;3371&quot; data-origin-height=&quot;1901&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7. 정말 모르겠다 싶음 담당자에게 전화해서 도와달라고 하세요. 전화번호 다~ 있잖아요.ㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 순서로 활용하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지는 무지하게 많지만 본인에게 필요한 페이지는 6~7장 내외 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 본인이 바이오 관련 아이템이라면 첫번째 파일을 통해 바이오 관련된 지원기관을 확인하고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두번째 파일의 목차를 우선 검색하여 지원하는 프로그램을 확인하고 지원 받는 것이 순서일 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;솔직히 페이지가 너무 많이 처다보지도 않았다면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;꼭 이렇게 활용해 보시기 바랍니다.&lt;/p&gt;</description>
      <category>창업지원프로그램UP/자금&amp;amp;공간&amp;amp;융자</category>
      <category>24년</category>
      <category>창업지원사업통합공고</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/49</guid>
      <comments>https://0-1.kr/49#entry49comment</comments>
      <pubDate>Sun, 25 Feb 2024 16:47:42 +0900</pubDate>
    </item>
    <item>
      <title>001.[시작] 생애 첫 창업! 창업대출 말고 창업지원금부터 시작하기 (추천과정)</title>
      <link>https://0-1.kr/48</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic'; background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;갚은 돈과 갚지 않아도 되는돈&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt; (하지만 다른 것으로 갚아야 되는 것)&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;imageblock&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WZTeh/btsFfxyaNMv/nxMDVwx9Ner7o6MwxyOVj1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WZTeh/btsFfxyaNMv/nxMDVwx9Ner7o6MwxyOVj1/img.jpg&quot; data-alt=&quot;1.3&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WZTeh/btsFfxyaNMv/nxMDVwx9Ner7o6MwxyOVj1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWZTeh%2FbtsFfxyaNMv%2FnxMDVwx9Ner7o6MwxyOVj1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;&quot;정부 지원금? 진짜 그냥 주는 돈입니까?&quot;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;라는 질문을 가장 많이 받습니다. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;사실은 아닙니다. &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;본인이 만든 숫자로 갚아야 됩니다.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #434343; text-align: start;&quot;&gt;숫자는 바로 본인 업체의&lt;/span&gt;&lt;span style=&quot;color: #434343; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;고용, 매출, 투자, 수출&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #434343;&quot;&gt;등 우리나라와 본인의 &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;&lt;span style=&quot;color: #434343;&quot;&gt;경제성장에 이바지 한 수치를 제공하면 됩니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;쉽게 말해 본인이 자금 수령 후 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;본인이나 사회에게 &lt;/span&gt;&lt;span style=&quot;font-family: 'Nanum Gothic';&quot;&gt;이바지한 실적이나 증빙을 제공하면 됩니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;이 답변엔 필수적으로 달리는 질문이 또 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;저것도 제출하지 않으면 갚아야 되나요?&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;명쾌한 답변 드리겠습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;안 갚아도 됩니다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;하지만 당신에게 더 이상의 지원은 없을 것입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;앞으로 이런 초딩같은 질문은 하지 마시죠.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;사업계획서 상의 약속을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;꼭 지키시기 바랍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;솔직히 이런 질문을 하는 이유는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;왜 주는지 이유를 몰라서 이죠.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;이유는 젤 하단에 기재해 두겠습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;우선 창업을 지원하는 정부기관 중 가장 우두머리엔&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;[중소벤처기업부]가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;매년 중기부에서 창업에 관련된 자금을&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;각 창업지원기관에 사업비를&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;&amp;nbsp;분배합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;창업지원기관의 종류와 사업비를 알기 위해선&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;매년 1월 초에 배포하는 자료를 보시면&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;중기부 홈페이지에선 찾기가 힘드네요.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;그래서 정부와 민간의 모든 지원, 대출 프로그램을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;업로드 하는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://www.k-startup.go.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.k-startup.go.kr/&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;k-startup 홈페이지에서 &lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1708844697555&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;K-Startup 창업지원포털&quot; data-og-description=&quot;중소벤처기업부 운영 창업지원포털 창업지원사업 정보 통합&amp;middot;제공 및 온라인창업교육, 창업공간정보, 온라인법인설립 서비스 제공&quot; data-og-host=&quot;www.k-startup.go.kr&quot; data-og-source-url=&quot;https://www.k-startup.go.kr/&quot; data-og-url=&quot;https://www.k-startup.go.kr/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/p2dVh/hyVqszcxR1/2kIn2zsZj3G0JpnyJMrPl1/img.jpg?width=359&amp;amp;height=250&amp;amp;face=0_0_359_250,https://scrap.kakaocdn.net/dn/EohgP/hyVqipP2yx/yDyjFWyVKrJOYZvrA3GfK0/img.png?width=576&amp;amp;height=508&amp;amp;face=0_0_576_508,https://scrap.kakaocdn.net/dn/dQwhWP/hyVm4mt8Yv/6lk9akt5cqIn4TMYHGdBg1/img.png?width=370&amp;amp;height=500&amp;amp;face=0_0_370_500&quot;&gt;&lt;a href=&quot;https://www.k-startup.go.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.k-startup.go.kr/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/p2dVh/hyVqszcxR1/2kIn2zsZj3G0JpnyJMrPl1/img.jpg?width=359&amp;amp;height=250&amp;amp;face=0_0_359_250,https://scrap.kakaocdn.net/dn/EohgP/hyVqipP2yx/yDyjFWyVKrJOYZvrA3GfK0/img.png?width=576&amp;amp;height=508&amp;amp;face=0_0_576_508,https://scrap.kakaocdn.net/dn/dQwhWP/hyVm4mt8Yv/6lk9akt5cqIn4TMYHGdBg1/img.png?width=370&amp;amp;height=500&amp;amp;face=0_0_370_500');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;K-Startup 창업지원포털&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;중소벤처기업부 운영 창업지원포털 창업지원사업 정보 통합&amp;middot;제공 및 온라인창업교육, 창업공간정보, 온라인법인설립 서비스 제공&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.k-startup.go.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;쉽게 찾을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;매년 &lt;b&gt;[창업지원사업 통합공고]&lt;/b&gt;라는 제목으로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;업로드를 하고 있어요&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;우선 24년 링크는&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;a href=&quot;https://me2.do/Fynsk6Pr&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://me2.do/Fynsk6Pr&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1708844869454&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;2024년 중앙부처 및 지자체 창업지원사업 통합공고&quot; data-og-description=&quot;2024년 중앙부처 및 지자체 창업지원사업 통합공고&quot; data-og-host=&quot;www.k-startup.go.kr&quot; data-og-source-url=&quot;https://me2.do/Fynsk6Pr&quot; data-og-url=&quot;https://www.k-startup.go.kr/web/contents/bizpbanc-ongoing.do?schM=view&amp;amp;pbancSn=167274&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/RoUOC/hyVmPJCTWb/K5spbIoC0IJWt1CFg4XsX1/img.jpg?width=359&amp;amp;height=250&amp;amp;face=0_0_359_250&quot;&gt;&lt;a href=&quot;https://me2.do/Fynsk6Pr&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://me2.do/Fynsk6Pr&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/RoUOC/hyVmPJCTWb/K5spbIoC0IJWt1CFg4XsX1/img.jpg?width=359&amp;amp;height=250&amp;amp;face=0_0_359_250');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;2024년 중앙부처 및 지자체 창업지원사업 통합공고&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2024년 중앙부처 및 지자체 창업지원사업 통합공고&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.k-startup.go.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;로 확인하고 성격 급하신 분은&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/RMYjD/btsFkI5AIiF/Z8RK7ckmTAlKgNzJKOSjlK/%E2%98%85%20%28%EC%95%88%EB%82%B4%EC%B1%85%EC%9E%90%29%202024%EB%85%84%EB%8F%84%20%EC%A4%91%EC%95%99%EB%B6%80%EC%B2%98%20%EB%B0%8F%20%EA%B8%B0%EC%B4%88%EA%B4%91%EC%97%AD%EC%A7%80%EC%9E%90%EC%B2%B4%20%EC%B0%BD%EC%97%85%EC%A7%80%EC%9B%90%EC%82%AC%EC%97%85%20%EC%95%88%EB%82%B4.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;★ (안내책자) 2024년도 중앙부처 및 기초광역지자체 창업지원사업 안내.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;14.28MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/K995E/btsFhexDJI9/pYBEOXzUBcXJkVfWXzVYj1/%E2%98%85%20%28%EA%B3%B5%EA%B3%A0%EB%AC%B8%29%202024%EB%85%84%EB%8F%84%20%EC%A4%91%EC%95%99%EB%B6%80%EC%B2%98%20%EB%B0%8F%20%EC%A7%80%EC%9E%90%EC%B2%B4%20%EC%B0%BD%EC%97%85%EC%A7%80%EC%9B%90%EC%82%AC%EC%97%85%20%ED%86%B5%ED%95%A9%EA%B3%B5%EA%B3%A0%EB%AC%B8.hwp?attach=1&amp;amp;knm=tfile.hwp&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;★ (공고문) 2024년도 중앙부처 및 지자체 창업지원사업 통합공고문.hwp&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.36MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/dera0Q/btsFffqMkWt/kVTJsha2E4VYWTLeWRLKD0/%E2%98%85%20%28%EA%B3%B5%EA%B3%A0%EB%AC%B8%29%202024%EB%85%84%EB%8F%84%20%EC%A4%91%EC%95%99%EB%B6%80%EC%B2%98%20%EB%B0%8F%20%EC%A7%80%EC%9E%90%EC%B2%B4%20%EC%B0%BD%EC%97%85%EC%A7%80%EC%9B%90%EC%82%AC%EC%97%85%20%ED%86%B5%ED%95%A9%EA%B3%B5%EA%B3%A0%EB%AC%B8.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;★ (공고문) 2024년도 중앙부처 및 지자체 창업지원사업 통합공고문.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.72MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;이 세개의 파일로 확인하시기 바랍니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;사실... 이파일만 보고는 뭐가뭔지 모릅니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;이 엄청난 장수의 pdf를 활용하는 방법은&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt; #검색 파트에서 업로드할 예정입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;본인이 어떤 아이템이고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;연령이 어떻게 되고 업력과 실적으로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;나눠 지원기관과 지원프로그램을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;정해놨으니 추후 업로드 된 글을 통해&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;활용하시기 바랍니다.&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;매년 [창업지원사업 통합공고] 라고 검색하시면 되구요.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;우선 작년자료와 올해 자료를 참고 하세요&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;br /&gt;&lt;br /&gt;여러분들.. 세금은 비보상성이라&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;성격이 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;낸만큼 받지 못한다는 이야기죠.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;보다 효율적인 곳에 집중해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;쓰이는 것이 세금입니다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;정부는 창업을 육성하여&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;자립할 수 있도록 지원금을 뿌리고 있고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;배민과 토스 같은 민간기업의&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;성장 성과를 내고 있습니다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;정부가 창업지원금을 주는 목적은 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;창업을 육성하여 스스로 성장하는&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #434343; text-align: start; font-family: 'Nanum Gothic';&quot;&gt;마중물을 제공하여&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;경제성장율을 여러분들의 노력만으로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;공짜(?) 올리려고 하는 것입니다.^^&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;047&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/047.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/047.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;그냥 이렇게 받아드리는게 편하실 겁니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;뭐.. 정부와 창업자간의 선순환 구조니 뭐니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;어려운 말은 앞으로 안쓰고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;저렴한 단어들로 여러분게 다가가겠습니다.^^&lt;/p&gt;</description>
      <category>스타트업EX란?/첫창업 EX_8주차</category>
      <category>24년</category>
      <category>스타트업ex란</category>
      <category>쌩초보창업EX</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/48</guid>
      <comments>https://0-1.kr/48#entry48comment</comments>
      <pubDate>Sun, 25 Feb 2024 16:23:12 +0900</pubDate>
    </item>
    <item>
      <title>24년 청년전용창업자금 지원대상 상세 안내</title>
      <link>https://0-1.kr/47</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;매년 중소벤처기업진흥공단(이하 중진공)에서 청년을 대상으로&lt;br /&gt;청년전용창업자금 (이하 청창자금)이란 대출을 &lt;br /&gt;진행하고 있습니다. 하지만 상담끝에&lt;br /&gt;&lt;br /&gt;&quot;대표님 업체는 지원대상이 아닙니다.&quot;&lt;br /&gt;&quot;대표님은 지원 업종이 아닙니다.&quot;&lt;br /&gt;&lt;br /&gt;라며 거절당한 경우가 많은데요. 24년에 바뀐 청년전용창업자금&lt;br /&gt;지원대상에 대해 상세하게 알아볼게요.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;모든 내용은 중진공 홈페이지 [지원사업]-[융자대상 및 제한기업] 메뉴를&lt;br /&gt;바탕으로 작성되었습니다. 링크는 &lt;a href=&quot;
https://www.kosmes.or.kr/nsh/SH/SBI/SHSBI002M0.do&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span&gt;&lt;br /&gt;https://www.kosmes.or.kr/nsh/SH/SBI/SHSBI002M0.do&lt;/span&gt;&lt;/a&gt; 참조.&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;대상1 : 소기업과 중기업 가능 (지원제외업종 제외)&lt;br /&gt;대상2 : 제조업과 중점지원분야 (소상공인도 가능)&lt;br /&gt;대상3 : 중소기업확인서, 창업기업확인서 발급가능 업체&lt;br /&gt;대상4 : 만39세이하 업력 3년미만인 업체&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;
&lt;hr data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;우선 중진공은 소상공인을 지원하는 기관은 아닙니다. &lt;br /&gt;&lt;br /&gt;[소기업], [중기업] 이 지원대상인데요.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;대상1. 소기업과 중기업 가능&lt;/b&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;보통 기업의 규모를 소상공인 소기업, 중기업으로 우선 분류할때 직원수로 구분하면.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&quot;소상공인(1년간 5인미만) | 소기업(1년간 5인이상)&quot;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;으로 구분합니다. 쉽게 말해 1년간 5인이상으로 업체를 유지 시 지원대상이죠.&lt;br /&gt;이를 쉽게 증빙하기 위해선 [중소기업확인서] 를 발급하여 [소기업]으로 &lt;br /&gt;확인할 수 있는 경우 소기업으로 인정하여 지원대상이 됩니다.&lt;br /&gt;&lt;br /&gt;중소기업확인서는&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.smes.go.kr/pageApplyCertificateSme&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.smes.go.kr/pageApplyCertificateSme&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1704804816727&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;중소벤처24&quot; data-og-description=&quot;Home증명서 발급발급중소기업(소상공인)확인서 중소기업(소상공인)확인서 중소기업(소상공인) 확인서 발급 안내 서비스 명 중소기업(소상공인)확인서 발급 서비스 개요 「중소기업기본법」 제2&quot; data-og-host=&quot;www.smes.go.kr&quot; data-og-source-url=&quot;https://www.smes.go.kr/pageApplyCertificateSme&quot; data-og-url=&quot;https://www.smes.go.kr/pageApplyCertificateSme&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.smes.go.kr/pageApplyCertificateSme&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.smes.go.kr/pageApplyCertificateSme&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;중소벤처24&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Home증명서 발급발급중소기업(소상공인)확인서 중소기업(소상공인)확인서 중소기업(소상공인) 확인서 발급 안내 서비스 명 중소기업(소상공인)확인서 발급 서비스 개요 「중소기업기본법」 제2&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.smes.go.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;를 통해 발급 가능합니다.&lt;br /&gt;&lt;br /&gt;단 발급 시 &lt;b&gt;[소상공인(소기업)]&lt;/b&gt; 으로 표기가 되는 업체는 소상공인으로 분류되며&lt;br /&gt;소기업으로 인정되지 않습니다. 소기업에 해당되는 경우 &lt;b&gt;(소기업)&lt;/b&gt;으로만 표기되오니 이점 유의해 주세요.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;대상2. 제조업과 중점지원분야&lt;/b&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 소상공인으로 발급되어도 업종에 따라 지원이 가능한 경우가 있습니다.&lt;br /&gt;바로 [제조업]과 [중점지원분야] 에 해당되는 업종을 영위하는 기업이죠.&lt;br /&gt;&lt;br /&gt;[제조업]은 식품,금속,성형 등 공장을 구비하며 물건을 생산하는 업종이죠.&lt;br /&gt;&lt;br /&gt;[중점지원분야]는 매년 바뀌는 업종인데 24년 기준으로 중진공 홈페이지 상&lt;br /&gt;파일을 다운받아 본인이 해당되는 업종이 기재되어 있으면 지원이&lt;br /&gt;가능합니다. 단 해당업종을 영위한다는 증빙이 있으면 되오니 이점 참고 바랍니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;하단의 파일은 중진공 홈페이지 중점지원분야 업종을 확인하는 파일이오니&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;다운받아 본인이 해당하는 업종을 확인바랍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bhb8PG/btsDiuazgAc/Fqv1P07KoT4tuU5ClyyJe0/%EC%B0%B8%EA%B3%A01_4.hwp?attach=1&amp;amp;knm=tfile.hwp&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;참고1_4.hwp&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.06MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;대상3. 중소기업확인서, 창업기업확인서 발급&lt;/b&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;창업기업확인서는아래의 홈페이지에서 발급이 가능합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://cert.k-startup.go.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://cert.k-startup.go.kr&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1704805207803&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;창업기업 확인시스템&quot; data-og-description=&quot;창업기업 확인시스템&quot; data-og-host=&quot;cert.k-startup.go.kr&quot; data-og-source-url=&quot;https://cert.k-startup.go.kr/&quot; data-og-url=&quot;https://cert.k-startup.go.kr/index.do&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/csY8yQ/hyU2hefgZg/9xNKYFVKkofbjVtBjpEHoK/img.jpg?width=1587&amp;amp;height=1210&amp;amp;face=0_0_1587_1210,https://scrap.kakaocdn.net/dn/MKPUp/hyU2net0u3/XMZtSHKJ8aazghK3wLK2Xk/img.gif?width=400&amp;amp;height=320&amp;amp;face=0_0_400_320&quot;&gt;&lt;a href=&quot;https://cert.k-startup.go.kr/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://cert.k-startup.go.kr/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/csY8yQ/hyU2hefgZg/9xNKYFVKkofbjVtBjpEHoK/img.jpg?width=1587&amp;amp;height=1210&amp;amp;face=0_0_1587_1210,https://scrap.kakaocdn.net/dn/MKPUp/hyU2net0u3/XMZtSHKJ8aazghK3wLK2Xk/img.gif?width=400&amp;amp;height=320&amp;amp;face=0_0_400_320');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;창업기업 확인시스템&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;창업기업 확인시스템&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;cert.k-startup.go.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;단 해당 확인서는 최대 14일이 걸리는 확인서로 업체가 창업기업임을 확인하는 증명서입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;청창자금은 창업기업(3년미만) 업체가 지원대상이므로 해당 확인서발급이 필수 입니다. &lt;br /&gt;과거 3년이내에 동일업종의 사업을 영위했는지, 이종업종으로 2년이내 사업을 확인하는 것으로&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;창업기업만 지원대상입니다.&lt;br /&gt;&lt;br /&gt;중소기업확인서는 상단의 링크에서 발급이 가능하며 제조업, 중점지원분야인 경우 소상공인도 가능하며 그 외의 업종인 경우 소기업만 가능함을 참고 바랍니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;단 다수의 사업자를 보유한 업체 중 발급이 가능한 사업장과 불가한 사업장이 있을 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;반드시 청년전용창업자금을 지원하는 업종의 창업기업확인서로 접수하셔야 문제되지 않습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;대상4. 만39세이하 업력 3년미만&lt;/b&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;이 조건은 필수 조건이며&lt;br /&gt;&lt;br /&gt;24년 기준 만 39세이하는 &lt;br /&gt;1) 84년생인 경우 생일이 지나지 않은자, &lt;br /&gt;2) 85년생 이하는 지원대상입니다.&lt;br /&gt;&lt;br /&gt;24년기준 업력 3년미만은&lt;br /&gt;1) 21년 개업일인 경우 : 개업일이 지나지 않은자&lt;br /&gt;2) 22년 개업일인 경우 : 지원가능&lt;br /&gt;(개인사업자는 사업자등록증명원 상 [사업자등록일], 법인은 법인등기부상 [회사성립연월일 을 말함)&lt;br /&gt;&lt;br /&gt;입니다.&lt;br /&gt;&lt;br /&gt;해당 페이지는 계속 수정될 예정이며 &lt;br /&gt;더 보기 편하게 수정할 계획이오니 &lt;br /&gt;참고 바랍니다.&lt;br /&gt;&lt;br /&gt;감사합니다!&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>스타트업 운영TIP/정부지원사업 TIP</category>
      <category>24년청창자금</category>
      <category>지원대상</category>
      <category>청년전용창업자금</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/47</guid>
      <comments>https://0-1.kr/47#entry47comment</comments>
      <pubDate>Tue, 9 Jan 2024 09:34:29 +0900</pubDate>
    </item>
    <item>
      <title>2024년 주차달력 | 24년 대형마트 휴무일 총정리 | 24년 디데이 달력</title>
      <link>https://0-1.kr/46</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;목요일이 포함된 주가 주차&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;일주일의 시작은 월요일&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;매월 둘째주,넷째주 일요일이 휴무&lt;br /&gt;&lt;/span&gt;24년은 윤달!&lt;br /&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;일요일 대형마트 갔다가&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;멀리서 부터 쌔~했던 그 기분 아시죠?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;당췌 매월 둘째주, 넷째주 일요일은&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;언제인것인가?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;답답해서 만들어봤어요.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;24년 계획이나 회의록&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;쓰실때 도움될 듯 합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;[24년 대형마트 휴무일 달력 및 주차달력]&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 1655px;&quot; border=&quot;1&quot; data-sheets-root=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.69767%; height: 120px;&quot; rowspan=&quot;6&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;1월&amp;quot;}&quot;&gt;1월&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;월,주차&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;월,주차&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;주차&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;주차&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-주차&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;D-주차&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;월&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;월&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;화&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;화&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;수&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;수&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;목&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;목&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;금&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;금&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;토&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;토&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;일&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;일(마트휴무)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;1월1주&amp;quot;}&quot;&gt;1월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;1주차&amp;quot;}&quot;&gt;1주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-52&amp;quot;}&quot;&gt;D-52&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:1}&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:2}&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:3}&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:4}&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:5}&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:6}&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:7}&quot;&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;1월2주&amp;quot;}&quot;&gt;1월2주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;2주차&amp;quot;}&quot;&gt;2주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-51&amp;quot;}&quot;&gt;D-51&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:8}&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9}&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:10}&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:11}&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:12}&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:13}&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;color: #980000; text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7,&amp;quot;5&amp;quot;:1}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;14_마휴&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;14_마휴&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;1월3주&amp;quot;}&quot;&gt;1월3주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;3주차&amp;quot;}&quot;&gt;3주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-50&amp;quot;}&quot;&gt;D-50&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:15}&quot;&gt;15&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:16}&quot;&gt;16&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:17}&quot;&gt;17&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:18}&quot;&gt;18&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:19}&quot;&gt;19&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:20}&quot;&gt;20&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:21}&quot;&gt;21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;1월4주&amp;quot;}&quot;&gt;1월4주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;4주차&amp;quot;}&quot;&gt;4주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-49&amp;quot;}&quot;&gt;D-49&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:22}&quot;&gt;22&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:23}&quot;&gt;23&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:24}&quot;&gt;24&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:25}&quot;&gt;25&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:26}&quot;&gt;26&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:27}&quot;&gt;27&lt;/td&gt;
&lt;td style=&quot;color: #980000; text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7,&amp;quot;5&amp;quot;:1}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;28_마휴&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;28_마휴&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;2월1주&amp;quot;}&quot;&gt;2월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;5주차&amp;quot;}&quot;&gt;5주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-48&amp;quot;}&quot;&gt;D-48&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:29}&quot;&gt;29&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:30}&quot;&gt;30&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:31}&quot;&gt;31&lt;/td&gt;
&lt;td style=&quot;width: 8.25587%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.72091%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18604%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 14.4186%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 99.6511%; height: 17px;&quot; colspan=&quot;11&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.69767%; height: 120px;&quot; rowspan=&quot;6&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;2월&amp;quot;}&quot;&gt;2월&lt;/td&gt;
&lt;td style=&quot;width: 10.3489%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18597%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.30223%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;월&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;월&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;화&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;화&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;수&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;수&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;목&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;목&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;금&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;금&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;토&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;토&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;일&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;일&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;2월1주&amp;quot;}&quot;&gt;2월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;5주차&amp;quot;}&quot;&gt;5주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-48&amp;quot;}&quot;&gt;D-48&lt;/td&gt;
&lt;td style=&quot;width: 7.67444%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.6047%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25581%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:1}&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:2}&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:3}&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:4}&quot;&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;2월2주&amp;quot;}&quot;&gt;2월2주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;6주차&amp;quot;}&quot;&gt;6주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-47&amp;quot;}&quot;&gt;D-47&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:5}&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:6}&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:7}&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:8}&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9}&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:10}&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;color: #980000; text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;11_마휴&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;11_마휴&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;2월3주&amp;quot;}&quot;&gt;2월3주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;7주차&amp;quot;}&quot;&gt;7주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-46&amp;quot;}&quot;&gt;D-46&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:12}&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:13}&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:14}&quot;&gt;14&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:15}&quot;&gt;15&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:16}&quot;&gt;16&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:17}&quot;&gt;17&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:18}&quot;&gt;18&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;2월4주&amp;quot;}&quot;&gt;2월4주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;8주차&amp;quot;}&quot;&gt;8주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-45&amp;quot;}&quot;&gt;D-45&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:19}&quot;&gt;19&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:20}&quot;&gt;20&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:21}&quot;&gt;21&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:22}&quot;&gt;22&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:23}&quot;&gt;23&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:24}&quot;&gt;24&lt;/td&gt;
&lt;td style=&quot;color: #980000; text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;25_마휴&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;25_마휴&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;2월5주&amp;quot;}&quot;&gt;2월5주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;9주차&amp;quot;}&quot;&gt;9주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-44&amp;quot;}&quot;&gt;D-44&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:26}&quot;&gt;26&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:27}&quot;&gt;27&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:28}&quot;&gt;28&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:29}&quot;&gt;29&lt;/td&gt;
&lt;td style=&quot;width: 8.72091%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18604%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 14.4186%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 99.6511%; height: 17px;&quot; colspan=&quot;11&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.69767%; height: 120px;&quot; rowspan=&quot;6&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;3월&amp;quot;}&quot;&gt;3월&lt;/td&gt;
&lt;td style=&quot;width: 10.3489%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18597%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.30223%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;월&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;월&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;화&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;화&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;수&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;수&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;목&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;목&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;금&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;금&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;토&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;토&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;일&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;일&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;2월5주&amp;quot;}&quot;&gt;2월5주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;9주차&amp;quot;}&quot;&gt;9주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-44&amp;quot;}&quot;&gt;D-44&lt;/td&gt;
&lt;td style=&quot;width: 7.67444%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.6047%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25581%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25587%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:1}&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:2}&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:3}&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;3월1주&amp;quot;}&quot;&gt;3월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;10주차&amp;quot;}&quot;&gt;10주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-43&amp;quot;}&quot;&gt;D-43&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:4}&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:5}&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:6}&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:7}&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:8}&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9}&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:10}&quot;&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;3월2주&amp;quot;}&quot;&gt;3월2주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;11주차&amp;quot;}&quot;&gt;11주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-42&amp;quot;}&quot;&gt;D-42&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:11}&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:12}&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:13}&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:14}&quot;&gt;14&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:15}&quot;&gt;15&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:16}&quot;&gt;16&lt;/td&gt;
&lt;td style=&quot;color: #980000; text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;17_마휴&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;17_마휴&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;3월3주&amp;quot;}&quot;&gt;3월3주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;12주차&amp;quot;}&quot;&gt;12주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-41&amp;quot;}&quot;&gt;D-41&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:18}&quot;&gt;18&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:19}&quot;&gt;19&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:20}&quot;&gt;20&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:21}&quot;&gt;21&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:22}&quot;&gt;22&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:23}&quot;&gt;23&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:24}&quot;&gt;24&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;3월4주&amp;quot;}&quot;&gt;3월4주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;13주차&amp;quot;}&quot;&gt;13주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-40&amp;quot;}&quot;&gt;D-40&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:25}&quot;&gt;25&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:26}&quot;&gt;26&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:27}&quot;&gt;27&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:28}&quot;&gt;28&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:29}&quot;&gt;29&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:30}&quot;&gt;30&lt;/td&gt;
&lt;td style=&quot;color: #980000; text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;31_마휴&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;31_마휴&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 99.6511%; height: 17px;&quot; colspan=&quot;11&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.69767%; height: 20px;&quot; rowspan=&quot;6&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;4월&amp;quot;}&quot;&gt;4월&lt;/td&gt;
&lt;td style=&quot;width: 10.3489%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18597%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.30223%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;월&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;월&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;화&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;화&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;수&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;수&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;목&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;목&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;금&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;금&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;토&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;토&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;일&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;일&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;4월1주&amp;quot;}&quot;&gt;4월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;14주차&amp;quot;}&quot;&gt;14주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-39&amp;quot;}&quot;&gt;D-39&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:1}&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:2}&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:3}&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:4}&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:5}&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:6}&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:7}&quot;&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;4월2주&amp;quot;}&quot;&gt;4월2주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;15주차&amp;quot;}&quot;&gt;15주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-38&amp;quot;}&quot;&gt;D-38&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:8}&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9}&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:10}&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:11}&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:12}&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:13}&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;color: #980000; text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;14_마휴&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;14_마휴&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;4월3주&amp;quot;}&quot;&gt;4월3주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;16주차&amp;quot;}&quot;&gt;16주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-37&amp;quot;}&quot;&gt;D-37&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:15}&quot;&gt;15&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:16}&quot;&gt;16&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:17}&quot;&gt;17&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:18}&quot;&gt;18&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:19}&quot;&gt;19&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:20}&quot;&gt;20&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:21}&quot;&gt;21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;4월4주&amp;quot;}&quot;&gt;4월4주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;17주차&amp;quot;}&quot;&gt;17주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-36&amp;quot;}&quot;&gt;D-36&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:22}&quot;&gt;22&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:23}&quot;&gt;23&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:24}&quot;&gt;24&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:25}&quot;&gt;25&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:26}&quot;&gt;26&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:27}&quot;&gt;27&lt;/td&gt;
&lt;td style=&quot;color: #980000; text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;28_마휴&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;28_마휴&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;5월1주&amp;quot;}&quot;&gt;5월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;18주차&amp;quot;}&quot;&gt;18주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-35&amp;quot;}&quot;&gt;D-35&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:29}&quot;&gt;29&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:30}&quot;&gt;30&lt;/td&gt;
&lt;td style=&quot;width: 8.25581%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25587%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.72091%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18604%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 14.4186%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 99.6511%; height: 17px;&quot; colspan=&quot;11&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.69767%; height: 20px;&quot; rowspan=&quot;6&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;5월&amp;quot;}&quot;&gt;5월&lt;/td&gt;
&lt;td style=&quot;width: 10.3489%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18597%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.30223%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;월&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;월&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;화&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;화&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;수&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;수&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;목&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;목&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;금&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;금&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;토&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;토&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;일&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;일&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;5월1주&amp;quot;}&quot;&gt;5월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;18주차&amp;quot;}&quot;&gt;18주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-35&amp;quot;}&quot;&gt;D-35&lt;/td&gt;
&lt;td style=&quot;width: 7.67444%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.6047%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:1}&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:2}&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:3}&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:4}&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:5}&quot;&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;5월2주&amp;quot;}&quot;&gt;5월2주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;19주차&amp;quot;}&quot;&gt;19주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-34&amp;quot;}&quot;&gt;D-34&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:6}&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:7}&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:8}&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9}&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:10}&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:11}&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;12_마휴&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;12_마휴&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;5월3주&amp;quot;}&quot;&gt;5월3주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;20주차&amp;quot;}&quot;&gt;20주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-33&amp;quot;}&quot;&gt;D-33&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:13}&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:14}&quot;&gt;14&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:15}&quot;&gt;15&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:16}&quot;&gt;16&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:17}&quot;&gt;17&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:18}&quot;&gt;18&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:19}&quot;&gt;19&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;5월4주&amp;quot;}&quot;&gt;5월4주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;21주차&amp;quot;}&quot;&gt;21주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-32&amp;quot;}&quot;&gt;D-32&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:20}&quot;&gt;20&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:21}&quot;&gt;21&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:22}&quot;&gt;22&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:23}&quot;&gt;23&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:24}&quot;&gt;24&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:25}&quot;&gt;25&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;26_마휴&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;26_마휴&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;5월5주&amp;quot;}&quot;&gt;5월5주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;22주차&amp;quot;}&quot;&gt;22주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-31&amp;quot;}&quot;&gt;D-31&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:27}&quot;&gt;27&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:28}&quot;&gt;28&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:29}&quot;&gt;29&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:30}&quot;&gt;30&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:31}&quot;&gt;31&lt;/td&gt;
&lt;td style=&quot;width: 9.18604%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 14.4186%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 99.6511%; height: 17px;&quot; colspan=&quot;11&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.69767%; height: 20px;&quot; rowspan=&quot;6&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;6월&amp;quot;}&quot;&gt;6월&lt;/td&gt;
&lt;td style=&quot;width: 10.3489%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18597%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.30223%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;월&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;월&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;화&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;화&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;수&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;수&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;목&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;목&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;금&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;금&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;토&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;토&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;일&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;일&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;5월5주&amp;quot;}&quot;&gt;5월5주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;22주차&amp;quot;}&quot;&gt;22주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-31&amp;quot;}&quot;&gt;D-31&lt;/td&gt;
&lt;td style=&quot;width: 7.67444%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.6047%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25581%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25587%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.72091%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:1}&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:2}&quot;&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;6월1주&amp;quot;}&quot;&gt;6월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;23주차&amp;quot;}&quot;&gt;23주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-30&amp;quot;}&quot;&gt;D-30&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:3}&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:4}&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:5}&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:6}&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:7}&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:8}&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9}&quot;&gt;9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;6월2주&amp;quot;}&quot;&gt;6월2주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;24주차&amp;quot;}&quot;&gt;24주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-29&amp;quot;}&quot;&gt;D-29&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:10}&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:11}&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:12}&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:13}&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:14}&quot;&gt;14&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:15}&quot;&gt;15&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;16_마휴&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;16_마휴&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;6월3주&amp;quot;}&quot;&gt;6월3주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;25주차&amp;quot;}&quot;&gt;25주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-28&amp;quot;}&quot;&gt;D-28&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:17}&quot;&gt;17&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:18}&quot;&gt;18&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:19}&quot;&gt;19&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:20}&quot;&gt;20&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:21}&quot;&gt;21&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:22}&quot;&gt;22&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:23}&quot;&gt;23&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;6월4주&amp;quot;}&quot;&gt;6월4주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;26주차&amp;quot;}&quot;&gt;26주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-27&amp;quot;}&quot;&gt;D-27&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:24}&quot;&gt;24&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:25}&quot;&gt;25&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:26}&quot;&gt;26&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:27}&quot;&gt;27&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:28}&quot;&gt;28&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:29}&quot;&gt;29&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;30_마휴&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;30_마휴&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 99.6511%; height: 17px;&quot; colspan=&quot;11&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.69767%; height: 20px;&quot; rowspan=&quot;6&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;7월&amp;quot;}&quot;&gt;7월&lt;/td&gt;
&lt;td style=&quot;width: 10.3489%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18597%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.30223%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;월&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;월&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;화&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;화&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;수&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;수&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;목&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;목&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;금&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;금&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;토&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;토&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;일&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;일&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;7월1주&amp;quot;}&quot;&gt;7월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;27주차&amp;quot;}&quot;&gt;27주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-26&amp;quot;}&quot;&gt;D-26&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:1}&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:2}&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:3}&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:4}&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:5}&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:6}&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:7}&quot;&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;7월2주&amp;quot;}&quot;&gt;7월2주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;28주차&amp;quot;}&quot;&gt;28주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-25&amp;quot;}&quot;&gt;D-25&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:8}&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9}&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:10}&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:11}&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:12}&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:13}&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;14_마휴&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;14_마휴&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;7월3주&amp;quot;}&quot;&gt;7월3주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;29주차&amp;quot;}&quot;&gt;29주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-24&amp;quot;}&quot;&gt;D-24&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:15}&quot;&gt;15&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:16}&quot;&gt;16&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:17}&quot;&gt;17&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:18}&quot;&gt;18&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:19}&quot;&gt;19&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:20}&quot;&gt;20&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:21}&quot;&gt;21&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;7월4주&amp;quot;}&quot;&gt;7월4주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;30주차&amp;quot;}&quot;&gt;30주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-23&amp;quot;}&quot;&gt;D-23&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:22}&quot;&gt;22&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:23}&quot;&gt;23&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:24}&quot;&gt;24&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:25}&quot;&gt;25&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:26}&quot;&gt;26&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:27}&quot;&gt;27&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;28_마휴&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;28_마휴&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;8월1주&amp;quot;}&quot;&gt;8월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;31주차&amp;quot;}&quot;&gt;31주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-22&amp;quot;}&quot;&gt;D-22&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:29}&quot;&gt;29&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:30}&quot;&gt;30&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:31}&quot;&gt;31&lt;/td&gt;
&lt;td style=&quot;width: 8.25587%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.72091%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18604%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 14.4186%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 99.6511%; height: 17px;&quot; colspan=&quot;11&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.69767%; height: 20px;&quot; rowspan=&quot;6&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;8월&amp;quot;}&quot;&gt;8월&lt;/td&gt;
&lt;td style=&quot;width: 10.3489%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18597%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.30223%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;월&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;월&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;화&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;화&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;수&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;수&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;목&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;목&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;금&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;금&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;토&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;토&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;일&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;일&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;8월1주&amp;quot;}&quot;&gt;8월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;31주차&amp;quot;}&quot;&gt;31주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-22&amp;quot;}&quot;&gt;D-22&lt;/td&gt;
&lt;td style=&quot;width: 7.67444%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.6047%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25581%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:1}&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:2}&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:3}&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:4}&quot;&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;8월2주&amp;quot;}&quot;&gt;8월2주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;32주차&amp;quot;}&quot;&gt;32주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-21&amp;quot;}&quot;&gt;D-21&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:5}&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:6}&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:7}&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:8}&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9}&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:10}&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;11_마휴&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;11_마휴&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;8월3주&amp;quot;}&quot;&gt;8월3주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;33주차&amp;quot;}&quot;&gt;33주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-20&amp;quot;}&quot;&gt;D-20&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:12}&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:13}&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:14}&quot;&gt;14&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:15}&quot;&gt;15&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:16}&quot;&gt;16&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:17}&quot;&gt;17&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:18}&quot;&gt;18&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;8월4주&amp;quot;}&quot;&gt;8월4주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;34주차&amp;quot;}&quot;&gt;34주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-19&amp;quot;}&quot;&gt;D-19&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:19}&quot;&gt;19&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:20}&quot;&gt;20&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:21}&quot;&gt;21&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:22}&quot;&gt;22&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:23}&quot;&gt;23&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:24}&quot;&gt;24&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;25_마휴&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;25_마휴&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;8월5주&amp;quot;}&quot;&gt;8월5주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;35주차&amp;quot;}&quot;&gt;35주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-18&amp;quot;}&quot;&gt;D-18&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:26}&quot;&gt;26&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:27}&quot;&gt;27&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:28}&quot;&gt;28&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:29}&quot;&gt;29&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:30}&quot;&gt;30&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:31}&quot;&gt;31&lt;/td&gt;
&lt;td style=&quot;width: 14.4186%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 99.6511%; height: 17px;&quot; colspan=&quot;11&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.69767%; height: 20px;&quot; rowspan=&quot;7&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;9월&amp;quot;}&quot;&gt;9월&lt;/td&gt;
&lt;td style=&quot;width: 10.3489%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18597%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.30223%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;월&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;월&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;화&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;화&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;수&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;수&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;목&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;목&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;금&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;금&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;토&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;토&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;일&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;일&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;8월5주&amp;quot;}&quot;&gt;8월5주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;35주차&amp;quot;}&quot;&gt;35주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-18&amp;quot;}&quot;&gt;D-18&lt;/td&gt;
&lt;td style=&quot;width: 7.67444%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.6047%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25581%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25587%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.72091%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18604%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:1}&quot;&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;9월1주&amp;quot;}&quot;&gt;9월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;36주차&amp;quot;}&quot;&gt;36주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-17&amp;quot;}&quot;&gt;D-17&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:2}&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:3}&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:4}&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:5}&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:6}&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:7}&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:8}&quot;&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;9월2주&amp;quot;}&quot;&gt;9월2주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;37주차&amp;quot;}&quot;&gt;37주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-16&amp;quot;}&quot;&gt;D-16&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9}&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:10}&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:11}&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:12}&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:13}&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:14}&quot;&gt;14&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;15_마휴&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;15_마휴&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;9월3주&amp;quot;}&quot;&gt;9월3주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;38주차&amp;quot;}&quot;&gt;38주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-15&amp;quot;}&quot;&gt;D-15&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:16}&quot;&gt;16&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:17}&quot;&gt;17&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:18}&quot;&gt;18&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:19}&quot;&gt;19&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:20}&quot;&gt;20&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:21}&quot;&gt;21&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:22}&quot;&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;9월4주&amp;quot;}&quot;&gt;9월4주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;39주차&amp;quot;}&quot;&gt;39주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-14&amp;quot;}&quot;&gt;D-14&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:23}&quot;&gt;23&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:24}&quot;&gt;24&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:25}&quot;&gt;25&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:26}&quot;&gt;26&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:27}&quot;&gt;27&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:28}&quot;&gt;28&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;29_마휴&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;29_마휴&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;10월1주&amp;quot;}&quot;&gt;10월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;40주차&amp;quot;}&quot;&gt;40주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-13&amp;quot;}&quot;&gt;D-13&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:30}&quot;&gt;30&lt;/td&gt;
&lt;td style=&quot;width: 8.6047%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25581%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25587%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.72091%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18604%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 14.4186%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 99.6511%;&quot; colspan=&quot;11&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.69767%; height: 20px;&quot; rowspan=&quot;6&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;10월&amp;quot;}&quot;&gt;10월&lt;/td&gt;
&lt;td style=&quot;width: 10.3489%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18597%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.30223%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;월&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;월&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;화&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;화&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;수&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;수&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;목&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;목&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;금&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;금&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;토&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;토&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;일&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;일&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;10월1주&amp;quot;}&quot;&gt;10월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;40주차&amp;quot;}&quot;&gt;40주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-13&amp;quot;}&quot;&gt;D-13&lt;/td&gt;
&lt;td style=&quot;width: 7.67444%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:1}&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:2}&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:3}&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:4}&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:5}&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:6}&quot;&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;10월2주&amp;quot;}&quot;&gt;10월2주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;41주차&amp;quot;}&quot;&gt;41주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-12&amp;quot;}&quot;&gt;D-12&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:7}&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:8}&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9}&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:10}&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:11}&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:12}&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;13_마휴&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;13_마휴&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;10월3주&amp;quot;}&quot;&gt;10월3주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;42주차&amp;quot;}&quot;&gt;42주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-11&amp;quot;}&quot;&gt;D-11&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:14}&quot;&gt;14&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:15}&quot;&gt;15&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:16}&quot;&gt;16&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:17}&quot;&gt;17&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:18}&quot;&gt;18&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:19}&quot;&gt;19&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:20}&quot;&gt;20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;10월4주&amp;quot;}&quot;&gt;10월4주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;43주차&amp;quot;}&quot;&gt;43주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-10&amp;quot;}&quot;&gt;D-10&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:21}&quot;&gt;21&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:22}&quot;&gt;22&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:23}&quot;&gt;23&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:24}&quot;&gt;24&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:25}&quot;&gt;25&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:26}&quot;&gt;26&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;27_마휴&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;27_마휴&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;10월5주&amp;quot;}&quot;&gt;10월5주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;44주차&amp;quot;}&quot;&gt;44주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-9&amp;quot;}&quot;&gt;D-9&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:28}&quot;&gt;28&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:29}&quot;&gt;29&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:30}&quot;&gt;30&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:31}&quot;&gt;31&lt;/td&gt;
&lt;td style=&quot;width: 8.72091%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18604%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 14.4186%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 99.6511%; height: 17px;&quot; colspan=&quot;11&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.69767%; height: 20px;&quot; rowspan=&quot;6&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;11월&amp;quot;}&quot;&gt;11월&lt;/td&gt;
&lt;td style=&quot;width: 10.3489%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18597%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.30223%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;월&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;월&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;화&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;화&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;수&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;수&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;목&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;목&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;금&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;금&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;토&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;토&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;일&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;일&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;10월5주&amp;quot;}&quot;&gt;10월5주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;44주차&amp;quot;}&quot;&gt;44주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-9&amp;quot;}&quot;&gt;D-9&lt;/td&gt;
&lt;td style=&quot;width: 7.67444%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.6047%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25581%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25587%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:1}&quot;&gt;1&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:2}&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:3}&quot;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;11월1주&amp;quot;}&quot;&gt;11월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;45주차&amp;quot;}&quot;&gt;45주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-8&amp;quot;}&quot;&gt;D-8&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:4}&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:5}&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:6}&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:7}&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:8}&quot;&gt;8&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9}&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:10}&quot;&gt;10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;11월2주&amp;quot;}&quot;&gt;11월2주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;46주차&amp;quot;}&quot;&gt;46주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-7&amp;quot;}&quot;&gt;D-7&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:11}&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:12}&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:13}&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:14}&quot;&gt;14&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:15}&quot;&gt;15&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:16}&quot;&gt;16&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;17_마휴&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;17_마휴&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;11월3주&amp;quot;}&quot;&gt;11월3주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;47주차&amp;quot;}&quot;&gt;47주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-6&amp;quot;}&quot;&gt;D-6&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:18}&quot;&gt;18&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:19}&quot;&gt;19&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:20}&quot;&gt;20&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:21}&quot;&gt;21&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:22}&quot;&gt;22&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:23}&quot;&gt;23&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:24}&quot;&gt;24&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;11월4주&amp;quot;}&quot;&gt;11월4주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;48주차&amp;quot;}&quot;&gt;48주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-5&amp;quot;}&quot;&gt;D-5&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:25}&quot;&gt;25&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:26}&quot;&gt;26&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:27}&quot;&gt;27&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:28}&quot;&gt;28&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:29}&quot;&gt;29&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:30}&quot;&gt;30&lt;/td&gt;
&lt;td style=&quot;width: 14.4186%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 99.6511%; height: 17px;&quot; colspan=&quot;11&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 5.69767%; height: 128px;&quot; rowspan=&quot;6&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;12월&amp;quot;}&quot;&gt;12월&lt;/td&gt;
&lt;td style=&quot;width: 10.3489%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18597%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.30223%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;월&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;월&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;화&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;화&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;수&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;수&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;목&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;목&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;금&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;금&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;토&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;토&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;일&amp;quot;}&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;일&lt;/span&gt;&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;11월4주&amp;quot;}&quot;&gt;11월4주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;48주차&amp;quot;}&quot;&gt;48주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-5&amp;quot;}&quot;&gt;D-5&lt;/td&gt;
&lt;td style=&quot;width: 7.67444%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.6047%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25581%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25587%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.72091%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18604%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:1,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;1_마휴&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;1_마휴&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 28px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 28px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;12월1주&amp;quot;}&quot;&gt;12월1주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 28px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;49주차&amp;quot;}&quot;&gt;49주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 28px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-4&amp;quot;}&quot;&gt;D-4&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 28px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:2}&quot;&gt;2&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 28px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:3}&quot;&gt;3&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 28px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:4}&quot;&gt;4&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 28px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:5}&quot;&gt;5&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 28px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:6}&quot;&gt;6&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 28px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:7}&quot;&gt;7&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 28px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:8}&quot;&gt;8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;12월2주&amp;quot;}&quot;&gt;12월2주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;50주차&amp;quot;}&quot;&gt;50주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-3&amp;quot;}&quot;&gt;D-3&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:9}&quot;&gt;9&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:10}&quot;&gt;10&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:11}&quot;&gt;11&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:12}&quot;&gt;12&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:13}&quot;&gt;13&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:14}&quot;&gt;14&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;15_마휴&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;15_마휴&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;12월3주&amp;quot;}&quot;&gt;12월3주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;51주차&amp;quot;}&quot;&gt;51주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-2&amp;quot;}&quot;&gt;D-2&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:16}&quot;&gt;16&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:17}&quot;&gt;17&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:18}&quot;&gt;18&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:19}&quot;&gt;19&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:20}&quot;&gt;20&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:21}&quot;&gt;21&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:22}&quot;&gt;22&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;text-align: center; width: 10.3489%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;12월4주&amp;quot;}&quot;&gt;12월4주&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18597%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;52주차&amp;quot;}&quot;&gt;52주차&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.30223%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;D-1&amp;quot;}&quot;&gt;D-1&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:23}&quot;&gt;23&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:24}&quot;&gt;24&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25581%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:25}&quot;&gt;25&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.25587%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:26}&quot;&gt;26&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.72091%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:27}&quot;&gt;27&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 9.18604%; height: 20px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:28}&quot;&gt;28&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 14.4186%; height: 20px;&quot; data-sheets-textstyleruns=&quot;{&amp;quot;1&amp;quot;:0}{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:{&amp;quot;4&amp;quot;:7}}&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:2,&amp;quot;2&amp;quot;:&amp;quot;29_마휴&amp;quot;}&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;29_마휴&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 5.69767%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 10.3489%; height: 17px; text-align: center;&quot;&gt;1월1주&lt;/td&gt;
&lt;td style=&quot;width: 9.18597%; height: 17px; text-align: center;&quot;&gt;1주차&lt;/td&gt;
&lt;td style=&quot;width: 9.30223%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 7.67444%; height: 17px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:30}&quot;&gt;30&lt;/td&gt;
&lt;td style=&quot;text-align: center; width: 8.6047%; height: 17px;&quot; data-sheets-value=&quot;{&amp;quot;1&amp;quot;:3,&amp;quot;3&amp;quot;:31}&quot;&gt;31&lt;/td&gt;
&lt;td style=&quot;width: 8.25581%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.25587%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 8.72091%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 9.18604%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 14.4186%; height: 17px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;KSX ISO 8601 이라는 국내 표준 계산법을 따랐구요&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/ISO_8601&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://ko.wikipedia.org/wiki/ISO_8601&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1702829772501&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;ISO 8601 - 위키백과, 우리 모두의 백과사전&quot; data-og-description=&quot;위키백과, 우리 모두의 백과사전. ISO 8601 Data elements and interchange formats - Information interchange - Representation of dates and times은 날짜와 시간과 관련된 데이터 교환을 다루는 국제 표준이다. 이 표준은 국&quot; data-og-host=&quot;ko.wikipedia.org&quot; data-og-source-url=&quot;https://ko.wikipedia.org/wiki/ISO_8601&quot; data-og-url=&quot;https://ko.wikipedia.org/wiki/ISO_8601&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/TpPi1/hyUPIbfS4t/aQcPqzW62xSluKUbPGpt90/img.png?width=1200&amp;amp;height=1651&amp;amp;face=0_0_1200_1651,https://scrap.kakaocdn.net/dn/bgrJLj/hyUPNjk1Oz/RArCwHl1kBPmb0KvswpNRK/img.png?width=800&amp;amp;height=1101&amp;amp;face=0_0_800_1101,https://scrap.kakaocdn.net/dn/cZCjid/hyUL3VGJ4Q/KKmM3voLEAr4Xm3bX8kFAk/img.png?width=640&amp;amp;height=880&amp;amp;face=0_0_640_880&quot;&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/ISO_8601&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ko.wikipedia.org/wiki/ISO_8601&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/TpPi1/hyUPIbfS4t/aQcPqzW62xSluKUbPGpt90/img.png?width=1200&amp;amp;height=1651&amp;amp;face=0_0_1200_1651,https://scrap.kakaocdn.net/dn/bgrJLj/hyUPNjk1Oz/RArCwHl1kBPmb0KvswpNRK/img.png?width=800&amp;amp;height=1101&amp;amp;face=0_0_800_1101,https://scrap.kakaocdn.net/dn/cZCjid/hyUL3VGJ4Q/KKmM3voLEAr4Xm3bX8kFAk/img.png?width=640&amp;amp;height=880&amp;amp;face=0_0_640_880');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;ISO 8601 - 위키백과, 우리 모두의 백과사전&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;위키백과, 우리 모두의 백과사전. ISO 8601 Data elements and interchange formats - Information interchange - Representation of dates and times은 날짜와 시간과 관련된 데이터 교환을 다루는 국제 표준이다. 이 표준은 국&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ko.wikipedia.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;보기쉽게 정리한 산업통상자원부 포스트 내용도 참고 했어요!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://post.naver.com/viewer/postView.naver?volumeNo=31117035&amp;amp;memberNo=387676&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://post.naver.com/viewer/postView.naver?volumeNo=31117035&amp;amp;memberNo=387676&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1702829847050&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;한 주의 시작, 무슨 요일일까?&quot; data-og-description=&quot;[BY 산소통] 한 주의 시작은 월요일일까 일요일일까?? 이런 고민, 해보신 적 있나요? 표준을 알면 정답은...&quot; data-og-host=&quot;m.post.naver.com&quot; data-og-source-url=&quot;https://post.naver.com/viewer/postView.naver?volumeNo=31117035&amp;amp;memberNo=387676&quot; data-og-url=&quot;https://m.post.naver.com/viewer/postView.naver?volumeNo=31117035&amp;amp;memberNo=387676&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Gmzp4/hyUPFli9ps/hiUhgATEArRGUJKuAK679K/img.jpg?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://post.naver.com/viewer/postView.naver?volumeNo=31117035&amp;amp;memberNo=387676&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://post.naver.com/viewer/postView.naver?volumeNo=31117035&amp;amp;memberNo=387676&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Gmzp4/hyUPFli9ps/hiUhgATEArRGUJKuAK679K/img.jpg?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;한 주의 시작, 무슨 요일일까?&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[BY 산소통] 한 주의 시작은 월요일일까 일요일일까?? 이런 고민, 해보신 적 있나요? 표준을 알면 정답은...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;m.post.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이론대로라면 마트 휴무일이&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 나와야 되는데..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마트는 무슨 기준인지 모르겠네요.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오류가 있으면 바로 수정할게요!&lt;/p&gt;</description>
      <category>스타트업 운영TIP/문서작성&amp;amp;증빙 TIP</category>
      <category>24년</category>
      <category>24년달력</category>
      <category>24년대형마트휴무일</category>
      <category>24년주차달력</category>
      <category>달력</category>
      <category>대형마트휴무일</category>
      <category>주차달력</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/46</guid>
      <comments>https://0-1.kr/46#entry46comment</comments>
      <pubDate>Mon, 18 Dec 2023 01:23:48 +0900</pubDate>
    </item>
    <item>
      <title>[증빙] 창업전 증빙자료와 도움되는 싸이트 바로가기 정리. ver2024</title>
      <link>https://0-1.kr/45</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; &lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;국가지원 민간지원의 구분&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;수익 실현기관인지 아닌지로 구분&lt;br /&gt;포스터 하단의 주관과 주최 확인 필수!&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;창업을 지원하는 기관과&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;창업지원(국가) | 창업지원(민간)&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;예비창업자와 초기창업자가&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;도움될만한 사이트 순서대로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;나열했으니(*표시)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;무조건 클릭해보시고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아..이런사이트도 있구나&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;라고 느끼시면 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1)중소벤처기업부 : 정부기관 중 창업지원관련 자금 컨트롤하는 최상위 기&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.4728%; text-align: center;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 29.4961%; text-align: center;&quot;&gt;&lt;b&gt;산하공공기관&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 49.031%; text-align: center;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.4728%;&quot;&gt;중소벤처기업부&lt;/td&gt;
&lt;td style=&quot;width: 29.4961%;&quot;&gt;* 1)창업진흥원&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.4728%;&quot;&gt;&lt;a style=&quot;background-color: #e6f5ff; color: #0070d1; text-align: left;&quot; href=&quot;http://www.mss.go.kr&quot;&gt;www.mss.go.kr&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 29.4961%;&quot;&gt;* 2)소상공인시장진흥공단&amp;nbsp;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.4728%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 29.4961%;&quot;&gt;* 3)한국벤처투자 &amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.4728%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 29.4961%;&quot;&gt;* 4)공영홈쇼핑&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.4728%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 29.4961%;&quot;&gt;* 5)기술보증기금&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.4728%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 29.4961%;&quot;&gt;* 6)신용보증재단중앙회&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.4728%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 29.4961%;&quot;&gt;* 7)중소벤처기업진흥공단&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.4728%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 29.4961%;&quot;&gt;8)중소기업유통센터&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.4728%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 29.4961%;&quot;&gt;9)중소기업기술정보진흥원&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.4728%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 29.4961%;&quot;&gt;10)중소벤처기업연구원&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 21.4728%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 29.4961%;&quot;&gt;11)장애인기업종합지원센터&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2)&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.8914%;&quot;&gt;사이트명&lt;/td&gt;
&lt;td style=&quot;width: 30.0775%;&quot;&gt;바로가기&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;중요링크&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.8914%;&quot;&gt;* k-startup&lt;/td&gt;
&lt;td style=&quot;width: 30.0775%;&quot;&gt;&lt;a href=&quot;http://www.k-startup.go.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;www.k-startup.go.kr&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;&lt;a title=&quot;23년에 진행될 사업을 한눈에 볼수 있습니다. 24년 사업도 예측가능하죠?&quot; href=&quot;https://www.k-startup.go.kr/web/contents/bizpbanc-ongoing.do?schM=view&amp;amp;pbancSn=162994&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;- 23년 창업지원사업 통합공고&lt;/a&gt;&lt;br /&gt;&lt;a title=&quot;대출이 아닌 각종 지원사업의 종류를 살펴보자구요&quot; href=&quot;https://www.k-startup.go.kr/web/contents/webCMRCZN.do&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;- 지원사업(사업화) 종류&lt;/a&gt;&lt;br /&gt;&lt;a title=&quot;사업공간을 지원 받을 수 있습니다!&quot; href=&quot;https://www.k-startup.go.kr/web/contents/webFC_SP_NR.do&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;- 공간지원 종류&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.8914%;&quot;&gt;* 중소벤처24&lt;/td&gt;
&lt;td style=&quot;width: 30.0775%;&quot;&gt;&lt;a href=&quot;http://www.smes.go.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;www.smes.go.kr&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.8914%;&quot;&gt;기업마당&lt;/td&gt;
&lt;td style=&quot;width: 30.0775%;&quot;&gt;&lt;a href=&quot;http://www.bizinfo.go.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;www.bizinfo.go.kr&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 20.8914%;&quot;&gt;* 소상공인마당&lt;/td&gt;
&lt;td style=&quot;width: 30.0775%;&quot;&gt;&lt;a href=&quot;http://www.sbiz.or.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;www.sbiz.or.kr&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;width: 49.031%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3)&amp;nbsp;&lt;/p&gt;</description>
      <category>스타트업 운영TIP/문서작성&amp;amp;증빙 TIP</category>
      <category>바로가기</category>
      <category>즐겨찾기</category>
      <category>창업지원사이트</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/45</guid>
      <comments>https://0-1.kr/45#entry45comment</comments>
      <pubDate>Mon, 18 Dec 2023 00:54:26 +0900</pubDate>
    </item>
    <item>
      <title>[증빙] 02.사업자등록증명원 발급받기_오픈일과 사업자등록증과 구분하기</title>
      <link>https://0-1.kr/43</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;홈텍스 검색창에&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;'사업자등록증명'&lt;br /&gt;&lt;br /&gt;입력 후 출력&lt;br /&gt;&lt;br /&gt;*사업자등록증과 꼭 구분하세요!&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;사업자등록증명원ㅋㅋ.png&quot; data-origin-width=&quot;2481&quot; data-origin-height=&quot;3508&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rL0W2/btsBtJifDEg/aJz3j25ZkDnUYIIbw3aWj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rL0W2/btsBtJifDEg/aJz3j25ZkDnUYIIbw3aWj1/img.png&quot; data-alt=&quot;사업자등록증명원&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rL0W2/btsBtJifDEg/aJz3j25ZkDnUYIIbw3aWj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrL0W2%2FbtsBtJifDEg%2FaJz3j25ZkDnUYIIbw3aWj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2481&quot; height=&quot;3508&quot; data-filename=&quot;사업자등록증명원ㅋㅋ.png&quot; data-origin-width=&quot;2481&quot; data-origin-height=&quot;3508&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;사업자등록증명원&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;홈텍스가 매년 업데이트가 되네요&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;발급방법을 올리면 1년이 지나가서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그냥 키워드로 검색하는 방법 알려들릴게요.&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;012&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/012.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/012.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;검색창에 [사업자등록증명]까지만 치면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하단에 자동완성이 뜹니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;클릭해&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;사업자등록증명영상.gif&quot; data-origin-width=&quot;1608&quot; data-origin-height=&quot;820&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0hZOV/btsBuamxw92/NbK4nyKDvZS1gDIEWAk8Y1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0hZOV/btsBuamxw92/NbK4nyKDvZS1gDIEWAk8Y1/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0hZOV/btsBuamxw92/NbK4nyKDvZS1gDIEWAk8Y1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/c0hZOV/btsBuamxw92/NbK4nyKDvZS1gDIEWAk8Y1/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1608&quot; height=&quot;820&quot; data-filename=&quot;사업자등록증명영상.gif&quot; data-origin-width=&quot;1608&quot; data-origin-height=&quot;820&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;관공서용으로 선택해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;신청하기를 누르시면 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;사업자등록증명원1.JPG&quot; data-origin-width=&quot;2027&quot; data-origin-height=&quot;702&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bY2oLF/btsBzxGPhaf/3V2Svu7grKmMUz943wyt70/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bY2oLF/btsBzxGPhaf/3V2Svu7grKmMUz943wyt70/img.jpg&quot; data-alt=&quot;키워드 또는 신청/신고상의 [사업자등록증명]을 선택&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bY2oLF/btsBzxGPhaf/3V2Svu7grKmMUz943wyt70/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbY2oLF%2FbtsBzxGPhaf%2F3V2Svu7grKmMUz943wyt70%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2027&quot; height=&quot;702&quot; data-filename=&quot;사업자등록증명원1.JPG&quot; data-origin-width=&quot;2027&quot; data-origin-height=&quot;702&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;키워드 또는 신청/신고상의 [사업자등록증명]을 선택&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;신청 후 이메일 전송을 위해 pdf로 저장하는 경우가 많죠&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우선 인쇄를 선택해서 [pdf로 저장]을 누르시면 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;보통 사업자등록증과 헷갈려하시는 분들이 많은데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사업자등록증명원을 요청하는 경우가 대부분입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;보통 세무서에 가야지만 사업자등록증을&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;발급해주죠?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;가급적 기관에서 파일 요청 시 해당파일을&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;발급해 주시기 바랍니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이유는 오픈일을 확인하기 위해서입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;오픈일이..엄청 중요합니다.ㅎ&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;&amp;nbsp;보통 오픈일을 &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;개인기업 : 사업자등록일 (개업일이 아님!!)&lt;br /&gt;법인 : 등기부등본상 회사성립연월일&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;로 명칭하고 있습니다,&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(개업일은..왜 적는지 모르겠네요.)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;보통 &quot;너내 개업일이 언제야?&quot; 라는 질문을 하는데&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;참 헷갈리죠..ㅎ&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(증명원상 개업일을 개업일이라 부르지 못하고..ㅠ)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;꼭 증명원으로 발급하세요!&lt;/p&gt;</description>
      <category>스타트업 운영TIP/문서작성&amp;amp;증빙 TIP</category>
      <category>사업자등록증명</category>
      <category>사업자등록증명원</category>
      <category>중진공</category>
      <category>중진공1</category>
      <category>증빙</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/43</guid>
      <comments>https://0-1.kr/43#entry43comment</comments>
      <pubDate>Wed, 6 Dec 2023 21:13:42 +0900</pubDate>
    </item>
    <item>
      <title>[증빙][매출] 01.부가가치세 과세표준증명 발급받기</title>
      <link>https://0-1.kr/42</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;홈텍스 입력창에&lt;br /&gt;&lt;br /&gt;과세표준증명&lt;br /&gt;&lt;br /&gt;을 입력하면 됨.^^&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;595&quot; data-origin-height=&quot;842&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DSNcA/btsBrdpfm2O/kaQ2dWhcmBjXWEXZukrWX0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DSNcA/btsBrdpfm2O/kaQ2dWhcmBjXWEXZukrWX0/img.jpg&quot; data-alt=&quot;부가가치세과세표준증명원&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DSNcA/btsBrdpfm2O/kaQ2dWhcmBjXWEXZukrWX0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDSNcA%2FbtsBrdpfm2O%2FkaQ2dWhcmBjXWEXZukrWX0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;595&quot; height=&quot;842&quot; data-origin-width=&quot;595&quot; data-origin-height=&quot;842&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;부가가치세과세표준증명원&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;023&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/023.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/023.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;가장 기본적인 매출증빙으로&lt;br /&gt;&lt;b&gt;부가가치세 과세표준증명원&lt;/b&gt; &lt;br /&gt;을 요청하는 기관들이 많아요.&lt;br /&gt;&lt;br /&gt;흔히들 [VAT증명원]이라고 하는데&lt;br /&gt;가장 간단하게 발급받는 방법은&lt;br /&gt;홈텍스 검색창에 &lt;b&gt;[과세표준증명] &lt;/b&gt;이라고 검색하시면&lt;br /&gt;우측에 부가가치세과세표준증명원 이라고 뜨고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그걸 클릭하면 바로 확인 가능해요.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(신기하게 부가가치세라고 검색하면 안떠요..&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;심지어 과세표준증명원 이라고 쳐도 안뜸..ㅠ&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;꼭 과세표준증명 까지면 입력)&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;a href=&quot;http://www.hometax.go.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://www.hometax.go.kr&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1492&quot; data-origin-height=&quot;786&quot;&gt;&lt;a href=&quot;http://www.hometax.go.kr&quot; target=&quot;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dninJD/btsBtJVlQKz/GkVLZ3thnQ8qKm4YhzfqYK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/dninJD/btsBtJVlQKz/GkVLZ3thnQ8qKm4YhzfqYK/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1492&quot; height=&quot;786&quot; data-origin-width=&quot;1492&quot; data-origin-height=&quot;786&quot;/&gt;&lt;/a&gt;&lt;figcaption&gt;&quot;과세표준증명&quot; 까지만 입력하면 자동완성으로 뜨죠?&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;보통 분기별로 신고한 기록이 있어 사업장 개업일로 부터 최근 분기까지로 설정해서 발급하는 것이 좋습니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byzfcv/btsBo8CddA3/RY7JnSmC0vFExZSYyWbIY1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byzfcv/btsBo8CddA3/RY7JnSmC0vFExZSYyWbIY1/img.gif&quot; data-alt=&quot;과세기간을 가급적 개업일부터 현재분기까지 설정 후 출력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byzfcv/btsBo8CddA3/RY7JnSmC0vFExZSYyWbIY1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/byzfcv/btsBo8CddA3/RY7JnSmC0vFExZSYyWbIY1/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1140&quot; height=&quot;760&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;과세기간을 가급적 개업일부터 현재분기까지 설정 후 출력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;746&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KpwJZ/btsBqBDITR7/8xPeTjxS9nKLis2CiZNNkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KpwJZ/btsBqBDITR7/8xPeTjxS9nKLis2CiZNNkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KpwJZ/btsBqBDITR7/8xPeTjxS9nKLis2CiZNNkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKpwJZ%2FbtsBqBDITR7%2F8xPeTjxS9nKLis2CiZNNkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;944&quot; height=&quot;746&quot; data-origin-width=&quot;944&quot; data-origin-height=&quot;746&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;가급적 민증번호는 없이 발급하시고 [신청하기] 클릭 시&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;969&quot; data-origin-height=&quot;407&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vcLeG/btsBtGRQ0gp/ZxZWxcN7V1vxk4sJfmtcj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vcLeG/btsBtGRQ0gp/ZxZWxcN7V1vxk4sJfmtcj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vcLeG/btsBtGRQ0gp/ZxZWxcN7V1vxk4sJfmtcj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvcLeG%2FbtsBtGRQ0gp%2FZxZWxcN7V1vxk4sJfmtcj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;969&quot; height=&quot;407&quot; data-origin-width=&quot;969&quot; data-origin-height=&quot;407&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 화면이 뜨네요,&lt;br /&gt;&lt;br /&gt;여기서 [출력] 버튼을 눌러 다운받으면 되는데&lt;br /&gt;&lt;br /&gt;프린트가 없을 땐 [프린트 선택] 에서 &lt;br /&gt;&lt;br /&gt;[pdf로 저장]&lt;br /&gt;&lt;br /&gt;을 클릭하여 다운 받으세요!&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;002&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;과세표준증명원은 여러분의 기업의 매출정도를 확인하기 위해 발급 받는 것이에요.&lt;br /&gt;&lt;br /&gt;더 매출이 많은데 분기별로 발급만 가능하오니 &lt;br /&gt;&lt;br /&gt;가급적 [매출세금계산서 합계표]를 통해 매출을 더 많이 나타내주시면 더욱 유리하겠죠?&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그럼 다음은 매출세금계산서 합계표 발급방법을 알아볼게요!&lt;/p&gt;</description>
      <category>스타트업 운영TIP/문서작성&amp;amp;증빙 TIP</category>
      <category>STEP1</category>
      <category>VAT</category>
      <category>vat신고서</category>
      <category>과세표준증명</category>
      <category>매출증빙</category>
      <category>부가가치세과세표준증명원</category>
      <category>중진공</category>
      <category>증빙</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/42</guid>
      <comments>https://0-1.kr/42#entry42comment</comments>
      <pubDate>Tue, 5 Dec 2023 15:00:31 +0900</pubDate>
    </item>
    <item>
      <title>[증빙]01.창업지원과 대출에 필요한 필수서류 모음</title>
      <link>https://0-1.kr/41</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;초기창업 지원 프리패스 서류들이오니&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이것만은 준비하고 시작하세요!&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;008&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/008.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/008.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;증빙서류는&amp;nbsp;요청하는&amp;nbsp;사람이나&amp;nbsp;준비하는&amp;nbsp;사람&amp;nbsp;모두&amp;nbsp;힘든&amp;nbsp;작업입니다.ㅎㅎㅎ &lt;br /&gt;&lt;br /&gt;그냥&amp;nbsp;해당&amp;nbsp;자료는&amp;nbsp;필수적으로&amp;nbsp;요청드리는&amp;nbsp;서류들만&amp;nbsp;모아&amp;nbsp;봤으니&amp;nbsp;왜&amp;nbsp;필요한지는&amp;nbsp;알고&amp;nbsp;가셨음&amp;nbsp;합니다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;무슨&amp;nbsp;지원사업이든&amp;nbsp;해당자료는&amp;nbsp;꼭&amp;nbsp;준비하시기&amp;nbsp;바랍니다.&amp;nbsp;(가급적&amp;nbsp;최신버전을&amp;nbsp;준비하시기&amp;nbsp;바라요!) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.사업자등록증명원(오픈일,업종확인)&lt;/b&gt; &lt;br /&gt;-개인,법인&amp;nbsp;오픈일&amp;nbsp;확인 &lt;br /&gt;&lt;b&gt;2.부가가치세과세표준증명(소득확인)&lt;/b&gt; &lt;br /&gt;-오픈일~현재분기까지&amp;nbsp;소득기재 &lt;br /&gt;&lt;b&gt;3.국세,지방세&amp;nbsp;납세증명서(체납확인_유효기간1월)&lt;/b&gt; &lt;br /&gt;-홈텍스,위택스&amp;nbsp;확인,&amp;nbsp;유효기간은&amp;nbsp;1개월 &lt;br /&gt;&lt;b&gt;4.중소기업확인서(지원가능기관확인,주업종)&lt;/b&gt; &lt;br /&gt;-소상공인,소기업,중기업&amp;nbsp;확인 &lt;br /&gt;&lt;b&gt;5.창업기업확인서(창업기업인증,주업종)&lt;/b&gt; &lt;br /&gt;-초기창업자&amp;nbsp;필수&amp;nbsp;확인,&amp;nbsp;창업이력확인 &lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.사업자등록증명원(사업자등록증X)&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;-용도&amp;nbsp;:사업을&amp;nbsp;시작한&amp;nbsp;날,&amp;nbsp;소재지,&amp;nbsp;업태와&amp;nbsp;종목을&amp;nbsp;확인합니다. &lt;br /&gt;-발급&amp;nbsp;:&amp;nbsp;홈택스&amp;nbsp;-&amp;nbsp;검색어에&amp;nbsp;[사업자등록증명원]&amp;nbsp;검색 &lt;br /&gt;&lt;br /&gt;[사업자등록증]이&amp;nbsp;아닌&amp;nbsp;[사업자등록증명원]을&amp;nbsp;요청하는&amp;nbsp;경우들이&amp;nbsp;많습니다. &lt;br /&gt;&lt;br /&gt;(사업자등록증은&amp;nbsp;세무서에서&amp;nbsp;직접&amp;nbsp;가야&amp;nbsp;주는&amp;nbsp;증이고&amp;nbsp;증명원은&amp;nbsp;홈텍스에서&amp;nbsp;바로&amp;nbsp;발급가능한&amp;nbsp;거죠) &lt;br /&gt;&lt;br /&gt;이유는&amp;nbsp;언제&amp;nbsp;오픈했는지를&amp;nbsp;중시하는&amp;nbsp;기관이&amp;nbsp;많기&amp;nbsp;때문이죠. &lt;br /&gt;사업시작일을(사업자등록일을)&amp;nbsp;묻는&amp;nbsp;답변에는 &lt;br /&gt;&lt;br /&gt;&lt;b&gt;**개인사업자&amp;nbsp;:&amp;nbsp;사업자등록증명원&amp;nbsp;상의&amp;nbsp;[사업자등록일]&amp;nbsp;-&amp;gt;개업일은&amp;nbsp;아니에요!! &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;**법인사업자&amp;nbsp;:&amp;nbsp;법인등기부상의&amp;nbsp;[회사성립연월일]&amp;nbsp;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;을&amp;nbsp;알려주시면&amp;nbsp;됩니다.&amp;nbsp;(왜&amp;nbsp;등기부등본&amp;nbsp;젤&amp;nbsp;마지막&amp;nbsp;장에&amp;nbsp;적혀있는&amp;nbsp;날있죠?&amp;nbsp;그게&amp;nbsp;오픈일&amp;nbsp;입니다.) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.부가가치세&amp;nbsp;과세표준증명&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;-용도&amp;nbsp;:&amp;nbsp;기업의&amp;nbsp;년간&amp;nbsp;소득확인 &lt;br /&gt;-발급&amp;nbsp;:&amp;nbsp;홈텍스&amp;nbsp;-&amp;nbsp;검색어에&amp;nbsp;[부가가치세&amp;nbsp;과세]&amp;nbsp;를&amp;nbsp;입력 &lt;br /&gt;매출이&amp;nbsp;발생하는지&amp;nbsp;유무를&amp;nbsp;확인하기&amp;nbsp;위함이&amp;nbsp;첫번째,&amp;nbsp;수익여부&amp;nbsp;(매출액-매입액이&amp;nbsp;+면&amp;nbsp;납부세액,&amp;nbsp;-면&amp;nbsp;환급발생)를&amp;nbsp;확인하기&amp;nbsp;위함이&amp;nbsp;두번째,&amp;nbsp;면제세업인지&amp;nbsp;확인하기&amp;nbsp;위함이&amp;nbsp;세번째이며&amp;nbsp; &lt;br /&gt;매년&amp;nbsp;매출액이&amp;nbsp;늘어나는지를&amp;nbsp;쉽게&amp;nbsp;증명이&amp;nbsp;가능합니다. &lt;br /&gt;&lt;br /&gt;단&amp;nbsp;지난&amp;nbsp;6개월간&amp;nbsp;소득확인만&amp;nbsp;가능합니다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;만약&amp;nbsp;08월에&amp;nbsp;서류제출을&amp;nbsp;하려면&amp;nbsp;7,8월&amp;nbsp;[매출세금계산서합계표]를&amp;nbsp;함께&amp;nbsp;제출하면&amp;nbsp;소득확인이&amp;nbsp;가능하므로&amp;nbsp;제출월의&amp;nbsp;[세계합]을&amp;nbsp;제출하는&amp;nbsp;것이&amp;nbsp;좋습니다. &lt;br /&gt;&lt;br /&gt;3.국세납세증명서,&amp;nbsp;지방세납세증명서 &lt;br /&gt;-용도&amp;nbsp;:&amp;nbsp;체납여부확인 &lt;br /&gt;-발급&amp;nbsp;:&amp;nbsp;홈텍스,&amp;nbsp;위텍스 &lt;br /&gt;정부기관의&amp;nbsp;창업지원&amp;nbsp;및&amp;nbsp;대출자금은&amp;nbsp;모두&amp;nbsp;세금을&amp;nbsp;기반으로&amp;nbsp;지원됩니다.&amp;nbsp;이걸&amp;nbsp;안내면&amp;nbsp;받을&amp;nbsp;자격도&amp;nbsp;없다는&amp;nbsp;거죠.&amp;nbsp;필히&amp;nbsp;준비하시는데 &lt;br /&gt;&lt;br /&gt;증명가능기간이&amp;nbsp;발급&amp;nbsp;후&amp;nbsp;30일입니다.&amp;nbsp;짤죠.&amp;nbsp;미리&amp;nbsp;때&amp;nbsp;놓진&amp;nbsp;마세요! &lt;br /&gt;&lt;br /&gt;&lt;b&gt;4.중소기업확인서&lt;/b&gt; &lt;br /&gt;-용도:&amp;nbsp;규모를&amp;nbsp;구분하여&amp;nbsp;지원대상&amp;nbsp;구분 &lt;br /&gt;-발급&amp;nbsp;:&amp;nbsp;&lt;a href=&quot;https://sminfo.mss.go.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://sminfo.mss.go.kr&lt;/a&gt;&lt;br /&gt;정부지원기관은&amp;nbsp;업체의&amp;nbsp;규모를&amp;nbsp;구분하여&amp;nbsp;지원기관을&amp;nbsp;구분하고&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;#소상공인,&amp;nbsp;#소기업,&amp;nbsp;#중기업,&amp;nbsp;#대기업 &lt;br /&gt;&lt;br /&gt;*소상공인시장진흥공단&amp;nbsp;:&amp;nbsp;소상공인&amp;nbsp;지원&amp;nbsp;및&amp;nbsp;대출 &lt;br /&gt;*중소벤처기업진흥공단&amp;nbsp;:&amp;nbsp;소기업,&amp;nbsp;중기업,&amp;nbsp;벤처기업&amp;nbsp;지원&amp;nbsp;및&amp;nbsp;대출. &lt;br /&gt;&lt;br /&gt;단&amp;nbsp;[소기업(소상공인)]&amp;nbsp;과&amp;nbsp;[소기업]은&amp;nbsp;꼭&amp;nbsp;구분하셔야&amp;nbsp;합니다.&amp;nbsp;&amp;nbsp;중진공&amp;nbsp;지원을&amp;nbsp;받기&amp;nbsp;위해선&amp;nbsp;[소기업]&amp;nbsp;이상이&amp;nbsp;되어야&amp;nbsp;합니다.&amp;nbsp;[소기업(소상공인)]&amp;nbsp;으로는&amp;nbsp;제조업과&amp;nbsp;예외업종을&amp;nbsp;제외하면&amp;nbsp;지원이&amp;nbsp;불가합니다. &lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;중소기업확인서_000_수정.png&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;1122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CtVaz/btszRTFBbR5/djaFKrgwbAngCvXTrfdGMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CtVaz/btszRTFBbR5/djaFKrgwbAngCvXTrfdGMK/img.png&quot; data-alt=&quot;중소기업확인서&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CtVaz/btszRTFBbR5/djaFKrgwbAngCvXTrfdGMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCtVaz%2FbtszRTFBbR5%2FdjaFKrgwbAngCvXTrfdGMK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;792&quot; height=&quot;1122&quot; data-filename=&quot;중소기업확인서_000_수정.png&quot; data-origin-width=&quot;792&quot; data-origin-height=&quot;1122&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;중소기업확인서&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5.창업기업확인서&lt;/b&gt; &lt;br /&gt;-용도:&amp;nbsp;주업종,&amp;nbsp;창업기업확인,&amp;nbsp;초기창업(창업3년이내)확인 &lt;br /&gt;-발급:&amp;nbsp;&lt;a href=&quot;https://cert.k-startup.go.kr&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://cert.k-startup.go.kr&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;000 창업기업확인서수정.png&quot; data-origin-width=&quot;801&quot; data-origin-height=&quot;1425&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5tpyi/btszUs1BBlP/Jc1zNuU9q5OMlFXnjKGCdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5tpyi/btszUs1BBlP/Jc1zNuU9q5OMlFXnjKGCdK/img.png&quot; data-alt=&quot;창업기업확인서&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5tpyi/btszUs1BBlP/Jc1zNuU9q5OMlFXnjKGCdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5tpyi%2FbtszUs1BBlP%2FJc1zNuU9q5OMlFXnjKGCdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;801&quot; height=&quot;1425&quot; data-filename=&quot;000 창업기업확인서수정.png&quot; data-origin-width=&quot;801&quot; data-origin-height=&quot;1425&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;창업기업확인서&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;최근&amp;nbsp;창업기업과&amp;nbsp;창업&amp;nbsp;3년이내의&amp;nbsp;기업을&amp;nbsp;위한&amp;nbsp;지원사업이&amp;nbsp;늘어나다보니&amp;nbsp;해당&amp;nbsp;확인서가&amp;nbsp;나온&amp;nbsp;듯&amp;nbsp;합니다. &lt;br /&gt;&lt;br /&gt;원래&amp;nbsp;창업지원금은&amp;nbsp; &lt;br /&gt;&lt;br /&gt;생에&amp;nbsp;첫&amp;nbsp;창업을&amp;nbsp;준비하는&amp;nbsp;#예비창업자&amp;nbsp;가&amp;nbsp;창업하기&amp;nbsp;위해&amp;nbsp;교육,&amp;nbsp;지원하여&amp;nbsp;창업&amp;nbsp;후&amp;nbsp;3년동안&amp;nbsp;지원(대출포함)을&amp;nbsp;하는&amp;nbsp;것을&amp;nbsp;목표로&amp;nbsp;하고&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;그러나&amp;nbsp;해당&amp;nbsp;지원금을&amp;nbsp;악용하는&amp;nbsp;헌터(지원금&amp;nbsp;사냥꾼)과&amp;nbsp;브로커(지원금&amp;nbsp;알선&amp;nbsp;및&amp;nbsp;수수료&amp;nbsp;요청)들이&amp;nbsp;늘어나며&amp;nbsp;적절치&amp;nbsp;않은&amp;nbsp;자들에게&amp;nbsp;지원금이&amp;nbsp;흘러&amp;nbsp;갔던것이&amp;nbsp;사실입니다.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;이를&amp;nbsp;막기&amp;nbsp;위해&amp;nbsp;[창업기업]에&amp;nbsp;한해&amp;nbsp;지원하는&amp;nbsp;기관이&amp;nbsp;늘어나고&amp;nbsp;있으며&amp;nbsp;[청년_만39세이하]창업자들에게 &lt;br /&gt;많은&amp;nbsp;지원&amp;nbsp;프로그램이&amp;nbsp;있습니다.&amp;nbsp;초기&amp;nbsp;창업자(창업3년미만)들의&amp;nbsp;꾸준한&amp;nbsp;성장을&amp;nbsp;위함이죠. &lt;br /&gt;&lt;br /&gt;이&amp;nbsp;모든것을&amp;nbsp;증빙하는&amp;nbsp;자료가&amp;nbsp;[창업기업확인서]&amp;nbsp;입니다. &lt;br /&gt;&lt;br /&gt;많은&amp;nbsp;초기창업자들이&amp;nbsp;지원금과&amp;nbsp;대출을&amp;nbsp;위해&amp;nbsp;증빙자료를&amp;nbsp;발급&amp;nbsp;받는데&amp;nbsp;[창업기업확인서]&amp;nbsp;와&amp;nbsp;[중소기업확인서]&amp;nbsp;발급이&amp;nbsp;가능하다면&amp;nbsp;많은&amp;nbsp;지원사업의&amp;nbsp;지원대상이&amp;nbsp;됩니다.&amp;nbsp;해당&amp;nbsp;건은&amp;nbsp;#초기창업지원&amp;nbsp;과&amp;nbsp;#초기창업대출&amp;nbsp;&amp;nbsp;편에서&amp;nbsp;다루도록&amp;nbsp;하겠습니다. &lt;br /&gt;&lt;br /&gt;창업의&amp;nbsp;기준은&amp;nbsp;#창업기업확인서&amp;nbsp;편에서&amp;nbsp;자세히&amp;nbsp;다루어&amp;nbsp;드리겠습니다. &lt;br /&gt;&lt;br /&gt;물론&amp;nbsp;재무제표도&amp;nbsp;있으면&amp;nbsp;좋지만&amp;nbsp;법인만&amp;nbsp;발급이&amp;nbsp;가능하며&amp;nbsp;전년&amp;nbsp;재무제표는&amp;nbsp;다음해&amp;nbsp;4월에&amp;nbsp;발급이&amp;nbsp;가능할거에요.&amp;nbsp;해당&amp;nbsp;글을&amp;nbsp;보는&amp;nbsp;이들은&amp;nbsp;대부분&amp;nbsp;창업&amp;nbsp;1년미만임을&amp;nbsp;고려하여&amp;nbsp;쓰고&amp;nbsp;있으니&amp;nbsp;이점&amp;nbsp;참고&amp;nbsp;바랍니다. &lt;br /&gt;&lt;br /&gt;모든 지원에 앞서 해당 1~5번 자료는 꼭 준비하고 지원하자구요!&lt;/p&gt;</description>
      <category>스타트업 운영TIP/문서작성&amp;amp;증빙 TIP</category>
      <category>문서작성&amp;amp;증빙TIP</category>
      <category>중소기업확인서</category>
      <category>증빙</category>
      <category>증빙01</category>
      <category>창업기업확인서</category>
      <category>필수증빙</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/41</guid>
      <comments>https://0-1.kr/41#entry41comment</comments>
      <pubDate>Mon, 6 Nov 2023 17:17:11 +0900</pubDate>
    </item>
    <item>
      <title>000.스타트업EX 목차 정리(예비창업자와 초기창업자 창업가이드)</title>
      <link>https://0-1.kr/40</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;막연한 마음에 &amp;lsquo;창업지원&amp;rsquo;을 포털에 검색하면&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;수많은 광고들이 여러분의 클릭을 유도하기 위해&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;빤짝 거리고 있을 거에요.&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;017&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/017.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/017.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;참 안타까운 현실입니다. &lt;br /&gt;&lt;br /&gt;더 이상 속지말고 왜 나를 도와주는 지를 알고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;접근하셔야 해요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 모든걸 도와드릴게요.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;예비창업자, 초기창업자를 위한 창업지원 정보의 모든 것&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;스타트업 EX 입니다.&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;025&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/025.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/025.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;br /&gt;앞으로&amp;nbsp;사용할&amp;nbsp;헤시테그는&amp;nbsp;아래와&amp;nbsp;같습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;테그를 많이 참고해주세요!&lt;br /&gt;&lt;br /&gt;#예창,&amp;nbsp;#1년미만,&amp;nbsp;#3년미만,&amp;nbsp;#7년미만&amp;nbsp; &lt;br /&gt;(창업 전 후 기간으로 나누어 지원대상이 구분됩니다.) &lt;br /&gt;&lt;br /&gt;#자금지원,&amp;nbsp;#자금대출,&amp;nbsp;#창업교육,&amp;nbsp;#네트워킹,&amp;nbsp;#데모데이,&amp;nbsp;#투자IR &lt;br /&gt;(성장에&amp;nbsp;필요한&amp;nbsp;창업지원&amp;nbsp;프로그램입니다.) &lt;br /&gt;&lt;br /&gt;목차는 창업 전과 창업 후 프로그램,&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;창업지원프로그램에 필수적인&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;문서작업과 증빙서류 발급 팁들을 정리할 예정이며 &lt;br /&gt;&lt;br /&gt;가장&amp;nbsp;기본적인&amp;nbsp;사업계획서&amp;nbsp;서식들을&amp;nbsp;공유할&amp;nbsp;것이며&amp;nbsp; &lt;br /&gt;아이템별&amp;nbsp;창업을&amp;nbsp;지원하는&amp;nbsp;기관들을&amp;nbsp;매년&amp;nbsp;정리해보겠습니다. &lt;br /&gt;&lt;br /&gt;힘들때 볼 영상까지 스타트업EX 가 준비하겠습니다. &lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;004&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/004.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;001.[시작] 생애 첫 창업! 창업대출 말고 창업지원금부터 시작하기 (추천과정) &lt;br /&gt;&lt;br /&gt;002.[분류] 소상공인? 중소기업? 정부는 나를 00으로 분류한다.(대상에 따른 지원프로그램과 산업분류코드) &lt;br /&gt;&lt;br /&gt;003.[검색] 창업지원금! 내 아이템을 지원하는 신뢰있는 기관 구분과 검색하기 (정부지원창업자금 운영기관)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;003-1. 창업하면 만날 사람들 (창업컨설턴트와 브로커, 창업보육매니저와 엑셀러레이터, VC) 왜 나를 도와주려 할까요?&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;004.[예시] 누구나 가능한 예비창업자(예창), 초기창업자(초창) 창업 3년 미만이 받는 대표적 창업지원금 &lt;br /&gt;&lt;br /&gt;005.[준비] 누구를 위한 사업계획서 준비하기 &lt;br /&gt;&lt;br /&gt;006.[가점] 창업교육, 창업경진대회, IR, 지원프로그램으로 가점 받자! k-startup, 기업마당, &lt;br /&gt;&lt;br /&gt;|창업경진대회 | 창업교육 | 투자 | 데모데이 | 멘토링 | 글로벌 | 행사 | 네트워크 | 대출 | 공간 | &lt;br /&gt;&lt;br /&gt;007.[발표] 정부지원사업용 5,10,15,20분 사업계획서 발표 팁 공유 &lt;br /&gt;&lt;br /&gt;008.[공간] 외로움 극복! 나와 같이 창업한 이들과 함께 창업보육센터 및 지원공간 입주 추천 &lt;br /&gt;&lt;br /&gt;009.[지역] 인건비 지원사업 등 지역의 창업지원 프로그램들 &lt;br /&gt;&lt;br /&gt;010.[투자] 내 기업의 가치 (value)는 알고 도전하자! 콜드메일부터 투자확약서(LOC)까지 &lt;br /&gt;&lt;br /&gt;011.[대출] 금리가 얼마에요? 중진공, 신보, 기보, 소진공의 대출 프로그램 &lt;br /&gt;&lt;br /&gt;012.[링크] 창업지원관련 링크 공유 &lt;br /&gt;&lt;br /&gt;013. 힘들때 도움되는 싸이트 모음 &lt;br /&gt;&lt;br /&gt;014. 콘텐츠 제작에 도움되는 사이트 찾기 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;제목은&amp;nbsp;이렇게&amp;nbsp;정리해볼게요. &lt;br /&gt;&lt;br /&gt;요즘&amp;nbsp;[공짜로창업하기]&amp;nbsp;[공짜지원금]&amp;nbsp;&amp;nbsp;같은&amp;nbsp;말로&amp;nbsp;이&amp;nbsp;돈을&amp;nbsp;대신&amp;nbsp;받아준다던지&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;컨설턴트를&amp;nbsp;가장하여&amp;nbsp;접근하는&amp;nbsp;분들이&amp;nbsp;많아요. &lt;br /&gt;&lt;br /&gt;세상에&amp;nbsp;공짜는&amp;nbsp;없습니다. &lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;002&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/002.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;여러분이&amp;nbsp;사업자등록을&amp;nbsp;완료하는&amp;nbsp;순간&amp;nbsp; &lt;br /&gt;여러분의&amp;nbsp;정보는&amp;nbsp;돈이&amp;nbsp;되고&amp;nbsp;공유되어 &lt;br /&gt;&lt;br /&gt;여러분의&amp;nbsp;창업자금을&amp;nbsp;노리는&amp;nbsp;자들이&amp;nbsp;많이&amp;nbsp; &lt;br /&gt;나타&amp;nbsp;날것입니다. &lt;br /&gt;(사업자 내는 순간 네** 이라며 전화받아보신 적 있으시죠?ㅎ) &lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;045&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/045.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/045.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;아마&amp;nbsp;예전&amp;nbsp;사이트&amp;nbsp;가입할&amp;nbsp;때&amp;nbsp;개인정보&amp;nbsp;동의&amp;nbsp;한것들이 &lt;br /&gt;한꺼번에&amp;nbsp;오는&amp;nbsp;것&amp;nbsp;같아요. &lt;br /&gt;&lt;br /&gt;여러분을 위해 먼저 다가오는 회사는 없습니다. &lt;br /&gt;&lt;br /&gt;이&amp;nbsp;말&amp;nbsp;명심하고&amp;nbsp;제가&amp;nbsp;작성하는&amp;nbsp;글들&amp;nbsp;꼼꼼히&amp;nbsp;읽어&amp;nbsp;보시기&amp;nbsp;바랍니다. &lt;br /&gt;&lt;br /&gt;전&amp;nbsp;누구냐구요? &lt;br /&gt;&lt;br /&gt;당신의&amp;nbsp;경험으로(experience)&amp;nbsp;창업&amp;nbsp;아이템을&amp;nbsp; &lt;br /&gt;설명(explain),&amp;nbsp;연습(exercise),&amp;nbsp;확장(extend)하여&amp;nbsp; &lt;br /&gt;더&amp;nbsp;나은&amp;nbsp;세상을&amp;nbsp;꿈꾸고&amp;nbsp;기대(expect)할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;아이템을&amp;nbsp; &lt;br /&gt;스타트업(startup)&amp;nbsp;발굴을&amp;nbsp;꿈꾸는&amp;nbsp;최매선생&amp;nbsp;입니다. &lt;br /&gt;&lt;br /&gt;제가&amp;nbsp;겪었던&amp;nbsp;경험을&amp;nbsp;바탕으로&amp;nbsp;진실만을&amp;nbsp;전달드릴테니 &lt;br /&gt;믿고&amp;nbsp;따라오세요. &lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;024&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/024.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/024.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;창업지원&amp;nbsp;자금들이&amp;nbsp;꼭&amp;nbsp;필요한&amp;nbsp;곳으로&amp;nbsp;가기를&amp;nbsp;바라는 &lt;br /&gt;창업지원업무를&amp;nbsp;담당했던&amp;nbsp;사람입니다.^^&lt;/p&gt;</description>
      <category>스타트업EX란?</category>
      <category>스타트업ex란</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/40</guid>
      <comments>https://0-1.kr/40#entry40comment</comments>
      <pubDate>Thu, 26 Oct 2023 10:44:25 +0900</pubDate>
    </item>
    <item>
      <title>스타트업EX_23년 7월부터 업데이트 진행합니다.</title>
      <link>https://0-1.kr/39</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스타트업EX 운영자 최매선생입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;업무에 지쳐 업데이트를 미루고 미뤘는데 이제부터 업데이트를 시작하려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수 많은 창업지원정책을 바로 알고 꼭 필요한 분에게 전달되는게 제 목표입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 자금이 초기 창업자 대표님 스스로의 힘으로 받는 그날까지&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 멈추지 않겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;창업지원업무와 대출업무만 평생하고 있는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최매선생입니다!&lt;/p&gt;</description>
      <category>스타트업EX란?</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/39</guid>
      <comments>https://0-1.kr/39#entry39comment</comments>
      <pubDate>Thu, 6 Jul 2023 09:51:54 +0900</pubDate>
    </item>
    <item>
      <title>모두의 업무분장계산기 (0-1.kr/38)</title>
      <link>https://0-1.kr/38</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
&lt;title&gt;모두의 업무분장 계산기 | 0-1.kr/38&lt;/title&gt;
&lt;style&gt;
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Apple SD Gothic Neo','Malgun Gothic',sans-serif;font-size:14px;color:#111827;background:#f8fafc}
/* ── 버튼 ── */
.btn{display:inline-flex;align-items:center;gap:5px;padding:6px 13px;border-radius:8px;border:1px solid #d1d5db;background:#fff;color:#374151;font-size:12px;font-weight:500;cursor:pointer;transition:all .13s;white-space:nowrap}
.btn:hover{background:#f3f4f6}.btn.pri{background:#2563EB;color:#fff;border-color:#2563EB}.btn.pri:hover{opacity:.87}
.btn.sm{padding:4px 10px;font-size:11px;border-radius:6px}.btn.ghost{border-color:transparent;background:transparent;color:#6b7280}.btn.ghost:hover{background:#f3f4f6}
.ibt{width:26px;height:26px;border-radius:6px;border:1px solid #e5e7eb;background:#fff;color:#6b7280;font-size:14px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .13s;flex-shrink:0}
.ibt:hover{background:#f3f4f6;color:#111}

/* ── 섹션 카드 ── */
.sec{background:#fff;border:1px solid #e5e7eb;border-radius:14px;margin-bottom:13px;overflow:visible;box-shadow:0 1px 4px rgba(0,0,0,.04)}
.sec-head{display:flex;align-items:center;gap:10px;padding:14px 16px;cursor:pointer;background:#f9fafb;border-bottom:1px solid #e5e7eb;border-radius:14px 14px 0 0;user-select:none;transition:background .13s}
.sec-head.closed{border-radius:14px;border-bottom:none}
.sec-head:hover{background:#f1f5f9}
.sec-ico{width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:15px;flex-shrink:0}
.sec-head h2{font-size:16px;font-weight:700;flex:1;color:#111827;letter-spacing:-.3px}
.sbadge{font-size:11px;padding:3px 9px;border-radius:20px;font-weight:600}
.sec-ts{font-size:10px;color:#9ca3af;margin-right:4px}
.chev-wrap{width:28px;height:28px;border-radius:7px;background:#e5e7eb;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .13s}
.sec-head:hover .chev-wrap{background:#d1d5db}
.chev{font-size:14px;font-weight:700;color:#374151;transition:transform .18s;display:block}
.chev.o{transform:rotate(180deg)}
.sec-body{padding:16px}.sec-body.collapsed{display:none}
.share-row{display:flex;align-items:center;gap:5px;padding:8px 14px;border-top:1px solid #e5e7eb;background:#f9fafb;border-radius:0 0 14px 14px;flex-wrap:wrap}
.share-row .sr-ts{font-size:10px;color:#9ca3af;flex:1;min-width:80px}

/* ── 섹션 헤더 색상 ── */
.sec-head.c-blue{background:#EFF6FF;border-bottom-color:#BFDBFE}
.sec-head.c-blue:hover{background:#DBEAFE}
.sec-head.c-blue.closed{background:#EFF6FF}
.sec-head.c-orange{background:#FFF7ED;border-bottom-color:#FED7AA}
.sec-head.c-orange:hover{background:#FFEDD5}
.sec-head.c-orange.closed{background:#FFF7ED}
.sec-head.c-purple{background:#F5F3FF;border-bottom-color:#DDD6FE}
.sec-head.c-purple:hover{background:#EDE9FE}
.sec-head.c-purple.closed{background:#F5F3FF}
.sec-head.c-green{background:#F0FDF4;border-bottom-color:#BBF7D0}
.sec-head.c-green:hover{background:#DCFCE7}
.sec-head.c-green.closed{background:#F0FDF4}
.sec-head.c-teal{background:#F0FDFA;border-bottom-color:#99F6E4}
.sec-head.c-teal:hover{background:#CCFBF1}
.sec-head.c-teal.closed{background:#F0FDFA}
.sec-head.c-rose{background:#FFF1F2;border-bottom-color:#FECDD3}
.sec-head.c-rose:hover{background:#FFE4E6}
.sec-head.c-rose.closed{background:#FFF1F2}

/* ── 사용설명서 ── */
.manual-body{padding:0 16px 16px}
.manual-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}
.manual-card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:13px 14px}
.manual-card .mc-ico{font-size:20px;margin-bottom:7px}
.manual-card .mc-title{font-size:12px;font-weight:700;color:#111827;margin-bottom:5px}
.manual-card .mc-desc{font-size:11px;color:#6b7280;line-height:1.65}
.manual-steps{margin-top:14px;display:flex;flex-direction:column;gap:6px}
.manual-step{display:flex;align-items:flex-start;gap:10px;padding:9px 12px;background:#fff;border:1px solid #e5e7eb;border-radius:9px}
.ms-num{width:22px;height:22px;border-radius:50%;background:#2563EB;color:#fff;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-top:1px}
.ms-text{font-size:12px;color:#374151;line-height:1.6}
.ms-text b{color:#111827}

/* ── 앱 헤더 ── */
.app-hdr{padding:0;margin-bottom:14px}
.app-hdr-top{background:linear-gradient(135deg,#1e3a8a 0%,#2563EB 60%,#3b82f6 100%);padding:18px 20px 14px;border-radius:14px 14px 0 0}
.app-hdr-bottom{background:#EFF6FF;border:1px solid #BFDBFE;border-top:none;border-radius:0 0 14px 14px;padding:10px 20px}
.title-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.app-brand{font-size:15px;font-weight:800;color:rgba(255,255,255,.92);letter-spacing:-.2px;margin-bottom:8px;display:flex;align-items:center;gap:7px}
.app-brand-sub{font-size:11px;font-weight:400;color:rgba(255,255,255,.5);letter-spacing:.3px;margin-left:4px}
.proj-inp{font-size:19px;font-weight:700;border:none;outline:none;background:rgba(255,255,255,.12);flex:1;color:#fff;letter-spacing:-.3px;border-radius:9px;padding:8px 13px;border:1.5px solid rgba(255,255,255,.2)}
.proj-inp:focus{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.4);outline:none}
.proj-inp::placeholder{color:rgba(255,255,255,.45)}
.meta-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.mpill{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:20px;border:1px solid #d1d5db;background:#f9fafb;font-size:12px;color:#374151;cursor:pointer;font-weight:500;transition:all .13s}
.mpill:hover{border-color:#2563EB;color:#1D4ED8;background:#EFF6FF}
.ts-hdr{font-size:10px;color:#9ca3af;margin-left:6px}

/* ── 모달 ── */
.modal-bg{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:1000;display:flex;align-items:center;justify-content:center}
.modal{background:#fff;border-radius:14px;border:1px solid #e5e7eb;padding:22px;min-width:300px;max-width:400px;width:92%;box-shadow:0 12px 40px rgba(0,0,0,.15)}
.modal h3{font-size:16px;font-weight:700;margin-bottom:16px;color:#111}
.mfield{margin-bottom:11px}
.mfield label{font-size:11px;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.4px;display:block;margin-bottom:5px}
.mfield input,.mfield select,.mfield textarea{width:100%;border:1px solid #d1d5db;border-radius:9px;padding:8px 11px;font-size:13px;color:#111;background:#f9fafb;outline:none;font-family:inherit}
.mfield textarea{resize:vertical;min-height:80px}
.mfield input:focus,.mfield select:focus,.mfield textarea:focus{border-color:#2563EB;background:#fff}
.modal-actions{display:flex;gap:7px;justify-content:flex-end;margin-top:16px}
.transfer-code{width:100%;min-height:90px;font-size:11px;font-family:'Courier New',monospace;background:#1e293b;color:#a3e635;border:1px solid #334155;border-radius:9px;padding:11px;resize:none;outline:none;word-break:break-all;line-height:1.5}
.receive-inp{width:100%;min-height:90px;font-size:11px;font-family:'Courier New',monospace;background:#f0fdf4;color:#166534;border:1px solid #bbf7d0;border-radius:9px;padding:11px;resize:none;outline:none;word-break:break-all;line-height:1.5}
.receive-inp::placeholder{color:#86efac;font-family:'Apple SD Gothic Neo',sans-serif;font-size:12px}
.ttab-row{display:flex;border:1px solid #e5e7eb;border-radius:9px;overflow:hidden;margin-bottom:13px}
.ttab{flex:1;padding:8px;font-size:12px;border:none;background:transparent;cursor:pointer;color:#6b7280;font-weight:500}
.ttab.on{background:#2563EB;color:#fff}

/* ── 포스트잇 스타일 개요 ── */
.postit-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.postit-wrap{position:relative}
.postit-label{font-size:10px;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.4px;margin-bottom:5px;display:flex;align-items:center;gap:6px}
.postit-label .fs-ctrl{display:flex;align-items:center;gap:3px;margin-left:auto}
.fs-btn{width:20px;height:20px;border-radius:4px;border:1px solid #e5e7eb;background:#fff;font-size:11px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#374151;font-weight:700}
.fs-btn:hover{background:#f3f4f6}
.postit{width:100%;border:none;outline:none;resize:none;padding:12px 13px;border-radius:8px;font-family:inherit;line-height:1.65;min-height:80px;transition:box-shadow .13s;box-shadow:2px 3px 8px rgba(0,0,0,.08),0 1px 0 rgba(0,0,0,.04)}
.postit:focus{box-shadow:2px 3px 12px rgba(0,0,0,.14),0 1px 0 rgba(0,0,0,.06)}
.postit.y{background:#fef9c3;color:#713f12}
.postit.g{background:#dcfce7;color:#14532d}
.postit.b{background:#dbeafe;color:#1e3a8a}
.postit.p{background:#f3e8ff;color:#581c87}
.span2{grid-column:1/-1}

/* ── 팀원 풀 ── */
.pool{display:flex;gap:7px;flex-wrap:wrap;min-height:42px;padding:8px 10px;border:1px dashed #d1d5db;border-radius:9px;background:#f9fafb;align-items:center}
.chip{display:inline-flex;align-items:center;gap:5px;padding:6px 11px;border-radius:20px;border:1.5px solid;font-size:12px;font-weight:600;cursor:grab;user-select:none;transition:transform .12s,opacity .12s}
.chip:hover{transform:scale(1.05)}.chip:active{cursor:grabbing;opacity:.6}
.chip-rm{font-size:13px;opacity:.4;cursor:pointer;margin-left:2px}.chip-rm:hover{opacity:1;color:#DC2626}
.add-chip-btn{display:inline-flex;align-items:center;gap:4px;padding:6px 11px;border-radius:20px;border:1.5px dashed #d1d5db;background:transparent;color:#9ca3af;font-size:12px;font-weight:500;cursor:pointer;transition:all .13s}
.add-chip-btn:hover{border-color:#2563EB;color:#2563EB;background:#EFF6FF}

/* ── 흐름도 ── */
.flow-tb{display:flex;align-items:center;gap:7px;margin-bottom:10px;flex-wrap:wrap}
.dir-grp{display:flex;border:1px solid #d1d5db;border-radius:8px;overflow:hidden}
.dir-btn{padding:5px 12px;font-size:12px;border:none;background:transparent;cursor:pointer;color:#374151;font-weight:500}
.dir-btn.on{background:#2563EB;color:#fff}
.flow-canvas{overflow:auto;border:1px solid #e5e7eb;border-radius:9px;background:#f9fafb;padding:16px;min-height:110px}
.fn{border-radius:11px;border:2px solid;padding:10px 13px;cursor:pointer;transition:all .18s;position:relative}
.fn:hover{transform:translateY(-2px);box-shadow:0 4px 14px rgba(0,0,0,.1)}
.fn.done-node{opacity:.45}
.fn.done-node::after{content:'✓';position:absolute;top:-8px;right:-8px;width:18px;height:18px;border-radius:50%;background:#16A34A;color:#fff;font-size:11px;display:flex;align-items:center;justify-content:center;line-height:18px;font-weight:800}
.fn.active-drop{border-style:dashed!important;opacity:.8}
.fn-num{font-size:10px;font-weight:700;opacity:.6;margin-bottom:3px}
.fn-title{font-size:13px;font-weight:700;line-height:1.3;outline:none;min-width:30px}
.fn-dl{font-size:10px;opacity:.55;margin-top:3px}
.fn-memo{font-size:11px;opacity:.65;margin-top:4px;line-height:1.3;word-break:keep-all}
.fn-abadge{font-size:10px;padding:2px 7px;border-radius:10px;border:1px solid;font-weight:600;white-space:nowrap}
.fn-comment{margin-top:8px;border-top:1px dashed;padding-top:7px;opacity:.8}
.fn-comment input{width:100%;font-size:11px;border:none;outline:none;background:transparent;color:inherit;font-family:inherit}
.fn-comment input::placeholder{opacity:.45}
.smh{display:none;position:absolute;left:50%;transform:translateX(-50%);bottom:calc(100%+7px);z-index:50;background:#fff;border:1px solid #d1d5db;border-radius:10px;padding:9px;min-width:160px;box-shadow:0 4px 18px rgba(0,0,0,.12)}
.fn:hover .smh{display:block}
.smh-title{font-size:10px;color:#9ca3af;margin-bottom:6px;font-weight:600}
.smh-chip{display:inline-flex;align-items:center;gap:3px;padding:4px 9px;border-radius:20px;border:1.5px solid;font-size:11px;font-weight:500;cursor:pointer;margin:2px;transition:transform .1s}
.smh-chip:hover{transform:scale(1.06)}

/* ── 업무단계 그리드 ── */
.steps-grid{display:grid;gap:10px}
.cols-2{grid-template-columns:repeat(2,1fr)}
.cols-3{grid-template-columns:repeat(3,1fr)}
.cols-4{grid-template-columns:repeat(4,1fr)}
.si-card{border:2px solid #e5e7eb;border-radius:11px;overflow:hidden;transition:all .18s;cursor:pointer}
.si-card.done-card{border-color:#d1d5db;background:#f3f4f6;opacity:.65}
.si-card.open-card{cursor:default}
.si-card-head{display:flex;align-items:center;gap:8px;padding:11px 13px;background:#f9fafb;border-bottom:1px solid transparent;transition:background .13s}
.si-card.open-card .si-card-head{border-bottom-color:#e5e7eb}
.si-card:not(.open-card):hover .si-card-head{background:#f1f5f9}
.si-card.done-card .si-card-head{background:#f3f4f6}
.si-color-dot{width:16px;height:16px;border-radius:50%;border:2px solid;cursor:pointer;transition:transform .13s;flex-shrink:0;position:relative}
.si-color-dot:hover{transform:scale(1.25)}
.color-picker-pop{display:none;position:absolute;top:22px;left:0;z-index:100;background:#fff;border:1px solid #d1d5db;border-radius:9px;padding:8px;flex-wrap:wrap;width:136px;box-shadow:0 4px 16px rgba(0,0,0,.12);gap:5px}
.color-picker-pop.show{display:flex}
.cp-dot{width:22px;height:22px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:transform .12s}.cp-dot:hover{transform:scale(1.18)}
.si-card-num{font-size:10px;font-weight:700;padding:2px 8px;border-radius:20px;background:#EFF6FF;color:#1D4ED8;flex-shrink:0}
.si-card.done-card .si-card-num{background:#e5e7eb;color:#6b7280}
.si-card-title{flex:1;font-size:13px;font-weight:700;color:#111827;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.si-card.done-card .si-card-title{color:#9ca3af;text-decoration:line-through}
.si-card-dl{font-size:10px;color:#9ca3af;white-space:nowrap}
.si-card-toggle{font-size:12px;color:#9ca3af;transition:transform .15s;flex-shrink:0}
.si-card.open-card .si-card-toggle{transform:rotate(180deg)}
.si-body{display:none;padding:12px 13px;background:#fff}
.si-card.open-card .si-body{display:block}

/* 섹션 내 공통 */
.fl-label{font-size:11px;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.4px;margin-bottom:5px;margin-top:10px}
.fl-label:first-child{margin-top:0}
.assignee-zone{display:flex;flex-wrap:wrap;gap:5px;align-items:center;padding:7px 9px;border:1.5px dashed #d1d5db;border-radius:8px;background:#f9fafb;min-height:36px;margin-bottom:8px;transition:all .13s}
.assignee-zone.over{border-color:#2563EB;background:#EFF6FF}
.az-ph{font-size:11px;color:#9ca3af}
.abadge{display:inline-flex;align-items:center;gap:3px;padding:3px 9px;border-radius:20px;border:1.5px solid;font-size:11px;font-weight:600}
.abadge .arm{font-size:11px;opacity:.4;cursor:pointer;margin-left:2px}.abadge .arm:hover{opacity:1;color:#DC2626}
.note-inp{width:100%;border:1px solid #e5e7eb;border-radius:8px;padding:8px 10px;font-size:12px;color:#111;resize:vertical;min-height:48px;font-family:inherit;outline:none;background:#fff;margin-bottom:7px}.note-inp:focus{border-color:#2563EB}
.memo-inp{width:100%;border:1px solid #e5e7eb;border-radius:7px;padding:5px 10px;font-size:11px;color:#4b5563;font-family:inherit;outline:none;background:#fff;margin-bottom:8px}.memo-inp:focus{border-color:#2563EB}

/* 할일 */
.todo-list{display:flex;flex-direction:column;gap:4px;margin-bottom:6px}
.todo-item{display:flex;align-items:center;gap:6px;padding:6px 9px;border:1px solid #e5e7eb;border-radius:7px;background:#fff;cursor:move}
.todo-item.dragging-todo{opacity:.4;border-style:dashed}
.todo-item.drag-over-todo{border-color:#2563EB;background:#EFF6FF}
.todo-item input[type=checkbox]{accent-color:#2563EB;width:14px;height:14px;cursor:pointer;flex-shrink:0}
.todo-txt{flex:1;font-size:12px;border:none;outline:none;background:transparent;color:#111}.todo-txt::placeholder{color:#d1d5db}
.todo-txt.done-t{text-decoration:line-through;color:#9ca3af}
.todo-status-btn{font-size:10px;padding:2px 8px;border-radius:20px;border:1px solid;font-weight:600;cursor:pointer;transition:all .12s;white-space:nowrap;background:transparent}
.todo-rm{font-size:13px;color:#d1d5db;cursor:pointer;border:none;background:none;flex-shrink:0}.todo-rm:hover{color:#DC2626}
.drag-handle{font-size:13px;color:#d1d5db;cursor:grab;flex-shrink:0}
.add-todo-btn{font-size:11px;color:#2563EB;background:none;border:1px dashed #93C5FD;border-radius:7px;padding:5px 11px;cursor:pointer;width:100%;text-align:left}.add-todo-btn:hover{background:#EFF6FF}
.approval-box{margin-top:10px;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden}
.approval-head{font-size:11px;font-weight:600;color:#6b7280;padding:6px 10px;background:#f9fafb;text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid #e5e7eb}
.approval-inp{width:100%;border:none;outline:none;padding:8px 10px;font-size:12px;color:#111;font-family:inherit;resize:vertical;min-height:40px;background:#fff}
.add-step-btn-global{width:100%;padding:10px;border:2px dashed #d1d5db;border-radius:11px;background:transparent;color:#6b7280;font-size:13px;font-weight:600;cursor:pointer;margin-top:6px}.add-step-btn-global:hover{border-color:#2563EB;color:#2563EB;background:#EFF6FF}
.cols-ctrl{display:flex;align-items:center;gap:5px;margin-left:auto}
.cols-ctrl label{font-size:11px;color:#9ca3af}
.cols-ctrl select{font-size:11px;border:1px solid #e5e7eb;border-radius:6px;padding:3px 7px;background:#f9fafb;outline:none;color:#374151}

/* 파일 세팅 */
.ftabs{display:flex;gap:5px;margin-bottom:12px;flex-wrap:wrap}
.ftab{font-size:12px;padding:5px 13px;border-radius:20px;border:1px solid #d1d5db;background:#f9fafb;color:#6b7280;cursor:pointer;font-weight:500}.ftab.on{background:#EFF6FF;color:#1D4ED8;border-color:#93C5FD}
.fgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.fgrid .fl{font-size:10px;font-weight:600;color:#6b7280;margin-bottom:3px;text-transform:uppercase;letter-spacing:.3px}
.fgrid select,.fgrid input{border:1px solid #e5e7eb;border-radius:7px;padding:6px 9px;font-size:12px;color:#111;background:#f9fafb;outline:none;font-family:inherit;width:100%}
.fgrid select:focus,.fgrid input:focus{border-color:#2563EB;background:#fff}
.global-memo{margin-top:14px;border:1px solid #e5e7eb;border-radius:9px;overflow:hidden}
.global-memo-head{font-size:11px;font-weight:600;color:#374151;padding:7px 12px;background:#f9fafb;border-bottom:1px solid #e5e7eb;letter-spacing:.3px}
.global-memo-inp{width:100%;border:none;outline:none;padding:10px 12px;font-size:13px;color:#111;font-family:inherit;resize:vertical;min-height:80px;background:#fff;line-height:1.6}

/* 자동저장 토스트 */
.save-toast{position:fixed;bottom:20px;right:20px;background:#111827;color:#fff;padding:8px 16px;border-radius:8px;font-size:12px;font-weight:500;opacity:0;transition:opacity .3s;pointer-events:none;z-index:2000}
.save-toast.show{opacity:1}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div id=&quot;app&quot; style=&quot;max-width:900px;margin:0 auto;padding:14px 16px 60px&quot;&gt;

&lt;!-- 자동저장 토스트 --&gt;
&lt;div class=&quot;save-toast&quot; id=&quot;save-toast&quot;&gt;✅ 자동 저장됨&lt;/div&gt;

&lt;!-- 모달 컨테이너 --&gt;
&lt;div id=&quot;modal-wrap&quot; style=&quot;display:none&quot;&gt;&lt;/div&gt;

&lt;!-- ── 헤더 ── --&gt;
&lt;div class=&quot;app-hdr&quot;&gt;
  &lt;div class=&quot;app-hdr-top&quot;&gt;
    &lt;div class=&quot;app-brand&quot;&gt;  모두의 업무분장 계산기&lt;span class=&quot;app-brand-sub&quot;&gt;· 0-1.kr/38&lt;/span&gt;&lt;/div&gt;
    &lt;div class=&quot;title-row&quot;&gt;
      &lt;input class=&quot;proj-inp&quot; id=&quot;projTitle&quot; type=&quot;text&quot; placeholder=&quot;여기에 프로젝트명 기재 (예시: 2025 ○○ 프로젝트)&quot; oninput=&quot;schedSave()&quot;&gt;
      &lt;button class=&quot;btn sm&quot; style=&quot;background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.35);color:#fff;font-weight:600;flex-shrink:0&quot; onclick=&quot;openShareAllModal()&quot;&gt;  전체 공유&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;app-hdr-bottom&quot;&gt;
    &lt;div class=&quot;meta-row&quot;&gt;
      &lt;div class=&quot;mpill&quot; onclick=&quot;openMetaModal('start')&quot;&gt;  &lt;span id=&quot;lbl-start&quot;&gt;시작일 설정&lt;/span&gt;&lt;/div&gt;
      &lt;div class=&quot;mpill&quot; onclick=&quot;openMetaModal('end')&quot;&gt;  &lt;span id=&quot;lbl-end&quot;&gt;마감일 설정&lt;/span&gt;&lt;/div&gt;
      &lt;div class=&quot;mpill&quot; onclick=&quot;openMetaModal('dept')&quot;&gt;  &lt;span id=&quot;lbl-dept&quot;&gt;담당팀&lt;/span&gt;&lt;/div&gt;
      &lt;div class=&quot;mpill&quot; onclick=&quot;cycleStatus()&quot;&gt;&lt;span id=&quot;status-ico&quot;&gt;⏳&lt;/span&gt; &lt;span id=&quot;lbl-status&quot;&gt;진행 중&lt;/span&gt;&lt;/div&gt;
      &lt;span class=&quot;ts-hdr&quot; id=&quot;hdr-ts&quot;&gt;&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ── 0. 사용설명서 ── --&gt;
&lt;div class=&quot;sec&quot; id=&quot;sec-manual&quot;&gt;
  &lt;div class=&quot;sec-head c-teal closed&quot; id=&quot;sh-manual&quot; onclick=&quot;toggleSec('manual')&quot;&gt;
    &lt;div class=&quot;sec-ico&quot; style=&quot;background:#CCFBF1&quot;&gt; &lt;/div&gt;
    &lt;h2&gt;사용 설명서&lt;/h2&gt;
    &lt;span class=&quot;sbadge&quot; style=&quot;background:#CCFBF1;color:#0F766E&quot;&gt;처음이라면 클릭!&lt;/span&gt;
    &lt;div class=&quot;chev-wrap&quot; style=&quot;margin-left:auto&quot;&gt;&lt;span class=&quot;chev&quot; id=&quot;chev-manual&quot;&gt;▾&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&quot;body-manual&quot; class=&quot;manual-body collapsed&quot; style=&quot;display:none&quot;&gt;
    &lt;div class=&quot;manual-steps&quot;&gt;
      &lt;div class=&quot;manual-step&quot;&gt;&lt;div class=&quot;ms-num&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;ms-text&quot;&gt;&lt;b&gt;프로젝트명 입력&lt;/b&gt; — 상단 타이틀 박스에 프로젝트명을 입력하고,   시작일 ·   마감일 ·   담당팀 · 진행상태를 클릭해 설정하세요.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;manual-step&quot;&gt;&lt;div class=&quot;ms-num&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;ms-text&quot;&gt;&lt;b&gt;프로젝트 개요 작성&lt;/b&gt; — 목적/배경, 산출물, 승인자, 전달사항을 포스트잇 형식으로 입력하세요. 우측 ＋/－ 버튼으로 글자 크기를 조절할 수 있습니다.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;manual-step&quot;&gt;&lt;div class=&quot;ms-num&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;ms-text&quot;&gt;&lt;b&gt;팀원 등록&lt;/b&gt; — 참여 인원 섹션에서 &lt;b&gt;+ 팀원 추가&lt;/b&gt;를 눌러 이름·직책·색상을 설정하세요. 등록된 팀원 칩을 드래그해 흐름도나 업무단계에 배정합니다.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;manual-step&quot;&gt;&lt;div class=&quot;ms-num&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;ms-text&quot;&gt;&lt;b&gt;업무 단계 설정&lt;/b&gt; — 흐름도 섹션에서 &lt;b&gt;+ 단계 추가&lt;/b&gt;를 눌러 STEP을 만드세요. 흐름도 노드를 더블클릭하면 완료 처리, 호버 후 팀원 클릭으로 담당자를 배정합니다. 흐름도 &lt;b&gt;EDIT&lt;/b&gt; 버튼으로 하단 상세 편집 영역으로 바로 이동할 수 있습니다.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;manual-step&quot;&gt;&lt;div class=&quot;ms-num&quot;&gt;5&lt;/div&gt;&lt;div class=&quot;ms-text&quot;&gt;&lt;b&gt;업무 단계별 분장 작성&lt;/b&gt; — 카드를 클릭해 펼치면 담당자 배정, 상세 설명, 할 일 체크리스트, 결재 의견을 입력할 수 있습니다. 열 수(2~4열)는 타이틀 옆 드롭다운으로 조절하세요.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;manual-step&quot;&gt;&lt;div class=&quot;ms-num&quot;&gt;6&lt;/div&gt;&lt;div class=&quot;ms-text&quot;&gt;&lt;b&gt;공유 · 전달&lt;/b&gt; — 각 섹션 하단 &lt;b&gt;  전달&lt;/b&gt; 버튼을 누르면 내용 코드가 생성됩니다. 받는 사람은 같은 도구에서 &lt;b&gt;전달 코드 수신&lt;/b&gt; 탭에 붙여넣으면 내용이 자동 적용됩니다. &lt;b&gt;전체 공유&lt;/b&gt;는 모든 섹션을 한 번에 전달합니다.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;manual-step&quot;&gt;&lt;div class=&quot;ms-num&quot;&gt;7&lt;/div&gt;&lt;div class=&quot;ms-text&quot;&gt;&lt;b&gt;자동 저장&lt;/b&gt; — 모든 입력 내용은 입력 후 0.8초 뒤 브라우저에 자동 저장됩니다. 새로고침해도 내용이 유지됩니다. (같은 브라우저/기기 기준)&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;manual-grid&quot;&gt;
      &lt;div class=&quot;manual-card&quot;&gt;&lt;div class=&quot;mc-ico&quot;&gt; ️&lt;/div&gt;&lt;div class=&quot;mc-title&quot;&gt;흐름도&lt;/div&gt;&lt;div class=&quot;mc-desc&quot;&gt;가로/세로 전환 가능. 더블클릭=완료, 호버 후 팀원 클릭=배정. 노드 제목은 직접 클릭해서 편집.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;manual-card&quot;&gt;&lt;div class=&quot;mc-ico&quot;&gt; &lt;/div&gt;&lt;div class=&quot;mc-title&quot;&gt;전달 코드&lt;/div&gt;&lt;div class=&quot;mc-desc&quot;&gt;URL 없이 텍스트 코드로 내용 전달. 카카오톡·이메일·메시지 어디서든 붙여넣기 가능.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;manual-card&quot;&gt;&lt;div class=&quot;mc-ico&quot;&gt; &lt;/div&gt;&lt;div class=&quot;mc-title&quot;&gt;자동 저장&lt;/div&gt;&lt;div class=&quot;mc-desc&quot;&gt;입력 즉시 로컬 자동저장. 우하단 토스트로 저장 확인. 기기가 달라지면 전달 코드로 이전.&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ── 1. 개요 ── --&gt;
&lt;div class=&quot;sec&quot;&gt;
  &lt;div class=&quot;sec-head c-blue closed&quot; id=&quot;sh-overview&quot; onclick=&quot;toggleSec('overview')&quot;&gt;
    &lt;div class=&quot;sec-ico&quot; style=&quot;background:#BFDBFE&quot;&gt; &lt;/div&gt;
    &lt;h2&gt;프로젝트 개요&lt;/h2&gt;
    &lt;span class=&quot;sbadge&quot; style=&quot;background:#EFF6FF;color:#1D4ED8&quot;&gt;필수&lt;/span&gt;
    &lt;span class=&quot;sec-ts&quot; id=&quot;ts-overview&quot;&gt;&lt;/span&gt;
    &lt;div class=&quot;chev-wrap&quot;&gt;&lt;span class=&quot;chev&quot; id=&quot;chev-overview&quot;&gt;▾&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&quot;body-overview&quot; class=&quot;sec-body collapsed&quot;&gt;
    &lt;div class=&quot;postit-grid&quot;&gt;
      &lt;div class=&quot;postit-wrap span2&quot;&gt;
        &lt;div class=&quot;postit-label&quot;&gt;
          목적 / 배경
          &lt;div class=&quot;fs-ctrl&quot;&gt;
            &lt;button class=&quot;fs-btn&quot; onclick=&quot;changeFontSize('ov-purpose',-1)&quot;&gt;−&lt;/button&gt;
            &lt;span id=&quot;fs-ov-purpose&quot; style=&quot;font-size:10px;color:#9ca3af;min-width:22px;text-align:center&quot;&gt;13&lt;/span&gt;
            &lt;button class=&quot;fs-btn&quot; onclick=&quot;changeFontSize('ov-purpose',1)&quot;&gt;+&lt;/button&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;textarea id=&quot;ov-purpose&quot; class=&quot;postit b&quot; oninput=&quot;schedSave();touchTs('overview')&quot; placeholder=&quot;2025년도 투자자 발표용 사업계획서 작성...&quot;&gt;2025년도 사업 방향 설정 및 투자자 발표를 위한 사업계획서 작성. 전년도 성과 분석 기반으로 신규 사업 아이템 3가지 포함.&lt;/textarea&gt;
      &lt;/div&gt;
      &lt;div class=&quot;postit-wrap&quot;&gt;
        &lt;div class=&quot;postit-label&quot;&gt;
          최종 산출물
          &lt;div class=&quot;fs-ctrl&quot;&gt;
            &lt;button class=&quot;fs-btn&quot; onclick=&quot;changeFontSize('ov-output',-1)&quot;&gt;−&lt;/button&gt;
            &lt;span id=&quot;fs-ov-output&quot; style=&quot;font-size:10px;color:#9ca3af;min-width:22px;text-align:center&quot;&gt;13&lt;/span&gt;
            &lt;button class=&quot;fs-btn&quot; onclick=&quot;changeFontSize('ov-output',1)&quot;&gt;+&lt;/button&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;textarea id=&quot;ov-output&quot; class=&quot;postit y&quot; oninput=&quot;schedSave();touchTs('overview')&quot; placeholder=&quot;A4 30p 내외 PDF...&quot;&gt;A4 30페이지 내외 사업계획서 PDF
PPT 발표자료 15슬라이드&lt;/textarea&gt;
      &lt;/div&gt;
      &lt;div class=&quot;postit-wrap&quot;&gt;
        &lt;div class=&quot;postit-label&quot;&gt;
          승인자 / 검토자
          &lt;div class=&quot;fs-ctrl&quot;&gt;
            &lt;button class=&quot;fs-btn&quot; onclick=&quot;changeFontSize('ov-approver',-1)&quot;&gt;−&lt;/button&gt;
            &lt;span id=&quot;fs-ov-approver&quot; style=&quot;font-size:10px;color:#9ca3af;min-width:22px;text-align:center&quot;&gt;13&lt;/span&gt;
            &lt;button class=&quot;fs-btn&quot; onclick=&quot;changeFontSize('ov-approver',1)&quot;&gt;+&lt;/button&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;textarea id=&quot;ov-approver&quot; class=&quot;postit g&quot; oninput=&quot;schedSave();touchTs('overview')&quot; placeholder=&quot;대표이사 최종 승인...&quot;&gt;대표이사 최종 승인
본부장 1차 검토&lt;/textarea&gt;
      &lt;/div&gt;
      &lt;div class=&quot;postit-wrap span2&quot;&gt;
        &lt;div class=&quot;postit-label&quot;&gt;
          전달사항 / 주의사항
          &lt;div class=&quot;fs-ctrl&quot;&gt;
            &lt;button class=&quot;fs-btn&quot; onclick=&quot;changeFontSize('ov-note',-1)&quot;&gt;−&lt;/button&gt;
            &lt;span id=&quot;fs-ov-note&quot; style=&quot;font-size:10px;color:#9ca3af;min-width:22px;text-align:center&quot;&gt;13&lt;/span&gt;
            &lt;button class=&quot;fs-btn&quot; onclick=&quot;changeFontSize('ov-note',1)&quot;&gt;+&lt;/button&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;textarea id=&quot;ov-note&quot; class=&quot;postit p&quot; oninput=&quot;schedSave();touchTs('overview')&quot; placeholder=&quot;외부 공개 불가, 저장 위치...&quot;&gt;외부 공개 불가 자료 포함. 내부망 드라이브 저장.
경쟁사 비교 자료는 팀장 검토 필수.&lt;/textarea&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;share-row&quot;&gt;
    &lt;span class=&quot;sr-ts&quot; id=&quot;sr-ts-overview&quot;&gt;&lt;/span&gt;
    &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;openTransferModal('overview')&quot;&gt;  전달&lt;/button&gt;
    &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;secShare('overview')&quot;&gt;  링크&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ── 2. 참여 인원 ── --&gt;
&lt;div class=&quot;sec&quot;&gt;
  &lt;div class=&quot;sec-head c-orange&quot; id=&quot;sh-members&quot; onclick=&quot;toggleSec('members')&quot;&gt;
    &lt;div class=&quot;sec-ico&quot; style=&quot;background:#FED7AA&quot;&gt; &lt;/div&gt;
    &lt;h2&gt;프로젝트 참여 인원&lt;/h2&gt;
    &lt;span class=&quot;sbadge&quot; style=&quot;background:#FFF7ED;color:#92400E&quot; id=&quot;mbadge&quot;&gt;0명&lt;/span&gt;
    &lt;span class=&quot;sec-ts&quot; id=&quot;ts-members&quot;&gt;&lt;/span&gt;
    &lt;div class=&quot;chev-wrap&quot;&gt;&lt;span class=&quot;chev o&quot; id=&quot;chev-members&quot;&gt;▾&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&quot;body-members&quot; class=&quot;sec-body&quot;&gt;&lt;!-- 기본 펼침 --&gt;
    &lt;p style=&quot;font-size:12px;color:#6b7280;margin-bottom:9px&quot;&gt;흐름도 또는 업무단계로 드래그하여 담당자 배정&lt;/p&gt;
    &lt;div class=&quot;pool&quot; id=&quot;member-pool&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;share-row&quot;&gt;
    &lt;span class=&quot;sr-ts&quot; id=&quot;sr-ts-members&quot;&gt;&lt;/span&gt;
    &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;openTransferModal('members')&quot;&gt;  전달&lt;/button&gt;
    &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;secShare('members')&quot;&gt;  링크&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ── 3. 흐름도 ── --&gt;
&lt;div class=&quot;sec&quot;&gt;
  &lt;div class=&quot;sec-head c-purple&quot; id=&quot;sh-flow&quot; onclick=&quot;toggleSec('flow')&quot;&gt;
    &lt;div class=&quot;sec-ico&quot; style=&quot;background:#DDD6FE&quot;&gt; ️&lt;/div&gt;
    &lt;h2&gt;프로젝트 진행 흐름도&lt;/h2&gt;
    &lt;span class=&quot;sbadge&quot; style=&quot;background:#F5F3FF;color:#5B21B6&quot;&gt;자동 생성&lt;/span&gt;
    &lt;span class=&quot;sec-ts&quot; id=&quot;ts-flow&quot;&gt;&lt;/span&gt;
    &lt;div class=&quot;chev-wrap&quot;&gt;&lt;span class=&quot;chev o&quot; id=&quot;chev-flow&quot;&gt;▾&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&quot;body-flow&quot; class=&quot;sec-body&quot;&gt;
    &lt;div class=&quot;flow-tb&quot;&gt;
      &lt;div class=&quot;dir-grp&quot;&gt;
        &lt;button class=&quot;dir-btn on&quot; id=&quot;dir-h&quot; onclick=&quot;setDir('h')&quot;&gt;가로 →&lt;/button&gt;
        &lt;button class=&quot;dir-btn&quot; id=&quot;dir-v&quot; onclick=&quot;setDir('v')&quot;&gt;세로 ↓&lt;/button&gt;
      &lt;/div&gt;
      &lt;span style=&quot;font-size:11px;color:#9ca3af&quot;&gt;더블클릭=완료 · 호버 후 팀원 클릭=배정&lt;/span&gt;
      &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;addStep()&quot;&gt;+ 단계 추가&lt;/button&gt;
      &lt;button class=&quot;btn sm&quot; style=&quot;background:#F5F3FF;color:#5B21B6;border-color:#DDD6FE;margin-left:auto&quot; onclick=&quot;openFlowFullscreen()&quot;&gt;⛶ 전체보기&lt;/button&gt;
    &lt;/div&gt;
    &lt;div class=&quot;flow-canvas&quot; id=&quot;flow-canvas&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;share-row&quot;&gt;
    &lt;span class=&quot;sr-ts&quot; id=&quot;sr-ts-flow&quot;&gt;&lt;/span&gt;
    &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;openTransferModal('flow')&quot;&gt;  전달&lt;/button&gt;
    &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;secShare('flow')&quot;&gt;  링크&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ── 4. 업무단계 ── --&gt;
&lt;div class=&quot;sec&quot;&gt;
  &lt;div class=&quot;sec-head c-green closed&quot; id=&quot;sh-steps&quot; onclick=&quot;toggleSec('steps')&quot;&gt;
    &lt;div class=&quot;sec-ico&quot; style=&quot;background:#BBF7D0&quot;&gt; &lt;/div&gt;
    &lt;h2&gt;업무 단계별 분장&lt;/h2&gt;
    &lt;span class=&quot;sbadge&quot; style=&quot;background:#F0FDF4;color:#166534&quot; id=&quot;sbadge&quot;&gt;0단계&lt;/span&gt;
    &lt;div class=&quot;cols-ctrl&quot; onclick=&quot;event.stopPropagation()&quot;&gt;
      &lt;label&gt;열:&lt;/label&gt;
      &lt;select id=&quot;cols-sel&quot; onchange=&quot;setCols(this.value)&quot;&gt;
        &lt;option value=&quot;2&quot;&gt;2열&lt;/option&gt;
        &lt;option value=&quot;3&quot; selected&gt;3열&lt;/option&gt;
        &lt;option value=&quot;4&quot;&gt;4열&lt;/option&gt;
      &lt;/select&gt;
    &lt;/div&gt;
    &lt;span class=&quot;sec-ts&quot; id=&quot;ts-steps&quot; style=&quot;margin-left:4px&quot;&gt;&lt;/span&gt;
    &lt;div class=&quot;chev-wrap&quot; style=&quot;margin-left:6px&quot;&gt;&lt;span class=&quot;chev&quot; id=&quot;chev-steps&quot;&gt;▾&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&quot;body-steps&quot; class=&quot;sec-body collapsed&quot;&gt;
    &lt;div id=&quot;steps-grid&quot; class=&quot;steps-grid cols-3&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;add-step-btn-global&quot; onclick=&quot;addStep()&quot;&gt;+ 업무 단계 추가&lt;/button&gt;
  &lt;/div&gt;
  &lt;div class=&quot;share-row&quot;&gt;
    &lt;span class=&quot;sr-ts&quot; id=&quot;sr-ts-steps&quot;&gt;&lt;/span&gt;
    &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;openTransferModal('steps')&quot;&gt;  전달&lt;/button&gt;
    &lt;button class=&quot;btn sm&quot; style=&quot;background:#FEE500;border-color:#E5CF00;color:#3A1D1D&quot; onclick=&quot;shareKakao()&quot;&gt;  카카오&lt;/button&gt;
    &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;shareEmail()&quot;&gt;✉️ 이메일&lt;/button&gt;
    &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;secShare('steps')&quot;&gt;  링크&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ── 5. 파일 세팅 ── --&gt;
&lt;div class=&quot;sec&quot;&gt;
  &lt;div class=&quot;sec-head c-rose closed&quot; id=&quot;sh-file&quot; onclick=&quot;toggleSec('file')&quot;&gt;
    &lt;div class=&quot;sec-ico&quot; style=&quot;background:#FECDD3&quot;&gt;⚙️&lt;/div&gt;
    &lt;h2&gt;파일 기본 세팅&lt;/h2&gt;
    &lt;span class=&quot;sbadge&quot; style=&quot;background:#FFF1F2;color:#BE123C&quot;&gt;문서 규격&lt;/span&gt;
    &lt;span class=&quot;sec-ts&quot; id=&quot;ts-file&quot;&gt;&lt;/span&gt;
    &lt;div class=&quot;chev-wrap&quot;&gt;&lt;span class=&quot;chev&quot; id=&quot;chev-file&quot;&gt;▾&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&quot;body-file&quot; class=&quot;sec-body collapsed&quot;&gt;
    &lt;div class=&quot;ftabs&quot;&gt;
      &lt;button class=&quot;ftab on&quot; onclick=&quot;setFtype(this,'hwp')&quot;&gt;HWP&lt;/button&gt;
      &lt;button class=&quot;ftab&quot; onclick=&quot;setFtype(this,'ppt')&quot;&gt;PPT&lt;/button&gt;
      &lt;button class=&quot;ftab&quot; onclick=&quot;setFtype(this,'word')&quot;&gt;Word&lt;/button&gt;
      &lt;button class=&quot;ftab&quot; onclick=&quot;setFtype(this,'excel')&quot;&gt;Excel&lt;/button&gt;
      &lt;button class=&quot;ftab&quot; onclick=&quot;setFtype(this,'pdf')&quot;&gt;PDF&lt;/button&gt;
    &lt;/div&gt;
    &lt;div id=&quot;fs-hwp&quot; class=&quot;fgrid&quot;&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;용지 크기&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;A4 (210×297mm)&lt;/option&gt;&lt;option&gt;B5&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;여백 상/하/좌/우&lt;/div&gt;&lt;input type=&quot;text&quot; value=&quot;20/15/20/20 mm&quot; oninput=&quot;schedSave()&quot;&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;기본 폰트&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;나눔고딕&lt;/option&gt;&lt;option&gt;맑은 고딕&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;본문 크기&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;10pt&lt;/option&gt;&lt;option selected&gt;11pt&lt;/option&gt;&lt;option&gt;12pt&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;줄 간격&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;160%&lt;/option&gt;&lt;option selected&gt;180%&lt;/option&gt;&lt;option&gt;200%&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;표 스타일&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option selected&gt;테두리형&lt;/option&gt;&lt;option&gt;음영형&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div style=&quot;grid-column:1/-1&quot;&gt;&lt;div class=&quot;fl&quot;&gt;기타 메모&lt;/div&gt;&lt;input type=&quot;text&quot; placeholder=&quot;쪽 번호, 머리말 등&quot; oninput=&quot;schedSave()&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;fs-ppt&quot; class=&quot;fgrid&quot; style=&quot;display:none&quot;&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;슬라이드 크기&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;16:9 와이드&lt;/option&gt;&lt;option&gt;4:3&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;템플릿&lt;/div&gt;&lt;input type=&quot;text&quot; placeholder=&quot;회사 공식 템플릿&quot; oninput=&quot;schedSave()&quot;&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;제목 폰트&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;맑은 고딕&lt;/option&gt;&lt;option&gt;나눔스퀘어&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;본문 폰트&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;나눔고딕&lt;/option&gt;&lt;option&gt;맑은 고딕&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;주요 색상&lt;/div&gt;&lt;input type=&quot;text&quot; placeholder=&quot;#2563EB&quot; oninput=&quot;schedSave()&quot;&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;슬라이드 수&lt;/div&gt;&lt;input type=&quot;number&quot; placeholder=&quot;15&quot; oninput=&quot;schedSave()&quot;&gt;&lt;/div&gt;
      &lt;div style=&quot;grid-column:1/-1&quot;&gt;&lt;div class=&quot;fl&quot;&gt;기타 메모&lt;/div&gt;&lt;input type=&quot;text&quot; placeholder=&quot;로고 위치, 발표 시간 등&quot; oninput=&quot;schedSave()&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;fs-word&quot; class=&quot;fgrid&quot; style=&quot;display:none&quot;&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;용지&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;A4&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;여백&lt;/div&gt;&lt;input type=&quot;text&quot; value=&quot;상25 하25 좌30 우25mm&quot; oninput=&quot;schedSave()&quot;&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;폰트&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;맑은 고딕&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;본문 크기&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;10pt&lt;/option&gt;&lt;option selected&gt;11pt&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;줄 간격&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;1.0&lt;/option&gt;&lt;option selected&gt;1.5&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;목차 자동&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;사용&lt;/option&gt;&lt;option&gt;미사용&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div style=&quot;grid-column:1/-1&quot;&gt;&lt;div class=&quot;fl&quot;&gt;기타 메모&lt;/div&gt;&lt;input type=&quot;text&quot; placeholder=&quot;스타일, 쪽 번호 등&quot; oninput=&quot;schedSave()&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;fs-excel&quot; class=&quot;fgrid&quot; style=&quot;display:none&quot;&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;용지 방향&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;가로&lt;/option&gt;&lt;option&gt;세로&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;기본 열 너비&lt;/div&gt;&lt;input type=&quot;text&quot; placeholder=&quot;12&quot; oninput=&quot;schedSave()&quot;&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;폰트&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;맑은 고딕&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;폰트 크기&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;9&lt;/option&gt;&lt;option selected&gt;10&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;헤더 고정&lt;/div&gt;&lt;input type=&quot;number&quot; placeholder=&quot;1행&quot; oninput=&quot;schedSave()&quot;&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;셀 테두리&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;모든 셀&lt;/option&gt;&lt;option&gt;외곽만&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div style=&quot;grid-column:1/-1&quot;&gt;&lt;div class=&quot;fl&quot;&gt;기타 메모&lt;/div&gt;&lt;input type=&quot;text&quot; placeholder=&quot;시트 수 등&quot; oninput=&quot;schedSave()&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;fs-pdf&quot; class=&quot;fgrid&quot; style=&quot;display:none&quot;&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;원본&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;HWP 변환&lt;/option&gt;&lt;option&gt;Word 변환&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;해상도&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;72dpi&lt;/option&gt;&lt;option selected&gt;150dpi&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;보안&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;없음&lt;/option&gt;&lt;option&gt;열기 암호&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div&gt;&lt;div class=&quot;fl&quot;&gt;표지&lt;/div&gt;&lt;select onchange=&quot;schedSave()&quot;&gt;&lt;option&gt;포함&lt;/option&gt;&lt;option&gt;미포함&lt;/option&gt;&lt;/select&gt;&lt;/div&gt;
      &lt;div style=&quot;grid-column:1/-1&quot;&gt;&lt;div class=&quot;fl&quot;&gt;기타 메모&lt;/div&gt;&lt;input type=&quot;text&quot; placeholder=&quot;워터마크 등&quot; oninput=&quot;schedSave()&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;!-- 전체 메모 --&gt;
    &lt;div class=&quot;global-memo&quot;&gt;
      &lt;div class=&quot;global-memo-head&quot;&gt;  전체 프로젝트 메모 / 비고&lt;/div&gt;
      &lt;textarea class=&quot;global-memo-inp&quot; id=&quot;global-memo&quot; placeholder=&quot;프로젝트 전반에 관한 메모, 회의록 요약, 특이사항 등을 자유롭게 기재하세요...&quot; oninput=&quot;schedSave()&quot;&gt;&lt;/textarea&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;share-row&quot;&gt;
    &lt;span class=&quot;sr-ts&quot; id=&quot;sr-ts-file&quot;&gt;&lt;/span&gt;
    &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;openTransferModal('file')&quot;&gt;  전달&lt;/button&gt;
    &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;secShare('file')&quot;&gt;  링크&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ── 하단 푸터 ── --&gt;
&lt;div style=&quot;text-align:center;padding:24px 0 8px;border-top:1px solid #e5e7eb;margin-top:8px&quot;&gt;
  &lt;div style=&quot;font-size:13px;font-weight:700;color:#2563EB;margin-bottom:4px&quot;&gt;  모두의 업무분장 계산기&lt;/div&gt;
  &lt;div style=&quot;font-size:11px;color:#9ca3af;margin-bottom:6px&quot;&gt;프로젝트 업무분장을 스마트하게 · 팀원과 함께 공유하세요&lt;/div&gt;
  &lt;a href=&quot;https://0-1.kr/38&quot; target=&quot;_blank&quot; style=&quot;font-size:12px;color:#2563EB;font-weight:600;text-decoration:none;padding:5px 14px;border:1px solid #BFDBFE;border-radius:20px;background:#EFF6FF;display:inline-block&quot;&gt;  0-1.kr/38&lt;/a&gt;
  &lt;div style=&quot;font-size:10px;color:#d1d5db;margin-top:10px&quot;&gt;ⓒ 0-1.kr · 모두의 계산기 시리즈&lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;script&gt;
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  상수 &amp; 전역 상태
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
const SAVE_KEY='modu-work-v5';
const CC=[
  {bg:'#EFF6FF',bd:'#2563EB',tx:'#1E40AF'},
  {bg:'#4B1528',bd:'#F4C0D1',tx:'#F9D0DF'},
  {bg:'#FEF08A',bd:'#A37E00',tx:'#3A2200'},
  {bg:'#F0FDF4',bd:'#16A34A',tx:'#14532D'},
  {bg:'#7F1D1D',bd:'#FCA5A5',tx:'#FEE2E2'},
  {bg:'#0C4A6E',bd:'#7DD3FC',tx:'#E0F2FE'},
];
const STATUS_LIST=[{l:'진행 전',i:'⏸'},{l:'진행 중',i:'⏳'},{l:'완료',i:'✅'},{l:'보류',i:'⏸'}];
const TODO_STATUS=[
  {l:'대기',bg:'#F3F4F6',bd:'#D1D5DB',tx:'#4B5563'},
  {l:'진행중',bg:'#EFF6FF',bd:'#93C5FD',tx:'#1E40AF'},
  {l:'완료',bg:'#F0FDF4',bd:'#86EFAC',tx:'#166534'},
];
const SEC_NAMES={overview:'프로젝트 개요',members:'참여 인원',flow:'진행 흐름도',steps:'업무 단계별 분장',file:'파일 세팅',all:'전체 내용'};
const FS_DEFAULTS={};

let statusIdx=1, members=[], steps=[], uid=0;
let flowDir='h', stepsColCount=3, openStepIds=new Set();
let meta={start:'2025-05-19',end:'2025-06-30',dept:'기획팀'};
let dragTodoSid=null, dragTodoId=null;
const timestamps={};
let saveTimer=null;

const nid=()=&gt;'x'+(++uid);
const now=()=&gt;{const d=new Date();return`${d.getFullYear()}.${String(d.getMonth()+1).padStart(2,'0')}.${String(d.getDate()).padStart(2,'0')} ${String(d.getHours()).padStart(2,'0')}:${String(d.getMinutes()).padStart(2,'0')}`;};
const fmtDate=d=&gt;d?d.replace(/-/g,'.'):'';
const gm=mid=&gt;members.find(m=&gt;m.id===mid);

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  자동저장 (localStorage)
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function schedSave(){
  clearTimeout(saveTimer);
  saveTimer=setTimeout(doSave, 800);
}

function doSave(){
  try{
    const data={
      v:5,
      projTitle:document.getElementById('projTitle').value,
      meta,statusIdx,flowDir,stepsColCount,openStepIds:[...openStepIds],
      ov:{
        purpose:document.getElementById('ov-purpose').value,
        output:document.getElementById('ov-output').value,
        approver:document.getElementById('ov-approver').value,
        note:document.getElementById('ov-note').value,
        fs:{purpose:getFontSize('ov-purpose'),output:getFontSize('ov-output'),approver:getFontSize('ov-approver'),note:getFontSize('ov-note')},
      },
      members,steps,
      globalMemo:document.getElementById('global-memo').value,
      timestamps,
    };
    localStorage.setItem(SAVE_KEY, JSON.stringify(data));
    showToast();
  }catch(e){}
}

function loadSave(){
  try{
    const raw=localStorage.getItem(SAVE_KEY);
    if(!raw)return false;
    const d=JSON.parse(raw);
    if(!d||d.v!==5)return false;
    document.getElementById('projTitle').value=d.projTitle||'';
    meta=d.meta||meta;
    statusIdx=d.statusIdx||1;
    flowDir=d.flowDir||'h';
    stepsColCount=d.stepsColCount||3;
    openStepIds=new Set(d.openStepIds||[]);
    members=(d.members||[]).map(m=&gt;({...m,id:m.id||nid()}));
    steps=(d.steps||[]).map(s=&gt;({...s,id:s.id||nid(),todos:(s.todos||[]).map(t=&gt;({...t,id:t.id||nid()}))}));
    uid=Math.max(uid,...members.map(m=&gt;parseInt(m.id.slice(1)||0)||0),...steps.map(s=&gt;parseInt(s.id.slice(1)||0)||0));
    if(d.ov){
      document.getElementById('ov-purpose').value=d.ov.purpose||'';
      document.getElementById('ov-output').value=d.ov.output||'';
      document.getElementById('ov-approver').value=d.ov.approver||'';
      document.getElementById('ov-note').value=d.ov.note||'';
      if(d.ov.fs){
        Object.entries(d.ov.fs).forEach(([k,v])=&gt;setFontSize('ov-'+k,v));
      }
    }
    if(d.globalMemo)document.getElementById('global-memo').value=d.globalMemo;
    Object.assign(timestamps,d.timestamps||{});
    // 메타 라벨 복원
    document.getElementById('lbl-start').textContent=fmtDate(meta.start)+' 시작';
    document.getElementById('lbl-end').textContent=fmtDate(meta.end)+' 마감';
    document.getElementById('lbl-dept').textContent=meta.dept;
    document.getElementById('lbl-status').textContent=STATUS_LIST[statusIdx].l;
    document.getElementById('status-ico').textContent=STATUS_LIST[statusIdx].i;
    document.getElementById('cols-sel').value=String(stepsColCount);
    if(d.hdr_ts)document.getElementById('hdr-ts').textContent=d.hdr_ts;
    // ts 복원
    Object.entries(timestamps).forEach(([sec,t])=&gt;{
      const el=document.getElementById('ts-'+sec);
      const sr=document.getElementById('sr-ts-'+sec);
      if(el)el.textContent='수정 '+t;
      if(sr)sr.textContent='마지막 수정: '+t;
    });
    return true;
  }catch(e){return false;}
}

function showToast(){
  const t=document.getElementById('save-toast');
  t.classList.add('show');
  clearTimeout(t._timer);
  t._timer=setTimeout(()=&gt;t.classList.remove('show'),1600);
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  포스트잇 폰트 크기
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function getFontSize(id){
  const el=document.getElementById(id);
  return parseInt(el.style.fontSize)||13;
}
function setFontSize(id,size){
  const el=document.getElementById(id);
  const lbl=document.getElementById('fs-'+id);
  if(el){el.style.fontSize=size+'px';}
  if(lbl)lbl.textContent=size;
}
function changeFontSize(id,delta){
  const cur=getFontSize(id);
  const next=Math.min(22,Math.max(10,cur+delta));
  setFontSize(id,next);
  schedSave();
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  타임스탬프
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function touchTs(sec){
  const t=now(); timestamps[sec]=t;
  const el=document.getElementById('ts-'+sec);
  const sr=document.getElementById('sr-ts-'+sec);
  if(el)el.textContent='수정 '+t;
  if(sr)sr.textContent='마지막 수정: '+t;
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  메타 팝업
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function openMetaModal(type){
  const labels={start:'시작일',end:'마감일',dept:'담당팀'};
  const inner=type==='dept'
    ?`&lt;div class=&quot;mfield&quot;&gt;&lt;label&gt;담당팀 / 부서&lt;/label&gt;&lt;input type=&quot;text&quot; id=&quot;m-v&quot; value=&quot;${meta.dept}&quot; placeholder=&quot;예) 기획팀&quot;&gt;&lt;/div&gt;`
    :`&lt;div class=&quot;mfield&quot;&gt;&lt;label&gt;${labels[type]}&lt;/label&gt;&lt;input type=&quot;date&quot; id=&quot;m-v&quot; value=&quot;${meta[type]}&quot;&gt;&lt;/div&gt;`;
  showModal(`&lt;h3&gt;${labels[type]} 설정&lt;/h3&gt;${inner}
    &lt;div class=&quot;modal-actions&quot;&gt;
      &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;closeModal()&quot;&gt;취소&lt;/button&gt;
      &lt;button class=&quot;btn pri sm&quot; onclick=&quot;saveMetaModal('${type}')&quot;&gt;저장&lt;/button&gt;
    &lt;/div&gt;`);
  setTimeout(()=&gt;{const el=document.getElementById('m-v');if(el){el.focus();if(el.type==='date'&amp;&amp;el.showPicker)try{el.showPicker();}catch(e){}
    el.addEventListener('keydown',e=&gt;{if(e.key==='Enter')saveMetaModal(type);});}},80);
}

function saveMetaModal(type){
  const v=document.getElementById('m-v').value;
  meta[type]=v;
  if(type==='dept')document.getElementById('lbl-dept').textContent=v||'담당팀';
  else if(type==='start')document.getElementById('lbl-start').textContent=fmtDate(v)+' 시작';
  else document.getElementById('lbl-end').textContent=fmtDate(v)+' 마감';
  closeModal(); schedSave();
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  팀원 팝업
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function openMemberModal(){
  showModal(`&lt;h3&gt;  팀원 추가&lt;/h3&gt;
    &lt;div class=&quot;mfield&quot;&gt;&lt;label&gt;이름&lt;/label&gt;&lt;input type=&quot;text&quot; id=&quot;m-name&quot; placeholder=&quot;예) 김민준&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;mfield&quot;&gt;&lt;label&gt;직책 / 역할&lt;/label&gt;&lt;input type=&quot;text&quot; id=&quot;m-dept&quot; placeholder=&quot;예) 기획팀 과장&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;mfield&quot;&gt;&lt;label&gt;색상 테마&lt;/label&gt;&lt;select id=&quot;m-ci&quot;&gt;
      &lt;option value=&quot;0&quot;&gt;  파랑 (밝은)&lt;/option&gt;
      &lt;option value=&quot;1&quot;&gt;  핑크 다크&lt;/option&gt;
      &lt;option value=&quot;2&quot;&gt;  옐로우&lt;/option&gt;
      &lt;option value=&quot;3&quot;&gt;  초록 (밝은)&lt;/option&gt;
      &lt;option value=&quot;4&quot;&gt;  레드 다크&lt;/option&gt;
      &lt;option value=&quot;5&quot;&gt;  네이비 다크&lt;/option&gt;
    &lt;/select&gt;&lt;/div&gt;
    &lt;div class=&quot;modal-actions&quot;&gt;
      &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;closeModal()&quot;&gt;취소&lt;/button&gt;
      &lt;button class=&quot;btn pri sm&quot; onclick=&quot;saveMemberModal()&quot;&gt;추가&lt;/button&gt;
    &lt;/div&gt;`);
  setTimeout(()=&gt;{
    const el=document.getElementById('m-name');
    if(el){el.focus();el.addEventListener('keydown',e=&gt;{if(e.key==='Enter')saveMemberModal();});}
  },60);
}

function saveMemberModal(){
  const name=document.getElementById('m-name').value.trim();if(!name)return;
  const dept=document.getElementById('m-dept').value.trim()||'팀원';
  const ci=parseInt(document.getElementById('m-ci').value)||0;
  members.push({id:nid(),name,dept,ci});
  touchTs('members');closeModal();renderAll();schedSave();
}

function removeMember(mid){
  members=members.filter(m=&gt;m.id!==mid);
  steps.forEach(s=&gt;{s.assignees=s.assignees.filter(a=&gt;a.mid!==mid);});
  touchTs('members');renderAll();schedSave();
}

function renderPool(){
  const pool=document.getElementById('member-pool');pool.innerHTML='';
  members.forEach(m=&gt;{
    const c=CC[m.ci%6];
    const chip=document.createElement('div');
    chip.className='chip';chip.draggable=true;chip.dataset.mid=m.id;
    chip.style.cssText=`background:${c.bg};border-color:${c.bd};color:${c.tx}`;
    chip.innerHTML=`&lt;span style=&quot;font-weight:700&quot;&gt;${m.name}&lt;/span&gt;&lt;span style=&quot;font-size:10px;opacity:.65;margin-left:2px&quot;&gt;${m.dept}&lt;/span&gt;&lt;span class=&quot;chip-rm&quot; onclick=&quot;event.stopPropagation();removeMember('${m.id}')&quot;&gt;×&lt;/span&gt;`;
    chip.addEventListener('dragstart',e=&gt;{e.dataTransfer.setData('mid',m.id);chip.style.opacity='.4';});
    chip.addEventListener('dragend',()=&gt;{chip.style.opacity='1';});
    pool.appendChild(chip);
  });
  const ab=document.createElement('button');ab.className='add-chip-btn';ab.innerHTML='+ 팀원 추가';ab.onclick=openMemberModal;
  pool.appendChild(ab);
  document.getElementById('mbadge').textContent=members.length+'명';
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  상태
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function cycleStatus(){
  statusIdx=(statusIdx+1)%4;
  document.getElementById('lbl-status').textContent=STATUS_LIST[statusIdx].l;
  document.getElementById('status-ico').textContent=STATUS_LIST[statusIdx].i;
  schedSave();
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  섹션 토글
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function toggleSec(id){
  const b=document.getElementById('body-'+id);
  const c=document.getElementById('chev-'+id);
  const sh=document.getElementById('sh-'+id);
  const open=!b.classList.contains('collapsed');
  b.classList.toggle('collapsed',open);
  c.classList.toggle('o',!open);
  sh.classList.toggle('closed',open);
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  파일 탭
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function setFtype(btn,t){
  document.querySelectorAll('.ftab').forEach(b=&gt;b.classList.remove('on'));btn.classList.add('on');
  ['hwp','ppt','word','excel','pdf'].forEach(k=&gt;{document.getElementById('fs-'+k).style.display=k===t?'grid':'none';});
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  색상 피커
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function toggleColorPick(sid,el){
  event.stopPropagation();
  document.querySelectorAll('.color-picker-pop').forEach(p=&gt;p.classList.remove('show'));
  el.querySelector('.color-picker-pop').classList.toggle('show');
}
function setStepColor(sid,ci){
  event.stopPropagation();
  const s=steps.find(s=&gt;s.id===sid);if(s)s.ci=ci;
  document.querySelectorAll('.color-picker-pop').forEach(p=&gt;p.classList.remove('show'));
  renderAll();schedSave();
}
document.addEventListener('click',e=&gt;{
  if(!e.target.closest('.si-color-dot'))document.querySelectorAll('.color-picker-pop').forEach(p=&gt;p.classList.remove('show'));
});

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  업무단계 열 설정
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function setCols(v){
  stepsColCount=parseInt(v);
  const grid=document.getElementById('steps-grid');
  grid.className='steps-grid cols-'+stepsColCount;
  schedSave();
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  단계 CRUD
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function addStep(){
  const s={id:nid(),title:'',deadline:'',note:'',memo:'',done:false,assignees:[],todos:[],approval:'',ci:0};
  steps.push(s);
  openStepIds.add(s.id);
  touchTs('steps');touchTs('flow');renderAll();schedSave();
}
function removeStep(sid){
  steps=steps.filter(s=&gt;s.id!==sid);
  openStepIds.delete(sid);
  touchTs('steps');touchTs('flow');renderAll();schedSave();
}
function moveStep(sid,dir){
  const i=steps.findIndex(s=&gt;s.id===sid),j=i+dir;
  if(j&lt;0||j&gt;=steps.length)return;
  [steps[i],steps[j]]=[steps[j],steps[i]];
  renderAll();schedSave();
}
function updateSF(sid,f,v){
  const s=steps.find(s=&gt;s.id===sid);
  if(s){s[f]=v;touchTs('steps');touchTs('flow');schedSave();}
}
function toggleDone(sid){
  const s=steps.find(s=&gt;s.id===sid);
  if(s){s.done=!s.done;touchTs('flow');renderAll();schedSave();}
}
function toggleStepOpen(sid){
  if(openStepIds.has(sid))openStepIds.delete(sid);
  else openStepIds.add(sid);
  renderSteps();schedSave();
}
function scrollToStep(sid){
  // 업무단계 섹션 열기
  const body=document.getElementById('body-steps');
  const chev=document.getElementById('chev-steps');
  const sh=document.getElementById('sh-steps');
  if(body.classList.contains('collapsed')){
    body.classList.remove('collapsed');
    chev.classList.add('o');
    sh.classList.remove('closed');
  }
  // 해당 스텝 펼치기
  openStepIds.add(sid);
  renderSteps();
  // 스크롤
  setTimeout(()=&gt;{
    const el=document.getElementById('si-'+sid);
    if(el)el.scrollIntoView({behavior:'smooth',block:'start'});
  },120);
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  담당자
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function assignMember(sid,mid){
  const s=steps.find(s=&gt;s.id===sid);if(!s)return;
  if(s.assignees.find(a=&gt;a.mid===mid))return;
  s.assignees.push({mid,role:s.assignees.length===0?'정':'부'});
  touchTs('steps');touchTs('flow');renderAll();schedSave();
}
function dropOnStep(e,sid){
  e.preventDefault();e.stopPropagation();
  const mid=e.dataTransfer.getData('mid');if(mid)assignMember(sid,mid);
}
function removeAssignee(sid,mid){
  const s=steps.find(s=&gt;s.id===sid);if(!s)return;
  s.assignees=s.assignees.filter(a=&gt;a.mid!==mid);
  s.assignees.forEach((a,i)=&gt;a.role=i===0?'정':'부');
  renderAll();schedSave();
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  할일
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function addTodo(sid){
  const s=steps.find(s=&gt;s.id===sid);
  if(s){s.todos.push({id:nid(),text:'',done:false,si:0});renderSteps();schedSave();}
}
function removeTodo(sid,tid){
  const s=steps.find(s=&gt;s.id===sid);
  if(s){s.todos=s.todos.filter(t=&gt;t.id!==tid);renderSteps();schedSave();}
}
function cycleTodoStatus(sid,tid){
  const s=steps.find(s=&gt;s.id===sid);if(!s)return;
  const t=s.todos.find(t=&gt;t.id===tid);if(!t)return;
  t.si=(t.si+1)%3;t.done=t.si===2;renderSteps();schedSave();
}
function toggleTodoCb(sid,tid){
  const s=steps.find(s=&gt;s.id===sid);if(!s)return;
  const t=s.todos.find(t=&gt;t.id===tid);if(!t)return;
  t.done=!t.done;t.si=t.done?2:0;renderSteps();schedSave();
}
function updateTodoText(sid,tid,v){
  const s=steps.find(s=&gt;s.id===sid);if(!s)return;
  const t=s.todos.find(t=&gt;t.id===tid);if(t){t.text=v;schedSave();}
}
function todoDS(e,sid,tid){dragTodoSid=sid;dragTodoId=tid;e.dataTransfer.effectAllowed='move';}
function todoDE(){dragTodoSid=null;dragTodoId=null;}
function todoDP(e,sid,tid){
  e.preventDefault();if(!dragTodoSid||dragTodoId===tid)return;
  const s=steps.find(s=&gt;s.id===sid);if(!s)return;
  const from=s.todos.findIndex(t=&gt;t.id===dragTodoId),to=s.todos.findIndex(t=&gt;t.id===tid);
  if(from&lt;0||to&lt;0)return;
  const [item]=s.todos.splice(from,1);s.todos.splice(to,0,item);
  renderSteps();schedSave();
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  흐름도 렌더
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function smhHtml(sid){
  if(!members.length)return'';
  let h=`&lt;div class=&quot;smh&quot;&gt;&lt;div class=&quot;smh-title&quot;&gt;클릭하여 배정&lt;/div&gt;`;
  members.forEach(m=&gt;{
    const c=CC[m.ci%6];
    h+=`&lt;span class=&quot;smh-chip&quot; style=&quot;background:${c.bg};border-color:${c.bd};color:${c.tx}&quot; onclick=&quot;event.stopPropagation();assignMember('${sid}','${m.id}')&quot;&gt;${m.name}&lt;span style=&quot;font-size:9px;opacity:.6;margin-left:2px&quot;&gt;${m.dept}&lt;/span&gt;&lt;/span&gt;`;
  });
  return h+'&lt;/div&gt;';
}

function renderFlow(){
  const canvas=document.getElementById('flow-canvas');
  if(!steps.length){canvas.innerHTML='&lt;div style=&quot;padding:20px;text-align:center;font-size:13px;color:#9ca3af&quot;&gt;업무 단계를 추가하면 흐름도가 자동 생성됩니다&lt;/div&gt;';return;}

  if(flowDir==='h'){
    let html='&lt;div style=&quot;display:flex;align-items:flex-start;gap:0;min-width:max-content&quot;&gt;';
    steps.forEach((s,i)=&gt;{
      const c=CC[s.ci%6];
      const aHtml=s.assignees.map(a=&gt;{const m=gm(a.mid);if(!m)return'';const mc=CC[m.ci%6];return`&lt;span class=&quot;fn-abadge&quot; style=&quot;background:${mc.bg};border-color:${mc.bd};color:${mc.tx}&quot;&gt;${m.name}(${a.role})&lt;/span&gt;`;}).join('');
      html+=`&lt;div style=&quot;display:flex;align-items:center;gap:0&quot;&gt;
        &lt;div style=&quot;position:relative&quot;&gt;
          &lt;div class=&quot;fn${s.done?' done-node':''}&quot; style=&quot;background:${c.bg};border-color:${c.bd};color:${c.tx};width:125px;text-align:center&quot;
            ondblclick=&quot;toggleDone('${s.id}')&quot;
            ondragover=&quot;event.preventDefault();this.classList.add('active-drop')&quot;
            ondragleave=&quot;this.classList.remove('active-drop')&quot;
            ondrop=&quot;this.classList.remove('active-drop');dropOnStep(event,'${s.id}')&quot;&gt;
            &lt;div style=&quot;display:flex;align-items:center;justify-content:space-between;margin-bottom:2px&quot;&gt;
              &lt;div class=&quot;fn-num&quot; style=&quot;margin-bottom:0&quot;&gt;STEP ${i+1}&lt;/div&gt;
              &lt;button onclick=&quot;event.stopPropagation();scrollToStep('${s.id}')&quot; style=&quot;font-size:9px;padding:1px 6px;border-radius:4px;border:1px solid ${c.bd};background:rgba(255,255,255,.6);color:${c.tx};cursor:pointer;font-weight:600&quot;&gt;EDIT&lt;/button&gt;
            &lt;/div&gt;
            &lt;div class=&quot;fn-title&quot; contenteditable=&quot;true&quot; onblur=&quot;updateSF('${s.id}','title',this.innerText.trim())&quot; style=&quot;min-height:16px&quot;&gt;${s.title||'단계명 입력'}&lt;/div&gt;
            ${s.deadline?`&lt;div class=&quot;fn-dl&quot;&gt;${fmtDate(s.deadline)}&lt;/div&gt;`:''}
            ${s.memo?`&lt;div class=&quot;fn-memo&quot;&gt;${s.memo}&lt;/div&gt;`:''}
            ${aHtml?`&lt;div style=&quot;display:flex;flex-wrap:wrap;gap:2px;margin-top:5px;justify-content:center&quot;&gt;${aHtml}&lt;/div&gt;`:''}
            &lt;div class=&quot;fn-comment&quot; style=&quot;border-color:${c.bd}60&quot;&gt;&lt;input placeholder=&quot;결재 첨언...&quot; value=&quot;${s.approval||''}&quot; oninput=&quot;updateSF('${s.id}','approval',this.value)&quot;&gt;&lt;/div&gt;
          &lt;/div&gt;${smhHtml(s.id)}
        &lt;/div&gt;
        ${i&lt;steps.length-1?'&lt;div style=&quot;color:#9ca3af;padding:0 6px;font-size:20px;margin-bottom:32px;flex-shrink:0&quot;&gt;→&lt;/div&gt;':''}
      &lt;/div&gt;`;
    });
    canvas.innerHTML=html+'&lt;/div&gt;';
  } else {
    let html='&lt;div style=&quot;display:flex;flex-direction:column;gap:0;width:100%&quot;&gt;';
    steps.forEach((s,i)=&gt;{
      const c=CC[s.ci%6];
      const aHtml=s.assignees.map(a=&gt;{const m=gm(a.mid);if(!m)return'';const mc=CC[m.ci%6];
        return`&lt;div style=&quot;display:inline-flex;align-items:center;gap:5px;padding:4px 11px;border-radius:20px;border:1.5px solid ${mc.bd};background:${mc.bg};color:${mc.tx};font-size:12px;font-weight:600;margin-bottom:5px;white-space:nowrap&quot;&gt;${m.name}&lt;span style=&quot;font-size:10px;opacity:.7&quot;&gt;(${a.role})&lt;/span&gt;&lt;/div&gt;`;}).join('');
      html+=`&lt;div style=&quot;display:flex;align-items:flex-start;gap:12px;width:100%&quot;&gt;
        &lt;div style=&quot;position:relative;flex:0 0 78%&quot;&gt;
          &lt;div class=&quot;fn${s.done?' done-node':''}&quot; style=&quot;background:${c.bg};border-color:${c.bd};color:${c.tx};width:100%;text-align:left&quot;
            ondblclick=&quot;toggleDone('${s.id}')&quot;
            ondragover=&quot;event.preventDefault();this.classList.add('active-drop')&quot;
            ondragleave=&quot;this.classList.remove('active-drop')&quot;
            ondrop=&quot;this.classList.remove('active-drop');dropOnStep(event,'${s.id}')&quot;&gt;
            &lt;div style=&quot;display:flex;align-items:center;justify-content:space-between;margin-bottom:4px&quot;&gt;
              &lt;div class=&quot;fn-num&quot; style=&quot;font-size:11px;margin-bottom:0&quot;&gt;STEP ${i+1}&lt;/div&gt;
              &lt;button onclick=&quot;event.stopPropagation();scrollToStep('${s.id}')&quot; style=&quot;font-size:9px;padding:2px 8px;border-radius:5px;border:1px solid ${c.bd};background:rgba(255,255,255,.6);color:${c.tx};cursor:pointer;font-weight:600&quot;&gt;EDIT&lt;/button&gt;
            &lt;/div&gt;
            &lt;div class=&quot;fn-title&quot; contenteditable=&quot;true&quot; onblur=&quot;updateSF('${s.id}','title',this.innerText.trim())&quot; style=&quot;font-size:16px;font-weight:700;min-height:20px&quot;&gt;${s.title||'단계명 입력'}&lt;/div&gt;
            ${s.deadline?`&lt;div class=&quot;fn-dl&quot; style=&quot;font-size:11px;margin-top:4px&quot;&gt;  ${fmtDate(s.deadline)}&lt;/div&gt;`:''}
            ${s.memo?`&lt;div class=&quot;fn-memo&quot; style=&quot;font-size:12px;margin-top:5px&quot;&gt;${s.memo}&lt;/div&gt;`:''}
            &lt;div class=&quot;fn-comment&quot; style=&quot;border-color:${c.bd}60;margin-top:8px&quot;&gt;&lt;input placeholder=&quot;결재 첨언...&quot; value=&quot;${s.approval||''}&quot; oninput=&quot;updateSF('${s.id}','approval',this.value)&quot; style=&quot;font-size:11px&quot;&gt;&lt;/div&gt;
          &lt;/div&gt;${smhHtml(s.id)}
        &lt;/div&gt;
        &lt;div style=&quot;flex:0 0 18%;display:flex;flex-direction:column;align-items:flex-start;padding-top:12px&quot;&gt;
          ${aHtml||'&lt;span style=&quot;font-size:11px;color:#9ca3af&quot;&gt;미배정&lt;/span&gt;'}
        &lt;/div&gt;
      &lt;/div&gt;
      ${i&lt;steps.length-1?'&lt;div style=&quot;color:#9ca3af;padding:5px 0 5px 18px;font-size:17px;line-height:1&quot;&gt;↓&lt;/div&gt;':''}`;
    });
    canvas.innerHTML=html+'&lt;/div&gt;';
  }
}

function setDir(d){
  flowDir=d;
  document.getElementById('dir-h').classList.toggle('on',d==='h');
  document.getElementById('dir-v').classList.toggle('on',d==='v');
  renderFlow();schedSave();
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  업무단계 카드 렌더
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function renderSteps(){
  const grid=document.getElementById('steps-grid');
  grid.className='steps-grid cols-'+stepsColCount;
  grid.innerHTML='';

  steps.forEach((s,idx)=&gt;{
    const sc=CC[s.ci%6];
    const isOpen=openStepIds.has(s.id);
    const card=document.createElement('div');
    card.className='si-card'+(s.done?' done-card':'')+(isOpen?' open-card':'');
    card.id='si-'+s.id;

    // 색상 피커 dots
    const colorDots=CC.map((col,ci)=&gt;`&lt;div class=&quot;cp-dot&quot; style=&quot;background:${col.bg};border-color:${col.bd}&quot; onclick=&quot;setStepColor('${s.id}',${ci})&quot;&gt;&lt;/div&gt;`).join('');

    // 담당자 뱃지
    const aHtml=s.assignees.map(a=&gt;{const m=gm(a.mid);if(!m)return'';const mc=CC[m.ci%6];
      return`&lt;span class=&quot;abadge&quot; style=&quot;background:${mc.bg};border-color:${mc.bd};color:${mc.tx}&quot;&gt;${m.name}&lt;span style=&quot;font-size:9px;opacity:.7&quot;&gt;(${a.role})&lt;/span&gt;&lt;span class=&quot;arm&quot; onclick=&quot;event.stopPropagation();removeAssignee('${s.id}','${a.mid}')&quot;&gt;×&lt;/span&gt;&lt;/span&gt;`;}).join('');

    // 할일 HTML
    const todoHtml=s.todos.map(t=&gt;{
      const ts=TODO_STATUS[t.si||0];
      return`&lt;div class=&quot;todo-item&quot; draggable=&quot;true&quot;
        ondragstart=&quot;todoDS(event,'${s.id}','${t.id}')&quot;
        ondragend=&quot;todoDE()&quot;
        ondragover=&quot;event.preventDefault()&quot;
        ondrop=&quot;todoDP(event,'${s.id}','${t.id}')&quot;&gt;
        &lt;span class=&quot;drag-handle&quot;&gt;⠿&lt;/span&gt;
        &lt;input type=&quot;checkbox&quot; ${t.done?'checked':''} onchange=&quot;toggleTodoCb('${s.id}','${t.id}')&quot;&gt;
        &lt;input type=&quot;text&quot; class=&quot;todo-txt${t.done?' done-t':''}&quot; value=&quot;${t.text.replace(/&quot;/g,'&amp;quot;')}&quot; placeholder=&quot;항목 입력...&quot;
          oninput=&quot;updateTodoText('${s.id}','${t.id}',this.value)&quot;&gt;
        &lt;button class=&quot;todo-status-btn&quot; style=&quot;background:${ts.bg};border-color:${ts.bd};color:${ts.tx}&quot; onclick=&quot;cycleTodoStatus('${s.id}','${t.id}')&quot;&gt;${ts.l}&lt;/button&gt;
        &lt;button class=&quot;todo-rm&quot; onclick=&quot;removeTodo('${s.id}','${t.id}')&quot;&gt;×&lt;/button&gt;
      &lt;/div&gt;`;
    }).join('');

    const assignCount=s.assignees.length;
    const todoCount=s.todos.length;
    const doneCount=s.todos.filter(t=&gt;t.done).length;

    card.innerHTML=`
      &lt;div class=&quot;si-card-head&quot; onclick=&quot;toggleStepOpen('${s.id}')&quot;&gt;
        &lt;div class=&quot;si-color-dot&quot; style=&quot;background:${sc.bg};border-color:${sc.bd}&quot; onclick=&quot;event.stopPropagation();toggleColorPick('${s.id}',this)&quot;&gt;
          &lt;div class=&quot;color-picker-pop&quot;&gt;${colorDots}&lt;/div&gt;
        &lt;/div&gt;
        &lt;span class=&quot;si-card-num&quot;&gt;STEP ${idx+1}&lt;/span&gt;
        &lt;span class=&quot;si-card-title&quot;&gt;${s.title||'(단계명 없음)'}&lt;/span&gt;
        ${s.deadline?`&lt;span class=&quot;si-card-dl&quot;&gt;${fmtDate(s.deadline)}&lt;/span&gt;`:''}
        &lt;span style=&quot;font-size:10px;color:#9ca3af;white-space:nowrap;margin-left:4px&quot;&gt;${assignCount?assignCount+'명':''} ${todoCount?doneCount+'/'+todoCount:''}&lt;/span&gt;
        &lt;span class=&quot;si-card-toggle&quot;&gt;▾&lt;/span&gt;
      &lt;/div&gt;
      &lt;div class=&quot;si-body&quot;&gt;
        &lt;div class=&quot;fl-label&quot;&gt;담당자 배정&lt;/div&gt;
        &lt;div class=&quot;assignee-zone&quot; ondragover=&quot;event.preventDefault();this.classList.add('over')&quot; ondragleave=&quot;this.classList.remove('over')&quot; ondrop=&quot;this.classList.remove('over');dropOnStep(event,'${s.id}')&quot;&gt;
          ${!s.assignees.length?'&lt;span class=&quot;az-ph&quot;&gt;팀원 칩을 드래그하거나 흐름도에서 클릭으로 배정&lt;/span&gt;':''}
          ${aHtml}
        &lt;/div&gt;
        &lt;div class=&quot;fl-label&quot;&gt;단계명&lt;/div&gt;
        &lt;input type=&quot;text&quot; style=&quot;width:100%;border:1px solid #e5e7eb;border-radius:7px;padding:6px 10px;font-size:13px;font-weight:600;color:#111;background:#fff;outline:none;margin-bottom:7px;font-family:inherit&quot;
          placeholder=&quot;단계명 입력...&quot; value=&quot;${s.title.replace(/&quot;/g,'&amp;quot;')}&quot;
          oninput=&quot;updateSF('${s.id}','title',this.value);document.querySelector('#si-${s.id} .si-card-title').textContent=this.value||'(단계명 없음)';renderFlow()&quot;&gt;
        &lt;div style=&quot;display:flex;align-items:center;gap:8px;margin-bottom:8px&quot;&gt;
          &lt;label style=&quot;font-size:11px;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap&quot;&gt;기한&lt;/label&gt;
          &lt;input type=&quot;date&quot; style=&quot;border:1px solid #e5e7eb;border-radius:7px;padding:5px 9px;font-size:12px;color:#374151;background:#fff;outline:none;cursor:pointer;font-family:inherit&quot;
            value=&quot;${s.deadline}&quot; onchange=&quot;updateSF('${s.id}','deadline',this.value);renderFlow()&quot;&gt;
          &lt;label style=&quot;font-size:11px;color:#9ca3af;margin-left:8px&quot;&gt;완료:&lt;/label&gt;
          &lt;input type=&quot;checkbox&quot; ${s.done?'checked':''} style=&quot;width:15px;height:15px;accent-color:#16A34A;cursor:pointer&quot; onchange=&quot;toggleDone('${s.id}')&quot;&gt;
          &lt;div style=&quot;display:flex;gap:3px;margin-left:auto&quot;&gt;
            ${idx&gt;0?`&lt;button class=&quot;ibt&quot; onclick=&quot;event.stopPropagation();moveStep('${s.id}',-1)&quot; title=&quot;위로&quot;&gt;↑&lt;/button&gt;`:''}
            ${idx&lt;steps.length-1?`&lt;button class=&quot;ibt&quot; onclick=&quot;event.stopPropagation();moveStep('${s.id}',1)&quot; title=&quot;아래로&quot;&gt;↓&lt;/button&gt;`:''}
            &lt;button class=&quot;ibt&quot; onclick=&quot;event.stopPropagation();removeStep('${s.id}')&quot; style=&quot;color:#DC2626&quot; title=&quot;삭제&quot;&gt;✕&lt;/button&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;fl-label&quot;&gt;상세 설명 / 첨언&lt;/div&gt;
        &lt;textarea class=&quot;note-inp&quot; placeholder=&quot;이 단계에서 해야 할 일, 주의사항...&quot; oninput=&quot;updateSF('${s.id}','note',this.value)&quot;&gt;${s.note}&lt;/textarea&gt;
        &lt;input type=&quot;text&quot; class=&quot;memo-inp&quot; placeholder=&quot;흐름도 한줄 메모 (노드에 표시됩니다)&quot; value=&quot;${s.memo.replace(/&quot;/g,'&amp;quot;')}&quot; oninput=&quot;updateSF('${s.id}','memo',this.value);renderFlow()&quot;&gt;
        &lt;div class=&quot;fl-label&quot;&gt;할 일 체크리스트&lt;/div&gt;
        &lt;div class=&quot;todo-list&quot; id=&quot;tl-${s.id}&quot;&gt;${todoHtml}&lt;/div&gt;
        &lt;button class=&quot;add-todo-btn&quot; onclick=&quot;addTodo('${s.id}')&quot;&gt;+ 항목 추가&lt;/button&gt;
        &lt;div class=&quot;approval-box&quot;&gt;
          &lt;div class=&quot;approval-head&quot;&gt;결재 / 검토 의견&lt;/div&gt;
          &lt;textarea class=&quot;approval-inp&quot; placeholder=&quot;완료, 수정 요청, 검토 의견 등...&quot; oninput=&quot;updateSF('${s.id}','approval',this.value);renderFlow()&quot;&gt;${s.approval||''}&lt;/textarea&gt;
        &lt;/div&gt;
      &lt;/div&gt;`;
    grid.appendChild(card);

    // textarea 높이 자동
    const ta=card.querySelector('.note-inp');
    if(ta){ta.style.height='auto';ta.style.height=Math.min(ta.scrollHeight,160)+'px';}
  });
  document.getElementById('sbadge').textContent=steps.length+'단계';
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  전달 / 수신 모달
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function encodeSection(sec){
  let data={sec,ts:now(),v:5};
  try{
    if(sec==='all'){
      data.payload={
        projTitle:document.getElementById('projTitle').value,
        meta,statusIdx,
        ov:{
          purpose:document.getElementById('ov-purpose').value,
          output:document.getElementById('ov-output').value,
          approver:document.getElementById('ov-approver').value,
          note:document.getElementById('ov-note').value,
        },
        members:members.map(m=&gt;({name:m.name,dept:m.dept,ci:m.ci})),
        steps:steps.map(s=&gt;({
          title:s.title,deadline:s.deadline,note:s.note,memo:s.memo,
          done:s.done,approval:s.approval||'',ci:s.ci||0,
          assignees:s.assignees.map(a=&gt;{const m=gm(a.mid);return m?{name:m.name,role:a.role}:null;}).filter(Boolean),
          todos:s.todos.map(t=&gt;({text:t.text,done:t.done,si:t.si||0})),
        })),
        globalMemo:document.getElementById('global-memo').value,
      };
    } else if(sec==='overview'){
      data.payload={
        purpose:document.getElementById('ov-purpose').value,
        output:document.getElementById('ov-output').value,
        approver:document.getElementById('ov-approver').value,
        note:document.getElementById('ov-note').value,
      };
    } else if(sec==='members'){
      data.payload={members:members.map(m=&gt;({name:m.name,dept:m.dept,ci:m.ci}))};
    } else if(sec==='flow'||sec==='steps'){
      data.payload={steps:steps.map(s=&gt;({
        title:s.title,deadline:s.deadline,note:s.note,memo:s.memo,
        done:s.done,approval:s.approval||'',ci:s.ci||0,
        assignees:s.assignees.map(a=&gt;{const m=gm(a.mid);return m?{name:m.name,role:a.role}:null;}).filter(Boolean),
        todos:s.todos.map(t=&gt;({text:t.text,done:t.done,si:t.si||0})),
      }))};
    }
    const json=JSON.stringify(data);
    return btoa(unescape(encodeURIComponent(json)));
  }catch(e){return '';}
}

function decodeSection(code){
  try{return JSON.parse(decodeURIComponent(escape(atob(code.trim()))));}
  catch(e){return null;}
}

function applySection(data){
  if(!data||!data.payload)return false;
  const {sec,payload}=data;
  if(sec==='all'){
    if(payload.projTitle)document.getElementById('projTitle').value=payload.projTitle;
    if(payload.meta){meta=payload.meta;document.getElementById('lbl-start').textContent=fmtDate(meta.start)+' 시작';document.getElementById('lbl-end').textContent=fmtDate(meta.end)+' 마감';document.getElementById('lbl-dept').textContent=meta.dept;}
    if(payload.statusIdx!==undefined){statusIdx=payload.statusIdx;document.getElementById('lbl-status').textContent=STATUS_LIST[statusIdx].l;document.getElementById('status-ico').textContent=STATUS_LIST[statusIdx].i;}
    if(payload.ov){
      ['purpose','output','approver','note'].forEach(k=&gt;{if(payload.ov[k]!==undefined)document.getElementById('ov-'+k).value=payload.ov[k];});
    }
    if(payload.members){
      members=[];
      payload.members.forEach(m=&gt;members.push({id:nid(),name:m.name,dept:m.dept||'팀원',ci:m.ci||0}));
    }
    if(payload.steps){
      steps=payload.steps.map(ps=&gt;({
        id:nid(),title:ps.title||'',deadline:ps.deadline||'',note:ps.note||'',
        memo:ps.memo||'',done:ps.done||false,approval:ps.approval||'',ci:ps.ci||0,
        assignees:ps.assignees?ps.assignees.map(pa=&gt;{const m=members.find(x=&gt;x.name===pa.name);return m?{mid:m.id,role:pa.role}:null;}).filter(Boolean):[],
        todos:(ps.todos||[]).map(t=&gt;({id:nid(),text:t.text,done:t.done,si:t.si||0})),
      }));
    }
    if(payload.globalMemo!==undefined)document.getElementById('global-memo').value=payload.globalMemo;
  } else if(sec==='overview'){
    if(payload.purpose!==undefined)document.getElementById('ov-purpose').value=payload.purpose;
    if(payload.output!==undefined)document.getElementById('ov-output').value=payload.output;
    if(payload.approver!==undefined)document.getElementById('ov-approver').value=payload.approver;
    if(payload.note!==undefined)document.getElementById('ov-note').value=payload.note;
    touchTs('overview');
  } else if(sec==='members'){
    if(payload.members){
      payload.members.forEach(m=&gt;{if(!members.find(x=&gt;x.name===m.name))members.push({id:nid(),name:m.name,dept:m.dept||'팀원',ci:m.ci||0});});
      touchTs('members');
    }
  } else if(sec==='flow'||sec==='steps'){
    if(payload.steps){
      payload.steps.forEach((ps,i)=&gt;{
        if(i&lt;steps.length){
          const s=steps[i];
          if(ps.title)s.title=ps.title;if(ps.deadline)s.deadline=ps.deadline;
          if(ps.note)s.note=ps.note;if(ps.memo)s.memo=ps.memo;
          if(ps.done!==undefined)s.done=ps.done;if(ps.approval)s.approval=ps.approval;
          if(ps.ci!==undefined)s.ci=ps.ci;
          if(ps.todos&amp;&amp;ps.todos.length)s.todos=ps.todos.map(t=&gt;({id:nid(),text:t.text,done:t.done,si:t.si||0}));
          if(ps.assignees&amp;&amp;ps.assignees.length){
            s.assignees=ps.assignees.map(pa=&gt;{const m=members.find(x=&gt;x.name===pa.name);return m?{mid:m.id,role:pa.role}:null;}).filter(Boolean);
          }
        } else {
          steps.push({id:nid(),title:ps.title||'',deadline:ps.deadline||'',note:ps.note||'',memo:ps.memo||'',done:ps.done||false,approval:ps.approval||'',ci:ps.ci||0,
            assignees:ps.assignees?ps.assignees.map(pa=&gt;{const m=members.find(x=&gt;x.name===pa.name);return m?{mid:m.id,role:pa.role}:null;}).filter(Boolean):[],
            todos:(ps.todos||[]).map(t=&gt;({id:nid(),text:t.text,done:t.done,si:t.si||0})),
          });
        }
      });
      touchTs('steps');touchTs('flow');
    }
  }
  renderAll();schedSave();
  return true;
}

function openTransferModal(sec){
  const code=encodeSection(sec);
  showModal(`&lt;h3&gt;  ${SEC_NAMES[sec]} 전달 / 수신&lt;/h3&gt;
    &lt;div class=&quot;ttab-row&quot;&gt;
      &lt;button class=&quot;ttab on&quot; id=&quot;tt-send&quot; onclick=&quot;switchTTab('send')&quot;&gt;전달 코드 생성&lt;/button&gt;
      &lt;button class=&quot;ttab&quot; id=&quot;tt-recv&quot; onclick=&quot;switchTTab('recv')&quot;&gt;전달 코드 수신&lt;/button&gt;
    &lt;/div&gt;
    &lt;div id=&quot;tt-send-body&quot;&gt;
      &lt;div style=&quot;font-size:11px;color:#6b7280;margin-bottom:8px&quot;&gt;아래 코드를 복사해 카카오톡·이메일·메시지로 전달하세요.&lt;/div&gt;
      &lt;textarea class=&quot;transfer-code&quot; id=&quot;t-code-out&quot; readonly&gt;${code}&lt;/textarea&gt;
      &lt;div style=&quot;display:flex;gap:6px;margin-top:9px&quot;&gt;
        &lt;button class=&quot;btn pri sm&quot; onclick=&quot;copyTCode()&quot; style=&quot;flex:1&quot;&gt;  코드 복사&lt;/button&gt;
        &lt;button class=&quot;btn sm&quot; style=&quot;background:#FEE500;border-color:#E5CF00;color:#3A1D1D;flex:1&quot; onclick=&quot;copyTCode();alert('코드가 복사되었습니다.\\n카카오톡에 붙여넣기 하여 전달하세요!')&quot;&gt;  카카오 전달&lt;/button&gt;
      &lt;/div&gt;
      &lt;div style=&quot;font-size:10px;color:#9ca3af;margin-top:8px&quot;&gt;전달 시각: ${now()} · 섹션: ${SEC_NAMES[sec]}&lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;tt-recv-body&quot; style=&quot;display:none&quot;&gt;
      &lt;div style=&quot;font-size:11px;color:#6b7280;margin-bottom:8px&quot;&gt;받은 코드를 붙여넣고 &lt;b&gt;확인 및 적용&lt;/b&gt;을 누르세요.&lt;/div&gt;
      &lt;textarea class=&quot;receive-inp&quot; id=&quot;t-code-in&quot; placeholder=&quot;받은 코드를 여기에 붙여넣으세요...&quot;&gt;&lt;/textarea&gt;
      &lt;button class=&quot;btn pri sm&quot; onclick=&quot;receiveTCode()&quot; style=&quot;width:100%;margin-top:9px&quot;&gt;✅ 확인 및 적용&lt;/button&gt;
      &lt;div id=&quot;recv-result&quot; style=&quot;font-size:12px;margin-top:9px;display:none&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;modal-actions&quot; style=&quot;margin-top:10px&quot;&gt;
      &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;closeModal()&quot;&gt;닫기&lt;/button&gt;
    &lt;/div&gt;`);
}

function switchTTab(t){
  document.getElementById('tt-send').classList.toggle('on',t==='send');
  document.getElementById('tt-recv').classList.toggle('on',t==='recv');
  document.getElementById('tt-send-body').style.display=t==='send'?'block':'none';
  document.getElementById('tt-recv-body').style.display=t==='recv'?'block':'none';
}

function copyTCode(){
  const el=document.getElementById('t-code-out');if(!el)return;
  if(navigator.clipboard){
    navigator.clipboard.writeText(el.value).then(()=&gt;{
      const btn=document.querySelector('#tt-send-body .btn.pri');
      if(btn){btn.textContent='✅ 복사됨!';setTimeout(()=&gt;{btn.textContent='  코드 복사';},1800);}
    }).catch(()=&gt;{el.select();document.execCommand('copy');});
  } else {el.select();document.execCommand('copy');}
}

function receiveTCode(){
  const code=document.getElementById('t-code-in').value.trim();
  if(!code){alert('코드를 붙여넣어 주세요.');return;}
  const data=decodeSection(code);
  const res=document.getElementById('recv-result');res.style.display='block';
  if(!data){res.style.color='#DC2626';res.textContent='❌ 유효하지 않은 코드입니다.';return;}
  const ok=applySection(data);
  if(ok){res.style.color='#16A34A';res.textContent=`✅ [${SEC_NAMES[data.sec]||''}] 내용이 적용되었습니다! (전달 시각: ${data.ts||'-'})`;setTimeout(closeModal,1800);}
  else{res.style.color='#DC2626';res.textContent='❌ 적용 중 오류가 발생했습니다.';}
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  모달 공통
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function showModal(innerHtml){
  const mw=document.getElementById('modal-wrap');
  mw.innerHTML=`&lt;div class=&quot;modal-bg&quot; onclick=&quot;if(event.target===this)closeModal()&quot;&gt;&lt;div class=&quot;modal&quot;&gt;${innerHtml}&lt;/div&gt;&lt;/div&gt;`;
  mw.style.display='block';
}
function closeModal(){
  const mw=document.getElementById('modal-wrap');
  mw.style.display='none';mw.innerHTML='';
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  전체 공유 모달
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function openShareAllModal(){
  const code=encodeSection('all');
  // 데이터 URL 생성 (파라미터 방식)
  const baseUrl=window.location.href.split('?')[0].split('#')[0];
  const paramUrl=baseUrl+'?d='+code;
  const shortNote='TinyURL 단축은 아래 사이트에서 직접 생성하세요';

  showModal(`&lt;h3&gt;  전체 내용 공유&lt;/h3&gt;
    &lt;div style=&quot;background:#EFF6FF;border:1px solid #BFDBFE;border-radius:9px;padding:10px 13px;margin-bottom:13px;font-size:12px;color:#1E40AF;line-height:1.6&quot;&gt;
      ℹ️ &lt;b&gt;전체 공유&lt;/b&gt;는 현재 입력된 모든 섹션 내용(프로젝트명·팀원·단계·메모 등)을 코드로 변환합니다.&lt;br&gt;
      받는 사람이 &lt;b&gt;전달 코드 수신&lt;/b&gt;에 붙여넣으면 모든 내용이 한 번에 복원됩니다.
    &lt;/div&gt;
    &lt;div class=&quot;ttab-row&quot;&gt;
      &lt;button class=&quot;ttab on&quot; id=&quot;tt-send&quot; onclick=&quot;switchTTab('send')&quot;&gt;  전달 코드&lt;/button&gt;
      &lt;button class=&quot;ttab&quot; id=&quot;tt-recv&quot; onclick=&quot;switchTTab('recv')&quot;&gt;  코드 수신&lt;/button&gt;
      &lt;button class=&quot;ttab&quot; id=&quot;tt-url&quot; onclick=&quot;switchTTab('url')&quot;&gt;  URL 공유&lt;/button&gt;
    &lt;/div&gt;

    &lt;div id=&quot;tt-send-body&quot;&gt;
      &lt;div style=&quot;font-size:11px;color:#6b7280;margin-bottom:7px&quot;&gt;코드를 복사해 카카오톡·이메일·메신저로 전달하세요.&lt;/div&gt;
      &lt;textarea class=&quot;transfer-code&quot; id=&quot;t-code-out&quot; readonly&gt;${code}&lt;/textarea&gt;
      &lt;div style=&quot;display:flex;gap:6px;margin-top:9px&quot;&gt;
        &lt;button class=&quot;btn pri sm&quot; onclick=&quot;copyTCode()&quot; style=&quot;flex:1&quot;&gt;  코드 복사&lt;/button&gt;
        &lt;button class=&quot;btn sm&quot; style=&quot;background:#FEE500;border-color:#E5CF00;color:#3A1D1D;flex:1&quot; onclick=&quot;copyTCode();alert('코드가 복사되었습니다!\\n카카오톡 채팅창에 붙여넣기하여 전달하세요.')&quot;&gt;  카카오 전달&lt;/button&gt;
      &lt;/div&gt;
      &lt;div style=&quot;font-size:10px;color:#9ca3af;margin-top:8px&quot;&gt;전달 시각: ${now()} · 전체 섹션 포함&lt;/div&gt;
    &lt;/div&gt;

    &lt;div id=&quot;tt-recv-body&quot; style=&quot;display:none&quot;&gt;
      &lt;div style=&quot;font-size:11px;color:#6b7280;margin-bottom:7px&quot;&gt;받은 코드를 붙여넣고 &lt;b&gt;확인 및 적용&lt;/b&gt;을 누르세요. 모든 내용이 복원됩니다.&lt;/div&gt;
      &lt;textarea class=&quot;receive-inp&quot; id=&quot;t-code-in&quot; placeholder=&quot;받은 코드를 여기에 붙여넣으세요...&quot;&gt;&lt;/textarea&gt;
      &lt;button class=&quot;btn pri sm&quot; onclick=&quot;receiveTCode()&quot; style=&quot;width:100%;margin-top:9px&quot;&gt;✅ 확인 및 적용 (전체 복원)&lt;/button&gt;
      &lt;div id=&quot;recv-result&quot; style=&quot;font-size:12px;margin-top:9px;display:none&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div id=&quot;tt-url-body&quot; style=&quot;display:none&quot;&gt;
      &lt;div style=&quot;font-size:11px;color:#374151;margin-bottom:9px;line-height:1.6&quot;&gt;
        아래 &lt;b&gt;파라미터 URL&lt;/b&gt;을 복사해 공유하면, 받는 사람이 해당 URL을 열었을 때 자동으로 내용이 불러와집니다.&lt;br&gt;
        &lt;span style=&quot;color:#9ca3af&quot;&gt;(단, 티스토리에서는 파라미터 URL 공유가 막힐 수 있습니다. 그럴 땐 전달 코드를 사용하세요.)&lt;/span&gt;
      &lt;/div&gt;
      &lt;div style=&quot;font-size:10px;font-weight:600;color:#6b7280;margin-bottom:4px;text-transform:uppercase;letter-spacing:.4px&quot;&gt;파라미터 URL (전체 데이터 포함)&lt;/div&gt;
      &lt;textarea style=&quot;width:100%;min-height:60px;font-size:10px;font-family:'Courier New',monospace;background:#f1f5f9;color:#334155;border:1px solid #cbd5e1;border-radius:8px;padding:9px;resize:none;outline:none;word-break:break-all&quot; readonly id=&quot;param-url-out&quot;&gt;${paramUrl}&lt;/textarea&gt;
      &lt;button class=&quot;btn sm&quot; style=&quot;width:100%;margin-top:6px&quot; onclick=&quot;(function(){const el=document.getElementById('param-url-out');navigator.clipboard?navigator.clipboard.writeText(el.value).then(()=&gt;alert('파라미터 URL이 복사되었습니다!')):alert(el.value)})()&quot;&gt;  파라미터 URL 복사&lt;/button&gt;
      &lt;div style=&quot;margin-top:10px;padding:10px 12px;background:#FFFBEB;border:1px solid #FDE68A;border-radius:8px;font-size:11px;color:#92400E;line-height:1.7&quot;&gt;
          &lt;b&gt;URL 단축 (TinyURL)&lt;/b&gt;&lt;br&gt;
        위 파라미터 URL을 복사한 뒤,&lt;br&gt;
        &lt;a href=&quot;https://tinyurl.com&quot; target=&quot;_blank&quot; style=&quot;color:#2563EB;font-weight:600&quot;&gt;tinyurl.com&lt;/a&gt; 또는
        &lt;a href=&quot;https://bitly.com&quot; target=&quot;_blank&quot; style=&quot;color:#2563EB;font-weight:600&quot;&gt;bit.ly&lt;/a&gt; 에서 단축 링크를 생성하세요.&lt;br&gt;
        &lt;span style=&quot;font-size:10px;color:#A37E00&quot;&gt;※ URL이 너무 길어 일부 단축 서비스에서 작동하지 않을 수 있습니다. 그럴 땐 전달 코드를 이용하세요.&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;modal-actions&quot; style=&quot;margin-top:12px&quot;&gt;
      &lt;button class=&quot;btn sm ghost&quot; onclick=&quot;closeModal()&quot;&gt;닫기&lt;/button&gt;
    &lt;/div&gt;`);

  // URL 파라미터로 데이터 수신 체크는 이미 init에서 처리
}

// URL 파라미터에서 데이터 로드
function loadFromUrlParam(){
  try{
    const params=new URLSearchParams(window.location.search);
    const d=params.get('d');
    if(!d)return false;
    const data=decodeSection(d);
    if(!data)return false;
    return applySection(data);
  }catch(e){return false;}
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  흐름도 전체화면 모달
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function openFlowFullscreen(){
  // 전체화면 오버레이 생성
  const overlay=document.createElement('div');
  overlay.id='flow-fs-overlay';
  overlay.style.cssText='position:fixed;inset:0;z-index:2000;background:#1e293b;display:flex;flex-direction:column';

  // 상단 툴바
  const toolbar=document.createElement('div');
  toolbar.style.cssText='display:flex;align-items:center;gap:10px;padding:12px 18px;background:#0f172a;border-bottom:1px solid #334155;flex-shrink:0';
  toolbar.innerHTML=`
    &lt;span style=&quot;font-size:14px;font-weight:700;color:#fff&quot;&gt; ️ 프로젝트 진행 흐름도 — 전체보기&lt;/span&gt;
    &lt;div style=&quot;display:flex;border:1px solid #334155;border-radius:7px;overflow:hidden;margin-left:8px&quot;&gt;
      &lt;button id=&quot;fs-dir-h&quot; onclick=&quot;fsDirH()&quot; style=&quot;padding:5px 12px;font-size:12px;border:none;background:#2563EB;color:#fff;cursor:pointer;font-weight:500&quot;&gt;가로 →&lt;/button&gt;
      &lt;button id=&quot;fs-dir-v&quot; onclick=&quot;fsDirV()&quot; style=&quot;padding:5px 12px;font-size:12px;border:none;background:transparent;color:#94a3b8;cursor:pointer;font-weight:500&quot;&gt;세로 ↓&lt;/button&gt;
    &lt;/div&gt;
    &lt;span style=&quot;font-size:11px;color:#64748b;margin-left:4px&quot;&gt;더블클릭=완료 · 호버 후 팀원 클릭=배정 · 직접 메모 가능&lt;/span&gt;
    &lt;button onclick=&quot;closeFlowFullscreen()&quot; style=&quot;margin-left:auto;padding:6px 14px;border-radius:8px;border:1px solid #475569;background:#1e293b;color:#94a3b8;font-size:12px;cursor:pointer;font-weight:500&quot;&gt;✕ 닫기&lt;/button&gt;`;

  // 캔버스 영역
  const canvasWrap=document.createElement('div');
  canvasWrap.style.cssText='flex:1;overflow:auto;padding:20px';
  canvasWrap.id='fs-canvas-wrap';

  overlay.appendChild(toolbar);
  overlay.appendChild(canvasWrap);
  document.body.appendChild(overlay);

  // 전체화면 흐름도 렌더
  renderFlowFS();

  // ESC 키 닫기
  overlay._escHandler=function(e){if(e.key==='Escape')closeFlowFullscreen();};
  document.addEventListener('keydown',overlay._escHandler);
}

let fsDir='h';
function fsDirH(){
  fsDir='h';
  document.getElementById('fs-dir-h').style.background='#2563EB';
  document.getElementById('fs-dir-h').style.color='#fff';
  document.getElementById('fs-dir-v').style.background='transparent';
  document.getElementById('fs-dir-v').style.color='#94a3b8';
  renderFlowFS();
}
function fsDirV(){
  fsDir='v';
  document.getElementById('fs-dir-v').style.background='#2563EB';
  document.getElementById('fs-dir-v').style.color='#fff';
  document.getElementById('fs-dir-h').style.background='transparent';
  document.getElementById('fs-dir-h').style.color='#94a3b8';
  renderFlowFS();
}

function renderFlowFS(){
  const wrap=document.getElementById('fs-canvas-wrap');
  if(!wrap)return;
  if(!steps.length){wrap.innerHTML='&lt;div style=&quot;color:#64748b;text-align:center;padding:60px;font-size:14px&quot;&gt;업무 단계가 없습니다&lt;/div&gt;';return;}

  const FS_CC=[
    {bg:'#1e3a8a',bd:'#3b82f6',tx:'#93c5fd'},
    {bg:'#3b0764',bd:'#a855f7',tx:'#e9d5ff'},
    {bg:'#451a03',bd:'#f59e0b',tx:'#fde68a'},
    {bg:'#14532d',bd:'#22c55e',tx:'#bbf7d0'},
    {bg:'#7f1d1d',bd:'#ef4444',tx:'#fecaca'},
    {bg:'#0c4a6e',bd:'#38bdf8',tx:'#bae6fd'},
  ];

  if(fsDir==='h'){
    let html='&lt;div style=&quot;display:flex;align-items:flex-start;gap:0;min-width:max-content;padding:10px&quot;&gt;';
    steps.forEach((s,i)=&gt;{
      const c=FS_CC[s.ci%6];
      const aHtml=s.assignees.map(a=&gt;{const m=gm(a.mid);if(!m)return'';const mc=FS_CC[m.ci%6];
        return`&lt;span style=&quot;font-size:10px;padding:2px 8px;border-radius:10px;border:1px solid ${mc.bd};background:${mc.bg};color:${mc.tx};font-weight:600&quot;&gt;${m.name}(${a.role})&lt;/span&gt;`;}).join('');
      const smhHtmlFS=members.length?`&lt;div style=&quot;display:none;position:absolute;left:50%;transform:translateX(-50%);bottom:calc(100% + 8px);z-index:100;background:#1e293b;border:1px solid #334155;border-radius:10px;padding:10px;min-width:160px;box-shadow:0 8px 24px rgba(0,0,0,.4)&quot; class=&quot;fs-smh&quot;&gt;
        &lt;div style=&quot;font-size:10px;color:#64748b;margin-bottom:6px;font-weight:600&quot;&gt;클릭하여 배정&lt;/div&gt;
        ${members.map(m=&gt;{const mc=FS_CC[m.ci%6];return`&lt;span onclick=&quot;event.stopPropagation();assignMember('${s.id}','${m.id}');renderFlowFS()&quot; style=&quot;display:inline-flex;align-items:center;gap:3px;padding:3px 9px;border-radius:20px;border:1.5px solid ${mc.bd};background:${mc.bg};color:${mc.tx};font-size:11px;font-weight:500;cursor:pointer;margin:2px&quot;&gt;${m.name}&lt;span style=&quot;font-size:9px;opacity:.6;margin-left:2px&quot;&gt;${m.dept}&lt;/span&gt;&lt;/span&gt;`;}).join('')}
      &lt;/div&gt;`:'';
      html+=`&lt;div style=&quot;display:flex;align-items:center;gap:0&quot;&gt;
        &lt;div style=&quot;position:relative&quot; onmouseenter=&quot;this.querySelector('.fs-smh')&amp;&amp;(this.querySelector('.fs-smh').style.display='block')&quot; onmouseleave=&quot;this.querySelector('.fs-smh')&amp;&amp;(this.querySelector('.fs-smh').style.display='none')&quot;&gt;
          &lt;div ondblclick=&quot;toggleDone('${s.id}');renderFlowFS()&quot;
            ondragover=&quot;event.preventDefault();this.style.borderStyle='dashed'&quot;
            ondragleave=&quot;this.style.borderStyle='solid'&quot;
            ondrop=&quot;this.style.borderStyle='solid';dropOnStep(event,'${s.id}');renderFlowFS()&quot;
            style=&quot;width:160px;border-radius:12px;border:2px solid ${c.bd};background:${c.bg};color:${c.tx};padding:14px 16px;cursor:pointer;position:relative;${s.done?'opacity:.4':''};transition:transform .15s&quot;
            onmouseenter=&quot;this.style.transform='translateY(-3px)'&quot;
            onmouseleave=&quot;this.style.transform='translateY(0)'&quot;&gt;
            ${s.done?`&lt;div style=&quot;position:absolute;top:-8px;right:-8px;width:20px;height:20px;border-radius:50%;background:#16A34A;color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;font-weight:800&quot;&gt;✓&lt;/div&gt;`:''}
            &lt;div style=&quot;display:flex;align-items:center;justify-content:space-between;margin-bottom:4px&quot;&gt;
              &lt;div style=&quot;font-size:10px;font-weight:700;opacity:.6&quot;&gt;STEP ${i+1}&lt;/div&gt;
              &lt;button onclick=&quot;event.stopPropagation();scrollToStep('${s.id}')&quot; style=&quot;font-size:9px;padding:2px 7px;border-radius:4px;border:1px solid ${c.bd};background:rgba(255,255,255,.1);color:${c.tx};cursor:pointer;font-weight:600&quot;&gt;EDIT&lt;/button&gt;
            &lt;/div&gt;
            &lt;div contenteditable=&quot;true&quot; onblur=&quot;updateSF('${s.id}','title',this.innerText.trim())&quot; style=&quot;font-size:14px;font-weight:700;line-height:1.35;outline:none;min-height:18px;margin-bottom:4px&quot;&gt;${s.title||'단계명 입력'}&lt;/div&gt;
            ${s.deadline?`&lt;div style=&quot;font-size:10px;opacity:.55;margin-bottom:3px&quot;&gt;  ${fmtDate(s.deadline)}&lt;/div&gt;`:''}
            ${s.memo?`&lt;div style=&quot;font-size:11px;opacity:.65;margin-top:3px;line-height:1.4&quot;&gt;${s.memo}&lt;/div&gt;`:''}
            ${aHtml?`&lt;div style=&quot;display:flex;flex-wrap:wrap;gap:3px;margin-top:7px&quot;&gt;${aHtml}&lt;/div&gt;`:''}
            &lt;div style=&quot;margin-top:8px;border-top:1px dashed ${c.bd}60;padding-top:7px&quot;&gt;
              &lt;input placeholder=&quot;결재 첨언 메모...&quot; value=&quot;${(s.approval||'').replace(/&quot;/g,'&amp;quot;')}&quot; oninput=&quot;updateSF('${s.id}','approval',this.value)&quot;
                style=&quot;width:100%;font-size:11px;border:none;outline:none;background:transparent;color:${c.tx};font-family:inherit;opacity:.8&quot;&gt;
            &lt;/div&gt;
          &lt;/div&gt;
          ${smhHtmlFS}
        &lt;/div&gt;
        ${i&lt;steps.length-1?`&lt;div style=&quot;color:#475569;padding:0 8px;font-size:22px;margin-bottom:36px;flex-shrink:0&quot;&gt;→&lt;/div&gt;`:''}
      &lt;/div&gt;`;
    });
    wrap.innerHTML=html+'&lt;/div&gt;';
  } else {
    let html='&lt;div style=&quot;display:flex;flex-direction:column;gap:0;max-width:560px;margin:0 auto&quot;&gt;';
    steps.forEach((s,i)=&gt;{
      const c=FS_CC[s.ci%6];
      const aHtml=s.assignees.map(a=&gt;{const m=gm(a.mid);if(!m)return'';const mc=FS_CC[m.ci%6];
        return`&lt;div style=&quot;display:inline-flex;align-items:center;gap:4px;padding:4px 11px;border-radius:20px;border:1.5px solid ${mc.bd};background:${mc.bg};color:${mc.tx};font-size:12px;font-weight:600;margin-bottom:4px&quot;&gt;${m.name}&lt;span style=&quot;font-size:10px;opacity:.7&quot;&gt;(${a.role})&lt;/span&gt;&lt;/div&gt;`;}).join('');
      html+=`&lt;div style=&quot;display:flex;align-items:flex-start;gap:14px;width:100%&quot;&gt;
        &lt;div style=&quot;flex:0 0 76%;position:relative&quot;&gt;
          &lt;div ondblclick=&quot;toggleDone('${s.id}');renderFlowFS()&quot;
            ondragover=&quot;event.preventDefault();this.style.borderStyle='dashed'&quot;
            ondragleave=&quot;this.style.borderStyle='solid'&quot;
            ondrop=&quot;this.style.borderStyle='solid';dropOnStep(event,'${s.id}');renderFlowFS()&quot;
            style=&quot;border-radius:12px;border:2px solid ${c.bd};background:${c.bg};color:${c.tx};padding:16px 18px;cursor:pointer;${s.done?'opacity:.4':''}&quot;&gt;
            ${s.done?`&lt;div style=&quot;position:absolute;top:-8px;right:-8px;width:20px;height:20px;border-radius:50%;background:#16A34A;color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;font-weight:800&quot;&gt;✓&lt;/div&gt;`:''}
            &lt;div style=&quot;display:flex;align-items:center;justify-content:space-between;margin-bottom:5px&quot;&gt;
              &lt;div style=&quot;font-size:11px;font-weight:700;opacity:.6&quot;&gt;STEP ${i+1}&lt;/div&gt;
              &lt;button onclick=&quot;event.stopPropagation();scrollToStep('${s.id}')&quot; style=&quot;font-size:10px;padding:2px 9px;border-radius:5px;border:1px solid ${c.bd};background:rgba(255,255,255,.1);color:${c.tx};cursor:pointer;font-weight:600&quot;&gt;EDIT&lt;/button&gt;
            &lt;/div&gt;
            &lt;div contenteditable=&quot;true&quot; onblur=&quot;updateSF('${s.id}','title',this.innerText.trim())&quot; style=&quot;font-size:18px;font-weight:800;line-height:1.3;outline:none;min-height:22px&quot;&gt;${s.title||'단계명 입력'}&lt;/div&gt;
            ${s.deadline?`&lt;div style=&quot;font-size:11px;opacity:.55;margin-top:5px&quot;&gt;  ${fmtDate(s.deadline)}&lt;/div&gt;`:''}
            ${s.memo?`&lt;div style=&quot;font-size:12px;opacity:.65;margin-top:5px;line-height:1.4&quot;&gt;${s.memo}&lt;/div&gt;`:''}
            &lt;div style=&quot;margin-top:9px;border-top:1px dashed ${c.bd}60;padding-top:8px&quot;&gt;
              &lt;input placeholder=&quot;결재 첨언 메모...&quot; value=&quot;${(s.approval||'').replace(/&quot;/g,'&amp;quot;')}&quot; oninput=&quot;updateSF('${s.id}','approval',this.value)&quot;
                style=&quot;width:100%;font-size:12px;border:none;outline:none;background:transparent;color:${c.tx};font-family:inherit;opacity:.8&quot;&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div style=&quot;flex:0 0 20%;display:flex;flex-direction:column;align-items:flex-start;padding-top:14px&quot;&gt;
          ${aHtml||`&lt;span style=&quot;font-size:11px;color:#64748b&quot;&gt;미배정&lt;/span&gt;`}
        &lt;/div&gt;
      &lt;/div&gt;
      ${i&lt;steps.length-1?`&lt;div style=&quot;color:#475569;padding:6px 0 6px 20px;font-size:18px;line-height:1&quot;&gt;↓&lt;/div&gt;`:''}`;
    });
    wrap.innerHTML=html+'&lt;/div&gt;';
  }
}

function closeFlowFullscreen(){
  const overlay=document.getElementById('flow-fs-overlay');
  if(!overlay)return;
  document.removeEventListener('keydown',overlay._escHandler);
  overlay.remove();
  renderFlow(); // 메인 흐름도도 갱신
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  공유
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function copyLink(){
  const url=window.location.href;
  if(navigator.clipboard){navigator.clipboard.writeText(url).then(()=&gt;alert('링크 복사 완료!'));}
  else{alert(url);}
}
function secShare(sec){
  const url=window.location.href+'#sec-'+sec;
  if(navigator.clipboard){navigator.clipboard.writeText(url).then(()=&gt;alert('['+SEC_NAMES[sec]+'] 섹션 링크가 복사되었습니다!\n\n'+url));}
  else{alert(url);}
}
function shareKakao(){alert('  카카오톡 공유\n\n&quot;  전달&quot; 버튼으로 업무단계 코드를 생성 후\n카카오톡에 붙여넣기하여 전달하세요.\n\n(티스토리 배포 시 Kakao SDK 연동으로 자동 공유됩니다)');}
function shareEmail(){
  const subj=encodeURIComponent('[업무분장] '+document.getElementById('projTitle').value);
  const body=encodeURIComponent('업무 단계별 분장표를 확인해주세요.\n\n'+window.location.href+'#sec-steps\n\n(내용 전달이 필요한 경우 &quot;전달 코드&quot;를 요청하세요.)');
  window.location.href='mailto:?subject='+subj+'&amp;body='+body;
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  전체 렌더
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function renderAll(){renderPool();renderSteps();renderFlow();}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  샘플 데이터
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
function loadSampleData(){
  members=[
    {id:nid(),name:'스타',dept:'PM',ci:0},
    {id:nid(),name:'트업',dept:'기획',ci:3},
    {id:nid(),name:'ex',dept:'디자인',ci:1},
    {id:nid(),name:'마이클',dept:'편집',ci:4},
    {id:nid(),name:'캐서린',dept:'기획',ci:2},
  ];
  steps=[
    {id:nid(),title:'현황 분석 및 자료 수집',deadline:'2025-05-23',note:'전년도 실적 보고서, 시장조사 데이터 취합. 각 팀에서 자료 제출 기한 엄수.',memo:'각 팀 자료 수집',done:false,approval:'',ci:0,
      assignees:[],todos:[{id:nid(),text:'전년도 실적 보고서 수집',done:true,si:2},{id:nid(),text:'시장조사 데이터 취합',done:false,si:1},{id:nid(),text:'팀별 현황 인터뷰',done:false,si:0}]},
    {id:nid(),title:'목차 및 구성안 작성',deadline:'2025-05-30',note:'사업계획서 전체 목차 확정. 팀장 검토 후 대표 보고.',memo:'목차 확정',done:false,approval:'',ci:3,
      assignees:[],todos:[{id:nid(),text:'초안 목차 작성',done:false,si:0},{id:nid(),text:'팀장 검토 요청',done:false,si:0}]},
    {id:nid(),title:'본문 초안 작성',deadline:'2025-06-13',note:'각 파트별 담당자 집필. 폰트·형식 통일 필수.',memo:'형식 통일',done:false,approval:'',ci:1,
      assignees:[],todos:[{id:nid(),text:'파트별 집필 시작',done:false,si:0},{id:nid(),text:'형식 점검',done:false,si:0}]},
    {id:nid(),title:'내부 검토 및 수정',deadline:'2025-06-20',note:'팀장 1차 검토 → 수정 → 본부장 2차 검토.',memo:'2차 검토',done:false,approval:'',ci:0,
      assignees:[],todos:[{id:nid(),text:'1차 검토',done:false,si:0},{id:nid(),text:'수정 반영',done:false,si:0}]},
    {id:nid(),title:'최종 완성 및 제출',deadline:'2025-06-30',note:'대표이사 최종 승인. PDF 변환 후 제출.',memo:'대표 승인 후 제출',done:false,approval:'',ci:4,
      assignees:[],todos:[{id:nid(),text:'최종 승인',done:false,si:0},{id:nid(),text:'PDF 변환 및 제출',done:false,si:0}]},
  ];
  steps[0].assignees=[{mid:members[1].id,role:'정'},{mid:members[0].id,role:'부'}];
  steps[1].assignees=[{mid:members[0].id,role:'정'},{mid:members[4].id,role:'부'}];
  steps[2].assignees=[{mid:members[2].id,role:'정'},{mid:members[3].id,role:'부'}];
  steps[3].assignees=[{mid:members[0].id,role:'정'},{mid:members[1].id,role:'부'}];
  steps[4].assignees=[{mid:members[0].id,role:'정'},{mid:members[4].id,role:'부'}];
  openStepIds=new Set([steps[0].id]);
}

// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
//  초기 실행
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
(function init(){
  // 1순위: URL 파라미터
  const fromUrl=loadFromUrlParam();
  if(fromUrl){
    document.getElementById('hdr-ts').textContent='URL에서 불러옴: '+now();
    document.getElementById('cols-sel').value=String(stepsColCount);
    renderAll();
    return;
  }
  // 2순위: localStorage
  const loaded=loadSave();
  if(!loaded){
    // 샘플 데이터
    loadSampleData();
    document.getElementById('projTitle').value='';
    document.getElementById('lbl-start').textContent='시작일 설정';
    document.getElementById('lbl-end').textContent='마감일 설정';
    document.getElementById('lbl-dept').textContent='담당팀';
    // 개요 포스트잇 기본 안내문 유지 (placeholder)
  }
  document.getElementById('hdr-ts').textContent='작성: '+now();
  document.getElementById('cols-sel').value=String(stepsColCount);
  if(flowDir==='v'){document.getElementById('dir-h').classList.remove('on');document.getElementById('dir-v').classList.add('on');}
  renderAll();
})();
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>모두의계산기</category>
      <category>0-1.kr/38</category>
      <category>모두</category>
      <category>사업계획서</category>
      <category>업무분장</category>
      <category>웹앱</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/38</guid>
      <comments>https://0-1.kr/38#entry38comment</comments>
      <pubDate>Fri, 6 Jan 2023 08:45:31 +0900</pubDate>
    </item>
    <item>
      <title>모두의 스티커출력 계산기_V0</title>
      <link>https://0-1.kr/37</link>
      <description>&lt;!-- 모두의스티커출력계산기_V0_260727 (3차수정: 다운로드파일 내 중첩 문서구조 제거) : 티스토리 본문용(HTML모드) --&gt;
&lt;style&gt;
  * { box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
  html,body { margin:0; padding:0; width:100%; background:#f1f3f6; font-family:-apple-system,BlinkMacSystemFont,'Malgun Gothic','Apple SD Gothic Neo',sans-serif; }
  body.stk-popup-open { overflow:hidden; touch-action:none; }
  .stk-wrap { max-width:980px; margin:0 auto; padding:0 12px 60px; }
  .stk-topbar {
    display:flex; align-items:center; justify-content:space-between; gap:10px;
    padding:14px 4px; position:sticky; top:0; z-index:500; background:#f1f3f6;
  }
  .stk-topbar-left { display:flex; flex-direction:column; min-width:0; }
  .stk-topbar-title { font-size:17px; font-weight:800; color:#222; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .stk-topbar-sub { font-size:11px; color:#999; margin-top:2px; }
  .stk-topbar-actions { display:flex; gap:6px; flex-shrink:0; }
  .stk-tb-btn { touch-action:manipulation; border:none; border-radius:10px; padding:9px 14px; font-size:13px; font-weight:800; cursor:pointer; }
  .stk-tb-icon { padding:9px 11px; font-size:15px; background:#eef0f4; color:#555; }
  .stk-tb-icon:disabled { opacity:0.3; }
  .stk-tb-share { background:#eafaf0; color:#1c9a5b; }
  .stk-tb-save { background:#3b6ef6; color:#fff; }
  .stk-modal-overlay {
    position:fixed; left:0; right:0; top:0; bottom:0; background:rgba(20,22,28,0.55);
    z-index:2147483647; display:none; align-items:flex-end; justify-content:center; touch-action:none;
  }
  .stk-modal-overlay.open { display:flex; }
  .stk-modal {
    background:#fff; width:100%; max-width:480px; border-radius:18px 18px 0 0;
    padding:18px 18px calc(18px + env(safe-area-inset-bottom, 0px)); max-height:86%; overflow-y:auto; touch-action:pan-y;
    -webkit-overflow-scrolling:touch;
  }
  .stk-modal-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:14px; }
  .stk-modal-head .stk-h { margin:0; }
  .stk-modal-close { border:none; background:#f1f3f6; width:32px; height:32px; border-radius:50%; font-size:15px; color:#666; touch-action:manipulation; }
  .stk-share-url { display:flex; gap:6px; margin-bottom:10px; }
  .stk-share-url input { flex:1; min-width:0; padding:9px; border:1.5px solid #dde2ea; border-radius:8px; font-size:12px; background:#fafbfc; color:#555; }
  .stk-qr-box { display:flex; justify-content:center; padding:14px 0 6px; min-height:190px; align-items:center; }
  .stk-imgfile-row { display:flex; align-items:center; gap:8px; }
  .stk-imgfile-row input[type=file] { flex:1; font-size:12px; }
  .stk-card { background:#fff; border-radius:14px; padding:16px; margin-bottom:14px; box-shadow:0 1px 4px rgba(0,0,0,0.08); }
  .stk-h { font-size:16px; font-weight:800; color:#333; margin:0 0 10px; display:flex; align-items:center; gap:6px; }
  .stk-h .stk-badge { font-size:11px; background:#3b6ef6; color:#fff; padding:2px 8px; border-radius:20px; font-weight:700; }
  .stk-desc { font-size:13px; color:#666; line-height:1.6; background:#fff; border-radius:12px; padding:12px 14px; margin-bottom:14px; box-shadow:0 1px 4px rgba(0,0,0,0.06); }
  .stk-card-1 { border-left:5px solid #3b6ef6; }
  .stk-card-1 .stk-badge { background:#3b6ef6; }
  .stk-card-1 .stk-accordion-arrow { color:#3b6ef6; }
  .stk-card-2 { border-left:5px solid #12b76a; }
  .stk-card-2 .stk-h { color:#0d8a53; }
  .stk-card-2 .stk-accordion-arrow { color:#12b76a; }
  .stk-card-3 { border-left:5px solid #f79009; }
  .stk-card-3 .stk-h { color:#b96b04; }
  .stk-card-3 .stk-accordion-arrow { color:#f79009; }
  .stk-countbox { background:#fff7ea; border:1px dashed #f3c98a; border-radius:10px; padding:12px; margin-top:12px; }
  .stk-countbox .stk-h2 { font-size:13px; font-weight:800; color:#b96b04; margin-bottom:8px; }
  .stk-row { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:8px; }
  .stk-btn { touch-action:manipulation; border:1.5px solid #dde2ea; background:#fafbfc; border-radius:10px; padding:10px 12px; font-size:13.5px; font-weight:700; color:#444; cursor:pointer; line-height:1.3; }
  .stk-btn.on { background:#3b6ef6; border-color:#3b6ef6; color:#fff; }
  .stk-btn small { display:block; font-weight:500; font-size:11px; opacity:0.8; margin-top:2px; }
  .stk-preset-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:8px; }
  .stk-field { flex:1; min-width:110px; }
  .stk-field label { display:block; font-size:12px; color:#777; margin-bottom:4px; font-weight:600; }
  .stk-field input[type=number], .stk-field input[type=text], .stk-field select {
    width:100%; padding:9px 8px; border:1.5px solid #dde2ea; border-radius:8px; font-size:14px; touch-action:manipulation;
    -webkit-appearance:none; appearance:none; background:#fff;
  }
  .stk-field input[type=color] { width:44px; height:38px; border:1.5px solid #dde2ea; border-radius:8px; padding:2px; background:#fff; }
  .stk-inline { display:flex; align-items:center; gap:8px; }
  .stk-note { font-size:12px; color:#888; margin-top:6px; line-height:1.5; }
  .stk-sizebox { background:#eef3ff; border:1px dashed #b7c8f7; border-radius:10px; padding:10px 12px; font-size:13px; color:#2b4fbf; font-weight:700; margin-top:8px; }
  textarea.stk-ta { width:100%; min-height:90px; border:1.5px solid #dde2ea; border-radius:8px; padding:10px; font-size:14px; resize:vertical; touch-action:manipulation; }
  .stk-toggle-wrap { display:flex; background:#eef0f4; border-radius:10px; padding:3px; margin-bottom:10px; }
  .stk-toggle-wrap .stk-btn { flex:1; text-align:center; border:none; background:transparent; border-radius:8px; margin:0; }
  .stk-toggle-wrap .stk-btn.on { background:#fff; color:#3b6ef6; box-shadow:0 1px 3px rgba(0,0,0,0.12); }
  .stk-cell-list { display:flex; flex-direction:column; gap:6px; max-height:260px; overflow-y:auto; padding-right:2px; }
  .stk-cell-list .stk-cellrow { display:flex; align-items:center; gap:8px; }
  .stk-cell-list .stk-cellrow span { font-size:11px; color:#999; width:28px; flex-shrink:0; text-align:right; }
  .stk-cell-list input { flex:1; padding:8px; border:1.5px solid #dde2ea; border-radius:8px; font-size:13px; }
  .stk-preview-wrap { overflow-x:auto; background:#dfe3ea; border-radius:10px; padding:14px; display:flex; justify-content:center; }
  #stkPage { background:#fff; box-shadow:0 2px 10px rgba(0,0,0,0.15); position:relative; flex-shrink:0; }
  .stk-label-cell { position:absolute; overflow:hidden; display:flex; align-items:center; justify-content:center; text-align:center; word-break:break-all; }
  .stk-label-cell .stk-lc-text { width:100%; padding:2px; white-space:pre-wrap; }
  .stk-actionbar { display:flex; gap:8px; flex-wrap:wrap; }
  .stk-actionbar .stk-btn { flex:1; min-width:120px; text-align:center; }
  .stk-primary { background:#3b6ef6 !important; border-color:#3b6ef6 !important; color:#fff !important; }
  .stk-ghost { background:#fff !important; }
  .stk-accordion-head { display:flex; justify-content:space-between; align-items:center; cursor:pointer; }
  .stk-accordion-body { display:none; padding-top:10px; font-size:13px; color:#555; line-height:1.7; }
  .stk-accordion-body.open { display:block; }
  .stk-accordion-body ul { margin:0; padding-left:18px; }
  .stk-footer { text-align:center; font-size:11px; color:#aaa; margin-top:18px; }
  .stk-toast { position:fixed; left:50%; bottom:24px; transform:translateX(-50%); background:rgba(30,30,30,0.9); color:#fff; padding:10px 18px; border-radius:20px; font-size:13px; z-index:999999; opacity:0; pointer-events:none; transition:opacity .25s; }
  .stk-toast.show { opacity:1; }
  .stk-tip { position:relative; }
  .stk-tip .stk-bubble {
    position:absolute; bottom:100%; left:50%; transform:translateX(-50%); margin-bottom:8px;
    background:#222; color:#fff; font-size:11px; padding:6px 9px; border-radius:8px; white-space:nowrap;
    opacity:0; pointer-events:none; transition:opacity .15s; z-index:9999;
  }
  .stk-tip .stk-bubble:after { content:''; position:absolute; top:100%; left:50%; transform:translateX(-50%); border:5px solid transparent; border-top-color:#222; }
  .stk-tip.stk-show-bubble .stk-bubble { opacity:1; }
  @media print {
    body * { visibility:hidden; }
    .stk-preview-wrap, .stk-preview-wrap * { visibility:visible; }
    .stk-preview-wrap { position:absolute; left:0; top:0; background:#fff; padding:0; overflow:visible; }
    #stkPage { box-shadow:none; }
  }
&lt;/style&gt;

&lt;div class=&quot;stk-wrap&quot;&gt;

  &lt;div class=&quot;stk-topbar&quot;&gt;
    &lt;div class=&quot;stk-topbar-left&quot;&gt;
      &lt;div class=&quot;stk-topbar-title&quot;&gt; ️ 모두의스티커출력계산기_V0_(260727)&lt;/div&gt;
      &lt;div class=&quot;stk-topbar-sub&quot;&gt;시안(Draft) · 스타트업EX&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;stk-topbar-actions&quot;&gt;
      &lt;button type=&quot;button&quot; class=&quot;stk-tb-btn stk-tb-icon&quot; id=&quot;stkUndoBtn&quot; title=&quot;되돌리기&quot;&gt;↶&lt;/button&gt;
      &lt;button type=&quot;button&quot; class=&quot;stk-tb-btn stk-tb-icon&quot; id=&quot;stkRedoBtn&quot; title=&quot;되살리기&quot;&gt;↷&lt;/button&gt;
      &lt;button type=&quot;button&quot; class=&quot;stk-tb-btn stk-tb-share&quot; id=&quot;stkShareBtn&quot;&gt;공유&lt;/button&gt;
      &lt;button type=&quot;button&quot; class=&quot;stk-tb-btn stk-tb-save&quot; id=&quot;stkTopSaveBtn&quot;&gt;저장&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;stk-desc&quot;&gt;
    A4·B4 등 원하는 용지에 라벨 크기와 여백·간격을 입력하면 몇 칸이 들어가는지 자동 계산하고, 이름표·명함·주소라벨 같은 내용을 칸마다 채워 인쇄까지 할 수 있는 도구예요. 시중 라벨지 규격에 맞춰 바로 인쇄하거나, 원하는 칸수를 직접 입력해 나만의 라벨을 만들 수 있어요.
  &lt;/div&gt;

  &lt;!-- 1. 라벨 프리셋 --&gt;
  &lt;div class=&quot;stk-card stk-card-1&quot;&gt;
    &lt;div class=&quot;stk-accordion-head&quot; id=&quot;stkHead1&quot;&gt;
      &lt;div class=&quot;stk-h&quot;&gt;① 라벨 유형 선택 &lt;span class=&quot;stk-badge&quot;&gt;15종 프리셋&lt;/span&gt;&lt;/div&gt;
      &lt;span class=&quot;stk-accordion-arrow&quot; id=&quot;stkArrow1&quot;&gt;▼&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&quot;stk-accordion-body open&quot; id=&quot;stkBody1&quot;&gt;
      &lt;div class=&quot;stk-preset-grid&quot; id=&quot;stkPresetGrid&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;stk-note&quot;&gt;프리셋을 고르면 라벨 실측 사이즈·여백·간격이 자동 세팅됩니다. 아래 ②에서 직접 수정도 가능해요.&lt;br&gt;&quot;시판 n칸&quot; 프리셋은 실제 문구점에서 파는 A4 라벨지의 공개된 규격(가로×세로 mm)을 참고해 넣은 것으로, 특정 브랜드 제품과의 제휴·후원 관계는 없습니다.&lt;/div&gt;

      &lt;div class=&quot;stk-countbox&quot;&gt;
        &lt;div class=&quot;stk-h2&quot;&gt;  칸수로 직접 만들기&lt;/div&gt;
        &lt;div class=&quot;stk-row&quot; style=&quot;margin-bottom:0;&quot;&gt;
          &lt;div class=&quot;stk-field&quot; style=&quot;max-width:100px;&quot;&gt;
            &lt;label&gt;가로 칸수&lt;/label&gt;
            &lt;input type=&quot;number&quot; id=&quot;stkColsInput&quot; value=&quot;3&quot; min=&quot;1&quot; step=&quot;1&quot;&gt;
          &lt;/div&gt;
          &lt;div class=&quot;stk-field&quot; style=&quot;max-width:100px;&quot;&gt;
            &lt;label&gt;세로 칸수&lt;/label&gt;
            &lt;input type=&quot;number&quot; id=&quot;stkRowsInput&quot; value=&quot;8&quot; min=&quot;1&quot; step=&quot;1&quot;&gt;
          &lt;/div&gt;
          &lt;div class=&quot;stk-field&quot; style=&quot;flex:1.4; align-self:flex-end;&quot;&gt;
            &lt;button type=&quot;button&quot; class=&quot;stk-btn stk-primary&quot; id=&quot;stkApplyCount&quot; style=&quot;width:100%;&quot;&gt;이 칸수로 라벨크기 자동계산&lt;/button&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;stk-note&quot; style=&quot;margin-top:8px;&quot;&gt;지금 ②에 설정된 용지·여백·간격 기준으로, 원하는 칸수에 딱 맞는 라벨 크기를 역산해줍니다.&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 2. 용지/사이즈 직접설정 --&gt;
  &lt;div class=&quot;stk-card stk-card-2&quot;&gt;
    &lt;div class=&quot;stk-accordion-head&quot; id=&quot;stkHead2&quot;&gt;
      &lt;div class=&quot;stk-h&quot;&gt;② 용지 &amp;amp; 라벨 사이즈 (mm)&lt;/div&gt;
      &lt;span class=&quot;stk-accordion-arrow&quot; id=&quot;stkArrow2&quot;&gt;▼&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&quot;stk-accordion-body&quot; id=&quot;stkBody2&quot;&gt;
    &lt;div class=&quot;stk-row&quot;&gt;
      &lt;div class=&quot;stk-field&quot;&gt;
        &lt;label&gt;용지 크기&lt;/label&gt;
        &lt;select id=&quot;stkPaper&quot;&gt;
          &lt;option value=&quot;A4&quot;&gt;A4 (210×297)&lt;/option&gt;
          &lt;option value=&quot;B4&quot;&gt;B4 (257×364)&lt;/option&gt;
          &lt;option value=&quot;A3&quot;&gt;A3 (297×420)&lt;/option&gt;
          &lt;option value=&quot;LETTER&quot;&gt;Letter (215.9×279.4)&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
      &lt;div class=&quot;stk-field&quot;&gt;
        &lt;label&gt;라벨 가로(mm)&lt;/label&gt;
        &lt;input type=&quot;number&quot; id=&quot;stkLW&quot; value=&quot;70&quot; min=&quot;5&quot; step=&quot;0.5&quot;&gt;
      &lt;/div&gt;
      &lt;div class=&quot;stk-field&quot;&gt;
        &lt;label&gt;라벨 세로(mm)&lt;/label&gt;
        &lt;input type=&quot;number&quot; id=&quot;stkLH&quot; value=&quot;30&quot; min=&quot;5&quot; step=&quot;0.5&quot;&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;stk-row&quot;&gt;
      &lt;div class=&quot;stk-field&quot;&gt;
        &lt;label&gt;상하 여백(mm)&lt;/label&gt;
        &lt;input type=&quot;number&quot; id=&quot;stkMY&quot; value=&quot;10&quot; min=&quot;0&quot; step=&quot;0.5&quot;&gt;
      &lt;/div&gt;
      &lt;div class=&quot;stk-field&quot;&gt;
        &lt;label&gt;좌우 여백(mm)&lt;/label&gt;
        &lt;input type=&quot;number&quot; id=&quot;stkMX&quot; value=&quot;8&quot; min=&quot;0&quot; step=&quot;0.5&quot;&gt;
      &lt;/div&gt;
      &lt;div class=&quot;stk-field&quot;&gt;
        &lt;label&gt;가로 간격(mm)&lt;/label&gt;
        &lt;input type=&quot;number&quot; id=&quot;stkGX&quot; value=&quot;2&quot; min=&quot;0&quot; step=&quot;0.5&quot;&gt;
      &lt;/div&gt;
      &lt;div class=&quot;stk-field&quot;&gt;
        &lt;label&gt;세로 간격(mm)&lt;/label&gt;
        &lt;input type=&quot;number&quot; id=&quot;stkGY&quot; value=&quot;2&quot; min=&quot;0&quot; step=&quot;0.5&quot;&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;stk-row&quot;&gt;
      &lt;div class=&quot;stk-field&quot; style=&quot;max-width:180px;&quot;&gt;
        &lt;label&gt;테두리 스타일&lt;/label&gt;
        &lt;select id=&quot;stkBorder&quot;&gt;
          &lt;option value=&quot;none&quot;&gt;없음&lt;/option&gt;
          &lt;option value=&quot;thin&quot; selected&gt;얇은 실선&lt;/option&gt;
          &lt;option value=&quot;thick&quot;&gt;굵은 실선&lt;/option&gt;
          &lt;option value=&quot;dashed&quot;&gt;점선&lt;/option&gt;
          &lt;option value=&quot;round&quot;&gt;둥근 실선&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
      &lt;div class=&quot;stk-field&quot; style=&quot;max-width:120px;&quot;&gt;
        &lt;label&gt;모양&lt;/label&gt;
        &lt;select id=&quot;stkShape&quot;&gt;
          &lt;option value=&quot;rect&quot;&gt;사각형&lt;/option&gt;
          &lt;option value=&quot;circle&quot;&gt;원형&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;stk-sizebox&quot; id=&quot;stkSizeInfo&quot;&gt;계산 중...&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 3. 텍스트/디자인 --&gt;
  &lt;div class=&quot;stk-card stk-card-3&quot;&gt;
    &lt;div class=&quot;stk-accordion-head&quot; id=&quot;stkHead3&quot;&gt;
      &lt;div class=&quot;stk-h&quot;&gt;③ 내용 입력&lt;/div&gt;
      &lt;span class=&quot;stk-accordion-arrow&quot; id=&quot;stkArrow3&quot;&gt;▼&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&quot;stk-accordion-body&quot; id=&quot;stkBody3&quot;&gt;
    &lt;div class=&quot;stk-toggle-wrap&quot;&gt;
      &lt;button type=&quot;button&quot; class=&quot;stk-btn on&quot; id=&quot;stkModeSame&quot;&gt;전체 동일 내용&lt;/button&gt;
      &lt;button type=&quot;button&quot; class=&quot;stk-btn&quot; id=&quot;stkModeEach&quot;&gt;칸마다 다르게&lt;/button&gt;
    &lt;/div&gt;

    &lt;div id=&quot;stkSameBox&quot;&gt;
      &lt;textarea class=&quot;stk-ta&quot; id=&quot;stkSameText&quot; placeholder=&quot;모든 칸에 들어갈 내용 (여러 줄 가능)&quot;&gt;홍길동
010-1234-5678&lt;/textarea&gt;
    &lt;/div&gt;

    &lt;div id=&quot;stkEachBox&quot; style=&quot;display:none;&quot;&gt;
      &lt;div class=&quot;stk-row&quot;&gt;
        &lt;div class=&quot;stk-field&quot; style=&quot;flex:2;&quot;&gt;
          &lt;label&gt;엑셀/메모에서 붙여넣기 (줄바꿈 = 다음 칸)&lt;/label&gt;
          &lt;textarea class=&quot;stk-ta&quot; id=&quot;stkPasteBox&quot; placeholder=&quot;여기에 엑셀 셀 내용을 붙여넣으면 칸마다 자동으로 채워집니다&quot;&gt;&lt;/textarea&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;stk-row&quot;&gt;
        &lt;button type=&quot;button&quot; class=&quot;stk-btn stk-primary&quot; id=&quot;stkApplyPaste&quot;&gt;↓ 붙여넣은 내용 칸에 적용&lt;/button&gt;
        &lt;button type=&quot;button&quot; class=&quot;stk-btn&quot; id=&quot;stkCopyFirst&quot;&gt;1번 칸 내용 전체 복사&lt;/button&gt;
      &lt;/div&gt;
      &lt;div class=&quot;stk-cell-list&quot; id=&quot;stkCellList&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div class=&quot;stk-row&quot; style=&quot;margin-top:10px;&quot;&gt;
      &lt;div class=&quot;stk-field&quot;&gt;
        &lt;label&gt;글자 크기(pt)&lt;/label&gt;
        &lt;input type=&quot;number&quot; id=&quot;stkFontSize&quot; value=&quot;14&quot; min=&quot;6&quot; max=&quot;60&quot;&gt;
      &lt;/div&gt;
      &lt;div class=&quot;stk-field&quot;&gt;
        &lt;label&gt;글자 색&lt;/label&gt;
        &lt;input type=&quot;color&quot; id=&quot;stkFontColor&quot; value=&quot;#111111&quot;&gt;
      &lt;/div&gt;
      &lt;div class=&quot;stk-field&quot;&gt;
        &lt;label&gt;배경 색&lt;/label&gt;
        &lt;input type=&quot;color&quot; id=&quot;stkBgColor&quot; value=&quot;#ffffff&quot;&gt;
      &lt;/div&gt;
      &lt;div class=&quot;stk-field&quot;&gt;
        &lt;label&gt;정렬&lt;/label&gt;
        &lt;select id=&quot;stkAlign&quot;&gt;
          &lt;option value=&quot;center&quot;&gt;가운데&lt;/option&gt;
          &lt;option value=&quot;left&quot;&gt;왼쪽&lt;/option&gt;
          &lt;option value=&quot;right&quot;&gt;오른쪽&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;stk-row&quot;&gt;
      &lt;div class=&quot;stk-field&quot;&gt;
        &lt;label&gt;폰트(서체)&lt;/label&gt;
        &lt;select id=&quot;stkFontFamily&quot;&gt;
          &lt;option value=&quot;system&quot;&gt;기본(고딕)&lt;/option&gt;
          &lt;option value=&quot;serif&quot;&gt;명조체&lt;/option&gt;
          &lt;option value=&quot;round&quot;&gt;둥근고딕&lt;/option&gt;
          &lt;option value=&quot;hand&quot;&gt;손글씨체&lt;/option&gt;
          &lt;option value=&quot;mono&quot;&gt;타자체&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
      &lt;div class=&quot;stk-field&quot;&gt;
        &lt;label&gt;회전(°)&lt;/label&gt;
        &lt;input type=&quot;number&quot; id=&quot;stkRotate&quot; value=&quot;0&quot; min=&quot;-180&quot; max=&quot;180&quot; step=&quot;1&quot;&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;stk-row&quot;&gt;
      &lt;div class=&quot;stk-field&quot; style=&quot;flex:2;&quot;&gt;
        &lt;label&gt;배경 이미지&lt;/label&gt;
        &lt;div class=&quot;stk-imgfile-row&quot;&gt;
          &lt;input type=&quot;file&quot; id=&quot;stkBgImageFile&quot; accept=&quot;image/*&quot;&gt;
          &lt;button type=&quot;button&quot; class=&quot;stk-btn&quot; id=&quot;stkBgImageClear&quot;&gt;제거&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;stk-note&quot;&gt;배경 이미지를 넣으면 위의 &quot;배경 색&quot;은 무시되고 사진이 라벨 전체를 채웁니다. 이미지가 클수록 저장 용량이 커지니 너무 큰 사진은 피해주세요.&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 4. 미리보기 --&gt;
  &lt;div class=&quot;stk-card&quot;&gt;
    &lt;div class=&quot;stk-h&quot;&gt;④ 인쇄 미리보기&lt;/div&gt;
    &lt;div class=&quot;stk-preview-wrap&quot;&gt;
      &lt;div id=&quot;stkPage&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;stk-actionbar&quot; style=&quot;margin-top:12px;&quot;&gt;
      &lt;div class=&quot;stk-tip&quot;&gt;
        &lt;button type=&quot;button&quot; class=&quot;stk-btn stk-primary&quot; id=&quot;stkPrintBtn&quot;&gt; ️ 인쇄하기&lt;/button&gt;
        &lt;div class=&quot;stk-bubble&quot;&gt;브라우저 인쇄창에서 용지크기·배율100%로 설정하세요&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;stk-tip&quot;&gt;
        &lt;button type=&quot;button&quot; class=&quot;stk-btn stk-ghost&quot; id=&quot;stkSaveBtn&quot;&gt;  임시저장&lt;/button&gt;
        &lt;div class=&quot;stk-bubble&quot;&gt;4초마다 자동으로 이 기기에 저장됩니다&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;stk-tip&quot;&gt;
        &lt;button type=&quot;button&quot; class=&quot;stk-btn stk-ghost&quot; id=&quot;stkSaveFileBtn&quot;&gt;  파일로 저장&lt;/button&gt;
        &lt;div class=&quot;stk-bubble&quot;&gt;클릭하면 지금 상태로 복원되는 html파일이 만들어져요&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 5. 사용설명서 --&gt;
  &lt;div class=&quot;stk-card&quot;&gt;
    &lt;div class=&quot;stk-accordion-head&quot; id=&quot;stkGuideHead&quot;&gt;
      &lt;div class=&quot;stk-h&quot; style=&quot;margin:0;&quot;&gt;  사용설명서&lt;/div&gt;
      &lt;span id=&quot;stkGuideArrow&quot;&gt;▼&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&quot;stk-accordion-body&quot; id=&quot;stkGuideBody&quot;&gt;
      &lt;ul&gt;
        &lt;li&gt;① 원하는 라벨 유형(주소라벨, 명함, 명패 등)을 먼저 고르면 실측 사이즈가 자동 입력됩니다. 원하는 칸수(가로×세로)를 직접 입력하면 그 칸수에 딱 맞는 라벨 크기를 역산해줍니다.&lt;/li&gt;
        &lt;li&gt;② 용지·여백·간격을 직접 조정하면 아래 회색 박스에 &quot;가로 n칸 × 세로 n칸 = 총 n개&quot;가 실시간으로 계산됩니다.&lt;/li&gt;
        &lt;li&gt;③ &quot;전체 동일 내용&quot;은 모든 칸에 같은 텍스트, &quot;칸마다 다르게&quot;는 엑셀에서 복사한 내용을 붙여넣으면 줄바꿈 기준으로 각 칸에 자동 배분됩니다.&lt;/li&gt;
        &lt;li&gt;④ 미리보기는 실제 인쇄 비율과 동일하게 mm 단위로 그려집니다. 인쇄 시 브라우저 인쇄 설정에서 배율은 반드시 100%로 두세요.&lt;/li&gt;
        &lt;li&gt;⑤ 입력 내용은 4초마다 이 기기(브라우저)에 자동 저장되며, 다음 방문 시 이어서 작업할 수 있습니다. 상단의 ↶↷ 버튼으로 최근 변경을 되돌리거나 되살릴 수 있어요.&lt;/li&gt;
        &lt;li&gt;⑥ 상단 &quot;공유&quot; 버튼을 누르면 현재 설정을 담은 링크·짧은 URL·QR코드를 만들 수 있어요(배경 이미지는 용량 문제로 링크에는 포함되지 않습니다).&lt;/li&gt;
        &lt;li&gt;⑦ ③ 섹션에서 배경 이미지 업로드, 폰트(서체), 회전 각도를 설정할 수 있습니다. 이미지가 너무 크면 저장·불러오기가 느려질 수 있어요.&lt;/li&gt;
        &lt;li&gt;⑧ &quot;파일로 저장&quot;을 누르면 지금 상태(입력 내용·배경이미지 포함)가 그대로 담긴 html 파일이 다운로드됩니다. 이 파일을 나중에 다시 열면(더블클릭) 자동으로 이 페이지로 이동하면서 내용이 그대로 복원돼요.&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;stk-footer&quot;&gt;스타트업EX · cds1981@naver.com · 0-1.kr (주소는 변경될 수 있음)&lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;stk-toast&quot; id=&quot;stkToast&quot;&gt;&lt;/div&gt;

&lt;div class=&quot;stk-modal-overlay&quot; id=&quot;stkShareOverlay&quot;&gt;
  &lt;div class=&quot;stk-modal&quot;&gt;
    &lt;div class=&quot;stk-modal-head&quot;&gt;
      &lt;div class=&quot;stk-h&quot;&gt;  공유하기&lt;/div&gt;
      &lt;button type=&quot;button&quot; class=&quot;stk-modal-close&quot; id=&quot;stkShareCloseBtn&quot;&gt;✕&lt;/button&gt;
    &lt;/div&gt;
    &lt;div class=&quot;stk-note&quot; style=&quot;margin-top:0;&quot;&gt;현재 설정(용지·라벨크기·내용)을 담은 링크예요. 배경 이미지는 용량 문제로 링크에는 포함되지 않아요.&lt;/div&gt;
    &lt;div class=&quot;stk-share-url&quot; style=&quot;margin-top:10px;&quot;&gt;
      &lt;input type=&quot;text&quot; id=&quot;stkShareUrlBox&quot; readonly&gt;
      &lt;button type=&quot;button&quot; class=&quot;stk-btn stk-primary&quot; id=&quot;stkShareCopyBtn&quot;&gt;복사&lt;/button&gt;
    &lt;/div&gt;
    &lt;div class=&quot;stk-row&quot;&gt;
      &lt;button type=&quot;button&quot; class=&quot;stk-btn&quot; id=&quot;stkShareTinyBtn&quot; style=&quot;flex:1;&quot;&gt;짧은 URL 만들기&lt;/button&gt;
    &lt;/div&gt;
    &lt;div class=&quot;stk-qr-box&quot; id=&quot;stkQRBox&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;stk-row&quot;&gt;
      &lt;button type=&quot;button&quot; class=&quot;stk-btn&quot; id=&quot;stkQRSaveBtn&quot; style=&quot;flex:1;&quot;&gt;QR 이미지 저장(새창)&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/lz-string/1.4.4/lz-string.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js&quot;&gt;&lt;/script&gt;

&lt;script&gt;
(function(){

  // ===== 15종 프리셋 (가로mm, 세로mm, 모양, 설명, 여백/간격 기본값) =====
  var PRESETS = [
    { id:'addr',   name:'주소라벨',      w:100, h:30, shape:'rect',   mx:5,  my:13, gx:2, gy:0  },
    { id:'name',   name:'이름표',        w:90,  h:50, shape:'rect',   mx:8,  my:14, gx:3, gy:3  },
    { id:'card',   name:'명함(가로)',    w:90,  h:50, shape:'rect',   mx:8,  my:14, gx:3, gy:3  },
    { id:'plate',  name:'명패',          w:200, h:60, shape:'rect',   mx:5,  my:20, gx:5, gy:5  },
    { id:'seat',   name:'좌석표(텐트)',  w:90,  h:120,shape:'rect',   mx:15, my:15, gx:5, gy:5  },
    { id:'badge',  name:'출입증',        w:90,  h:54, shape:'rect',   mx:10, my:15, gx:3, gy:3  },
    { id:'cd',     name:'CD/DVD 라벨',   w:118, h:118,shape:'circle', mx:36, my:29, gx:3, gy:3  },
    { id:'parcel', name:'택배송장라벨',  w:100, h:150,shape:'rect',   mx:5,  my:8,  gx:2, gy:2  },
    { id:'price',  name:'상품가격표',    w:40,  h:30, shape:'rect',   mx:5,  my:8,  gx:2, gy:2  },
    { id:'circle', name:'원형라벨(소)',  w:40,  h:40, shape:'circle', mx:5,  my:8,  gx:2, gy:2  },
    { id:'magnet', name:'냉장고자석',    w:80,  h:80, shape:'rect',   mx:15, my:14, gx:5, gy:5  },
    { id:'spine',  name:'책등라벨',      w:15,  h:200,shape:'rect',   mx:10, my:10, gx:3, gy:3  },
    { id:'index',  name:'파일인덱스탭',  w:40,  h:20, shape:'rect',   mx:5,  my:8,  gx:2, gy:2  },
    { id:'qr',     name:'QR/바코드라벨', w:40,  h:40, shape:'rect',   mx:5,  my:8,  gx:2, gy:2  },
    { id:'card2',  name:'초대장(A6)',    w:105, h:148,shape:'rect',   mx:0,  my:0,  gx:2, gy:2  },
    // 시중 판매 라벨지 실측 규격 호환 (모델명은 참고용 표기이며 특정 제품과 무관합니다)
    { id:'mk16',   name:'시판 16칸(주소용)', w:99.1, h:33.9, shape:'rect', mx:5,  my:12.4, gx:2.5, gy:0  },
    { id:'mk14',   name:'시판 14칸(주소용)', w:99.1, h:38.1, shape:'rect', mx:5,  my:16.9, gx:2.5, gy:0  },
    { id:'mk12',   name:'시판 12칸(주소용)', w:100,  h:45,   shape:'rect', mx:5,  my:21,   gx:0,   gy:0  }
  ];

  var PAPER = {
    A4:     { w:210,   h:297   },
    B4:     { w:257,   h:364   },
    A3:     { w:297,   h:420   },
    LETTER: { w:215.9, h:279.4 }
  };

  var state = {
    presetId:'addr', paper:'A4', lw:70, lh:30, mx:8, my:10, gx:2, gy:2,
    border:'thin', shape:'rect', mode:'same', sameText:'홍길동\n010-1234-5678',
    fontSize:14, fontColor:'#111111', bgColor:'#ffffff', align:'center',
    fontFamily:'system', rotate:0, bgImage:null,
    cells:[]
  };

  var FONT_MAP = {
    system: &quot;-apple-system,BlinkMacSystemFont,'Malgun Gothic','Apple SD Gothic Neo',sans-serif&quot;,
    serif: &quot;'Batang','Nanum Myeongjo',serif&quot;,
    round: &quot;'Malgun Gothic','Apple SD Gothic Neo',sans-serif&quot;,
    hand: &quot;'Segoe Script','Comic Sans MS',cursive&quot;,
    mono: &quot;'Courier New',monospace&quot;
  };

  var $ = function(id){ return document.getElementById(id); };
  var _touching = false;
  function bindTap(el, fn){
    el.addEventListener('touchend', function(e){ _touching = true; fn(e); setTimeout(function(){ _touching=false; },350); });
    el.addEventListener('click', function(e){ if(_touching) return; fn(e); });
  }

  function toast(msg){
    var t = $('stkToast'); t.textContent = msg; t.className='stk-toast show';
    clearTimeout(t._tm); t._tm = setTimeout(function(){ t.className='stk-toast'; }, 1600);
  }

  // ---- 프리셋 그리드 렌더 ----
  var presetGrid = $('stkPresetGrid');
  PRESETS.forEach(function(p){
    var b = document.createElement('button');
    b.type='button'; b.className='stk-btn'; b.setAttribute('data-id',p.id);
    b.innerHTML = p.name + '&lt;small&gt;' + p.w + '×' + p.h + 'mm&lt;/small&gt;';
    bindTap(b, function(){ applyPreset(p); });
    presetGrid.appendChild(b);
  });

  function applyPreset(p){
    state.presetId = p.id;
    $('stkLW').value = p.w; $('stkLH').value = p.h;
    $('stkMX').value = p.mx; $('stkMY').value = p.my;
    $('stkGX').value = p.gx; $('stkGY').value = p.gy;
    $('stkShape').value = p.shape;
    Array.prototype.forEach.call(presetGrid.children, function(c){
      c.className = (c.getAttribute('data-id')===p.id) ? 'stk-btn on' : 'stk-btn';
    });
    recalc();
  }

  // ---- 계산 &amp; 렌더 ----
  var MM2PX = 3.4; // 화면 미리보기 배율(인쇄시엔 mm 그대로 사용)

  function recalc(){
    state.paper = $('stkPaper').value;
    state.lw = parseFloat($('stkLW').value) || 10;
    state.lh = parseFloat($('stkLH').value) || 10;
    state.mx = parseFloat($('stkMX').value) || 0;
    state.my = parseFloat($('stkMY').value) || 0;
    state.gx = parseFloat($('stkGX').value) || 0;
    state.gy = parseFloat($('stkGY').value) || 0;
    state.border = $('stkBorder').value;
    state.shape = $('stkShape').value;
    state.fontSize = parseFloat($('stkFontSize').value) || 14;
    state.fontColor = $('stkFontColor').value;
    state.bgColor = $('stkBgColor').value;
    state.align = $('stkAlign').value;
    state.fontFamily = $('stkFontFamily').value;
    state.rotate = parseFloat($('stkRotate').value) || 0;

    var paper = PAPER[state.paper];
    var usableW = paper.w - state.mx*2;
    var usableH = paper.h - state.my*2;
    var cols = Math.max(1, Math.floor((usableW + state.gx) / (state.lw + state.gx)));
    var rows = Math.max(1, Math.floor((usableH + state.gy) / (state.lh + state.gy)));
    var total = cols * rows;

    state.cols = cols; state.rows = rows; state.total = total;

    $('stkSizeInfo').textContent =
      '용지 ' + state.paper + ' (' + paper.w + '×' + paper.h + 'mm) · 라벨 실측 ' + state.lw + '×' + state.lh + 'mm · ' +
      '가로 ' + cols + '칸 × 세로 ' + rows + '칸 = 총 ' + total + '개';

    syncCellsArray();
    renderPage(paper, cols, rows);
    queueHistory();
  }

  function syncCellsArray(){
    var n = state.total;
    while(state.cells.length &lt; n) state.cells.push('');
    if(state.cells.length &gt; n) state.cells.length = n;
  }

  function borderCSS(){
    switch(state.border){
      case 'none': return 'none';
      case 'thin': return '1px solid #999';
      case 'thick': return '2.5px solid #333';
      case 'dashed': return '1.5px dashed #666';
      case 'round': return '1.5px solid #999';
      default: return '1px solid #999';
    }
  }

  function renderPage(paper, cols, rows){
    var page = $('stkPage');
    page.style.width = (paper.w*MM2PX)+'px';
    page.style.height = (paper.h*MM2PX)+'px';
    page.innerHTML = '';

    var lwPx = state.lw*MM2PX, lhPx = state.lh*MM2PX;
    var mxPx = state.mx*MM2PX, myPx = state.my*MM2PX;
    var gxPx = state.gx*MM2PX, gyPx = state.gy*MM2PX;

    var idx = 0;
    for(var r=0; r&lt;rows; r++){
      for(var c=0; c&lt;cols; c++){
        var cell = document.createElement('div');
        cell.className = 'stk-label-cell';
        cell.style.left = (mxPx + c*(lwPx+gxPx)) + 'px';
        cell.style.top = (myPx + r*(lhPx+gyPx)) + 'px';
        cell.style.width = lwPx + 'px';
        cell.style.height = lhPx + 'px';
        cell.style.border = borderCSS();
        cell.style.borderRadius = (state.shape==='circle') ? '50%' : '3px';
        if(state.bgImage){
          cell.style.backgroundImage = 'url(' + state.bgImage + ')';
          cell.style.backgroundSize = 'cover';
          cell.style.backgroundPosition = 'center';
        } else {
          cell.style.background = state.bgColor;
        }
        if(state.rotate){
          cell.style.webkitTransform = 'rotate(' + state.rotate + 'deg)';
          cell.style.transform = 'rotate(' + state.rotate + 'deg)';
        }

        var txtDiv = document.createElement('div');
        txtDiv.className = 'stk-lc-text';
        txtDiv.style.fontSize = state.fontSize + 'px';
        txtDiv.style.color = state.fontColor;
        txtDiv.style.textAlign = state.align;
        txtDiv.style.fontFamily = FONT_MAP[state.fontFamily] || FONT_MAP.system;
        txtDiv.textContent = (state.mode==='same') ? state.sameText : (state.cells[idx] || '');
        cell.appendChild(txtDiv);

        page.appendChild(cell);
        idx++;
      }
    }
    renderCellList();
  }

  function renderCellList(){
    if(state.mode !== 'each') return;
    var box = $('stkCellList');
    box.innerHTML = '';
    for(var i=0;i&lt;state.cells.length;i++){
      (function(i){
        var row = document.createElement('div');
        row.className = 'stk-cellrow';
        var num = document.createElement('span'); num.textContent = (i+1)+'칸';
        var inp = document.createElement('input');
        inp.type='text'; inp.value = state.cells[i] || '';
        inp.addEventListener('input', function(){
          state.cells[i] = inp.value;
          renderPage(PAPER[state.paper], state.cols, state.rows);
          queueHistory();
        });
        row.appendChild(num); row.appendChild(inp);
        box.appendChild(row);
      })(i);
    }
  }

  // ---- 이벤트 바인딩 ----
  ['stkPaper','stkLW','stkLH','stkMX','stkMY','stkGX','stkGY','stkBorder','stkShape',
   'stkFontSize','stkFontColor','stkBgColor','stkAlign','stkFontFamily','stkRotate'].forEach(function(id){
    var el = $(id);
    el.addEventListener('input', recalc);
    el.addEventListener('change', recalc);
  });

  $('stkBgImageFile').addEventListener('change', function(e){
    var file = e.target.files &amp;&amp; e.target.files[0];
    if(!file) return;
    var reader = new FileReader();
    reader.onload = function(ev){
      state.bgImage = ev.target.result;
      renderPage(PAPER[state.paper], state.cols, state.rows);
      queueHistory();
      toast('배경 이미지를 적용했어요');
    };
    reader.readAsDataURL(file);
  });
  bindTap($('stkBgImageClear'), function(){
    state.bgImage = null;
    $('stkBgImageFile').value = '';
    renderPage(PAPER[state.paper], state.cols, state.rows);
    queueHistory();
    toast('배경 이미지를 제거했어요');
  });

  $('stkSameText').addEventListener('input', function(){
    state.sameText = $('stkSameText').value;
    renderPage(PAPER[state.paper], state.cols, state.rows);
    queueHistory();
  });

  bindTap($('stkModeSame'), function(){
    state.mode='same';
    $('stkModeSame').className='stk-btn on'; $('stkModeEach').className='stk-btn';
    $('stkSameBox').style.display='block'; $('stkEachBox').style.display='none';
    renderPage(PAPER[state.paper], state.cols, state.rows);
    queueHistory();
  });
  bindTap($('stkModeEach'), function(){
    state.mode='each';
    $('stkModeEach').className='stk-btn on'; $('stkModeSame').className='stk-btn';
    $('stkSameBox').style.display='none'; $('stkEachBox').style.display='block';
    renderPage(PAPER[state.paper], state.cols, state.rows);
    queueHistory();
  });

  bindTap($('stkApplyPaste'), function(){
    var raw = $('stkPasteBox').value;
    if(!raw){ toast('붙여넣을 내용이 없어요'); return; }
    var lines = raw.split(/\r\n|\r|\n/).map(function(l){ return l.replace(/\t/g,' '); });
    for(var i=0;i&lt;state.cells.length;i++){
      state.cells[i] = lines[i] !== undefined ? lines[i] : '';
    }
    renderCellList();
    renderPage(PAPER[state.paper], state.cols, state.rows);
    queueHistory();
    toast('붙여넣은 내용을 ' + Math.min(lines.length,state.cells.length) + '개 칸에 적용했어요');
  });

  bindTap($('stkApplyCount'), function(){
    var cols = Math.max(1, Math.round(parseFloat($('stkColsInput').value) || 1));
    var rows = Math.max(1, Math.round(parseFloat($('stkRowsInput').value) || 1));
    var paper = PAPER[$('stkPaper').value];
    var mx = parseFloat($('stkMX').value) || 0;
    var my = parseFloat($('stkMY').value) || 0;
    var gx = parseFloat($('stkGX').value) || 0;
    var gy = parseFloat($('stkGY').value) || 0;
    var usableW = paper.w - mx*2;
    var usableH = paper.h - my*2;
    var lw = (usableW - gx*(cols-1)) / cols;
    var lh = (usableH - gy*(rows-1)) / rows;
    if(lw &lt;= 0 || lh &lt;= 0){
      toast('여백/간격이 너무 커서 계산할 수 없어요. ②에서 줄여주세요');
      return;
    }
    $('stkLW').value = lw.toFixed(1);
    $('stkLH').value = lh.toFixed(1);
    Array.prototype.forEach.call(presetGrid.children, function(c){ c.className='stk-btn'; });
    recalc();
    toast('가로 '+cols+'칸 × 세로 '+rows+'칸에 맞춰 라벨크기를 '+lw.toFixed(1)+'×'+lh.toFixed(1)+'mm로 계산했어요');
  });

  bindTap($('stkCopyFirst'), function(){
    var first = state.cells[0] || '';
    for(var i=0;i&lt;state.cells.length;i++) state.cells[i] = first;
    renderCellList();
    renderPage(PAPER[state.paper], state.cols, state.rows);
    queueHistory();
    toast('1번 칸 내용을 전체에 복사했어요');
  });

  bindTap($('stkPrintBtn'), function(){ window.print(); });

  bindTap($('stkSaveBtn'), function(){ saveLocal(); toast('저장했어요'); });
  bindTap($('stkTopSaveBtn'), function(){ saveLocal(); toast('저장했어요'); });
  bindTap($('stkShareBtn'), function(){ openShareModal(); });

  // ---- 되돌리기 / 되살리기 (히스토리) ----
  var historyStack = [];
  var historyIndex = -1;
  var historyTimer = null;
  var restoring = false;

  function snapshotNow(){
    return JSON.stringify({
      paper:state.paper, lw:state.lw, lh:state.lh, mx:state.mx, my:state.my, gx:state.gx, gy:state.gy,
      border:state.border, shape:state.shape, mode:state.mode, sameText:state.sameText,
      fontSize:state.fontSize, fontColor:state.fontColor, bgColor:state.bgColor, align:state.align,
      fontFamily:state.fontFamily, rotate:state.rotate, bgImage:state.bgImage, cells:state.cells
    });
  }

  function queueHistory(){
    if(restoring) return;
    clearTimeout(historyTimer);
    historyTimer = setTimeout(pushHistory, 650);
  }

  function pushHistory(){
    var snap = snapshotNow();
    if(historyStack.length &amp;&amp; historyStack[historyIndex] === snap) return;
    historyStack = historyStack.slice(0, historyIndex+1);
    historyStack.push(snap);
    if(historyStack.length &gt; 30){ historyStack.shift(); }
    historyIndex = historyStack.length - 1;
    updateHistoryBtns();
  }

  function updateHistoryBtns(){
    $('stkUndoBtn').disabled = historyIndex &lt;= 0;
    $('stkRedoBtn').disabled = historyIndex &gt;= historyStack.length - 1;
  }

  function restoreSnapshotStr(str){
    if(!str) return;
    restoring = true;
    applyStateSnapshot(JSON.parse(str));
    restoring = false;
  }

  bindTap($('stkUndoBtn'), function(){
    if(historyIndex &lt;= 0){ toast('더 되돌릴 내용이 없어요'); return; }
    historyIndex--;
    restoreSnapshotStr(historyStack[historyIndex]);
    updateHistoryBtns();
    toast('되돌렸어요');
  });
  bindTap($('stkRedoBtn'), function(){
    if(historyIndex &gt;= historyStack.length - 1){ toast('되살릴 내용이 없어요'); return; }
    historyIndex++;
    restoreSnapshotStr(historyStack[historyIndex]);
    updateHistoryBtns();
    toast('되살렸어요');
  });

  // ---- 공통: 저장된 값으로 화면/상태 동기화 ----
  function applyStateSnapshot(saved){
    if(!saved) return;
    $('stkPaper').value = saved.paper || 'A4';
    $('stkLW').value = saved.lw || 70;
    $('stkLH').value = saved.lh || 30;
    $('stkMX').value = saved.mx || 8;
    $('stkMY').value = saved.my || 10;
    $('stkGX').value = saved.gx != null ? saved.gx : 2;
    $('stkGY').value = saved.gy != null ? saved.gy : 2;
    $('stkBorder').value = saved.border || 'thin';
    $('stkShape').value = saved.shape || 'rect';
    $('stkFontSize').value = saved.fontSize || 14;
    $('stkFontColor').value = saved.fontColor || '#111111';
    $('stkBgColor').value = saved.bgColor || '#ffffff';
    $('stkAlign').value = saved.align || 'center';
    $('stkFontFamily').value = saved.fontFamily || 'system';
    $('stkRotate').value = saved.rotate || 0;
    $('stkSameText').value = saved.sameText || '';
    state.mode = saved.mode || 'same';
    state.cells = saved.cells || [];
    state.bgImage = saved.bgImage || null;
    if(state.mode==='each'){
      $('stkModeEach').className='stk-btn on'; $('stkModeSame').className='stk-btn';
      $('stkSameBox').style.display='none'; $('stkEachBox').style.display='block';
    } else {
      $('stkModeSame').className='stk-btn on'; $('stkModeEach').className='stk-btn';
      $('stkSameBox').style.display='block'; $('stkEachBox').style.display='none';
    }
    recalc();
  }

  // ---- 공유 (LZString URL 파라미터 / TinyURL / QR) ----
  var shareOpen = false;

  function buildShareURL(){
    var exportObj = {
      paper:state.paper, lw:state.lw, lh:state.lh, mx:state.mx, my:state.my, gx:state.gx, gy:state.gy,
      border:state.border, shape:state.shape, mode:state.mode, sameText:state.sameText,
      fontSize:state.fontSize, fontColor:state.fontColor, bgColor:state.bgColor, align:state.align,
      fontFamily:state.fontFamily, rotate:state.rotate, cells:state.cells
    };
    var packed = LZString.compressToEncodedURIComponent(JSON.stringify(exportObj));
    var base = location.origin + location.pathname;
    return base + '?d=' + packed;
  }

  // ---- 파일로 저장 (리다이렉트 html, 이미지 포함) ----
  var FILE_SAVE_LIMIT = 1800000; // 인코딩된 글자수 안전 상한 (구형 브라우저 대비)

  function buildFullPackedString(includeImage){
    var exportObj = {
      paper:state.paper, lw:state.lw, lh:state.lh, mx:state.mx, my:state.my, gx:state.gx, gy:state.gy,
      border:state.border, shape:state.shape, mode:state.mode, sameText:state.sameText,
      fontSize:state.fontSize, fontColor:state.fontColor, bgColor:state.bgColor, align:state.align,
      fontFamily:state.fontFamily, rotate:state.rotate, cells:state.cells,
      bgImage: includeImage ? state.bgImage : null
    };
    return LZString.compressToEncodedURIComponent(JSON.stringify(exportObj));
  }

  function pad2(n){ return (n&lt;10 ? '0' : '') + n; }

  function saveAsRedirectFile(){
    var packed = buildFullPackedString(true);
    var imageDropped = false;
    if(state.bgImage &amp;&amp; packed.length &gt; FILE_SAVE_LIMIT){
      packed = buildFullPackedString(false);
      imageDropped = true;
    }
    var redirectUrl = location.origin + location.pathname + '?d=' + packed;
    var now = new Date();
    var y = String(now.getFullYear()).slice(2), m = pad2(now.getMonth()+1), d = pad2(now.getDate());
    var hh = pad2(now.getHours()), mm = pad2(now.getMinutes());
    var filename = '모두의스티커출력계산기_V0_' + y + m + d + '_' + hh + mm + '.html';

    var html =
      '&lt;p&gt;저장된 내용을 불러오는 중이에요... 자동으로 이동하지 않으면 ' +
      '&lt;a href=&quot;' + redirectUrl + '&quot;&gt;여기를 눌러주세요&lt;/a&gt;.&lt;/p&gt;' +
      '&lt;script&gt;location.href=' + JSON.stringify(redirectUrl) + ';&lt;/' + 'script&gt;';

    try{
      var blob = new Blob([html], {type:'text/html'});
      var url = URL.createObjectURL(blob);
      var a = document.createElement('a');
      a.href = url; a.download = filename;
      document.body.appendChild(a);
      a.click();
      document.body.removeChild(a);
      setTimeout(function(){ URL.revokeObjectURL(url); }, 4000);
      toast(imageDropped ? '이미지가 너무 커서 빼고 저장했어요' : '파일로 저장했어요');
    }catch(e){
      var w = window.open();
      if(w){ w.document.write(html); toast('새창에 파일 내용을 열었어요. 공유 메뉴로 저장해주세요'); }
      else{ toast('파일 저장에 실패했어요'); }
    }
  }

  bindTap($('stkSaveFileBtn'), saveAsRedirectFile);

  function renderQR(url){
    var box = $('stkQRBox');
    box.innerHTML = '';
    try{
      new QRCode(box, { text:url, width:180, height:180, correctLevel: QRCode.CorrectLevel.M });
    }catch(e){}
  }

  function openShareModal(){
    var url = buildShareURL();
    $('stkShareUrlBox').value = url;
    renderQR(url);
    $('stkShareOverlay').className = 'stk-modal-overlay open';
    document.body.classList.add('stk-popup-open');
    document.body.style.overflow = 'hidden';
    shareOpen = true;
    if(location.hash !== '#share'){ location.hash = 'share'; }
  }
  function closeShareModal(){
    $('stkShareOverlay').className = 'stk-modal-overlay';
    document.body.classList.remove('stk-popup-open');
    document.body.style.overflow = '';
    shareOpen = false;
    if(location.hash === '#share'){ location.hash = ''; }
  }
  window.addEventListener('hashchange', function(){
    if(location.hash !== '#share' &amp;&amp; shareOpen){ closeShareModal(); }
  });
  bindTap($('stkShareCloseBtn'), closeShareModal);
  bindTap($('stkShareOverlay'), function(e){ if(e.target === $('stkShareOverlay')) closeShareModal(); });

  bindTap($('stkShareCopyBtn'), function(){
    var box = $('stkShareUrlBox');
    box.removeAttribute('readonly'); box.focus(); box.select();
    var ok = false;
    try{ ok = document.execCommand('copy'); }catch(e){}
    box.setAttribute('readonly','readonly');
    if(navigator.clipboard &amp;&amp; navigator.clipboard.writeText){
      navigator.clipboard.writeText(box.value).then(function(){ toast('복사했어요'); }).catch(function(){});
    } else if(ok){
      toast('복사했어요');
    } else {
      toast('길게 눌러서 직접 복사해주세요');
    }
  });

  bindTap($('stkShareTinyBtn'), function(){
    var longUrl = $('stkShareUrlBox').value;
    toast('짧은 URL 만드는 중...');
    fetch('https://tinyurl.com/api-create.php?url=' + encodeURIComponent(longUrl))
      .then(function(r){ return r.text(); })
      .then(function(short){
        if(short &amp;&amp; short.indexOf('http') === 0){
          $('stkShareUrlBox').value = short;
          renderQR(short);
          toast('짧은 URL을 만들었어요');
        } else {
          toast('짧은 URL 생성 실패, 원래 주소를 사용해주세요');
        }
      })
      .catch(function(){ toast('짧은 URL 생성 실패, 원래 주소를 사용해주세요'); });
  });

  bindTap($('stkQRSaveBtn'), function(){
    var canvas = $('stkQRBox').querySelector('canvas');
    var img = $('stkQRBox').querySelector('img');
    var dataUrl = canvas ? canvas.toDataURL('image/png') : (img ? img.src : null);
    if(!dataUrl){ toast('QR코드를 먼저 생성해주세요'); return; }
    var w = window.open();
    if(w){
      w.document.write('&lt;img src=&quot;'+dataUrl+'&quot; style=&quot;width:100%;max-width:320px;&quot;&gt;');
    } else {
      toast('새창이 차단되었어요. 팝업 허용 후 다시 시도해주세요');
    }
  });

  // ---- 섹션 접기/펼치기 (범용) ----
  function setupAccordion(headId, bodyId, arrowId, startOpen){
    var isOpen = !!startOpen;
    var body = $(bodyId), arrow = $(arrowId);
    body.className = 'stk-accordion-body' + (isOpen ? ' open' : '');
    arrow.textContent = isOpen ? '▲' : '▼';
    bindTap($(headId), function(){
      isOpen = !isOpen;
      body.className = 'stk-accordion-body' + (isOpen ? ' open' : '');
      arrow.textContent = isOpen ? '▲' : '▼';
    });
  }
  setupAccordion('stkHead1','stkBody1','stkArrow1', true);
  setupAccordion('stkHead2','stkBody2','stkArrow2', false);
  setupAccordion('stkHead3','stkBody3','stkArrow3', false);
  setupAccordion('stkGuideHead','stkGuideBody','stkGuideArrow', false);

  // 말풍선(버튼 설명) - 터치/클릭 시 잠깐 표시
  Array.prototype.forEach.call(document.querySelectorAll('.stk-tip'), function(tip){
    var btn = tip.querySelector('.stk-btn');
    bindTap(btn, function(){
      tip.className = 'stk-tip stk-show-bubble';
      setTimeout(function(){ tip.className='stk-tip'; }, 1800);
    });
  });

  // ---- 자동저장 (4초) / localStorage ----
  var STORAGE_KEY = 'stk_sticker_v0';
  function saveLocal(){
    try{
      localStorage.setItem(STORAGE_KEY, JSON.stringify(state));
    }catch(e){}
  }
  function loadLocal(){
    try{
      var raw = localStorage.getItem(STORAGE_KEY);
      if(!raw) return false;
      var saved = JSON.parse(raw);
      if(!saved) return false;
      applyStateSnapshot(saved);
      return true;
    }catch(e){ return false; }
  }
  function loadFromURL(){
    try{
      var qs = new URLSearchParams(location.search);
      var d = qs.get('d');
      if(!d) return false;
      var json = LZString.decompressFromEncodedURIComponent(d);
      if(!json) return false;
      var saved = JSON.parse(json);
      applyStateSnapshot(saved);
      toast('공유된 내용을 불러왔어요');
      return true;
    }catch(e){ return false; }
  }

  restoring = true;
  var loaded = loadFromURL();
  if(!loaded) loaded = loadLocal();
  if(!loaded) recalc();
  restoring = false;
  pushHistory();

  setInterval(saveLocal, 4000);

})();
&lt;/script&gt;</description>
      <category>모두의계산기</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/37</guid>
      <comments>https://0-1.kr/37#entry37comment</comments>
      <pubDate>Thu, 1 Apr 2021 17:32:41 +0900</pubDate>
    </item>
    <item>
      <title>모두의 싸인제작기_(0-1.kr/36)</title>
      <link>https://0-1.kr/36</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot;&gt;
&lt;title&gt;모두의 싸인 제작기&lt;/title&gt;
&lt;style&gt;
  .snmk36-root, .snmk36-root * { box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
  .snmk36-root {
    --ink: #23211d;
    --paper: #ede7da;
    --paper-deep: #e2dac7;
    --seal: #a5312a;
    --seal-deep: #822721;
    --line: #c9beac;
    --muted: #6b6558;
    font-family: -apple-system, BlinkMacSystemFont, &quot;Malgun Gothic&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif;
    background: var(--paper);
    background-image:
      radial-gradient(circle at 20% 15%, rgba(165,49,42,0.05), transparent 40%),
      radial-gradient(circle at 85% 80%, rgba(35,33,29,0.04), transparent 45%);
    color: var(--ink);
    min-height: 100vh;
    padding: 28px 16px 60px;
  }
  .snmk36-wrap { max-width: 640px; margin: 0 auto; }

  .snmk36-head { margin-bottom: 22px; position: relative; }
  .snmk36-eyebrow {
    font-family: Georgia, &quot;Nanum Myeongjo&quot;, serif;
    font-size: 12px; letter-spacing: 0.28em; text-transform: uppercase;
    color: var(--seal); font-weight: 700; margin-bottom: 6px;
  }
  .snmk36-title {
    font-family: &quot;Nanum Myeongjo&quot;, Georgia, serif;
    font-size: 30px; font-weight: 800; line-height: 1.25; margin: 0 0 8px;
    letter-spacing: -0.01em;
  }
  .snmk36-title .snmk36-mark {
    display: inline-flex; align-items: center; justify-content: center;
    width: 30px; height: 30px; border: 2px solid var(--seal); border-radius: 50%;
    color: var(--seal); font-size: 14px; font-weight: 900; vertical-align: middle;
    margin-right: 6px; transform: rotate(-6deg);
  }
  .snmk36-sub { font-size: 13.5px; color: var(--muted); line-height: 1.6; max-width: 46em; }

  .snmk36-tabs { display: flex; gap: 8px; margin: 22px 0 16px; border-bottom: 1px solid var(--line); }
  .snmk36-tab {
    flex: 1; text-align: center; padding: 12px 8px 13px; font-size: 14.5px; font-weight: 700;
    color: var(--muted); background: none; border: none; cursor: pointer;
    border-bottom: 2px solid transparent; margin-bottom: -1px; letter-spacing: -0.01em;
  }
  .snmk36-tab.snmk36-active { color: var(--seal); border-bottom-color: var(--seal); }

  .snmk36-panel { display: none; }
  .snmk36-panel.snmk36-active { display: block; }

  .snmk36-card {
    background: #faf7ee; border: 1px solid var(--line); border-radius: 3px;
    padding: 18px; box-shadow: 0 1px 0 rgba(35,33,29,0.03);
  }
  .snmk36-card-label {
    font-size: 12px; font-weight: 700; color: var(--muted); letter-spacing: 0.04em;
    margin-bottom: 10px; display: flex; align-items: center; justify-content: space-between;
  }
  .snmk36-label-status { font-weight: 400; margin-left: 6px; }
  .snmk36-mini-btns { display: flex; gap: 6px; }
  .snmk36-btn-mini {
    padding: 4px 9px; border-radius: 20px; border: 1px solid var(--line); background: #fff;
    color: var(--muted); font-size: 11px; font-weight: 700; cursor: pointer;
  }
  .snmk36-btn-mini:active { transform: translateY(1px); }
  .snmk36-btns-main .snmk36-btn { padding: 15px 10px; font-size: 14.5px; }

  .snmk36-padwrap { position: relative; }
  .snmk36-pad {
    width: 100%; height: 220px; display: block; border-radius: 2px;
    touch-action: none; cursor: crosshair;
    background-color: #ffffff;
    background-image:
      linear-gradient(to bottom, transparent 88%, var(--seal) 88%, var(--seal) calc(88% + 1px), transparent calc(88% + 1px));
    border: 1px dashed var(--line);
  }
  .snmk36-pad-hint {
    position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%);
    font-size: 13px; color: #b9b2a0; pointer-events: none; letter-spacing: 0.02em;
  }

  .snmk36-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; align-items: center; }
  .snmk36-field { display: flex; flex-direction: column; gap: 5px; font-size: 12px; color: var(--muted); flex: 1; min-width: 110px; }
  .snmk36-field input[type=&quot;range&quot;] { width: 100%; accent-color: var(--seal); }
  .snmk36-field select {
    padding: 7px 8px; border: 1px solid var(--line); border-radius: 2px; background: #fff;
    font-size: 13px; color: var(--ink);
  }
  .snmk36-swatches { display: flex; gap: 6px; }
  .snmk36-swatch {
    width: 22px; height: 22px; border-radius: 50%; border: 2px solid transparent; cursor: pointer;
    box-shadow: inset 0 0 0 1px rgba(0,0,0,0.15);
  }
  .snmk36-swatch.snmk36-selected { border-color: var(--ink); }

  .snmk36-btns { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
  .snmk36-btn {
    flex: 1; min-width: 88px; padding: 11px 10px; border-radius: 2px; border: 1px solid var(--ink);
    background: #fff; color: var(--ink); font-size: 13px; font-weight: 700; cursor: pointer;
    letter-spacing: -0.01em;
  }
  .snmk36-btn:active { transform: translateY(1px); }
  .snmk36-btn.snmk36-ghost { border-color: var(--line); color: var(--muted); font-weight: 600; }
  .snmk36-btn.snmk36-primary { background: var(--seal); border-color: var(--seal); color: #fff; }
  .snmk36-btn.snmk36-primary:hover { background: var(--seal-deep); }

  .snmk36-note { font-size: 11.5px; color: var(--muted); margin-top: 10px; line-height: 1.6; }

  /* stamp preview */
  .snmk36-stamp-stage {
    display: flex; align-items: center; justify-content: center; height: 220px;
    background:
      linear-gradient(45deg, #f3efe4 25%, transparent 25%),
      linear-gradient(-45deg, #f3efe4 25%, transparent 25%),
      linear-gradient(45deg, transparent 75%, #f3efe4 75%),
      linear-gradient(-45deg, transparent 75%, #f3efe4 75%);
    background-size: 16px 16px;
    background-position: 0 0, 0 8px, 8px -8px, -8px 0px;
    background-color: #fff;
    border: 1px dashed var(--line); border-radius: 2px;
  }
  .snmk36-stamp-stage canvas { max-width: 100%; max-height: 100%; }

  .snmk36-out-size { font-size: 12px; color: var(--muted); text-align: right; margin-top: 6px; }
  .snmk36-out-size b { color: var(--ink); }

  .snmk36-btn-trim {
    width: 100%; padding: 11px; margin-top: 14px; border-radius: 2px; border: 1px dashed var(--seal);
    background: #fbf1ea; color: var(--seal-deep); font-size: 13px; font-weight: 700; cursor: pointer;
  }
  .snmk36-btn-trim:active { transform: translateY(1px); }
  .snmk36-trim-preview {
    margin-top: 10px; display: none; align-items: center; justify-content: center;
    min-height: 110px; border: 1px dashed var(--line); border-radius: 2px; padding: 10px;
    background-color: #fff;
    background-image:
      linear-gradient(45deg, #f3efe4 25%, transparent 25%),
      linear-gradient(-45deg, #f3efe4 25%, transparent 25%),
      linear-gradient(45deg, transparent 75%, #f3efe4 75%),
      linear-gradient(-45deg, transparent 75%, #f3efe4 75%);
    background-size: 16px 16px;
    background-position: 0 0, 0 8px, 8px -8px, -8px 0px;
  }
  .snmk36-trim-preview.snmk36-active { display: flex; }
  .snmk36-trim-preview canvas { max-width: 100%; max-height: 190px; }
  .snmk36-trim-note { font-size: 11px; color: var(--seal-deep); margin-top: 6px; text-align: center; }

  .snmk36-foot { margin-top: 26px; font-size: 11.5px; color: var(--muted); text-align: center; }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div class=&quot;snmk36-root&quot;&gt;
&lt;div class=&quot;snmk36-wrap&quot;&gt;

  &lt;div class=&quot;snmk36-head&quot;&gt;
    &lt;div class=&quot;snmk36-eyebrow&quot;&gt;0-1.kr/36&lt;/div&gt;
    &lt;h1 class=&quot;snmk36-title&quot;&gt;&lt;span class=&quot;snmk36-mark&quot;&gt;印&lt;/span&gt;모두의 싸인 제작기&lt;/h1&gt;
    &lt;p class=&quot;snmk36-sub&quot;&gt;종이에 서명해서 사진 찍고 배경 지우던 그 과정을 없앴어요. 손가락이나 마우스로 바로 서명하면 배경이 투명한 이미지로 저장됩니다. 이름 도장도 함께 만들 수 있어요.&lt;/p&gt;
  &lt;/div&gt;

  &lt;div class=&quot;snmk36-tabs&quot;&gt;
    &lt;button class=&quot;snmk36-tab snmk36-active&quot; data-tab=&quot;sign&quot;&gt;서명 만들기&lt;/button&gt;
    &lt;button class=&quot;snmk36-tab&quot; data-tab=&quot;stamp&quot;&gt;도장 만들기&lt;/button&gt;
  &lt;/div&gt;

  &lt;!-- 서명 패널 --&gt;
  &lt;div class=&quot;snmk36-panel snmk36-active&quot; id=&quot;snmk36-panel-sign&quot;&gt;
    &lt;div class=&quot;snmk36-card&quot;&gt;
      &lt;div class=&quot;snmk36-card-label&quot;&gt;
        &lt;span&gt;서명 캔버스&lt;span id=&quot;snmk36-sign-status&quot; class=&quot;snmk36-label-status&quot;&gt;비어 있음&lt;/span&gt;&lt;/span&gt;
        &lt;span class=&quot;snmk36-mini-btns&quot;&gt;
          &lt;button class=&quot;snmk36-btn-mini&quot; id=&quot;snmk36-sign-undo&quot;&gt;되돌리기&lt;/button&gt;
          &lt;button class=&quot;snmk36-btn-mini&quot; id=&quot;snmk36-sign-clear&quot;&gt;지우기&lt;/button&gt;
        &lt;/span&gt;
      &lt;/div&gt;
      &lt;div class=&quot;snmk36-padwrap&quot;&gt;
        &lt;canvas class=&quot;snmk36-pad&quot; id=&quot;snmk36-sign-canvas&quot;&gt;&lt;/canvas&gt;
        &lt;div class=&quot;snmk36-pad-hint&quot; id=&quot;snmk36-sign-hint&quot;&gt;여기에 서명해 주세요&lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;snmk36-row&quot;&gt;
        &lt;div class=&quot;snmk36-field&quot;&gt;
          &lt;span&gt;펜 색&lt;/span&gt;
          &lt;div class=&quot;snmk36-swatches&quot; id=&quot;snmk36-sign-colors&quot;&gt;
            &lt;span class=&quot;snmk36-swatch snmk36-selected&quot; style=&quot;background:#1c1c1c&quot; data-color=&quot;#1c1c1c&quot;&gt;&lt;/span&gt;
            &lt;span class=&quot;snmk36-swatch&quot; style=&quot;background:#1c3d8f&quot; data-color=&quot;#1c3d8f&quot;&gt;&lt;/span&gt;
            &lt;span class=&quot;snmk36-swatch&quot; style=&quot;background:#a5312a&quot; data-color=&quot;#a5312a&quot;&gt;&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;snmk36-field&quot;&gt;
          &lt;span&gt;펜 굵기 &lt;b id=&quot;snmk36-sign-width-val&quot;&gt;3&lt;/b&gt;px&lt;/span&gt;
          &lt;input type=&quot;range&quot; id=&quot;snmk36-sign-width&quot; min=&quot;1&quot; max=&quot;8&quot; value=&quot;3&quot; step=&quot;1&quot;&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;button class=&quot;snmk36-btn-trim&quot; id=&quot;snmk36-sign-trim&quot;&gt;저장 전 미리보기(여분제거)&lt;/button&gt;
      &lt;div class=&quot;snmk36-trim-preview&quot; id=&quot;snmk36-sign-trim-preview&quot;&gt;
        &lt;canvas id=&quot;snmk36-sign-trim-canvas&quot;&gt;&lt;/canvas&gt;
      &lt;/div&gt;

      &lt;div class=&quot;snmk36-btns snmk36-btns-main&quot;&gt;
        &lt;button class=&quot;snmk36-btn snmk36-primary&quot; id=&quot;snmk36-sign-save-png&quot;&gt;PNG 저장 (투명)&lt;/button&gt;
        &lt;button class=&quot;snmk36-btn&quot; id=&quot;snmk36-sign-save-jpg&quot;&gt;JPG 저장 (흰배경)&lt;/button&gt;
      &lt;/div&gt;

      &lt;div class=&quot;snmk36-row&quot; style=&quot;margin-top:16px;&quot;&gt;
        &lt;div class=&quot;snmk36-field&quot;&gt;
          &lt;span&gt;저장 크기 &lt;b id=&quot;snmk36-sign-scale-val&quot;&gt;100&lt;/b&gt;%&lt;/span&gt;
          &lt;input type=&quot;range&quot; id=&quot;snmk36-sign-scale&quot; min=&quot;30&quot; max=&quot;100&quot; value=&quot;100&quot; step=&quot;5&quot;&gt;
        &lt;/div&gt;
        &lt;div class=&quot;snmk36-field&quot;&gt;
          &lt;span&gt;JPG 화질 &lt;b id=&quot;snmk36-sign-quality-val&quot;&gt;80&lt;/b&gt;%&lt;/span&gt;
          &lt;input type=&quot;range&quot; id=&quot;snmk36-sign-quality&quot; min=&quot;30&quot; max=&quot;100&quot; value=&quot;80&quot; step=&quot;5&quot;&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;snmk36-out-size&quot;&gt;예상 용량 &lt;b id=&quot;snmk36-sign-filesize&quot;&gt;-&lt;/b&gt;&lt;/div&gt;

      &lt;div class=&quot;snmk36-note&quot;&gt;TIP · 저장 크기를 낮추면 파일 용량이 작아져 온라인 서식에 첨부하기 편해요. 도장처럼 도장란이 작은 서류는 60~70% 정도면 충분해요.&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 도장 패널 --&gt;
  &lt;div class=&quot;snmk36-panel&quot; id=&quot;snmk36-panel-stamp&quot;&gt;
    &lt;div class=&quot;snmk36-card&quot;&gt;
      &lt;div class=&quot;snmk36-card-label&quot;&gt;&lt;span&gt;도장 미리보기&lt;/span&gt;&lt;/div&gt;
      &lt;div class=&quot;snmk36-stamp-stage&quot;&gt;
        &lt;canvas id=&quot;snmk36-stamp-canvas&quot; width=&quot;300&quot; height=&quot;300&quot;&gt;&lt;/canvas&gt;
      &lt;/div&gt;

      &lt;div class=&quot;snmk36-row&quot;&gt;
        &lt;div class=&quot;snmk36-field&quot; style=&quot;flex:2; min-width:160px;&quot;&gt;
          &lt;span&gt;이름 (한글·한자 모두 가능, 2~4자 권장)&lt;/span&gt;
          &lt;input type=&quot;text&quot; id=&quot;snmk36-stamp-name&quot; maxlength=&quot;8&quot; value=&quot;洪吉童&quot;
            style=&quot;padding:8px; border:1px solid var(--line); border-radius:2px; font-size:14px;&quot;&gt;
        &lt;/div&gt;
        &lt;div class=&quot;snmk36-field&quot;&gt;
          &lt;span&gt;모양&lt;/span&gt;
          &lt;select id=&quot;snmk36-stamp-shape&quot;&gt;
            &lt;option value=&quot;circle&quot;&gt;원형&lt;/option&gt;
            &lt;option value=&quot;square&quot;&gt;사각&lt;/option&gt;
            &lt;option value=&quot;rounded&quot;&gt;둥근 사각&lt;/option&gt;
          &lt;/select&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;snmk36-row&quot;&gt;
        &lt;div class=&quot;snmk36-field&quot;&gt;
          &lt;span&gt;서체&lt;/span&gt;
          &lt;select id=&quot;snmk36-stamp-font&quot;&gt;
            &lt;option value=&quot;'Nanum Myeongjo', serif&quot;&gt;나눔명조&lt;/option&gt;
            &lt;option value=&quot;'Nanum Gothic', sans-serif&quot;&gt;나눔고딕&lt;/option&gt;
            &lt;option value=&quot;'Song Myung', serif&quot;&gt;송명체 (전통 인감풍)&lt;/option&gt;
            &lt;option value=&quot;'Black Han Sans', sans-serif&quot;&gt;black han sans (두꺼운 도장체)&lt;/option&gt;
            &lt;option value=&quot;'Do Hyeon', sans-serif&quot;&gt;도현체&lt;/option&gt;
            &lt;option value=&quot;'Nanum Brush Script', cursive&quot;&gt;나눔붓글씨&lt;/option&gt;
            &lt;option value=&quot;'Nanum Pen Script', cursive&quot;&gt;나눔손글씨&lt;/option&gt;
            &lt;option value=&quot;'East Sea Dokdo', cursive&quot;&gt;동해독도체&lt;/option&gt;
          &lt;/select&gt;
        &lt;/div&gt;
        &lt;div class=&quot;snmk36-field&quot;&gt;
          &lt;span&gt;도장 색&lt;/span&gt;
          &lt;div class=&quot;snmk36-swatches&quot; id=&quot;snmk36-stamp-colors&quot;&gt;
            &lt;span class=&quot;snmk36-swatch snmk36-selected&quot; style=&quot;background:#a5312a&quot; data-color=&quot;#a5312a&quot;&gt;&lt;/span&gt;
            &lt;span class=&quot;snmk36-swatch&quot; style=&quot;background:#1c1c1c&quot; data-color=&quot;#1c1c1c&quot;&gt;&lt;/span&gt;
            &lt;span class=&quot;snmk36-swatch&quot; style=&quot;background:#1c3d8f&quot; data-color=&quot;#1c3d8f&quot;&gt;&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;snmk36-row&quot;&gt;
        &lt;div class=&quot;snmk36-field&quot;&gt;
          &lt;span&gt;테두리 두께 &lt;b id=&quot;snmk36-stamp-border-val&quot;&gt;8&lt;/b&gt;px&lt;/span&gt;
          &lt;input type=&quot;range&quot; id=&quot;snmk36-stamp-border&quot; min=&quot;0&quot; max=&quot;16&quot; value=&quot;8&quot; step=&quot;1&quot;&gt;
        &lt;/div&gt;
        &lt;div class=&quot;snmk36-field&quot;&gt;
          &lt;span&gt;글자 배치&lt;/span&gt;
          &lt;select id=&quot;snmk36-stamp-layout&quot;&gt;
            &lt;option value=&quot;row&quot;&gt;가로&lt;/option&gt;
            &lt;option value=&quot;col&quot;&gt;세로&lt;/option&gt;
          &lt;/select&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;button class=&quot;snmk36-btn-trim&quot; id=&quot;snmk36-stamp-trim&quot;&gt;저장 전 미리보기(여분제거)&lt;/button&gt;
      &lt;div class=&quot;snmk36-trim-preview&quot; id=&quot;snmk36-stamp-trim-preview&quot;&gt;
        &lt;canvas id=&quot;snmk36-stamp-trim-canvas&quot;&gt;&lt;/canvas&gt;
      &lt;/div&gt;

      &lt;div class=&quot;snmk36-btns&quot;&gt;
        &lt;button class=&quot;snmk36-btn snmk36-primary&quot; id=&quot;snmk36-stamp-save-png&quot;&gt;PNG 저장 (투명)&lt;/button&gt;
        &lt;button class=&quot;snmk36-btn&quot; id=&quot;snmk36-stamp-save-jpg&quot;&gt;JPG 저장 (흰배경)&lt;/button&gt;
      &lt;/div&gt;

      &lt;div class=&quot;snmk36-note&quot;&gt;TIP · 한자는 나눔명조·나눔고딕·송명체·black han sans·도현체에서 정상적으로 표시돼요. 손글씨/붓글씨 계열은 한자 글꼴이 없어 시스템 기본 서체로 대체될 수 있어요.&lt;br&gt;실제 인감·관인처럼 보이는 기관명, 로고, 특정 서체 그대로 베끼기는 피하고 이름 텍스트만으로 구성돼요. 개인 서류용 약식 도장 용도로만 사용해 주세요.&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;snmk36-foot&quot;&gt;0-1.kr/36 · 모두의 싸인 제작기 — 서명은 저장되지 않고 브라우저에서만 처리됩니다.&lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Nanum+Myeongjo:wght@700;800&amp;family=Nanum+Gothic:wght@700&amp;family=Nanum+Pen+Script&amp;family=Nanum+Brush+Script&amp;family=Song+Myung&amp;family=Black+Han+Sans&amp;family=Do+Hyeon&amp;family=East+Sea+Dokdo&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;

&lt;script&gt;
(function () {
  &quot;use strict&quot;;

  /* ---------- 탭 전환 ---------- */
  var tabs = document.querySelectorAll(&quot;.snmk36-tab&quot;);
  var panels = {
    sign: document.getElementById(&quot;snmk36-panel-sign&quot;),
    stamp: document.getElementById(&quot;snmk36-panel-stamp&quot;)
  };
  for (var t = 0; t &lt; tabs.length; t++) {
    tabs[t].addEventListener(&quot;click&quot;, (function (el) {
      return function () {
        for (var i = 0; i &lt; tabs.length; i++) { tabs[i].className = &quot;snmk36-tab&quot;; }
        el.className = &quot;snmk36-tab snmk36-active&quot;;
        panels.sign.className = &quot;snmk36-panel&quot;;
        panels.stamp.className = &quot;snmk36-panel&quot;;
        panels[el.getAttribute(&quot;data-tab&quot;)].className = &quot;snmk36-panel snmk36-active&quot;;
      };
    })(tabs[t]));
  }

  /* ---------- 서명 캔버스 ---------- */
  var signCanvas = document.getElementById(&quot;snmk36-sign-canvas&quot;);
  var signCtx = signCanvas.getContext(&quot;2d&quot;);
  var signHint = document.getElementById(&quot;snmk36-sign-hint&quot;);
  var signStatus = document.getElementById(&quot;snmk36-sign-status&quot;);
  var signDrawing = false;
  var signHasInk = false;
  var signLast = null;
  var signColor = &quot;#1c1c1c&quot;;
  var signWidth = 3;
  var signHistory = [];
  var signTrimmedCanvas = null;

  function getBBox(canvas) {
    var w = canvas.width, h = canvas.height;
    var ctx2 = canvas.getContext(&quot;2d&quot;);
    var data;
    try { data = ctx2.getImageData(0, 0, w, h).data; } catch (e) { return null; }
    var minX = w, minY = h, maxX = -1, maxY = -1;
    for (var y = 0; y &lt; h; y++) {
      var rowStart = y * w * 4;
      for (var x = 0; x &lt; w; x++) {
        var a = data[rowStart + x * 4 + 3];
        if (a &gt; 10) {
          if (x &lt; minX) { minX = x; }
          if (x &gt; maxX) { maxX = x; }
          if (y &lt; minY) { minY = y; }
          if (y &gt; maxY) { maxY = y; }
        }
      }
    }
    if (maxX &lt; 0) { return null; }
    return { x: minX, y: minY, w: (maxX - minX + 1), h: (maxY - minY + 1) };
  }

  function buildTrimmedCanvas(sourceCanvas, paddingRatio) {
    var box = getBBox(sourceCanvas);
    if (!box) { return null; }
    var pad = Math.round(Math.max(box.w, box.h) * paddingRatio);
    var sx = Math.max(0, box.x - pad);
    var sy = Math.max(0, box.y - pad);
    var ex = Math.min(sourceCanvas.width, box.x + box.w + pad);
    var ey = Math.min(sourceCanvas.height, box.y + box.h + pad);
    var out = document.createElement(&quot;canvas&quot;);
    out.width = ex - sx;
    out.height = ey - sy;
    var octx = out.getContext(&quot;2d&quot;);
    octx.drawImage(sourceCanvas, sx, sy, out.width, out.height, 0, 0, out.width, out.height);
    return out;
  }

  function showTrimPreview(wrap, previewCanvas, trimmed) {
    previewCanvas.width = trimmed.width;
    previewCanvas.height = trimmed.height;
    var pctx = previewCanvas.getContext(&quot;2d&quot;);
    pctx.clearRect(0, 0, trimmed.width, trimmed.height);
    pctx.drawImage(trimmed, 0, 0);
    wrap.className = &quot;snmk36-trim-preview snmk36-active&quot;;
  }

  function hideTrimPreview(wrap) {
    wrap.className = &quot;snmk36-trim-preview&quot;;
  }

  function resizeSignCanvas() {
    var rect = signCanvas.getBoundingClientRect();
    var dpr = window.devicePixelRatio || 1;
    var prevData = null;
    if (signCanvas.width &gt; 0) {
      try { prevData = signCtx.getImageData(0, 0, signCanvas.width, signCanvas.height); } catch (e) {}
    }
    signCanvas.width = rect.width * dpr;
    signCanvas.height = rect.height * dpr;
    signCtx.setTransform(dpr, 0, 0, dpr, 0, 0);
    signCtx.lineCap = &quot;round&quot;;
    signCtx.lineJoin = &quot;round&quot;;
  }
  resizeSignCanvas();
  window.addEventListener(&quot;resize&quot;, function () {
    signHistory = [];
    resizeSignCanvas();
  });

  function getPos(e, canvas) {
    var rect = canvas.getBoundingClientRect();
    var x, y;
    if (e.touches &amp;&amp; e.touches.length &gt; 0) {
      x = e.touches[0].clientX - rect.left;
      y = e.touches[0].clientY - rect.top;
    } else {
      x = e.clientX - rect.left;
      y = e.clientY - rect.top;
    }
    return { x: x, y: y };
  }

  function pushHistory() {
    try {
      signHistory.push(signCtx.getImageData(0, 0, signCanvas.width, signCanvas.height));
      if (signHistory.length &gt; 15) { signHistory.shift(); }
    } catch (e) {}
  }

  function signStart(e) {
    e.preventDefault();
    pushHistory();
    signDrawing = true;
    signLast = getPos(e, signCanvas);
    signHint.style.display = &quot;none&quot;;
    if (signTrimmedCanvas) {
      signTrimmedCanvas = null;
      hideTrimPreview(document.getElementById(&quot;snmk36-sign-trim-preview&quot;));
    }
  }
  function signMove(e) {
    if (!signDrawing) { return; }
    e.preventDefault();
    var pos = getPos(e, signCanvas);
    signCtx.strokeStyle = signColor;
    signCtx.lineWidth = signWidth;
    signCtx.beginPath();
    signCtx.moveTo(signLast.x, signLast.y);
    signCtx.lineTo(pos.x, pos.y);
    signCtx.stroke();
    signLast = pos;
    signHasInk = true;
    signStatus.textContent = &quot;작성 중&quot;;
  }
  function signEnd(e) {
    if (signDrawing) { e &amp;&amp; e.preventDefault(); }
    signDrawing = false;
    if (signHasInk) { signStatus.textContent = &quot;서명 완료&quot;; }
  }

  signCanvas.addEventListener(&quot;mousedown&quot;, signStart);
  signCanvas.addEventListener(&quot;mousemove&quot;, signMove);
  window.addEventListener(&quot;mouseup&quot;, signEnd);
  signCanvas.addEventListener(&quot;touchstart&quot;, signStart, { passive: false });
  signCanvas.addEventListener(&quot;touchmove&quot;, signMove, { passive: false });
  signCanvas.addEventListener(&quot;touchend&quot;, signEnd, { passive: false });

  var signColorSwatches = document.querySelectorAll(&quot;#snmk36-sign-colors .snmk36-swatch&quot;);
  for (var sc = 0; sc &lt; signColorSwatches.length; sc++) {
    signColorSwatches[sc].addEventListener(&quot;click&quot;, (function (el) {
      return function () {
        for (var i = 0; i &lt; signColorSwatches.length; i++) { signColorSwatches[i].className = &quot;snmk36-swatch&quot;; }
        el.className = &quot;snmk36-swatch snmk36-selected&quot;;
        signColor = el.getAttribute(&quot;data-color&quot;);
      };
    })(signColorSwatches[sc]));
  }

  var signWidthInput = document.getElementById(&quot;snmk36-sign-width&quot;);
  var signWidthVal = document.getElementById(&quot;snmk36-sign-width-val&quot;);
  signWidthInput.addEventListener(&quot;input&quot;, function () {
    signWidth = parseInt(signWidthInput.value, 10);
    signWidthVal.textContent = signWidthInput.value;
  });

  document.getElementById(&quot;snmk36-sign-clear&quot;).addEventListener(&quot;click&quot;, function () {
    pushHistory();
    signCtx.clearRect(0, 0, signCanvas.width, signCanvas.height);
    signHasInk = false;
    signHint.style.display = &quot;block&quot;;
    signStatus.textContent = &quot;비어 있음&quot;;
    signTrimmedCanvas = null;
    hideTrimPreview(document.getElementById(&quot;snmk36-sign-trim-preview&quot;));
    refreshSignPreviewSize();
  });

  document.getElementById(&quot;snmk36-sign-undo&quot;).addEventListener(&quot;click&quot;, function () {
    if (signHistory.length === 0) { return; }
    var data = signHistory.pop();
    signCtx.putImageData(data, 0, 0);
    signTrimmedCanvas = null;
    hideTrimPreview(document.getElementById(&quot;snmk36-sign-trim-preview&quot;));
    refreshSignPreviewSize();
  });

  var signScaleInput = document.getElementById(&quot;snmk36-sign-scale&quot;);
  var signScaleVal = document.getElementById(&quot;snmk36-sign-scale-val&quot;);
  var signQualityInput = document.getElementById(&quot;snmk36-sign-quality&quot;);
  var signQualityVal = document.getElementById(&quot;snmk36-sign-quality-val&quot;);
  var signFilesizeLabel = document.getElementById(&quot;snmk36-sign-filesize&quot;);

  function estimateSize(dataUrl) {
    var base64 = dataUrl.split(&quot;,&quot;)[1] || &quot;&quot;;
    var bytes = base64.length * 0.75;
    if (bytes &gt; 1024 * 1024) { return (bytes / (1024 * 1024)).toFixed(2) + &quot; MB&quot;; }
    return Math.round(bytes / 1024) + &quot; KB&quot;;
  }

  function buildExportCanvas(fillWhite) {
    var source = signTrimmedCanvas || signCanvas;
    var scale = parseInt(signScaleInput.value, 10) / 100;
    var out = document.createElement(&quot;canvas&quot;);
    out.width = Math.max(1, Math.round(source.width * scale));
    out.height = Math.max(1, Math.round(source.height * scale));
    var octx = out.getContext(&quot;2d&quot;);
    if (fillWhite) {
      octx.fillStyle = &quot;#ffffff&quot;;
      octx.fillRect(0, 0, out.width, out.height);
    }
    octx.drawImage(source, 0, 0, out.width, out.height);
    return out;
  }

  function refreshSignPreviewSize() {
    var out = buildExportCanvas(false);
    var url = out.toDataURL(&quot;image/png&quot;);
    signFilesizeLabel.textContent = estimateSize(url);
  }
  signScaleInput.addEventListener(&quot;input&quot;, function () {
    signScaleVal.textContent = signScaleInput.value;
    refreshSignPreviewSize();
  });
  signQualityInput.addEventListener(&quot;input&quot;, function () {
    signQualityVal.textContent = signQualityInput.value;
  });

  document.getElementById(&quot;snmk36-sign-trim&quot;).addEventListener(&quot;click&quot;, function () {
    if (!signHasInk) { alert(&quot;먼저 서명을 해 주세요.&quot;); return; }
    var trimmed = buildTrimmedCanvas(signCanvas, 0.04);
    if (!trimmed) { alert(&quot;인식할 서명이 없어요.&quot;); return; }
    signTrimmedCanvas = trimmed;
    showTrimPreview(document.getElementById(&quot;snmk36-sign-trim-preview&quot;), document.getElementById(&quot;snmk36-sign-trim-canvas&quot;), trimmed);
    refreshSignPreviewSize();
  });

  function download(dataUrl, filename) {
    var a = document.createElement(&quot;a&quot;);
    a.href = dataUrl;
    a.download = filename;
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
  }

  document.getElementById(&quot;snmk36-sign-save-png&quot;).addEventListener(&quot;click&quot;, function () {
    if (!signHasInk) { alert(&quot;먼저 서명을 해 주세요.&quot;); return; }
    var out = buildExportCanvas(false);
    download(out.toDataURL(&quot;image/png&quot;), &quot;signature.png&quot;);
  });
  document.getElementById(&quot;snmk36-sign-save-jpg&quot;).addEventListener(&quot;click&quot;, function () {
    if (!signHasInk) { alert(&quot;먼저 서명을 해 주세요.&quot;); return; }
    var out = buildExportCanvas(true);
    var q = parseInt(signQualityInput.value, 10) / 100;
    download(out.toDataURL(&quot;image/jpeg&quot;, q), &quot;signature.jpg&quot;);
  });

  /* ---------- 도장 캔버스 ---------- */
  var stampCanvas = document.getElementById(&quot;snmk36-stamp-canvas&quot;);
  var stampCtx = stampCanvas.getContext(&quot;2d&quot;);
  var stampColor = &quot;#a5312a&quot;;
  var stampTrimmedCanvas = null;

  var stampColorSwatches = document.querySelectorAll(&quot;#snmk36-stamp-colors .snmk36-swatch&quot;);
  for (var kc = 0; kc &lt; stampColorSwatches.length; kc++) {
    stampColorSwatches[kc].addEventListener(&quot;click&quot;, (function (el) {
      return function () {
        for (var i = 0; i &lt; stampColorSwatches.length; i++) { stampColorSwatches[i].className = &quot;snmk36-swatch&quot;; }
        el.className = &quot;snmk36-swatch snmk36-selected&quot;;
        stampColor = el.getAttribute(&quot;data-color&quot;);
        drawStamp();
      };
    })(stampColorSwatches[kc]));
  }

  var stampNameInput = document.getElementById(&quot;snmk36-stamp-name&quot;);
  var stampShapeInput = document.getElementById(&quot;snmk36-stamp-shape&quot;);
  var stampFontInput = document.getElementById(&quot;snmk36-stamp-font&quot;);
  var stampBorderInput = document.getElementById(&quot;snmk36-stamp-border&quot;);
  var stampBorderVal = document.getElementById(&quot;snmk36-stamp-border-val&quot;);
  var stampLayoutInput = document.getElementById(&quot;snmk36-stamp-layout&quot;);

  function drawStamp() {
    if (stampTrimmedCanvas) {
      stampTrimmedCanvas = null;
      var stampTrimWrap = document.getElementById(&quot;snmk36-stamp-trim-preview&quot;);
      if (stampTrimWrap) { hideTrimPreview(stampTrimWrap); }
    }
    var W = stampCanvas.width, H = stampCanvas.height;
    stampCtx.clearRect(0, 0, W, H);

    var name = (stampNameInput.value || &quot;&quot;).trim() || &quot;이름&quot;;
    var shape = stampShapeInput.value;
    var borderW = parseInt(stampBorderInput.value, 10);
    var layout = stampLayoutInput.value;
    var pad = 18;

    stampCtx.save();
    stampCtx.strokeStyle = stampColor;
    stampCtx.lineWidth = borderW;
    stampCtx.fillStyle = &quot;transparent&quot;;

    if (borderW &gt; 0) {
      if (shape === &quot;circle&quot;) {
        stampCtx.beginPath();
        stampCtx.arc(W / 2, H / 2, (W - pad * 2 - borderW) / 2, 0, Math.PI * 2);
        stampCtx.stroke();
      } else if (shape === &quot;square&quot;) {
        stampCtx.strokeRect(pad + borderW / 2, pad + borderW / 2, W - pad * 2 - borderW, H - pad * 2 - borderW);
      } else {
        roundRectStroke(stampCtx, pad + borderW / 2, pad + borderW / 2, W - pad * 2 - borderW, H - pad * 2 - borderW, 24);
      }
    }

    stampCtx.fillStyle = stampColor;
    stampCtx.textAlign = &quot;center&quot;;
    stampCtx.textBaseline = &quot;middle&quot;;

    var chars = name.split(&quot;&quot;);
    var n = chars.length;

    if (layout === &quot;col&quot; &amp;&amp; n &gt; 1) {
      var fontSizeCol = Math.min(70, (H - pad * 2 - borderW * 2 - 20) / n);
      stampCtx.font = &quot;700 &quot; + fontSizeCol + &quot;px &quot; + stampFontInput.value;
      var totalH = fontSizeCol * n;
      var startY = H / 2 - totalH / 2 + fontSizeCol / 2;
      for (var i = 0; i &lt; n; i++) {
        stampCtx.fillText(chars[i], W / 2, startY + i * fontSizeCol);
      }
    } else {
      var fontSizeRow = n &lt;= 2 ? 78 : n === 3 ? 60 : 46;
      stampCtx.font = &quot;700 &quot; + fontSizeRow + &quot;px &quot; + stampFontInput.value;
      stampCtx.fillText(name, W / 2, H / 2 + 4);
    }

    stampCtx.restore();
  }

  function roundRectStroke(ctx, x, y, w, h, r) {
    ctx.beginPath();
    ctx.moveTo(x + r, y);
    ctx.arcTo(x + w, y, x + w, y + h, r);
    ctx.arcTo(x + w, y + h, x, y + h, r);
    ctx.arcTo(x, y + h, x, y, r);
    ctx.arcTo(x, y, x + w, y, r);
    ctx.closePath();
    ctx.stroke();
  }

  [stampNameInput, stampShapeInput, stampFontInput, stampLayoutInput].forEach(function (el) {
    el.addEventListener(&quot;input&quot;, drawStamp);
    el.addEventListener(&quot;change&quot;, drawStamp);
  });
  stampBorderInput.addEventListener(&quot;input&quot;, function () {
    stampBorderVal.textContent = stampBorderInput.value;
    drawStamp();
  });

  document.getElementById(&quot;snmk36-stamp-trim&quot;).addEventListener(&quot;click&quot;, function () {
    var trimmed = buildTrimmedCanvas(stampCanvas, 0.03);
    if (!trimmed) { alert(&quot;도장 이미지를 먼저 생성해 주세요.&quot;); return; }
    stampTrimmedCanvas = trimmed;
    showTrimPreview(document.getElementById(&quot;snmk36-stamp-trim-preview&quot;), document.getElementById(&quot;snmk36-stamp-trim-canvas&quot;), trimmed);
  });

  document.getElementById(&quot;snmk36-stamp-save-png&quot;).addEventListener(&quot;click&quot;, function () {
    var source = stampTrimmedCanvas || stampCanvas;
    download(source.toDataURL(&quot;image/png&quot;), &quot;stamp.png&quot;);
  });
  document.getElementById(&quot;snmk36-stamp-save-jpg&quot;).addEventListener(&quot;click&quot;, function () {
    var source = stampTrimmedCanvas || stampCanvas;
    var out = document.createElement(&quot;canvas&quot;);
    out.width = source.width;
    out.height = source.height;
    var octx = out.getContext(&quot;2d&quot;);
    octx.fillStyle = &quot;#ffffff&quot;;
    octx.fillRect(0, 0, out.width, out.height);
    octx.drawImage(source, 0, 0);
    download(out.toDataURL(&quot;image/jpeg&quot;, 0.9), &quot;stamp.jpg&quot;);
  });

  /* 폰트 로드 후 다시 그리기 */
  if (document.fonts &amp;&amp; document.fonts.ready) {
    document.fonts.ready.then(drawStamp);
  }
  drawStamp();
  refreshSignPreviewSize();

}());
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>모두의계산기</category>
      <category>서명</category>
      <category>싸인</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/36</guid>
      <comments>https://0-1.kr/36#entry36comment</comments>
      <pubDate>Tue, 5 Jan 2021 15:16:47 +0900</pubDate>
    </item>
    <item>
      <title>모두의 서류요청계산기_V5(0-1.kr/35)</title>
      <link>https://0-1.kr/35</link>
      <description>&lt;style&gt;
#drc-root button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;font-family:inherit;cursor:pointer;touch-action:manipulation;margin:0;}
#drc-root input:not([type=checkbox]):not([type=radio]),#drc-root textarea{-webkit-appearance:none;appearance:none;font-family:inherit;}
#drc-root input[type=checkbox]{width:17px;height:17px;flex:none;}
&lt;/style&gt;
&lt;div id=&quot;drc-root&quot; style=&quot;max-width:720px;margin:0 auto;padding:14px 12px 80px;background:#fbfbf9;font-family:-apple-system,BlinkMacSystemFont,'Malgun Gothic',sans-serif;color:#222;touch-action:manipulation;&quot;&gt;

&lt;div id=&quot;drc-toast&quot; style=&quot;display:none;position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#222;color:#fff;padding:10px 18px;border-radius:20px;font-size:13px;max-width:88%;text-align:center;z-index:2147483647;-webkit-transform:translateX(-50%);&quot;&gt;&lt;/div&gt;

&lt;!-- 상단 타이틀바 --&gt;
&lt;div style=&quot;display:flex;align-items:flex-start;justify-content:space-between;background:#1a4d3c;border-radius:14px 14px 0 0;padding:12px 14px;&quot;&gt;
  &lt;div style=&quot;color:#fff;font-size:15px;font-weight:700;padding-top:6px;&quot;&gt;서류요청계산기_v1&lt;/div&gt;
  &lt;div style=&quot;display:flex;gap:10px;&quot;&gt;
    &lt;button id=&quot;drc-btn-share-top&quot; type=&quot;button&quot; style=&quot;background:none;color:#fff;display:flex;flex-direction:column;align-items:center;gap:2px;&quot;&gt;&lt;span style=&quot;font-size:18px;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10px;opacity:.85;&quot;&gt;보내기&lt;/span&gt;&lt;/button&gt;
    &lt;button id=&quot;drc-btn-import-top&quot; type=&quot;button&quot; style=&quot;background:none;color:#fff;display:flex;flex-direction:column;align-items:center;gap:2px;&quot;&gt;&lt;span style=&quot;font-size:18px;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10px;opacity:.85;&quot;&gt;불러오기&lt;/span&gt;&lt;/button&gt;
    &lt;button id=&quot;drc-btn-export-top&quot; type=&quot;button&quot; style=&quot;background:none;color:#fff;display:flex;flex-direction:column;align-items:center;gap:2px;&quot;&gt;&lt;span style=&quot;font-size:18px;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10px;opacity:.85;&quot;&gt;저장&lt;/span&gt;&lt;/button&gt;
    &lt;button id=&quot;drc-btn-merge-top&quot; type=&quot;button&quot; style=&quot;background:none;color:#fff;display:flex;flex-direction:column;align-items:center;gap:2px;&quot;&gt;&lt;span style=&quot;font-size:18px;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10px;opacity:.85;&quot;&gt;취합PDF다운&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;input id=&quot;drc-import-file-input&quot; type=&quot;file&quot; accept=&quot;application/json&quot; style=&quot;display:none;&quot; /&gt;

&lt;!-- Title --&gt;
&lt;div style=&quot;background:#fff;border:1px solid #e5e2d8;border-top:none;border-radius:0 0 14px 14px;padding:14px;margin-bottom:14px;&quot;&gt;
  &lt;label style=&quot;font-size:12px;color:#999;font-weight:700;&quot;&gt;Title&lt;/label&gt;
  &lt;input id=&quot;drc-input-title&quot; type=&quot;text&quot; placeholder=&quot;예: OO사업 지원서류 취합본&quot; style=&quot;width:100%;box-sizing:border-box;padding:10px;font-size:16px;font-weight:700;border:1px solid #ddd;border-radius:8px;margin:4px 0 2px;&quot; /&gt;
  &lt;div style=&quot;font-size:11px;color:#aaa;margin-bottom:10px;&quot;&gt;(취합 시 파일명으로 사용됩니다)&lt;/div&gt;

  &lt;div style=&quot;font-size:12px;color:#666;line-height:1.6;background:#f7f7f2;border-radius:8px;padding:10px;margin-bottom:10px;&quot;&gt;
    [요청자]: 섹션별 요청파일명 기재 후 (보내기) 발송&lt;br/&gt;&lt;br/&gt;
    [제출자]: 요청파일 확인→업로드→파일저장 후 발송
  &lt;/div&gt;

  &lt;label style=&quot;font-size:12px;color:#999;font-weight:700;&quot;&gt;요청자 전달멘트&lt;/label&gt;
  &lt;input id=&quot;drc-input-req-msg&quot; type=&quot;text&quot; placeholder=&quot;예: 7/20까지 제출 부탁드립니다&quot; style=&quot;width:100%;box-sizing:border-box;padding:9px;font-size:13px;border:1px solid #ddd;border-radius:8px;margin:4px 0 10px;&quot; /&gt;
  &lt;label style=&quot;font-size:12px;color:#999;font-weight:700;&quot;&gt;제출자 전달멘트&lt;/label&gt;
  &lt;input id=&quot;drc-input-sub-msg&quot; type=&quot;text&quot; placeholder=&quot;예: 확인했습니다, 오늘 중 제출하겠습니다&quot; style=&quot;width:100%;box-sizing:border-box;padding:9px;font-size:13px;border:1px solid #ddd;border-radius:8px;margin:4px 0 12px;&quot; /&gt;

  &lt;div id=&quot;drc-progress&quot; style=&quot;font-size:13px;color:#666;&quot;&gt;업로드 완료 0 / 0 항목&lt;/div&gt;
  &lt;div style=&quot;background:#eee;border-radius:8px;height:8px;margin-top:6px;overflow:hidden;&quot;&gt;
    &lt;div id=&quot;drc-progress-bar&quot; style=&quot;background:#2e8b57;height:8px;width:0%;-webkit-transition:width .3s;transition:width .3s;&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;drc-sections&quot; style=&quot;display:flex;flex-direction:column;gap:12px;&quot;&gt;&lt;/div&gt;

&lt;button id=&quot;drc-btn-add-section&quot; type=&quot;button&quot; style=&quot;width:100%;margin-top:14px;padding:14px;font-size:15px;font-weight:700;border:2px dashed #2e8b57;color:#2e8b57;background:#f3faf5;border-radius:12px;&quot;&gt;＋ 서류 항목 추가&lt;/button&gt;

&lt;!-- 취합 옵션 (기본 펼침) --&gt;
&lt;div style=&quot;margin-top:14px;&quot;&gt;
  &lt;button id=&quot;drc-toggle-options&quot; type=&quot;button&quot; style=&quot;width:100%;text-align:left;padding:12px 14px;background:#eef4ff;border:1px solid #cfe0fb;border-radius:10px;font-size:14px;font-weight:700;color:#1a4d8a;&quot;&gt;▾ 취합 옵션 접기&lt;/button&gt;
  &lt;div id=&quot;drc-options-panel&quot; style=&quot;display:block;padding:14px 4px;&quot;&gt;
    &lt;label style=&quot;display:flex;align-items:center;gap:8px;font-size:14px;margin:6px 0;&quot;&gt;&lt;input id=&quot;drc-opt-watermark&quot; type=&quot;checkbox&quot; /&gt; 전체 파일에 제목 표기(워터마크)&lt;/label&gt;
    &lt;label style=&quot;display:flex;align-items:center;gap:8px;font-size:14px;margin:6px 0;&quot;&gt;&lt;input id=&quot;drc-opt-pagenum&quot; type=&quot;checkbox&quot; checked /&gt; 페이지 번호 삽입&lt;/label&gt;

    &lt;div style=&quot;margin-top:14px;padding-top:12px;border-top:1px dashed #ddd;&quot;&gt;
      &lt;div style=&quot;font-size:13px;font-weight:700;color:#444;margin-bottom:6px;&quot;&gt;취합 PDF 용량(화질) 조절&lt;/div&gt;
      &lt;div id=&quot;drc-compress-segment&quot; style=&quot;display:flex;gap:6px;margin-bottom:8px;&quot;&gt;&lt;/div&gt;
      &lt;div id=&quot;drc-compress-estimate&quot; style=&quot;font-size:12px;color:#666;&quot;&gt;&lt;/div&gt;
      &lt;div id=&quot;drc-compress-recommend&quot; style=&quot;font-size:12px;color:#1a7a4c;margin-top:2px;&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div style=&quot;display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:16px;&quot;&gt;
      &lt;div&gt;
        &lt;button id=&quot;drc-btn-export-json&quot; type=&quot;button&quot; style=&quot;width:100%;box-sizing:border-box;padding:12px 6px;background:#fff;border:1px solid #ccc;border-radius:8px;font-size:13px;font-weight:700;&quot;&gt;✎ 파일저장_수정가능&lt;/button&gt;
        &lt;div style=&quot;font-size:11px;color:#c0392b;margin-top:6px;&quot;&gt;*해당파일로 저장 시 요청자가 수정가능한 파일로 저장됩니다.&lt;/div&gt;
      &lt;/div&gt;
      &lt;button id=&quot;drc-btn-import-json&quot; type=&quot;button&quot; style=&quot;padding:12px 6px;background:#fff;border:1px solid #ccc;border-radius:8px;font-size:13px;font-weight:700;&quot;&gt;  파일불러오기&lt;/button&gt;
      &lt;button id=&quot;drc-btn-merge&quot; type=&quot;button&quot; style=&quot;padding:12px 6px;background:#1a4d8a;color:#fff;border-radius:8px;font-size:13px;font-weight:700;&quot;&gt;  전체취합_PDF로 합치기&lt;/button&gt;
      &lt;button id=&quot;drc-btn-save-separate&quot; type=&quot;button&quot; style=&quot;padding:12px 6px;background:#fff;border:1px solid #ccc;border-radius:8px;font-size:13px;font-weight:700;&quot;&gt;  별도파일저장&lt;/button&gt;
    &lt;/div&gt;
    &lt;div style=&quot;font-size:11px;color:#aaa;margin-top:8px;&quot;&gt;※ 저장한 파일은 0-1.kr/29 에서 다시 불러와 수정할 수 있어요&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;margin-top:18px;&quot;&gt;
  &lt;div style=&quot;background:#fff7e8;border:1px solid #f0dca0;border-radius:12px;padding:14px;&quot;&gt;
    &lt;div style=&quot;font-size:14px;font-weight:700;color:#8a6300;margin-bottom:4px;&quot;&gt;  요청자&lt;/div&gt;
    &lt;div style=&quot;font-size:13px;color:#555;line-height:1.6;&quot;&gt;섹션별 서류명 기재 후 제출자에게 전달&lt;/div&gt;
    &lt;div style=&quot;font-size:12px;color:#a98a3f;margin-top:4px;&quot;&gt;유의사항: 메모·링크까지 채워두면 제출자가 헷갈리지 않아요. 다 채웠으면 상단  보내기로 링크 전달.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div style=&quot;text-align:center;font-size:20px;color:#bbb;line-height:1;padding:2px 0;&quot;&gt;↓&lt;/div&gt;
  &lt;div style=&quot;background:#f3faf5;border:1px solid #cfe8d6;border-radius:12px;padding:14px;&quot;&gt;
    &lt;div style=&quot;font-size:14px;font-weight:700;color:#1a7a4c;margin-bottom:4px;&quot;&gt;  제출자&lt;/div&gt;
    &lt;div style=&quot;font-size:13px;color:#555;line-height:1.6;&quot;&gt;각 파일 확인 후 업로드&lt;/div&gt;
    &lt;div style=&quot;font-size:12px;color:#5fa37e;margin-top:4px;&quot;&gt;유의사항: 예시보기로 확인 → 업로드 → ✎파일저장_수정가능 클릭 → 요청자에게 해당 파일 발송&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;button id=&quot;drc-btn-manual&quot; type=&quot;button&quot; style=&quot;width:100%;margin-top:18px;padding:10px;background:none;border:1px solid #ddd;border-radius:8px;color:#888;font-size:13px;&quot;&gt;ℹ 사용설명서&lt;/button&gt;
&lt;div style=&quot;text-align:center;font-size:11px;color:#c8c5ba;margin-top:10px;&quot;&gt;완벽서류요청계산기_V5_(260714) · 스타트업ex · cds1981@naver.com&lt;/div&gt;

&lt;!-- 사용설명서 모달 --&gt;
&lt;div id=&quot;drc-manual-modal&quot; style=&quot;display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:2147483647;&quot;&gt;
  &lt;div style=&quot;background:#fff;max-width:600px;margin:8vh auto;padding:20px;border-radius:14px;max-height:78vh;overflow:auto;-webkit-overflow-scrolling:touch;&quot;&gt;
    &lt;h3 style=&quot;margin-top:0;&quot;&gt;사용설명서 (V5)&lt;/h3&gt;
    &lt;ol style=&quot;font-size:14px;line-height:1.7;padding-left:18px;&quot;&gt;
      &lt;li&gt;Title에 취합 시 사용할 파일명을 입력하고, 요청자/제출자 전달멘트도 필요시 남깁니다.&lt;/li&gt;
      &lt;li&gt;요청 항목(서류명·메모·링크)만 입력한 상태에서 상단  보내기로 파라미터가 담긴 링크(또는 짧은 URL·QR)를 만들어 전달할 수 있습니다. 파일이 첨부된 상태에서는 링크 공유가 막힙니다.&lt;/li&gt;
      &lt;li&gt;각 항목의 ◀▶로 순서를 바꾸고, 번호 옆 제목을 눌러 이름을 바로 수정합니다. 번호를 누르면 항목이 접히고, 접힌 상태에서는 파일 첨부 여부만 표시됩니다.&lt;/li&gt;
      &lt;li&gt;&quot;파일업로드&quot; 탭에서 파일 업로드, 하단 메모/링크는 제출자 참고용입니다.&lt;/li&gt;
      &lt;li&gt;&quot;예시보기&quot; 탭에서 예시 링크를 열거나, 요청자가 올린 예시 PDF를 바로 볼 수 있습니다.&lt;/li&gt;
      &lt;li&gt;취합 옵션에서 용량(화질)을 조절할 수 있고, 현재 업로드된 이미지 용량 기준 추천 강도가 표시됩니다.&lt;/li&gt;
      &lt;li&gt;✎ 수정가능파일저장 = 파일명/순서를 계속 편집 가능한 json으로 저장.   파일불러오기 = 그 json을 다시 불러와 편집.   전체취합 = 한 개의 PDF로 병합.   별도파일저장 = 각 파일을 개별 PDF로 저장.&lt;/li&gt;
      &lt;li&gt;모든 입력은 4초마다 자동저장됩니다.&lt;/li&gt;
    &lt;/ol&gt;
    &lt;button id=&quot;drc-manual-close&quot; type=&quot;button&quot; style=&quot;width:100%;padding:12px;background:#222;color:#fff;border-radius:8px;&quot;&gt;닫기&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- 보내기(링크/QR) 모달 --&gt;
&lt;div id=&quot;drc-share-modal&quot; style=&quot;display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:2147483647;&quot;&gt;
  &lt;div style=&quot;background:#fff;max-width:480px;margin:12vh auto;padding:20px;border-radius:14px;max-height:74vh;overflow:auto;&quot;&gt;
    &lt;h3 style=&quot;margin-top:0;&quot;&gt;링크로 보내기&lt;/h3&gt;
    &lt;div id=&quot;drc-share-box&quot; style=&quot;font-size:12px;word-break:break-all;&quot;&gt;&lt;/div&gt;
    &lt;button id=&quot;drc-share-close&quot; type=&quot;button&quot; style=&quot;width:100%;margin-top:16px;padding:12px;background:#222;color:#fff;border-radius:8px;&quot;&gt;닫기&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdf-lib/1.17.1/pdf-lib.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/lz-string/1.5.0/lz-string.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js&quot;&gt;&lt;/script&gt;

&lt;script&gt;
(function(){

var STORAGE_KEY = 'drc_state_v2';
var _saveTimer = null;
STORAGE_KEY = STORAGE_KEY;
var STATE = null;
var _collapsedMap = {};
function isCollapsed(id){ return !!_collapsedMap[id]; }
function toggleCollapse(id){ _collapsedMap[id] = !_collapsedMap[id]; renderSections(); }

var COMPRESS_PRESETS = {
  original: { quality:0.92, maxWidth:2000, label:'원본화질', mult:1.0 },
  standard: { quality:0.65, maxWidth:1600, label:'표준압축', mult:0.45 },
  small:    { quality:0.40, maxWidth:1000, label:'고용량절약', mult:0.2 }
};

function $(id){ return document.getElementById(id); }
function uid(){ return 'id' + Date.now().toString(36) + Math.floor(Math.random()*10000).toString(36); }
function todayStr(){
  var d = new Date();
  return String(d.getFullYear()).slice(2) + ('0'+(d.getMonth()+1)).slice(-2) + ('0'+d.getDate()).slice(-2);
}
function showToast(msg){
  var t = $('drc-toast');
  t.textContent = msg;
  t.style.display = 'block';
  window.setTimeout(function(){ t.style.display='none'; }, 2600);
}
function openUrl(url){
  if(!url) { showToast('링크가 비어있습니다'); return; }
  var u = url;
  if(!/^https?:\/\//i.test(u)) u = 'https://' + u;
  window.open(u, '_blank');
}
function fmtBytes(n){
  if(n &lt; 1024) return n + 'B';
  if(n &lt; 1024*1024) return Math.round(n/1024) + 'KB';
  return (Math.round(n/1024/1024*10)/10) + 'MB';
}

function defaultOptions(){ return { watermark:false, pagenum:true, compressLevel:'standard' }; }

function defaultState(){
  return {
    title: '',
    requesterMsg: '',
    submitterMsg: '',
    sections: [
      { id: uid(), name: '사업자등록증', desc: '최근 3개월 이내 발급본을 업로드해주세요.', link: 'https://www.hometax.go.kr', exampleFile: null, files: [] },
      { id: uid(), name: '통장사본', desc: '입금계좌로 사용할 통장 첫 페이지 사본입니다.', link: '', exampleFile: null, files: [] }
    ],
    options: defaultOptions()
  };
}

function parseQuery(){
  var out = {};
  var s = window.location.search.replace('?','');
  if(!s) return out;
  var parts = s.split('&amp;');
  for(var i=0;i&lt;parts.length;i++){
    var kv = parts[i].split('=');
    out[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]||'');
  }
  return out;
}

function loadState(){
  try{
    var qs = parseQuery();
    if(qs.tpl &amp;&amp; window.LZString){
      var json = LZString.decompressFromEncodedURIComponent(qs.tpl);
      if(json){
        var tpl = JSON.parse(json);
        var st = { title: tpl.title||'', requesterMsg: tpl.requesterMsg||'', submitterMsg: tpl.submitterMsg||'', sections: [], options: defaultOptions() };
        for(var i=0;i&lt;tpl.sections.length;i++){
          st.sections.push({ id: uid(), name: tpl.sections[i].name, desc: tpl.sections[i].desc, link: tpl.sections[i].link, exampleFile: null, files: [] });
        }
        return st;
      }
    }
  }catch(e){}
  try{
    var raw = localStorage.getItem(STORAGE_KEY);
    if(raw) return JSON.parse(raw);
  }catch(e){}
  return defaultState();
}

function persistState(pushHist){
  if(_saveTimer) window.clearTimeout(_saveTimer);
  _saveTimer = window.setTimeout(function(){
    try{ localStorage.setItem(STORAGE_KEY, JSON.stringify(STATE)); showToast('자동저장됨'); }
    catch(e){ showToast('저장 실패(용량 초과 가능)'); }
  }, 4000);
}

/* ===== 유틸 ===== */

function el(tag, attrs, children){
  var e = document.createElement(tag);
  for(var k in attrs){
    if(k === 'style') e.style.cssText = attrs[k];
    else if(k.indexOf('data-') === 0) e.setAttribute(k, attrs[k]);
    else e[k] = attrs[k];
  }
  children = children || [];
  for(var i=0;i&lt;children.length;i++){ e.appendChild(children[i]); }
  return e;
}
function arrayBufferToBase64(buffer){
  var bytes = new Uint8Array(buffer);
  var binary = '';
  var chunk = 0x8000;
  for(var i=0;i&lt;bytes.length;i+=chunk){ binary += String.fromCharCode.apply(null, bytes.subarray(i, i+chunk)); }
  return btoa(binary);
}
function base64ToUint8(b64){
  var bin = atob(b64);
  var bytes = new Uint8Array(bin.length);
  for(var i=0;i&lt;bin.length;i++){ bytes[i] = bin.charCodeAt(i); }
  return bytes;
}
function findSection(id){
  for(var i=0;i&lt;STATE.sections.length;i++){ if(STATE.sections[i].id === id) return STATE.sections[i]; }
  return null;
}
function downloadBytes(bytes, filename, mime){
  var blob = new Blob([bytes], { type: mime || 'application/pdf' });
  var url = URL.createObjectURL(blob);
  var a = document.createElement('a');
  a.href = url; a.download = filename;
  document.body.appendChild(a); a.click(); document.body.removeChild(a);
  window.setTimeout(function(){ URL.revokeObjectURL(url); }, 3000);
}

/* ===== 렌더링 ===== */

function renderAll(){
  $('drc-input-title').value = STATE.title;
  $('drc-input-req-msg').value = STATE.requesterMsg || '';
  $('drc-input-sub-msg').value = STATE.submitterMsg || '';
  $('drc-opt-watermark').checked = STATE.options.watermark;
  $('drc-opt-pagenum').checked = STATE.options.pagenum;
  renumberAll();
  renderSections();
  renderProgress();
  renderCompressControl();
}

function renumberAll(){
  var n = 1;
  for(var i=0;i&lt;STATE.sections.length;i++){
    var files = STATE.sections[i].files;
    for(var j=0;j&lt;files.length;j++){
      var num = ('0'+n).slice(-2);
      var base = files[j].baseName || files[j].name.replace(/^\[\d+\]\s*/, '');
      files[j].baseName = base;
      files[j].name = '['+num+'] ' + base;
      n++;
    }
  }
}

function renderProgress(){
  var total = STATE.sections.length, done = 0;
  for(var i=0;i&lt;total;i++){ if(STATE.sections[i].files.length&gt;0) done++; }
  $('drc-progress').textContent = '업로드 완료 ' + done + ' / ' + total + ' 항목';
  $('drc-progress-bar').style.width = (total? Math.round(done/total*100):0) + '%';
}

function flattenFiles(){
  var out = [];
  for(var i=0;i&lt;STATE.sections.length;i++){
    var files = STATE.sections[i].files;
    for(var j=0;j&lt;files.length;j++){ out.push(files[j]); }
  }
  return out;
}

function renderCompressControl(){
  var seg = $('drc-compress-segment');
  seg.innerHTML = '';
  var levels = ['original','standard','small'];
  var current = STATE.options.compressLevel || 'standard';
  var rec = recommendLevel();
  for(var i=0;i&lt;levels.length;i++){
    var lv = levels[i];
    var active = lv === current;
    var btn = el('button', { type:'button', style:'flex:1;padding:9px 4px;font-size:12px;font-weight:700;border-radius:8px;background:'+(active?'#1a4d8a':'#f0eee5')+';color:'+(active?'#fff':'#555')+';' });
    btn.textContent = COMPRESS_PRESETS[lv].label + (lv===rec?' ⭐':'');
    btn.addEventListener('click', (function(l){ return function(){ STATE.options.compressLevel = l; renderCompressControl(); persistState(); }; })(lv));
    seg.appendChild(btn);
  }
  var files = flattenFiles();
  var estCurrent = estimateTotalBytes(current);
  var estOriginal = estimateTotalBytes('original');
  var estBox = $('drc-compress-estimate');
  estBox.innerHTML = '';
  if(files.length){
    var lbl = document.createElement('span'); lbl.textContent = '예상 파일용량: ';
    var val = document.createElement('strong'); val.style.color = '#1a4d8a'; val.textContent = fmtBytes(estCurrent);
    var sub = document.createElement('span'); sub.style.color = '#999'; sub.textContent = ' (원본 기준 ' + fmtBytes(estOriginal) + ')';
    estBox.appendChild(lbl); estBox.appendChild(val); estBox.appendChild(sub);
  } else {
    estBox.textContent = '파일을 업로드하면 예상 파일용량이 표시됩니다';
  }
  if(files.length &amp;&amp; rec !== 'original'){
    $('drc-compress-recommend').textContent = '  원본 기준 용량이 커요 — ' + COMPRESS_PRESETS[rec].label + '을 추천해요 (제출처 업로드 용량제한 대비)';
  } else {
    $('drc-compress-recommend').textContent = '';
  }
}

function estimateTotalBytes(level){
  var mult = COMPRESS_PRESETS[level].mult;
  var total = 0;
  var files = flattenFiles();
  for(var i=0;i&lt;files.length;i++){
    var f = files[i];
    total += f.kind === 'image' ? (f.origSize * mult) : f.origSize;
  }
  return Math.round(total);
}

function recommendLevel(){
  var estOriginal = estimateTotalBytes('original');
  if(estOriginal &gt; 15*1024*1024) return 'small';
  if(estOriginal &gt; 5*1024*1024) return 'standard';
  return 'original';
}

function renderSections(){
  var wrap = $('drc-sections');
  wrap.innerHTML = '';
  for(var i=0;i&lt;STATE.sections.length;i++){
    wrap.appendChild(renderSectionCard(STATE.sections[i], i));
  }
}

function renderSectionCard(sec, idx){
  var card = el('div', { className:'drc-section-card', style:'background:#fff;border:1px solid #e5e2d8;border-radius:14px;padding:14px;', 'data-id': sec.id });

  var collapsed = isCollapsed(sec.id);

  var head = el('div', { style:'display:flex;align-items:center;gap:8px;margin-bottom:'+(collapsed?'0':'10px')+';' });
  var badgeWrap = el('div', { style:'flex:none;display:flex;align-items:center;gap:3px;cursor:pointer;' });
  var chevron = el('span', { style:'font-size:10px;color:#999;width:10px;display:inline-block;' });
  chevron.textContent = collapsed ? '▸' : '▾';
  var badge = el('div', { style:'flex:none;width:28px;height:28px;border-radius:50%;background:#2e8b57;color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;' });
  badge.textContent = ('0'+(idx+1)).slice(-2);
  badgeWrap.appendChild(chevron); badgeWrap.appendChild(badge);
  badgeWrap.addEventListener('click', (function(s){ return function(){ toggleCollapse(s.id); }; })(sec));
  var titleInput = el('input', { type:'text', value: sec.name, placeholder:'서류명 입력', style:'flex:1;min-width:0;border:none;background:transparent;font-size:16px;font-weight:700;color:#222;padding:4px 2px;' });
  titleInput.addEventListener('change', (function(s){ return function(e){ s.name = e.target.value; persistState(); }; })(sec));

  var moveWrap = el('div', { style:'flex:none;display:flex;gap:2px;' });
  var upBtn = el('button', { type:'button', style:'font-size:16px;color:'+(idx===0?'#ddd':'#555')+';line-height:1;padding:8px 9px;background:#f2f2ee;border-radius:6px;' });
  upBtn.textContent = '▲';
  var downBtn = el('button', { type:'button', style:'font-size:16px;color:'+(idx===STATE.sections.length-1?'#ddd':'#555')+';line-height:1;padding:8px 9px;background:#f2f2ee;border-radius:6px;' });
  downBtn.textContent = '▼';
  upBtn.addEventListener('click', (function(s){ return function(){ moveSection(s.id, -1); }; })(sec));
  downBtn.addEventListener('click', (function(s){ return function(){ moveSection(s.id, 1); }; })(sec));
  moveWrap.appendChild(upBtn); moveWrap.appendChild(downBtn);

  var delBtn = el('button', { type:'button', style:'flex:none;font-size:13px;color:#a33;background:none;padding:2px 4px;' });
  delBtn.textContent = '✕';
  delBtn.addEventListener('click', (function(s){ return function(){ removeSection(s.id); }; })(sec));

  head.appendChild(badgeWrap); head.appendChild(titleInput); head.appendChild(moveWrap); head.appendChild(delBtn);
  card.appendChild(head);

  if(collapsed){
    var summary = el('div', { style:'padding:2px 4px 2px 40px;font-size:12px;color:'+(sec.files.length&gt;0?'#2e8b57':'#a33')+';' });
    summary.textContent = sec.files.length&gt;0 ? ('  파일 ' + sec.files.length + '개 첨부됨') : '⚠ 미첨부';
    card.appendChild(summary);
    return card;
  }

  /* 연결형 탭 그룹 */
  var tabGroup = el('div', { style:'border:1px solid #e5e2d8;border-radius:10px;overflow:hidden;' });
  var tabBar = el('div', { style:'display:flex;' });
  var tabUpload = el('button', { type:'button', className:'drc-tab-btn', 'data-tab':'upload', style:'flex:1;padding:9px;font-size:13px;font-weight:700;background:#2e8b57;color:#fff;' });
  tabUpload.textContent = '파일업로드';
  var tabExample = el('button', { type:'button', className:'drc-tab-btn', 'data-tab':'example', style:'flex:1;padding:9px;font-size:13px;font-weight:700;background:#f0eee5;color:#8a6300;' });
  tabExample.textContent = '예시보기';
  tabBar.appendChild(tabUpload); tabBar.appendChild(tabExample);
  tabGroup.appendChild(tabBar);

  var contentWrap = el('div', { style:'background:#fafaf7;padding:12px;' });

  var uploadPane = el('div', { className:'drc-tab-pane', 'data-pane':'upload' });
  var drop = el('label', { style:'display:block;border:2px dashed #cfcabb;border-radius:10px;padding:16px;text-align:center;color:#888;font-size:13px;cursor:pointer;background:#fff;' });
  drop.textContent = '  파일을 드래그하거나 눌러서 업로드 (이미지→PDF 자동변환)';
  var input = el('input', { type:'file', accept:'image/*,application/pdf', multiple:true, style:'display:none;' });
  input.addEventListener('change', (function(s){ return function(e){ handleFiles(s, e.target.files); e.target.value=''; }; })(sec));
  drop.appendChild(input);
  drop.addEventListener('dragover', function(e){ e.preventDefault(); drop.style.background='#eef7ee'; });
  drop.addEventListener('dragleave', function(){ drop.style.background='#fff'; });
  drop.addEventListener('drop', (function(s){ return function(e){ e.preventDefault(); drop.style.background='#fff'; handleFiles(s, e.dataTransfer.files); }; })(sec));
  uploadPane.appendChild(drop);

  var flist = el('div', { style:'margin-top:10px;display:flex;flex-direction:column;gap:6px;' });
  for(var i=0;i&lt;sec.files.length;i++){ flist.appendChild(renderFileRow(sec, sec.files[i])); }
  uploadPane.appendChild(flist);

  var memoBox = el('textarea', { placeholder:'전달사항 및 발급방법 등 메모기재', style:'width:100%;box-sizing:border-box;padding:9px;font-size:13px;border:1px solid #ddd;border-radius:8px;height:60px;margin-top:10px;' });
  memoBox.value = sec.desc || '';
  memoBox.addEventListener('change', (function(s){ return function(e){ s.desc = e.target.value; persistState(); }; })(sec));
  uploadPane.appendChild(memoBox);

  var linkRow = el('div', { style:'display:flex;gap:6px;margin-top:6px;' });
  var linkInput = el('input', { type:'text', value: sec.link||'', placeholder:'관련 링크 연결', style:'flex:1;min-width:0;padding:9px;font-size:13px;border:1px solid #ddd;border-radius:8px;' });
  linkInput.addEventListener('change', (function(s){ return function(e){ s.link = e.target.value; persistState(); renderSections(); }; })(sec));
  var openBtn = el('button', { type:'button', style:'flex:none;padding:9px 12px;font-size:12px;background:#eee;border-radius:8px;' });
  openBtn.textContent = '열기';
  openBtn.addEventListener('click', (function(s){ return function(){ openUrl(s.link); }; })(sec));
  linkRow.appendChild(linkInput); linkRow.appendChild(openBtn);
  uploadPane.appendChild(linkRow);

  contentWrap.appendChild(uploadPane);

  var examplePane = el('div', { className:'drc-tab-pane', 'data-pane':'example', style:'display:none;' });
  var exLinkRow = el('div', { style:'display:flex;gap:6px;margin-bottom:10px;' });
  var exLinkInput = el('input', { type:'text', value: sec.link||'', placeholder:'예시파일 링크', style:'flex:1;min-width:0;padding:9px;font-size:13px;border:1px solid #ddd;border-radius:8px;' });
  exLinkInput.addEventListener('change', (function(s){ return function(e){ s.link = e.target.value; persistState(); renderSections(); }; })(sec));
  var exOpenBtn = el('button', { type:'button', style:'flex:none;padding:9px 12px;font-size:12px;background:#eee;border-radius:8px;' });
  exOpenBtn.textContent = '열기';
  exOpenBtn.addEventListener('click', (function(s){ return function(){ openUrl(s.link); }; })(sec));
  exLinkRow.appendChild(exLinkInput); exLinkRow.appendChild(exOpenBtn);
  examplePane.appendChild(exLinkRow);

  if(sec.exampleFile){
    var previewWrap = el('div', { style:'border:1px solid #ddd;border-radius:8px;overflow:hidden;background:#fff;' });
    var previewHead = el('div', { style:'display:flex;justify-content:space-between;align-items:center;padding:8px 10px;background:#f2f2ee;font-size:12px;' });
    var pName = el('span', {}); pName.textContent = sec.exampleFile.name;
    var pDel = el('button', { type:'button', style:'color:#a33;background:none;font-size:12px;' });
    pDel.textContent = '삭제';
    pDel.addEventListener('click', (function(s){ return function(){ s.exampleFile = null; renderSections(); persistState(); }; })(sec));
    previewHead.appendChild(pName); previewHead.appendChild(pDel);
    var iframe = el('iframe', { src: sec.exampleFile.pdfDataUrl, style:'width:100%;height:320px;border:none;display:block;' });
    previewWrap.appendChild(previewHead); previewWrap.appendChild(iframe);
    examplePane.appendChild(previewWrap);
  } else {
    var exDrop = el('label', { style:'display:block;border:2px dashed #cfcabb;border-radius:10px;padding:16px;text-align:center;color:#888;font-size:13px;cursor:pointer;background:#fff;' });
    exDrop.textContent = '  예시 PDF/이미지 업로드 (요청자용 - 제출자에게 미리보기로 표시됩니다)';
    var exInput = el('input', { type:'file', accept:'image/*,application/pdf', style:'display:none;' });
    exInput.addEventListener('change', (function(s){ return function(e){ if(e.target.files[0]) handleExampleFile(s, e.target.files[0]); e.target.value=''; }; })(sec));
    exDrop.appendChild(exInput);
    examplePane.appendChild(exDrop);
  }
  contentWrap.appendChild(examplePane);

  tabGroup.appendChild(contentWrap);
  card.appendChild(tabGroup);

  tabUpload.addEventListener('click', function(){ switchTab(card, 'upload'); });
  tabExample.addEventListener('click', function(){ switchTab(card, 'example'); });
  switchTab(card, 'upload');

  return card;
}

function switchTab(card, tab){
  var btns = card.querySelectorAll('.drc-tab-btn');
  var panes = card.querySelectorAll('.drc-tab-pane');
  for(var i=0;i&lt;btns.length;i++){
    var isActive = btns[i].getAttribute('data-tab') === tab;
    btns[i].style.background = isActive ? '#2e8b57' : '#f0eee5';
    btns[i].style.color = isActive ? '#fff' : '#8a6300';
  }
  for(var j=0;j&lt;panes.length;j++){
    panes[j].style.display = panes[j].getAttribute('data-pane') === tab ? 'block' : 'none';
  }
}

function renderFileRow(sec, f){
  var row = el('div', { style:'display:flex;align-items:center;gap:6px;background:#f6f6f2;border-radius:8px;padding:6px 8px;' });
  var nameInput = el('input', { type:'text', value: f.name, style:'flex:1;min-width:0;border:none;background:transparent;font-size:13px;color:#333;' });
  nameInput.addEventListener('change', (function(s,file){ return function(e){
    file.baseName = e.target.value.replace(/^\[\d+\]\s*/, '');
    renumberAll(); renderSections(); persistState();
  }; })(sec,f));
  var sizeTag = el('span', { style:'flex:none;font-size:11px;color:#999;' });
  sizeTag.textContent = fmtBytes(f.origSize);
  var dlBtn = el('button', { type:'button', style:'flex:none;font-size:12px;color:#1a4d8a;padding:4px 6px;background:none;' });
  dlBtn.textContent = '⬇';
  dlBtn.addEventListener('click', (function(file){ return function(){
    showToast('변환 중...');
    convertFileToPdfBytes(file).then(function(bytes){
      downloadBytes(bytes, file.name + '.pdf');
    }).catch(function(){ showToast('다운로드 실패'); });
  }; })(f));
  var delBtn = el('button', { type:'button', style:'flex:none;font-size:12px;color:#a33;padding:4px 6px;background:none;' });
  delBtn.textContent = '✕';
  delBtn.addEventListener('click', (function(s,file){ return function(){
    s.files = s.files.filter(function(x){ return x.id !== file.id; });
    renumberAll(); renderSections(); renderProgress(); renderCompressControl(); persistState();
  }; })(sec,f));
  row.appendChild(nameInput); row.appendChild(sizeTag); row.appendChild(dlBtn); row.appendChild(delBtn);
  return row;
}

/* ===== 섹션 이동/추가/삭제 ===== */

function moveSection(id, dir){
  var i;
  for(i=0;i&lt;STATE.sections.length;i++){ if(STATE.sections[i].id === id) break; }
  var ni = i + dir;
  if(ni &lt; 0 || ni &gt;= STATE.sections.length) return;
  var tmp = STATE.sections[i];
  STATE.sections[i] = STATE.sections[ni];
  STATE.sections[ni] = tmp;
  renumberAll(); renderSections(); persistState();
}
function addSection(){
  STATE.sections.push({ id: uid(), name: '', desc: '', link: '', exampleFile: null, files: [] });
  renumberAll(); renderSections(); renderProgress(); persistState();
}
function removeSection(id){
  STATE.sections = STATE.sections.filter(function(s){ return s.id !== id; });
  renumberAll(); renderSections(); renderProgress(); renderCompressControl(); persistState();
}

/* ===== 파일 업로드(원본 보관, 변환은 지연) ===== */

function handleFiles(sec, fileList){
  for(var i=0;i&lt;fileList.length;i++){ processOneFile(sec, fileList[i]); }
}

function processOneFile(sec, file){
  var reader = new FileReader();
  reader.onload = function(e){
    var buf = e.target.result;
    if(file.type === 'application/pdf'){
      PDFLib.PDFDocument.load(buf).then(function(doc){
        addFileToSection(sec, file.name, 'pdf', doc.getPageCount(), buf);
      }).catch(function(){ showToast('PDF 읽기 실패: ' + file.name); });
    } else if(file.type.indexOf('image/') === 0){
      addFileToSection(sec, file.name.replace(/\.[^.]+$/, '') + '.pdf', 'image', 1, buf);
    } else {
      showToast('지원하지 않는 형식: ' + file.name);
    }
  };
  reader.readAsArrayBuffer(file);
}

function addFileToSection(sec, originalName, kind, pageCount, buf){
  var f = {
    id: uid(), baseName: originalName, name: originalName,
    kind: kind, pages: pageCount,
    rawBase64: arrayBufferToBase64(buf), origSize: buf.byteLength
  };
  sec.files.push(f);
  renumberAll(); renderSections(); renderProgress(); renderCompressControl(); persistState();
  showToast('업로드 완료: ' + originalName);
}

function handleExampleFile(sec, file){
  var reader = new FileReader();
  reader.onload = function(e){
    var buf = e.target.result;
    if(file.type === 'application/pdf'){
      sec.exampleFile = { name: file.name, pdfDataUrl: 'data:application/pdf;base64,' + arrayBufferToBase64(buf) };
      renderSections(); persistState();
    } else if(file.type.indexOf('image/') === 0){
      imageBufferToPdfBytes(buf, COMPRESS_PRESETS.standard).then(function(bytes){
        sec.exampleFile = { name: file.name.replace(/\.[^.]+$/, '') + '.pdf', pdfDataUrl: 'data:application/pdf;base64,' + arrayBufferToBase64(bytes.buffer || bytes) };
        renderSections(); persistState();
      });
    } else { showToast('지원하지 않는 형식입니다'); }
  };
  reader.readAsArrayBuffer(file);
}

/* ===== 변환(지연 실행, 압축강도 반영) ===== */

function convertFileToPdfBytes(file){
  if(file.kind === 'pdf'){
    return Promise.resolve(base64ToUint8(file.rawBase64));
  }
  var preset = COMPRESS_PRESETS[STATE.options.compressLevel || 'standard'];
  var raw = base64ToUint8(file.rawBase64);
  return imageBufferToPdfBytes(raw.buffer, preset);
}

function imageBufferToPdfBytes(arrayBuffer, preset){
  return new Promise(function(resolve, reject){
    var blob = new Blob([arrayBuffer]);
    var url = URL.createObjectURL(blob);
    var img = new Image();
    img.onload = function(){
      var w = img.width, h = img.height;
      if(w &gt; preset.maxWidth){ h = Math.round(h * (preset.maxWidth/w)); w = preset.maxWidth; }
      var canvas = document.createElement('canvas');
      canvas.width = w; canvas.height = h;
      var ctx = canvas.getContext('2d');
      ctx.drawImage(img, 0, 0, w, h);
      var jpegUrl = canvas.toDataURL('image/jpeg', preset.quality);
      URL.revokeObjectURL(url);
      var b64 = jpegUrl.split(',')[1];
      var bin = atob(b64);
      var bytes = new Uint8Array(bin.length);
      for(var i=0;i&lt;bin.length;i++){ bytes[i] = bin.charCodeAt(i); }
      PDFLib.PDFDocument.create().then(function(pdfDoc){
        return pdfDoc.embedJpg(bytes).then(function(jpgImg){
          var page = pdfDoc.addPage([jpgImg.width, jpgImg.height]);
          page.drawImage(jpgImg, { x:0, y:0, width: jpgImg.width, height: jpgImg.height });
          return pdfDoc.save();
        });
      }).then(resolve).catch(reject);
    };
    img.onerror = reject;
    img.src = url;
  });
}

/* ===== 전체취합 ===== */

function mergeAndDownload(){
  var flat = flattenFiles();
  if(flat.length === 0){ showToast('업로드된 파일이 없습니다'); return; }
  showToast('취합 중...');
  var chain = PDFLib.PDFDocument.create();
  chain.then(function(mergedDoc){
    var p = Promise.resolve();
    flat.forEach(function(f){
      p = p.then(function(){
        return convertFileToPdfBytes(f).then(function(bytes){
          return PDFLib.PDFDocument.load(bytes).then(function(src){
            return mergedDoc.copyPages(src, src.getPageIndices()).then(function(pages){
              pages.forEach(function(pg){ mergedDoc.addPage(pg); });
            });
          });
        });
      });
    });
    return p.then(function(){ return mergedDoc; });
  }).then(function(mergedDoc){
    return mergedDoc.embedFont(PDFLib.StandardFonts.Helvetica).then(function(font){
      var pages = mergedDoc.getPages();
      var total = pages.length;
      pages.forEach(function(p, idx){
        var sz = p.getSize();
        if(STATE.options.pagenum){
          p.drawText((idx+1) + ' / ' + total, { x: sz.width-70, y:16, size:9, font:font, color: PDFLib.rgb(0.4,0.4,0.4) });
        }
        if(STATE.options.watermark){
          p.drawText(STATE.title || '문서', { x:12, y: sz.height-18, size:8, font:font, color: PDFLib.rgb(0.6,0.6,0.6), opacity:0.7 });
        }
      });
      return mergedDoc.save();
    });
  }).then(function(bytes){
    downloadBytes(bytes, (STATE.title||'취합서류') + '_' + todayStr() + '.pdf');
    showToast('취합 완료 · 실제 용량 ' + fmtBytes(bytes.length));
  }).catch(function(err){
    showToast('취합 실패: ' + (err &amp;&amp; err.message ? err.message : '오류'));
  });
}

function saveFilesSeparately(){
  var flat = flattenFiles();
  if(flat.length === 0){ showToast('업로드된 파일이 없습니다'); return; }
  showToast('개별 저장 시작...');
  var i = 0;
  function next(){
    if(i &gt;= flat.length){ showToast('개별 저장 완료'); return; }
    var f = flat[i]; i++;
    convertFileToPdfBytes(f).then(function(bytes){
      downloadBytes(bytes, f.name + '.pdf');
      window.setTimeout(next, 500);
    }).catch(function(){ window.setTimeout(next, 300); });
  }
  next();
}

/* ===== 보내기(링크/QR/TinyURL) ===== */

function shareLink(){
  var hasFile = false;
  for(var i=0;i&lt;STATE.sections.length;i++){ if(STATE.sections[i].files.length&gt;0){ hasFile = true; break; } }
  $('drc-share-modal').style.display = 'block';
  document.body.style.overflow = 'hidden';
  var box = $('drc-share-box');
  box.innerHTML = '';
  if(hasFile){
    var warn = el('div', { style:'color:#a33;font-size:13px;padding:10px;background:#fdecec;border-radius:8px;' });
    warn.textContent = '파일이 첨부된 상태에서는 링크 공유가 불가합니다. (요청 항목만 있을 때 사용)';
    box.appendChild(warn);
    return;
  }
  var tpl = { title: STATE.title, requesterMsg: STATE.requesterMsg, submitterMsg: STATE.submitterMsg, sections: [] };
  for(var i=0;i&lt;STATE.sections.length;i++){
    tpl.sections.push({ name: STATE.sections[i].name, desc: STATE.sections[i].desc, link: STATE.sections[i].link });
  }
  var compressed = LZString.compressToEncodedURIComponent(JSON.stringify(tpl));
  var url = window.location.origin + window.location.pathname + '?tpl=' + compressed;

  var urlDiv = el('div', { style:'margin-bottom:8px;padding:8px;background:#f7f7f5;border-radius:8px;' });
  urlDiv.textContent = url.length &gt; 300 ? '(주소가 길어 짧은 URL 사용을 권장합니다)' : url;
  box.appendChild(urlDiv);

  var btnRow = el('div', { style:'display:flex;gap:6px;flex-wrap:wrap;' });
  var copyBtn = el('button', { type:'button', style:'padding:8px 12px;font-size:12px;background:#eee;border-radius:6px;' });
  copyBtn.textContent = '주소 복사';
  copyBtn.addEventListener('click', function(){ copyToClipboard(url); });
  var tinyBtn = el('button', { type:'button', style:'padding:8px 12px;font-size:12px;background:#eee;border-radius:6px;' });
  tinyBtn.textContent = '짧은 URL 만들기';
  tinyBtn.addEventListener('click', function(){
    fetch('https://tinyurl.com/api-create.php?url=' + encodeURIComponent(url))
      .then(function(r){ return r.text(); })
      .then(function(short){
        urlDiv.textContent = short;
        copyBtn.onclick = function(){ copyToClipboard(short); };
        drawQr(short);
      }).catch(function(){ showToast('짧은 URL 생성 실패'); });
  });
  btnRow.appendChild(copyBtn); btnRow.appendChild(tinyBtn);
  box.appendChild(btnRow);

  var qrHolder = el('div', { id:'drc-qr-holder', style:'margin-top:10px;text-align:center;' });
  box.appendChild(qrHolder);
  drawQr(url);
}

function drawQr(url){
  var holder = $('drc-qr-holder');
  if(!holder || !window.QRCode) return;
  holder.innerHTML = '';
  new QRCode(holder, { text: url, width:140, height:140 });
}

function copyToClipboard(text){
  if(navigator.clipboard &amp;&amp; navigator.clipboard.writeText){
    navigator.clipboard.writeText(text).then(function(){ showToast('복사됨'); }).catch(function(){ fallbackCopy(text); });
  } else {
    fallbackCopy(text);
  }
}
function fallbackCopy(text){
  var ta = document.createElement('textarea');
  ta.value = text; ta.style.position='fixed'; ta.style.left='-999px';
  document.body.appendChild(ta); ta.focus(); ta.select();
  try{ document.execCommand('copy'); showToast('복사됨'); }catch(e){ showToast('복사 실패'); }
  document.body.removeChild(ta);
}

/* ===== 수정가능파일 저장/불러오기 (JSON) ===== */

function exportEditableJson(){
  var dataStr = JSON.stringify(STATE);
  var blob = new Blob([dataStr], { type:'application/json' });
  var url = URL.createObjectURL(blob);
  var a = document.createElement('a');
  a.href = url; a.download = (STATE.title||'서류요청') + '_수정가능_' + todayStr() + '.json';
  document.body.appendChild(a); a.click(); document.body.removeChild(a);
  window.setTimeout(function(){ URL.revokeObjectURL(url); }, 3000);
  showToast('수정가능 파일 저장 완료 · 0-1.kr/29 에서 다시 불러와 수정할 수 있어요');
}

function importEditableJson(file){
  var reader = new FileReader();
  reader.onload = function(e){
    try{
      var parsed = JSON.parse(e.target.result);
      if(!parsed || !parsed.sections) throw new Error('invalid');
      STATE = parsed;
      if(!STATE.options) STATE.options = defaultOptions();
      renderAll();
      persistState(true);
      showToast('파일 불러오기 완료 · 0-1.kr/29 에서 언제든 다시 불러와 수정할 수 있어요');
    }catch(err){ showToast('파일을 읽을 수 없습니다(json 형식만 지원)'); }
  };
  reader.readAsText(file);
}

/* ===== 이벤트 바인딩 ===== */

function bindEvents(){
  $('drc-btn-add-section').addEventListener('click', addSection);

  $('drc-toggle-options').addEventListener('click', function(){
    var panel = $('drc-options-panel');
    var open = panel.style.display !== 'none';
    panel.style.display = open ? 'none' : 'block';
    this.textContent = (open?'▸':'▾') + ' 취합 옵션 ' + (open?'펼치기':'접기');
  });

  $('drc-input-title').addEventListener('change', function(e){ STATE.title = e.target.value; persistState(); });
  $('drc-input-req-msg').addEventListener('change', function(e){ STATE.requesterMsg = e.target.value; persistState(); });
  $('drc-input-sub-msg').addEventListener('change', function(e){ STATE.submitterMsg = e.target.value; persistState(); });
  $('drc-btn-share-top').addEventListener('click', shareLink);
  $('drc-share-close').addEventListener('click', function(){ $('drc-share-modal').style.display='none'; document.body.style.overflow=''; });
  $('drc-opt-watermark').addEventListener('change', function(e){ STATE.options.watermark = e.target.checked; persistState(); });
  $('drc-opt-pagenum').addEventListener('change', function(e){ STATE.options.pagenum = e.target.checked; persistState(); });

  $('drc-btn-merge-top').addEventListener('click', mergeAndDownload);
  $('drc-btn-merge').addEventListener('click', mergeAndDownload);
  $('drc-btn-export-top').addEventListener('click', exportEditableJson);
  $('drc-btn-export-json').addEventListener('click', exportEditableJson);
  $('drc-btn-save-separate').addEventListener('click', saveFilesSeparately);

  var importInput = $('drc-import-file-input');
  function triggerImport(){ importInput.click(); }
  $('drc-btn-import-top').addEventListener('click', triggerImport);
  $('drc-btn-import-json').addEventListener('click', triggerImport);
  importInput.addEventListener('change', function(e){
    if(e.target.files[0]) importEditableJson(e.target.files[0]);
    e.target.value = '';
  });

  $('drc-btn-manual').addEventListener('click', function(){ $('drc-manual-modal').style.display='block'; document.body.style.overflow='hidden'; });
  $('drc-manual-close').addEventListener('click', function(){ $('drc-manual-modal').style.display='none'; document.body.style.overflow=''; });
}

/* ===== 초기화 ===== */

function init(){
  STATE = loadState();
  if(!STATE.options) STATE.options = defaultOptions();
  bindEvents();
  renderAll();
  persistState(true);
}

if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', init); } else { init(); }

})();
&lt;/script&gt;</description>
      <category>모두의계산기/PDF취합관련</category>
      <category>배경</category>
      <category>색조합</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/35</guid>
      <comments>https://0-1.kr/35#entry35comment</comments>
      <pubDate>Sun, 3 Jan 2021 19:40:41 +0900</pubDate>
    </item>
    <item>
      <title>애어비엔비 사업계획서 / IR 발표자료 공유 (09년)</title>
      <link>https://0-1.kr/34</link>
      <description>&lt;p&gt;사업계획서 작성 중이라면 꼭 한번 보세요.ㅎ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;2008년 air bnb ir 발표자료입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이 발표로 50만달라의 투자를 받았다고 하죠?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;발표자료 보시면 어떠신가요? 엄청 심플하죠?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;해당 발표는 5분짜리로 진행했다고 하네요. 참고하시구요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하지만 표현하고자 하는 내용은 다 있습니다.ㅎㅎ&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하나하나씩 분석해보시죠.ㅎ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_01.jpg&quot; data-origin-width=&quot;2420&quot; data-origin-height=&quot;1870&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dsAhgr/btqQUYQ4C59/EpOGBhFCbzSbtadxbSCGXk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dsAhgr/btqQUYQ4C59/EpOGBhFCbzSbtadxbSCGXk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dsAhgr/btqQUYQ4C59/EpOGBhFCbzSbtadxbSCGXk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdsAhgr%2FbtqQUYQ4C59%2FEpOGBhFCbzSbtadxbSCGXk%2Fimg.jpg&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_01.jpg&quot; data-origin-width=&quot;2420&quot; data-origin-height=&quot;1870&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;첫페이지 입니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;메인 제목(서비스명 이겠죠?)과 하고자 하는 컨셉으로 밑에 작은 글씨로 기재해주시면 오래 남습니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_02.jpg&quot; data-origin-width=&quot;2200&quot; data-origin-height=&quot;1700&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5w5Be/btqQR5JH2IM/HDccSL0pGKS3pCMqPTuVV1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5w5Be/btqQR5JH2IM/HDccSL0pGKS3pCMqPTuVV1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5w5Be/btqQR5JH2IM/HDccSL0pGKS3pCMqPTuVV1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5w5Be%2FbtqQR5JH2IM%2FHDccSL0pGKS3pCMqPTuVV1%2Fimg.jpg&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_02.jpg&quot; data-origin-width=&quot;2200&quot; data-origin-height=&quot;1700&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;두번째 페이지에 현 문제점을 기재했네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;문제제기를 통해 본인이 제공하고자 하는 서비스가 필요하다는 전제를 까셔야죠?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;하단처럼 표현해도 좋을듯해요. (원으로 그리는것?)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_03.jpg&quot; data-origin-width=&quot;2200&quot; data-origin-height=&quot;1700&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbsr8g/btqQJEGD0Gr/TwfokNFbZ8kxuZkeNzyf81/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbsr8g/btqQJEGD0Gr/TwfokNFbZ8kxuZkeNzyf81/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbsr8g/btqQJEGD0Gr/TwfokNFbZ8kxuZkeNzyf81/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcbsr8g%2FbtqQJEGD0Gr%2FTwfokNFbZ8kxuZkeNzyf81%2Fimg.jpg&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_03.jpg&quot; data-origin-width=&quot;2200&quot; data-origin-height=&quot;1700&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;해결책이네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;웹 플렛폼을 통해 돈도 아끼고 벌고 문화도 공유하겠다고 제시했네요.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;본인의 서비스를 여기서 핵심적으로 어필하면 되겠죠?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_04.jpg&quot; data-origin-width=&quot;2200&quot; data-origin-height=&quot;1700&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmzhD9/btqQLkAT2AV/kys4PSSrBIUlstRQMd7p81/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmzhD9/btqQLkAT2AV/kys4PSSrBIUlstRQMd7p81/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmzhD9/btqQLkAT2AV/kys4PSSrBIUlstRQMd7p81/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmzhD9%2FbtqQLkAT2AV%2Fkys4PSSrBIUlstRQMd7p81%2Fimg.jpg&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_04.jpg&quot; data-origin-width=&quot;2200&quot; data-origin-height=&quot;1700&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;시장의 적정성 입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;요건 내 서비스를 활용한 사람들은 많다 라는 걸 보여주는 거죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;근데..서비스를 사용할 사람과 돈을 주고 사용할 사람들을 표기해도 좋습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_05.jpg&quot; data-origin-width=&quot;2200&quot; data-origin-height=&quot;1700&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMhzDA/btqQNqU7j1Y/lKKHxUROBBnflqcKIVVqCK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMhzDA/btqQNqU7j1Y/lKKHxUROBBnflqcKIVVqCK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMhzDA/btqQNqU7j1Y/lKKHxUROBBnflqcKIVVqCK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMhzDA%2FbtqQNqU7j1Y%2FlKKHxUROBBnflqcKIVVqCK%2Fimg.jpg&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_05.jpg&quot; data-origin-width=&quot;2200&quot; data-origin-height=&quot;1700&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;시장규모 입니다.&lt;/p&gt;
&lt;p&gt;TSS라고 하죠&lt;/p&gt;
&lt;p&gt;TAM : 전체시장&lt;/p&gt;
&lt;p&gt;SAM : 유효시장&lt;/p&gt;
&lt;p&gt;SOM : 타깃시장 이라고 합니다.&lt;/p&gt;
&lt;p&gt;한국에서 발표하실때 이 표 그대로 쓰고 하단에 영어로 살짝 기재해줘도 좋을듯 해요.&lt;/p&gt;
&lt;p&gt;심사자가 믿진 않겠지만 타깃시장에 관련된 내용을 발표시 자세히 설명해 주세요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_06.jpg&quot; data-origin-width=&quot;2937&quot; data-origin-height=&quot;2270&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d5jC6W/btqQLlfvFMu/CZuTT66RO7Pa79OLGPUxo1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d5jC6W/btqQLlfvFMu/CZuTT66RO7Pa79OLGPUxo1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d5jC6W/btqQLlfvFMu/CZuTT66RO7Pa79OLGPUxo1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd5jC6W%2FbtqQLlfvFMu%2FCZuTT66RO7Pa79OLGPUxo1%2Fimg.jpg&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_06.jpg&quot; data-origin-width=&quot;2937&quot; data-origin-height=&quot;2270&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;제품이네요.&lt;/p&gt;
&lt;p&gt;웹서비스가 전부인데...1장으로 설명했네요.&lt;/p&gt;
&lt;p&gt;2장정도로 적어줘도 좋습니다. 이미 시제품이 완성된 상태라면 바로 심사자들에게 탭을 활용해 설명해 주면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;더 좋습니다. 시제품이 잘 된다면 한장으로 충분하죠. 완성이 안된 서비스는 2장내외로 기재해 주세요&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_07.jpg&quot; data-origin-width=&quot;2200&quot; data-origin-height=&quot;1700&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcT9YA/btqQUYQ4Dbd/iLmjpVVpWH9bCfE3DxUYM1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcT9YA/btqQUYQ4Dbd/iLmjpVVpWH9bCfE3DxUYM1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcT9YA/btqQUYQ4Dbd/iLmjpVVpWH9bCfE3DxUYM1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcT9YA%2FbtqQUYQ4Dbd%2FiLmjpVVpWH9bCfE3DxUYM1%2Fimg.jpg&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_07.jpg&quot; data-origin-width=&quot;2200&quot; data-origin-height=&quot;1700&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;비즈니스 모델(수익모델)이죠.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;와우. 짧게 설명했네요. 10%로만 먹겠다네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_08.jpg&quot; data-origin-width=&quot;3300&quot; data-origin-height=&quot;2550&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l6ttJ/btqQR6BQPnM/KU4YkZc8WicQLEnYaDmfVK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l6ttJ/btqQR6BQPnM/KU4YkZc8WicQLEnYaDmfVK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l6ttJ/btqQR6BQPnM/KU4YkZc8WicQLEnYaDmfVK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl6ttJ%2FbtqQR6BQPnM%2FKU4YkZc8WicQLEnYaDmfVK%2Fimg.jpg&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_08.jpg&quot; data-origin-width=&quot;3300&quot; data-origin-height=&quot;2550&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;마케팅 페이지입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;이벤트와 파트너십으로 홍보하겠다는 거죠. 전체 페이지를 삼등분한것으로 느껴지네요. 일관성있게 가면 좋습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_09.jpg&quot; data-origin-width=&quot;3300&quot; data-origin-height=&quot;2559&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mLTkq/btqQLl7CDXx/mGO7BqL50ZOJaHkgvg2060/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mLTkq/btqQLl7CDXx/mGO7BqL50ZOJaHkgvg2060/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mLTkq/btqQLl7CDXx/mGO7BqL50ZOJaHkgvg2060/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmLTkq%2FbtqQLl7CDXx%2FmGO7BqL50ZOJaHkgvg2060%2Fimg.jpg&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_09.jpg&quot; data-origin-width=&quot;3300&quot; data-origin-height=&quot;2559&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;경쟁사 입니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;투자자들이 젤 싫어하는 답변은&lt;/p&gt;
&lt;p&gt;&quot;우리 서비스는 유일합니다&quot;&lt;/p&gt;
&lt;p&gt;랍니다. 전세계 다 뒤져서라도 유사한 서비스를 찾아보세요&lt;/p&gt;
&lt;p&gt;여러분이 처음이라면...그 서비스 홍보도 처음이고...그 게...성공할 수 있을까요?ㅎ&lt;/p&gt;
&lt;p&gt;기존 서비스보다 업그레이드 됨을 표현해 보세요. 그러려고 서비스 시작한거 아니에요?ㅎ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_10.jpg&quot; data-origin-width=&quot;2200&quot; data-origin-height=&quot;1700&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6Gyck/btqQUZbohjX/SbzCmKKXEph8dsh9egk7G1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6Gyck/btqQUZbohjX/SbzCmKKXEph8dsh9egk7G1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6Gyck/btqQUZbohjX/SbzCmKKXEph8dsh9egk7G1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6Gyck%2FbtqQUZbohjX%2FSbzCmKKXEph8dsh9egk7G1%2Fimg.jpg&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_10.jpg&quot; data-origin-width=&quot;2200&quot; data-origin-height=&quot;1700&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;경쟁우위는 무엇인가요??&lt;/p&gt;
&lt;p&gt;다른회사의 장점도 언급하셔도 됩니다. 그 보다 더 좋다고 어필하시면 되니깐요.&lt;/p&gt;
&lt;p&gt;타사 보다 좋은 것들을 언급해 주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_11.jpg&quot; data-origin-width=&quot;3311&quot; data-origin-height=&quot;2559&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btnm30/btqQNq8HzBK/zAkkKkhtkoNUN6hiSoM8ik/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btnm30/btqQNq8HzBK/zAkkKkhtkoNUN6hiSoM8ik/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btnm30/btqQNq8HzBK/zAkkKkhtkoNUN6hiSoM8ik/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbtnm30%2FbtqQNq8HzBK%2FzAkkKkhtkoNUN6hiSoM8ik%2Fimg.jpg&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_11.jpg&quot; data-origin-width=&quot;3311&quot; data-origin-height=&quot;2559&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;만약 팀원이 유사기관에서 스카웃해왔거나 경력 10년 이상이라면 이걸 젤 위로 올리세요.&lt;/p&gt;
&lt;p&gt;아마 최단시간에 심사자들에게 신뢰를 쌓을 수 있는 방법이 아닌가 합니다.&lt;/p&gt;
&lt;p&gt;서비스 위주의 설명이라면 하단에&amp;nbsp; 적으셔도 됩니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;꼭 4대보험 들어가는 직원만 기재하지 말고 앞으로 닥칠 문제들을 해결해 줄 수 있는 지인과 파트너들도&amp;nbsp;&lt;/p&gt;
&lt;p&gt;기재해 주세요. 인맥이 자산입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_12.jpg&quot; data-origin-width=&quot;1662&quot; data-origin-height=&quot;1284&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RRdft/btqQIbycexN/6lCI1ktNESb27JkUtkcOmk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RRdft/btqQIbycexN/6lCI1ktNESb27JkUtkcOmk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RRdft/btqQIbycexN/6lCI1ktNESb27JkUtkcOmk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRRdft%2FbtqQIbycexN%2F6lCI1ktNESb27JkUtkcOmk%2Fimg.jpg&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_12.jpg&quot; data-origin-width=&quot;1662&quot; data-origin-height=&quot;1284&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;음...프레스...과거이력인가요? 회사연혁 개념으로 보시면 될거 같네요.&lt;/p&gt;
&lt;p&gt;운영기간 중 입상이라던지, 정부인증이라던지, 회사의 우수성을 외부인들에게 인정받은 것들을&lt;/p&gt;
&lt;p&gt;간단히 기재해 주세요&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_13.jpg&quot; data-origin-width=&quot;2288&quot; data-origin-height=&quot;1768&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9dVkA/btqQR62U4q2/U52MKwtsbqku0rTIAAej6K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9dVkA/btqQR62U4q2/U52MKwtsbqku0rTIAAej6K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9dVkA/btqQR62U4q2/U52MKwtsbqku0rTIAAej6K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9dVkA%2FbtqQR62U4q2%2FU52MKwtsbqku0rTIAAej6K%2Fimg.jpg&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_13.jpg&quot; data-origin-width=&quot;2288&quot; data-origin-height=&quot;1768&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;후기를 표현했네요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;사진도 좋지만 2p처럼 텍스트로 표현해도 좋습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_14.jpg&quot; data-origin-width=&quot;2200&quot; data-origin-height=&quot;1700&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0q6qX/btqQUZbohqv/k08tTBaQhecCCWPoi9dwEk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0q6qX/btqQUZbohqv/k08tTBaQhecCCWPoi9dwEk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0q6qX/btqQUZbohqv/k08tTBaQhecCCWPoi9dwEk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0q6qX%2FbtqQUZbohqv%2Fk08tTBaQhecCCWPoi9dwEk%2Fimg.jpg&quot; data-filename=&quot;airbnb-original-deck-2008_페이지_14.jpg&quot; data-origin-width=&quot;2200&quot; data-origin-height=&quot;1700&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;투자를 받기위한 자리라면 앞의 투자자에게 맞춰야죠?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;필요한 금액을 기재하고 어떻게 쓸껀지 기재해주세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;터무니 없이 큰 금액을 쓴다면...투자 안하겠죠? 아마 투자자들이 발표장에선 질문하지 않겠지만&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;가장 예민한 부분입니다.ㅎ 투자금액을 어떤 비목으로, 얼마를 쓸건지 자세히 설명해주세요.(아니 남은시간동안.ㅎ)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;---------------------------------&lt;/p&gt;
&lt;p&gt;해당 발표자료를 보면 여백이 아주 많죠?&lt;/p&gt;
&lt;p&gt;그리고 깔끔하네? 란 생각이 들죠?&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;원 몇개랑, 사각형 몇개 밖에 없죠?ㅎ&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;똑같이 한번 그려보세요. 여기서 텍스트를 지우고 그 텍스트에 본인의 아이템을 넣어보세요.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/5lnRE/btqQH9N4p7E/jn67qo6nkjicM8utK8aPe0/airbnb-original-deck-2008.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;airbnb-original-deck-2008.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;3.59MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>스타트업 운영TIP/사업계획서작성 TIP</category>
      <category>Airbnb</category>
      <category>ir</category>
      <category>사업계획서</category>
      <category>아이알</category>
      <category>투자</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/34</guid>
      <comments>https://0-1.kr/34#entry34comment</comments>
      <pubDate>Sun, 20 Dec 2020 19:46:23 +0900</pubDate>
    </item>
    <item>
      <title>모두의 pdf압축 계산기(0-1.kr/33)_발표자료용</title>
      <link>https://0-1.kr/33</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
&lt;title&gt;모두의 PDF 압축계산기&lt;/title&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdf-lib/1.17.1/pdf-lib.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
  #pdfcomp-root * { box-sizing: border-box; }
  #pdfcomp-root {
    max-width: 820px; margin: 0 auto; padding: 20px 16px 60px;
    font-family: -apple-system, BlinkMacSystemFont, &quot;Malgun Gothic&quot;, &quot;Apple SD Gothic Neo&quot;, sans-serif;
    color: #222; line-height: 1.55;
  }
  .pdfcomp-title { font-size: 23px; font-weight: 800; margin-bottom: 6px; }
  .pdfcomp-lead1 { font-size: 15px; color: #444; font-weight: 600; margin-bottom: 2px; }
  .pdfcomp-lead2 { font-size: 13.5px; color: #888; margin-bottom: 22px; }

  .pdfcomp-card {
    border: 1px solid #e4e4e7; border-radius: 14px; padding: 18px;
    margin-bottom: 14px; background: #fff;
  }
  .pdfcomp-sechead {
    display: flex; align-items: center; justify-content: space-between; cursor: pointer;
  }
  .pdfcomp-sechead.pdfcomp-nocursor { cursor: default; }
  .pdfcomp-sectitle {
    display: flex; align-items: center; gap: 8px; font-size: 16.5px; font-weight: 800; color: #4a3ff0;
  }
  .pdfcomp-badge {
    width: 24px; height: 24px; border-radius: 50%; background: #6d5efc; color: #fff;
    font-size: 13px; font-weight: 800; display: flex; align-items: center; justify-content: center; flex-shrink: 0;
  }
  .pdfcomp-chevron { font-size: 13px; color: #999; transition: transform .15s; }
  .pdfcomp-chevron.pdfcomp-open { transform: rotate(180deg); }
  .pdfcomp-body { margin-top: 14px; }
  .pdfcomp-body.pdfcomp-collapsed { display: none; }

  .pdfcomp-drop {
    border: 2px dashed #8f7dfb; border-radius: 12px; padding: 30px 16px;
    text-align: center; cursor: pointer; color: #4a3ff0; font-size: 14.5px; font-weight: 700;
    background: #f3f1ff; transition: border-color .15s, background .15s;
  }
  .pdfcomp-drop.pdfcomp-drag { border-color: #4a3ff0; background: #e9e5ff; }
  .pdfcomp-drop input { display: none; }
  .pdfcomp-drop .pdfcomp-droptip { font-weight: 400; font-size: 12.5px; color: #7a70c9; margin-top: 4px; }

  .pdfcomp-filebox { margin-top: 12px; }
  .pdfcomp-filerow { display: flex; align-items: center; justify-content: space-between; font-size: 12.5px; color: #666; margin-bottom: 6px; }
  .pdfcomp-renamerow { display: flex; align-items: center; gap: 8px; }
  .pdfcomp-renamerow label { font-size: 12.5px; color: #555; flex-shrink: 0; }
  .pdfcomp-renamerow input { flex: 1; padding: 8px 10px; border: 1px solid #ddd; border-radius: 8px; font-size: 13px; }
  .pdfcomp-renamerow span { font-size: 12.5px; color: #999; }

  .pdfcomp-modewrap { display: flex; gap: 10px; margin-bottom: 4px; }
  .pdfcomp-mode {
    flex: 1; border: 1px solid #e4e4e7; border-radius: 10px; padding: 12px;
    cursor: pointer; font-size: 13px;
  }
  .pdfcomp-mode.pdfcomp-active { border-color: #6d5efc; background: #f5f3ff; }
  .pdfcomp-mode b { display: block; font-size: 13.5px; margin-bottom: 3px; }
  .pdfcomp-mode span { color: #777; font-size: 12px; }
  .pdfcomp-presetblock { margin-bottom: 18px; }
  .pdfcomp-presetblock:last-child { margin-bottom: 0; }
  .pdfcomp-presetlabel { font-size: 14px; font-weight: 800; margin-bottom: 8px; }
  .pdfcomp-presetlabel.pdfcomp-pres { color: #2e8b57; }
  .pdfcomp-presetlabel.pdfcomp-proof { color: #c0392b; }

  .pdfcomp-row { display: flex; align-items: center; gap: 10px; margin: 8px 0; font-size: 13px; }
  .pdfcomp-row label { width: 90px; flex-shrink: 0; color: #555; }
  .pdfcomp-row input[type=range] { flex: 1; }
  .pdfcomp-row .pdfcomp-val { width: 54px; text-align: right; color: #333; font-variant-numeric: tabular-nums; }
  .pdfcomp-defaulttag { font-size: 11.5px; color: #999; margin: -2px 0 8px; }
  .pdfcomp-estimate { font-size: 12.5px; color: #6d5efc; font-weight: 700; margin: 4px 0 10px; min-height: 16px; }

  .pdfcomp-btn {
    display: inline-block; border: none; border-radius: 10px; padding: 12px 18px;
    font-size: 14.5px; font-weight: 700; cursor: pointer; background: #6d5efc; color: #fff;
    width: 100%; margin-top: 4px;
  }
  .pdfcomp-btn:disabled { background: #c9c3fb; cursor: not-allowed; }
  .pdfcomp-btn.pdfcomp-ghost { background: #f2f2f5; color: #444; }
  .pdfcomp-btn.pdfcomp-small { width: auto; padding: 8px 14px; font-size: 12.5px; margin-top: 0; }
  .pdfcomp-btnrow { display: flex; gap: 10px; margin-top: 14px; }
  .pdfcomp-btnrow .pdfcomp-btn { margin-top: 0; }

  .pdfcomp-progress { font-size: 12.5px; color: #6d5efc; margin-top: 8px; min-height: 16px; }

  .pdfcomp-namewrap { display: flex; flex-wrap: wrap; gap: 14px; margin-bottom: 16px; }
  .pdfcomp-namecol { flex: 1; min-width: 150px; }
  .pdfcomp-bubble {
    position: relative; background: #f3f1ff; color: #55499a; font-size: 11.5px;
    border-radius: 8px; padding: 8px 10px; margin-bottom: 6px;
  }
  .pdfcomp-bubble:after {
    content: &quot;&quot;; position: absolute; bottom: -6px; left: 16px; width: 0; height: 0;
    border-left: 6px solid transparent; border-right: 6px solid transparent; border-top: 6px solid #f3f1ff;
  }
  .pdfcomp-checkline { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 700; }

  .pdfcomp-results { margin-top: 6px; }
  .pdfcomp-result {
    border: 1px solid #e4e4e7; border-radius: 12px; padding: 14px; margin-bottom: 12px;
    display: flex; gap: 12px; align-items: flex-start; flex-wrap: wrap;
  }
  .pdfcomp-thumb {
    width: 84px; height: 108px; border: 1px solid #eee; border-radius: 6px; overflow: hidden;
    flex-shrink: 0; background: #fafafa; display: flex; align-items: center; justify-content: center;
    font-size: 11px; color: #999;
  }
  .pdfcomp-thumb img { width: 100%; height: 100%; object-fit: contain; }
  .pdfcomp-rinfo { flex: 1; min-width: 180px; }
  .pdfcomp-rname { font-weight: 700; font-size: 13.5px; margin-bottom: 6px; }
  .pdfcomp-rsize { font-size: 12.5px; color: #666; margin-bottom: 8px; }
  .pdfcomp-rsize b { color: #6d5efc; }
  .pdfcomp-fname {
    width: 100%; padding: 7px 8px; font-size: 12.5px; border: 1px solid #ddd;
    border-radius: 7px; margin-bottom: 8px;
  }
  .pdfcomp-ractions { display: flex; gap: 6px; }
  .pdfcomp-ractions a, .pdfcomp-ractions button {
    font-size: 12.5px; padding: 7px 10px; border-radius: 7px; border: 1px solid #ddd;
    background: #fff; color: #333; text-decoration: none; cursor: pointer;
  }
  .pdfcomp-ractions a.pdfcomp-primary { background: #6d5efc; color: #fff; border-color: #6d5efc; }
  .pdfcomp-note { font-size: 12px; color: #999; margin-top: 6px; }
  .pdfcomp-warn { font-size: 12.5px; color: #b5730a; background: #fff8ec; border: 1px solid #f2dfb8; border-radius: 8px; padding: 8px 10px; margin-top: 10px; }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;pdfcomp-root&quot;&gt;
  &lt;div class=&quot;pdfcomp-title&quot;&gt;모두의 PDF 압축계산기&lt;/div&gt;
  &lt;div class=&quot;pdfcomp-lead1&quot;&gt;여러분의 소중한 파일을 더욱 가치있게 전달해보세요. 이렇게 제출하시면 됩니다&lt;/div&gt;
  &lt;div class=&quot;pdfcomp-lead2&quot;&gt;파일은 원본, 발표용, 증빙용 3가지로 압축 생성합니다. 제출 전 파일명도 변경해보세요&lt;/div&gt;

  &lt;!-- 1. 업로드 --&gt;
  &lt;div class=&quot;pdfcomp-card&quot;&gt;
    &lt;div class=&quot;pdfcomp-sechead pdfcomp-nocursor&quot;&gt;
      &lt;div class=&quot;pdfcomp-sectitle&quot;&gt;&lt;span class=&quot;pdfcomp-badge&quot;&gt;1&lt;/span&gt;PDF 업로드&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;pdfcomp-body&quot;&gt;
      &lt;div class=&quot;pdfcomp-drop&quot; id=&quot;pdfcomp-drop&quot;&gt;
        &lt;div id=&quot;pdfcomp-dropLabel&quot;&gt;여기를 눌러 PDF 파일을 선택하세요&lt;/div&gt;
        &lt;div class=&quot;pdfcomp-droptip&quot;&gt;또는 파일을 이 위로 끌어다 놓으세요&lt;/div&gt;
        &lt;input type=&quot;file&quot; id=&quot;pdfcomp-file&quot; accept=&quot;application/pdf&quot;&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pdfcomp-filebox&quot; id=&quot;pdfcomp-filebox&quot; style=&quot;display:none;&quot;&gt;
        &lt;div class=&quot;pdfcomp-filerow&quot;&gt;&lt;span id=&quot;pdfcomp-filesize&quot;&gt;&lt;/span&gt;&lt;span id=&quot;pdfcomp-pagecount&quot;&gt;&lt;/span&gt;&lt;/div&gt;
        &lt;div class=&quot;pdfcomp-renamerow&quot;&gt;
          &lt;label&gt;파일명&lt;/label&gt;
          &lt;input type=&quot;text&quot; id=&quot;pdfcomp-basename&quot;&gt;
          &lt;span&gt;.pdf&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 2. 압축 방식 선택 --&gt;
  &lt;div class=&quot;pdfcomp-card&quot;&gt;
    &lt;div class=&quot;pdfcomp-sechead&quot; id=&quot;pdfcomp-sechead2&quot;&gt;
      &lt;div class=&quot;pdfcomp-sectitle&quot;&gt;&lt;span class=&quot;pdfcomp-badge&quot;&gt;2&lt;/span&gt;압축 방식 선택&lt;/div&gt;
      &lt;div class=&quot;pdfcomp-chevron&quot; id=&quot;pdfcomp-chev2&quot;&gt;▼&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;pdfcomp-body pdfcomp-collapsed&quot; id=&quot;pdfcomp-body2&quot;&gt;
      &lt;div class=&quot;pdfcomp-warn&quot; id=&quot;pdfcomp-inflatewarn&quot; style=&quot;display:none;&quot;&gt;
        사용 중인 브라우저에서는 JPEG 외 이미지(PNG형 등) 재압축 기능이 제한됩니다. 최신 크롬/엣지/사파리 사용을 권장해요.
      &lt;/div&gt;
      &lt;div class=&quot;pdfcomp-presetblock&quot;&gt;
        &lt;div class=&quot;pdfcomp-presetlabel pdfcomp-pres&quot;&gt;발표용 방식&lt;/div&gt;
        &lt;div class=&quot;pdfcomp-modewrap&quot;&gt;
          &lt;div class=&quot;pdfcomp-mode pdfcomp-active&quot; id=&quot;pdfcomp-pres-modeB&quot;&gt;
            &lt;b&gt;이미지만 재압축 (기본)&lt;/b&gt;
            &lt;span&gt;텍스트는 그대로, 삽입된 사진/이미지(JPEG, 무압축 비트맵)만 압축합니다. 발표 자료 가독성 유지에 적합해요.&lt;/span&gt;
          &lt;/div&gt;
          &lt;div class=&quot;pdfcomp-mode&quot; id=&quot;pdfcomp-pres-modeA&quot;&gt;
            &lt;b&gt;전체 재압축&lt;/b&gt;
            &lt;span&gt;모든 페이지를 이미지로 변환합니다. 텍스트 선택이 불가능해집니다.&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pdfcomp-presetblock&quot;&gt;
        &lt;div class=&quot;pdfcomp-presetlabel pdfcomp-proof&quot;&gt;증빙용 방식&lt;/div&gt;
        &lt;div class=&quot;pdfcomp-modewrap&quot;&gt;
          &lt;div class=&quot;pdfcomp-mode pdfcomp-active&quot; id=&quot;pdfcomp-proof-modeA&quot;&gt;
            &lt;b&gt;전체 재압축 (기본)&lt;/b&gt;
            &lt;span&gt;모든 페이지를 이미지로 변환해 용량을 최대한 줄입니다. 제출용 최소 용량에 적합해요.&lt;/span&gt;
          &lt;/div&gt;
          &lt;div class=&quot;pdfcomp-mode&quot; id=&quot;pdfcomp-proof-modeB&quot;&gt;
            &lt;b&gt;이미지만 재압축&lt;/b&gt;
            &lt;span&gt;텍스트는 그대로, 삽입 이미지만 압축합니다.&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 3. 압축 강도 설정 --&gt;
  &lt;div class=&quot;pdfcomp-card&quot;&gt;
    &lt;div class=&quot;pdfcomp-sechead&quot; id=&quot;pdfcomp-sechead3&quot;&gt;
      &lt;div class=&quot;pdfcomp-sectitle&quot;&gt;&lt;span class=&quot;pdfcomp-badge&quot;&gt;3&lt;/span&gt;압축 강도 설정&lt;/div&gt;
      &lt;div class=&quot;pdfcomp-chevron&quot; id=&quot;pdfcomp-chev3&quot;&gt;▼&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;pdfcomp-body pdfcomp-collapsed&quot; id=&quot;pdfcomp-body3&quot;&gt;
      &lt;div class=&quot;pdfcomp-presetblock&quot;&gt;
        &lt;div class=&quot;pdfcomp-presetlabel pdfcomp-pres&quot;&gt;발표용 강도&lt;/div&gt;
        &lt;div class=&quot;pdfcomp-defaulttag&quot;&gt;아래 값은 기본값이며 자유롭게 조절할 수 있어요&lt;/div&gt;
        &lt;div class=&quot;pdfcomp-row&quot;&gt;&lt;label&gt;해상도(DPI)&lt;/label&gt;&lt;input type=&quot;range&quot; id=&quot;pdfcomp-pres-dpi&quot; min=&quot;72&quot; max=&quot;220&quot; value=&quot;180&quot;&gt;&lt;span class=&quot;pdfcomp-val&quot; id=&quot;pdfcomp-pres-dpi-val&quot;&gt;180&lt;/span&gt;&lt;/div&gt;
        &lt;div class=&quot;pdfcomp-row&quot;&gt;&lt;label&gt;이미지 품질&lt;/label&gt;&lt;input type=&quot;range&quot; id=&quot;pdfcomp-pres-q&quot; min=&quot;10&quot; max=&quot;95&quot; value=&quot;80&quot;&gt;&lt;span class=&quot;pdfcomp-val&quot; id=&quot;pdfcomp-pres-q-val&quot;&gt;80%&lt;/span&gt;&lt;/div&gt;
        &lt;div class=&quot;pdfcomp-estimate&quot; id=&quot;pdfcomp-pres-estimate&quot;&gt;예상 용량: 파일 업로드 후 표시됩니다&lt;/div&gt;
        &lt;button class=&quot;pdfcomp-btn pdfcomp-ghost pdfcomp-small&quot; id=&quot;pdfcomp-pres-reset&quot;&gt;기본값&lt;/button&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pdfcomp-presetblock&quot;&gt;
        &lt;div class=&quot;pdfcomp-presetlabel pdfcomp-proof&quot;&gt;증빙용 강도&lt;/div&gt;
        &lt;div class=&quot;pdfcomp-defaulttag&quot;&gt;아래 값은 기본값이며 자유롭게 조절할 수 있어요&lt;/div&gt;
        &lt;div class=&quot;pdfcomp-row&quot;&gt;&lt;label&gt;해상도(DPI)&lt;/label&gt;&lt;input type=&quot;range&quot; id=&quot;pdfcomp-proof-dpi&quot; min=&quot;50&quot; max=&quot;150&quot; value=&quot;90&quot;&gt;&lt;span class=&quot;pdfcomp-val&quot; id=&quot;pdfcomp-proof-dpi-val&quot;&gt;90&lt;/span&gt;&lt;/div&gt;
        &lt;div class=&quot;pdfcomp-row&quot;&gt;&lt;label&gt;이미지 품질&lt;/label&gt;&lt;input type=&quot;range&quot; id=&quot;pdfcomp-proof-q&quot; min=&quot;10&quot; max=&quot;95&quot; value=&quot;40&quot;&gt;&lt;span class=&quot;pdfcomp-val&quot; id=&quot;pdfcomp-proof-q-val&quot;&gt;40%&lt;/span&gt;&lt;/div&gt;
        &lt;div class=&quot;pdfcomp-estimate&quot; id=&quot;pdfcomp-proof-estimate&quot;&gt;예상 용량: 파일 업로드 후 표시됩니다&lt;/div&gt;
        &lt;button class=&quot;pdfcomp-btn pdfcomp-ghost pdfcomp-small&quot; id=&quot;pdfcomp-proof-reset&quot;&gt;기본값&lt;/button&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 4. 결과 --&gt;
  &lt;div class=&quot;pdfcomp-card&quot;&gt;
    &lt;div class=&quot;pdfcomp-sechead pdfcomp-nocursor&quot;&gt;
      &lt;div class=&quot;pdfcomp-sectitle&quot;&gt;&lt;span class=&quot;pdfcomp-badge&quot;&gt;4&lt;/span&gt;결과&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;pdfcomp-body&quot;&gt;
      &lt;div class=&quot;pdfcomp-namewrap&quot;&gt;
        &lt;div class=&quot;pdfcomp-namecol&quot;&gt;
          &lt;div class=&quot;pdfcomp-bubble&quot;&gt;파일명 앞에 [원본]_ [발표]_ [증빙]_ 을 붙여줘요&lt;/div&gt;
          &lt;label class=&quot;pdfcomp-checkline&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;pdfcomp-name1&quot;&gt; 말머리1&lt;/label&gt;
        &lt;/div&gt;
        &lt;div class=&quot;pdfcomp-namecol&quot;&gt;
          &lt;div class=&quot;pdfcomp-bubble&quot;&gt;파일명 앞에 [01] [02] [03] 순서를 붙여줘요&lt;/div&gt;
          &lt;label class=&quot;pdfcomp-checkline&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;pdfcomp-name2&quot;&gt; 말머리2&lt;/label&gt;
        &lt;/div&gt;
        &lt;div class=&quot;pdfcomp-namecol&quot;&gt;
          &lt;div class=&quot;pdfcomp-bubble&quot; id=&quot;pdfcomp-datebubble&quot;&gt;파일명 끝에 오늘 날짜를 붙여줘요&lt;/div&gt;
          &lt;label class=&quot;pdfcomp-checkline&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;pdfcomp-namedate&quot;&gt; 년월일&lt;/label&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;button class=&quot;pdfcomp-btn&quot; id=&quot;pdfcomp-run&quot; disabled&gt;압축 시작&lt;/button&gt;
      &lt;div class=&quot;pdfcomp-progress&quot; id=&quot;pdfcomp-progress&quot;&gt;&lt;/div&gt;

      &lt;div class=&quot;pdfcomp-results&quot; id=&quot;pdfcomp-results&quot;&gt;&lt;/div&gt;

      &lt;div class=&quot;pdfcomp-btnrow&quot; id=&quot;pdfcomp-savebtns&quot; style=&quot;display:none;&quot;&gt;
        &lt;button class=&quot;pdfcomp-btn&quot; id=&quot;pdfcomp-savezip&quot;&gt;압축저장 (ZIP)&lt;/button&gt;
        &lt;button class=&quot;pdfcomp-btn pdfcomp-ghost&quot; id=&quot;pdfcomp-saveall&quot;&gt;개별저장&lt;/button&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
(function () {
  'use strict';
  pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js';

  var DEFAULTS = {
    pres: { dpi: 180, q: 80 },
    proof: { dpi: 90, q: 40 }
  };

  var state = {
    file: null, bytes: null, pdfjsDoc: null, numPages: 0, baseName: '',
    modePres: 'B', modeProof: 'A',
    jpegSummary: null,
    results: {}
  };

  function fmtSize(bytes) {
    if (bytes &lt; 1024) return bytes + ' B';
    if (bytes &lt; 1024 * 1024) return (bytes / 1024).toFixed(1) + ' KB';
    return (bytes / (1024 * 1024)).toFixed(2) + ' MB';
  }
  function pad2(n) { return (n &lt; 10 ? '0' : '') + n; }
  function todayStr() {
    var d = new Date();
    return String(d.getFullYear()).slice(2) + pad2(d.getMonth() + 1) + pad2(d.getDate());
  }
  document.getElementById('pdfcomp-datebubble').textContent = '파일명 끝에 오늘 날짜를 _(' + todayStr() + ') 형식으로 붙여줘요';
  if (typeof DecompressionStream === 'undefined') {
    document.getElementById('pdfcomp-inflatewarn').style.display = 'block';
  }

  /* ---------- 접이식 섹션 ---------- */
  function bindCollapse(headId, chevId, bodyId) {
    var head = document.getElementById(headId);
    var chev = document.getElementById(chevId);
    var body = document.getElementById(bodyId);
    head.addEventListener('click', function () {
      var collapsed = body.className.indexOf('pdfcomp-collapsed') !== -1;
      body.className = collapsed ? 'pdfcomp-body' : 'pdfcomp-body pdfcomp-collapsed';
      chev.className = collapsed ? 'pdfcomp-chevron pdfcomp-open' : 'pdfcomp-chevron';
    });
  }
  bindCollapse('pdfcomp-sechead2', 'pdfcomp-chev2', 'pdfcomp-body2');
  bindCollapse('pdfcomp-sechead3', 'pdfcomp-chev3', 'pdfcomp-body3');

  /* ---------- 업로드 ---------- */
  var dropEl = document.getElementById('pdfcomp-drop');
  var fileInput = document.getElementById('pdfcomp-file');
  var dropLabel = document.getElementById('pdfcomp-dropLabel');
  var filebox = document.getElementById('pdfcomp-filebox');
  var filesizeEl = document.getElementById('pdfcomp-filesize');
  var pagecountEl = document.getElementById('pdfcomp-pagecount');
  var basenameInput = document.getElementById('pdfcomp-basename');
  var runBtn = document.getElementById('pdfcomp-run');
  var progressEl = document.getElementById('pdfcomp-progress');
  var resultsEl = document.getElementById('pdfcomp-results');
  var savebtns = document.getElementById('pdfcomp-savebtns');

  dropEl.addEventListener('click', function () { fileInput.click(); });
  dropEl.addEventListener('dragover', function (e) { e.preventDefault(); dropEl.className = 'pdfcomp-drop pdfcomp-drag'; });
  dropEl.addEventListener('dragleave', function () { dropEl.className = 'pdfcomp-drop'; });
  dropEl.addEventListener('drop', function (e) {
    e.preventDefault();
    dropEl.className = 'pdfcomp-drop';
    if (e.dataTransfer.files &amp;&amp; e.dataTransfer.files[0]) handleFile(e.dataTransfer.files[0]);
  });
  fileInput.addEventListener('change', function (e) {
    if (e.target.files &amp;&amp; e.target.files[0]) handleFile(e.target.files[0]);
  });
  basenameInput.addEventListener('input', function () { state.baseName = basenameInput.value || 'file'; });

  function handleFile(f) {
    if (f.type !== 'application/pdf') { alert('PDF 파일만 업로드할 수 있습니다.'); return; }
    var reader = new FileReader();
    reader.onload = function (ev) {
      state.file = f;
      state.bytes = new Uint8Array(ev.target.result);
      state.baseName = f.name.replace(/\.pdf$/i, '');
      dropLabel.textContent = '다른 PDF로 변경하려면 다시 클릭하세요';
      filebox.style.display = 'block';
      filesizeEl.textContent = '용량: ' + fmtSize(f.size);
      basenameInput.value = state.baseName;
      resultsEl.innerHTML = '';
      savebtns.style.display = 'none';
      state.results = {};
      runBtn.disabled = false;

      pdfjsLib.getDocument({ data: state.bytes.slice() }).promise.then(function (pdf) {
        state.pdfjsDoc = pdf;
        state.numPages = pdf.numPages;
        pagecountEl.textContent = pdf.numPages + '페이지';
        scanJpegSummary(state.bytes).then(function (summary) {
          state.jpegSummary = summary;
          updateEstimate('pres');
          updateEstimate('proof');
        });
      });
    };
    reader.readAsArrayBuffer(f);
  }

  /* ---------- 방식 선택 (섹션2) ---------- */
  function bindModeToggle(aId, bId, setter) {
    var aEl = document.getElementById(aId);
    var bEl = document.getElementById(bId);
    aEl.addEventListener('click', function () { setter('A'); aEl.className = 'pdfcomp-mode pdfcomp-active'; bEl.className = 'pdfcomp-mode'; });
    bEl.addEventListener('click', function () { setter('B'); bEl.className = 'pdfcomp-mode pdfcomp-active'; aEl.className = 'pdfcomp-mode'; });
  }
  bindModeToggle('pdfcomp-pres-modeA', 'pdfcomp-pres-modeB', function (m) { state.modePres = m; updateEstimate('pres'); });
  bindModeToggle('pdfcomp-proof-modeA', 'pdfcomp-proof-modeB', function (m) { state.modeProof = m; updateEstimate('proof'); });
  // 초기 기본 선택 상태 맞추기 (발표용=B 활성, 증빙용=A 활성 이미 마크업에 반영됨)

  /* ---------- 강도 슬라이더 (섹션3) ---------- */
  function bindSlider(id, valId, suffix, onChange) {
    var el = document.getElementById(id);
    var val = document.getElementById(valId);
    el.addEventListener('input', function () {
      val.textContent = el.value + (suffix || '');
      onChange();
    });
  }
  var estimateTimers = {};
  function debounced(key, fn, ms) {
    clearTimeout(estimateTimers[key]);
    estimateTimers[key] = setTimeout(fn, ms || 350);
  }
  bindSlider('pdfcomp-pres-dpi', 'pdfcomp-pres-dpi-val', '', function () { debounced('pres', function () { updateEstimate('pres'); }); });
  bindSlider('pdfcomp-pres-q', 'pdfcomp-pres-q-val', '%', function () { debounced('pres', function () { updateEstimate('pres'); }); });
  bindSlider('pdfcomp-proof-dpi', 'pdfcomp-proof-dpi-val', '', function () { debounced('proof', function () { updateEstimate('proof'); }); });
  bindSlider('pdfcomp-proof-q', 'pdfcomp-proof-q-val', '%', function () { debounced('proof', function () { updateEstimate('proof'); }); });

  document.getElementById('pdfcomp-pres-reset').addEventListener('click', function () {
    document.getElementById('pdfcomp-pres-dpi').value = DEFAULTS.pres.dpi;
    document.getElementById('pdfcomp-pres-q').value = DEFAULTS.pres.q;
    document.getElementById('pdfcomp-pres-dpi-val').textContent = DEFAULTS.pres.dpi;
    document.getElementById('pdfcomp-pres-q-val').textContent = DEFAULTS.pres.q + '%';
    updateEstimate('pres');
  });
  document.getElementById('pdfcomp-proof-reset').addEventListener('click', function () {
    document.getElementById('pdfcomp-proof-dpi').value = DEFAULTS.proof.dpi;
    document.getElementById('pdfcomp-proof-q').value = DEFAULTS.proof.q;
    document.getElementById('pdfcomp-proof-dpi-val').textContent = DEFAULTS.proof.dpi;
    document.getElementById('pdfcomp-proof-q-val').textContent = DEFAULTS.proof.q + '%';
    updateEstimate('proof');
  });

  /* ---------- 파일명 옵션 (섹션4) ---------- */
  var name1 = document.getElementById('pdfcomp-name1');
  var name2 = document.getElementById('pdfcomp-name2');
  var nameDate = document.getElementById('pdfcomp-namedate');
  name1.addEventListener('change', function () { if (name1.checked) name2.checked = false; });
  name2.addEventListener('change', function () { if (name2.checked) name1.checked = false; });

  function buildName(kind) {
    var label1 = { orig: '원본', pres: '발표', proof: '증빙' };
    var label2 = { orig: '01', pres: '02', proof: '03' };
    var prefix = '';
    if (name1.checked) prefix = '[' + label1[kind] + ']_';
    else if (name2.checked) prefix = '[' + label2[kind] + ']_';
    var suffix = nameDate.checked ? '_(' + todayStr() + ')' : '';
    return prefix + state.baseName + suffix;
  }

  /* ---------- 유틸 ---------- */
  function dataURLToBytes(dataUrl) {
    var b64 = dataUrl.split(',')[1];
    var bin = atob(b64);
    var arr = new Uint8Array(bin.length);
    for (var i = 0; i &lt; bin.length; i++) arr[i] = bin.charCodeAt(i);
    return arr;
  }

  /* 브라우저가 FlateDecode(비JPEG) 이미지 압축 해제를 지원하는지 확인 */
  var hasInflate = (typeof DecompressionStream !== 'undefined');
  function inflateZlib(bytes) {
    var ds = new DecompressionStream('deflate');
    var decompressedStream = new Response(bytes).body.pipeThrough(ds);
    return new Response(decompressedStream).arrayBuffer().then(function (buf) { return new Uint8Array(buf); });
  }
  function numOf(v) { return v &amp;&amp; typeof v.asNumber === 'function' ? v.asNumber() : 0; }

  /* 이미지 XObject가 재압축 가능한지, 어떤 방식인지 판별
     'jpeg' = DCTDecode(그대로 재압축), 'flate-rgb'/'flate-gray' = 무압축 비트맵(FlateDecode, predictor 없음, 8bpc) */
  function detectImageType(dict, ctx) {
    var filter = dict.get(PDFLib.PDFName.of('Filter'));
    var filterStr = filter ? filter.toString() : '';
    if (filterStr.indexOf('DCTDecode') !== -1) return 'jpeg';
    if (!hasInflate) return null;
    if (filterStr.indexOf('FlateDecode') === -1) return null;
    var dpRaw = dict.get(PDFLib.PDFName.of('DecodeParms')) || dict.get(PDFLib.PDFName.of('DP'));
    if (dpRaw) {
      var dp = (dpRaw instanceof PDFLib.PDFRef) ? ctx.lookup(dpRaw) : dpRaw;
      if (dp &amp;&amp; dp.get) {
        var predictor = dp.get(PDFLib.PDFName.of('Predictor'));
        var predNum = predictor ? numOf(predictor) || 1 : 1;
        if (predNum &gt; 1) return null; // PNG predictor 등은 미지원 (안전을 위해 건너뜀)
      } else {
        return null;
      }
    }
    var bpc = dict.get(PDFLib.PDFName.of('BitsPerComponent'));
    if (numOf(bpc) !== 8) return null;
    var csRaw = dict.get(PDFLib.PDFName.of('ColorSpace'));
    var cs = (csRaw instanceof PDFLib.PDFRef) ? ctx.lookup(csRaw) : csRaw;
    var csStr = cs ? cs.toString() : '';
    if (csStr.indexOf('DeviceRGB') !== -1) return 'flate-rgb';
    if (csStr.indexOf('DeviceGray') !== -1 || csStr.indexOf('CalGray') !== -1) return 'flate-gray';
    return null;
  }

  /* 캔버스에 그린 뒤 JPEG로 재인코딩, 원본보다 작아질 때만 XObject에 반영 */
  function writeCompressedImage(obj, srcW, srcH, drawFn, maxDim, quality, origLen) {
    var scale = Math.min(1, maxDim / Math.max(srcW, srcH, 1));
    var w = Math.max(1, Math.round(srcW * scale));
    var h = Math.max(1, Math.round(srcH * scale));
    var canvas = document.createElement('canvas');
    canvas.width = w; canvas.height = h;
    drawFn(canvas);
    var newUrl = canvas.toDataURL('image/jpeg', quality / 100);
    var newBytes = dataURLToBytes(newUrl);
    if (newBytes.length &lt; origLen) {
      obj.contents = newBytes;
      obj.dict.set(PDFLib.PDFName.of('Width'), PDFLib.PDFNumber.of(w));
      obj.dict.set(PDFLib.PDFName.of('Height'), PDFLib.PDFNumber.of(h));
      obj.dict.set(PDFLib.PDFName.of('Length'), PDFLib.PDFNumber.of(newBytes.length));
      obj.dict.set(PDFLib.PDFName.of('Filter'), PDFLib.PDFName.of('DCTDecode'));
      obj.dict.set(PDFLib.PDFName.of('ColorSpace'), PDFLib.PDFName.of('DeviceRGB'));
      obj.dict.delete(PDFLib.PDFName.of('DecodeParms'));
      obj.dict.delete(PDFLib.PDFName.of('DP'));
      return true;
    }
    return false;
  }

  /* JPEG/무압축 비트맵 XObject 정보 스캔 (재인코딩 없이 Width/Height/Length만 읽음, 예상용량 계산용) */
  function scanJpegSummary(bytes) {
    return PDFLib.PDFDocument.load(bytes).then(function (pdfDoc) {
      var items = [];
      var total = 0;
      var pages = pdfDoc.getPages();
      pages.forEach(function (page) {
        var resources = page.node.Resources();
        if (!resources) return;
        var xobjDictRef = resources.get(PDFLib.PDFName.of('XObject'));
        var xobjDict = xobjDictRef ? pdfDoc.context.lookup(xobjDictRef) : null;
        if (!xobjDict || !xobjDict.keys) return;
        xobjDict.keys().forEach(function (name) {
          var ref = xobjDict.get(name);
          var obj = pdfDoc.context.lookup(ref);
          if (!obj || !obj.dict || !obj.contents) return;
          var subtype = obj.dict.get(PDFLib.PDFName.of('Subtype'));
          if (!subtype || subtype.toString() !== '/Image') return;
          var imgType = detectImageType(obj.dict, pdfDoc.context);
          if (!imgType) return;
          var w = obj.dict.get(PDFLib.PDFName.of('Width'));
          var h = obj.dict.get(PDFLib.PDFName.of('Height'));
          var wNum = numOf(w);
          var hNum = numOf(h);
          items.push({ bytes: obj.contents.length, width: wNum, height: hNum, type: imgType });
          total += obj.contents.length;
        });
      });
      return { items: items, total: total };
    })['catch'](function () { return { items: [], total: 0 }; });
  }

  /* 예상 용량 표시 (근사치) */
  function updateEstimate(preset) {
    if (!state.bytes) return;
    var elId = preset === 'pres' ? 'pdfcomp-pres-estimate' : 'pdfcomp-proof-estimate';
    var el = document.getElementById(elId);
    var mode = preset === 'pres' ? state.modePres : state.modeProof;
    var dpi = parseInt(document.getElementById('pdfcomp-' + preset + '-dpi').value, 10);
    var q = parseInt(document.getElementById('pdfcomp-' + preset + '-q').value, 10);
    el.textContent = '예상 용량 계산 중...';

    if (mode === 'A') {
      state.pdfjsDoc.getPage(1).then(function (page) {
        var viewport = page.getViewport({ scale: dpi / 72 });
        var canvas = document.createElement('canvas');
        canvas.width = viewport.width; canvas.height = viewport.height;
        var ctx = canvas.getContext('2d');
        return page.render({ canvasContext: ctx, viewport: viewport }).promise.then(function () {
          var url = canvas.toDataURL('image/jpeg', q / 100);
          var page1Bytes = dataURLToBytes(url).length;
          var est = Math.round(page1Bytes * state.numPages * 1.03);
          el.textContent = '예상 용량: 약 ' + fmtSize(est) + ' (1페이지 기준 추정치)';
        });
      })['catch'](function () { el.textContent = '예상 용량을 계산할 수 없습니다'; });
    } else {
      if (!state.jpegSummary || state.jpegSummary.items.length === 0) {
        el.textContent = '예상 용량: 원본과 비슷함 (재압축 가능한 이미지 없음)';
        return;
      }
      var maxDim = Math.round(dpi * 11.7);
      var newTotal = 0;
      state.jpegSummary.items.forEach(function (it) {
        var scale = Math.min(1, maxDim / Math.max(it.width, it.height, 1));
        newTotal += it.bytes * (q / 100) * scale * scale;
      });
      var estSize = Math.round(state.bytes.length - state.jpegSummary.total + newTotal);
      if (estSize &gt; state.bytes.length) estSize = state.bytes.length;
      el.textContent = '예상 용량: 약 ' + fmtSize(estSize) + ' (이미지 데이터 기준 추정치)';
    }
  }

  /* ---------- 실제 압축 처리 ---------- */
  function rasterizeCompress(bytes, dpi, quality, onProgress) {
    return pdfjsLib.getDocument({ data: bytes.slice() }).promise.then(function (pdf) {
      return PDFLib.PDFDocument.create().then(function (newDoc) {
        var pageCount = pdf.numPages;
        var firstPreview = null;
        var chain = Promise.resolve();
        var _loop = function (i) {
          chain = chain.then(function () {
            return pdf.getPage(i).then(function (page) {
              var viewport = page.getViewport({ scale: dpi / 72 });
              var canvas = document.createElement('canvas');
              canvas.width = viewport.width; canvas.height = viewport.height;
              var ctx = canvas.getContext('2d');
              return page.render({ canvasContext: ctx, viewport: viewport }).promise.then(function () {
                var jpegUrl = canvas.toDataURL('image/jpeg', quality / 100);
                if (i === 1) firstPreview = jpegUrl;
                var jpegBytes = dataURLToBytes(jpegUrl);
                return newDoc.embedJpg(jpegBytes).then(function (img) {
                  var ptW = viewport.width * 72 / dpi;
                  var ptH = viewport.height * 72 / dpi;
                  var newPage = newDoc.addPage([ptW, ptH]);
                  newPage.drawImage(img, { x: 0, y: 0, width: ptW, height: ptH });
                  if (onProgress) onProgress(i, pageCount);
                });
              });
            });
          });
        };
        for (var i = 1; i &lt;= pageCount; i++) _loop(i);
        return chain.then(function () { return newDoc.save(); }).then(function (outBytes) {
          return { bytes: outBytes, preview: firstPreview };
        });
      });
    });
  }

  function imageOnlyCompress(bytes, maxDim, quality, onProgress) {
    return PDFLib.PDFDocument.load(bytes).then(function (pdfDoc) {
      var pages = pdfDoc.getPages();
      var touched = 0;
      var chain = Promise.resolve();
      pages.forEach(function (page, idx) {
        chain = chain.then(function () {
          var resources = page.node.Resources();
          if (!resources) { if (onProgress) onProgress(idx + 1, pages.length); return; }
          var xobjDictRef = resources.get(PDFLib.PDFName.of('XObject'));
          var xobjDict = xobjDictRef ? pdfDoc.context.lookup(xobjDictRef) : null;
          if (!xobjDict || !xobjDict.keys) { if (onProgress) onProgress(idx + 1, pages.length); return; }
          var keys = xobjDict.keys();
          var innerChain = Promise.resolve();
          keys.forEach(function (name) {
            innerChain = innerChain.then(function () {
              var ref = xobjDict.get(name);
              var obj = pdfDoc.context.lookup(ref);
              if (!obj || !obj.dict || !obj.contents) return;
              var subtype = obj.dict.get(PDFLib.PDFName.of('Subtype'));
              if (!subtype || subtype.toString() !== '/Image') return;
              var imgType = detectImageType(obj.dict, pdfDoc.context);
              if (!imgType) return;

              if (imgType === 'jpeg') {
                var rawBytes = obj.contents;
                var blob = new Blob([rawBytes], { type: 'image/jpeg' });
                return createImageBitmap(blob).then(function (bitmap) {
                  var ok = writeCompressedImage(obj, bitmap.width, bitmap.height, function (canvas) {
                    canvas.getContext('2d').drawImage(bitmap, 0, 0, canvas.width, canvas.height);
                  }, maxDim, quality, rawBytes.length);
                  if (ok) touched++;
                })['catch'](function () { });
              } else {
                var w0 = numOf(obj.dict.get(PDFLib.PDFName.of('Width')));
                var h0 = numOf(obj.dict.get(PDFLib.PDFName.of('Height')));
                if (!w0 || !h0) return;
                return inflateZlib(obj.contents).then(function (raw) {
                  var comps = imgType === 'flate-rgb' ? 3 : 1;
                  if (raw.length &lt; w0 * h0 * comps) return;
                  var imgData = new ImageData(w0, h0);
                  var px = imgData.data;
                  var i, j;
                  if (comps === 3) {
                    for (i = 0, j = 0; i &lt; w0 * h0; i++) {
                      px[j++] = raw[i * 3]; px[j++] = raw[i * 3 + 1]; px[j++] = raw[i * 3 + 2]; px[j++] = 255;
                    }
                  } else {
                    for (i = 0, j = 0; i &lt; w0 * h0; i++) {
                      var v = raw[i]; px[j++] = v; px[j++] = v; px[j++] = v; px[j++] = 255;
                    }
                  }
                  var srcCanvas = document.createElement('canvas');
                  srcCanvas.width = w0; srcCanvas.height = h0;
                  srcCanvas.getContext('2d').putImageData(imgData, 0, 0);
                  var ok = writeCompressedImage(obj, w0, h0, function (canvas) {
                    canvas.getContext('2d').drawImage(srcCanvas, 0, 0, canvas.width, canvas.height);
                  }, maxDim, quality, obj.contents.length);
                  if (ok) touched++;
                })['catch'](function () { });
              }
            });
          });
          return innerChain.then(function () { if (onProgress) onProgress(idx + 1, pages.length); });
        });
      });
      return chain.then(function () {
        return pdfDoc.save().then(function (outBytes) { return { bytes: outBytes, touched: touched }; });
      });
    });
  }

  function renderFirstPagePreview(bytes) {
    return pdfjsLib.getDocument({ data: bytes.slice() }).promise.then(function (pdf) {
      return pdf.getPage(1).then(function (page) {
        var viewport = page.getViewport({ scale: 1.2 });
        var canvas = document.createElement('canvas');
        canvas.width = viewport.width; canvas.height = viewport.height;
        var ctx = canvas.getContext('2d');
        return page.render({ canvasContext: ctx, viewport: viewport }).promise.then(function () {
          return canvas.toDataURL('image/jpeg', 0.85);
        });
      });
    });
  }

  function runPreset(mode, dpi, quality, label) {
    if (mode === 'A') {
      return rasterizeCompress(state.bytes, dpi, quality, function (done, total) {
        progressEl.textContent = label + ' 처리 중... (' + done + '/' + total + '페이지)';
      });
    } else {
      var maxDim = Math.round(dpi * 11.7);
      return imageOnlyCompress(state.bytes, maxDim, quality, function (done, total) {
        progressEl.textContent = label + ' 처리 중... (' + done + '/' + total + '페이지)';
      }).then(function (res) {
        return renderFirstPagePreview(res.bytes).then(function (preview) {
          return { bytes: res.bytes, preview: preview, touched: res.touched };
        });
      });
    }
  }

  function addResultCard(kind, label, blob, previewUrl, sizeText, extraNote) {
    var wrap = document.createElement('div');
    wrap.className = 'pdfcomp-result';

    var thumb = document.createElement('div');
    thumb.className = 'pdfcomp-thumb';
    if (previewUrl) {
      var img = document.createElement('img'); img.src = previewUrl; thumb.appendChild(img);
    } else { thumb.textContent = '미리보기 없음'; }
    wrap.appendChild(thumb);

    var info = document.createElement('div');
    info.className = 'pdfcomp-rinfo';
    var title = document.createElement('div'); title.className = 'pdfcomp-rname'; title.textContent = label;
    info.appendChild(title);
    var sizeDiv = document.createElement('div'); sizeDiv.className = 'pdfcomp-rsize'; sizeDiv.innerHTML = sizeText;
    info.appendChild(sizeDiv);

    var fnameInput = document.createElement('input');
    fnameInput.className = 'pdfcomp-fname';
    fnameInput.value = buildName(kind);
    info.appendChild(fnameInput);

    if (extraNote) {
      var note = document.createElement('div'); note.className = 'pdfcomp-note'; note.textContent = extraNote;
      info.appendChild(note);
    }

    var actions = document.createElement('div'); actions.className = 'pdfcomp-ractions';
    var url = URL.createObjectURL(blob);
    var link = document.createElement('a');
    link.className = 'pdfcomp-primary'; link.href = url; link.download = fnameInput.value + '.pdf'; link.textContent = '다운로드';
    fnameInput.addEventListener('input', function () {
      link.download = (fnameInput.value || 'download') + '.pdf';
      state.results[kind].filename = fnameInput.value || 'download';
    });
    actions.appendChild(link);
    info.appendChild(actions);
    wrap.appendChild(info);
    resultsEl.appendChild(wrap);

    state.results[kind] = { blob: blob, filename: fnameInput.value };
  }

  runBtn.addEventListener('click', function () {
    if (!state.bytes) return;
    runBtn.disabled = true;
    resultsEl.innerHTML = '';
    state.results = {};
    savebtns.style.display = 'none';
    progressEl.textContent = '처리 중...';

    var origSize = state.bytes.length;
    var presDpi = parseInt(document.getElementById('pdfcomp-pres-dpi').value, 10);
    var presQ = parseInt(document.getElementById('pdfcomp-pres-q').value, 10);
    var proofDpi = parseInt(document.getElementById('pdfcomp-proof-dpi').value, 10);
    var proofQ = parseInt(document.getElementById('pdfcomp-proof-q').value, 10);

    var origBlob = new Blob([state.bytes], { type: 'application/pdf' });
    renderFirstPagePreview(state.bytes).then(function (origPreview) {
      addResultCard('orig', '원본', origBlob, origPreview, '용량: &lt;b&gt;' + fmtSize(origSize) + '&lt;/b&gt;', null);

      return runPreset(state.modePres, presDpi, presQ, '발표용').then(function (presRes) {
        var presBlob = new Blob([presRes.bytes], { type: 'application/pdf' });
        var reduce = Math.round((1 - presBlob.size / origSize) * 100);
        var note = (state.modePres === 'B' &amp;&amp; presRes.touched === 0) ? '재압축 가능한 이미지를 찾지 못해 용량 변화가 적을 수 있어요. (텍스트/도형 위주 문서로 보여요)' : null;
        addResultCard('pres', '발표용', presBlob, presRes.preview,
          '용량: &lt;b&gt;' + fmtSize(presBlob.size) + '&lt;/b&gt; (원본 대비 ' + (reduce &gt; 0 ? reduce + '%↓' : '변화 적음') + ')', note);

        return runPreset(state.modeProof, proofDpi, proofQ, '증빙용');
      }).then(function (proofRes) {
        var proofBlob = new Blob([proofRes.bytes], { type: 'application/pdf' });
        var reduce = Math.round((1 - proofBlob.size / origSize) * 100);
        var note = (state.modeProof === 'B' &amp;&amp; proofRes.touched === 0) ? '재압축 가능한 이미지를 찾지 못해 용량 변화가 적을 수 있어요. (텍스트/도형 위주 문서로 보여요)' : null;
        addResultCard('proof', '증빙용', proofBlob, proofRes.preview,
          '용량: &lt;b&gt;' + fmtSize(proofBlob.size) + '&lt;/b&gt; (원본 대비 ' + (reduce &gt; 0 ? reduce + '%↓' : '변화 적음') + ')', note);

        progressEl.textContent = '완료되었습니다.';
        runBtn.disabled = false;
        savebtns.style.display = 'flex';
      });
    })['catch'](function (err) {
      console.error(err);
      progressEl.textContent = '오류가 발생했습니다: ' + (err &amp;&amp; err.message ? err.message : err);
      runBtn.disabled = false;
    });
  });

  /* ---------- 저장 ---------- */
  document.getElementById('pdfcomp-saveall').addEventListener('click', function () {
    var order = ['orig', 'pres', 'proof'];
    order.forEach(function (kind, idx) {
      var r = state.results[kind];
      if (!r) return;
      setTimeout(function () {
        var url = URL.createObjectURL(r.blob);
        var a = document.createElement('a');
        a.href = url; a.download = r.filename + '.pdf';
        document.body.appendChild(a); a.click(); document.body.removeChild(a);
      }, idx * 400);
    });
  });

  document.getElementById('pdfcomp-savezip').addEventListener('click', function () {
    var order = ['orig', 'pres', 'proof'];
    var zip = new JSZip();
    order.forEach(function (kind) {
      var r = state.results[kind];
      if (!r) return;
      zip.file(r.filename + '.pdf', r.blob);
    });
    zip.generateAsync({ type: 'blob' }).then(function (content) {
      var url = URL.createObjectURL(content);
      var a = document.createElement('a');
      a.href = url; a.download = state.baseName + '_제출파일.zip';
      document.body.appendChild(a); a.click(); document.body.removeChild(a);
    });
  });
})();
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>모두의계산기/PDF취합관련</category>
      <category>pdf</category>
      <category>VC가좋아하는웹앱</category>
      <category>발표자료</category>
      <category>투자자가원하는웹앱</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/33</guid>
      <comments>https://0-1.kr/33#entry33comment</comments>
      <pubDate>Fri, 4 Dec 2020 17:06:46 +0900</pubDate>
    </item>
    <item>
      <title>모두의 발표장계산기(0-1.kr/30)</title>
      <link>https://0-1.kr/30</link>
      <description>&lt;!--
  모두의 발표장 계산기 V29_260605
  출처: 스타트업ex _ cds1981@naver.com
  티스토리 주소: 0-1.kr
--&gt;
&lt;style&gt;
*{box-sizing:border-box;-webkit-box-sizing:border-box;margin:0;padding:0;}
.pj-wrap{font-family:'Noto Sans KR',sans-serif;background:#f0f4f8;color:#1e293b;min-height:100vh;padding:0 0 40px 0;max-width:900px;margin:0 auto;}

/* 헤더 */
.pj-header{background:linear-gradient(135deg,#1e40af,#3b82f6);padding:10px 12px;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:8px;-webkit-flex-wrap:wrap;flex-wrap:wrap;}
.pj-header-title{-webkit-flex:1;flex:1;min-width:120px;}
.pj-header-title h1{font-size:17px;font-weight:700;color:#fff;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pj-header-title p{font-size:10px;color:#bfdbfe;margin:2px 0 0;}
.pj-header-btns{display:-webkit-flex;display:flex;gap:4px;-webkit-flex-shrink:0;flex-shrink:0;-webkit-flex-wrap:wrap;flex-wrap:wrap;}
.pj-hdr-btn{background:rgba(255,255,255,0.18);color:#fff;border:1.5px solid rgba(255,255,255,0.4);border-radius:7px;padding:6px 9px;font-size:11px;font-weight:700;cursor:pointer;-webkit-appearance:none;font-family:inherit;white-space:nowrap;}
.pj-hdr-btn:hover{background:rgba(255,255,255,0.3);}
.pj-hdr-btn-green{background:rgba(5,150,105,0.7);border-color:rgba(5,150,105,0.9);}
.pj-hdr-btn-green:hover{background:rgba(5,150,105,0.9);}

.pj-section{background:#fff;border-radius:14px;margin:14px 12px 0;padding:16px;border:1px solid #e2e8f0;box-shadow:0 2px 8px rgba(0,0,0,0.06);}
.pj-section-title{font-size:15px;font-weight:700;color:#1e40af;margin:0 0 12px;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:6px;}

/* 드롭존 */
.pj-dropzone{border:2px dashed #3b82f6;border-radius:10px;padding:28px 18px;text-align:center;cursor:pointer;background:#eff6ff;margin-bottom:12px;transition:background 0.2s;}
.pj-dropzone:hover,.pj-dropzone.drag-over{background:#dbeafe;}
.pj-dropzone-icon{font-size:36px;margin-bottom:8px;}
.pj-dropzone p{margin:0;font-size:14px;color:#64748b;}
.pj-dropzone b{color:#1e40af;}
.pj-dropzone small{font-size:12px;color:#94a3b8;margin-top:4px;display:block;}
.pj-file-input{display:none;}

/* 파일 리스트 (가로 길게) */
.pj-file-list-wrap{border:1.5px solid #e2e8f0;border-radius:10px;overflow:hidden;max-height:360px;overflow-y:auto;background:#f8fafc;margin-bottom:10px;}
.pj-file-list-wrap:empty{display:none;}
.pj-file-list{list-style:none;margin:0;padding:0;}
.pj-file-row{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:0;padding:6px 8px;border-bottom:1px solid #e2e8f0;background:#fff;cursor:default;touch-action:auto;-webkit-user-select:none;user-select:none;}
.pj-file-row:last-child{border-bottom:none;}
.pj-file-row:hover{background:#f0f9ff;}
.pj-file-row.sortable-ghost{opacity:0.35;background:#dbeafe;}
/* 썸네일 */
.pj-row-thumb{width:34px;min-width:34px;height:44px;-webkit-flex-shrink:0;flex-shrink:0;background:#e2e8f0;border-radius:4px;overflow:hidden;border:1px solid #cbd5e1;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;}
.pj-row-thumb img{width:100%;height:100%;object-fit:contain;display:block;}
.pj-row-thumb-empty{font-size:16px;color:#94a3b8;}
/* 번호 */
.pj-row-num{font-size:13px;font-weight:700;color:#1e40af;width:26px;min-width:26px;-webkit-flex-shrink:0;flex-shrink:0;text-align:center;padding:0;}
/* 핸들 */
.pj-row-handle{font-size:18px;color:#94a3b8;cursor:grab;width:28px;min-width:28px;-webkit-flex-shrink:0;flex-shrink:0;padding:0;text-align:center;-webkit-user-select:none;user-select:none;touch-action:none;}
/* 파일 정보 */
.pj-row-info{-webkit-flex:1;flex:1;min-width:0;overflow:hidden;padding:0 6px;}
.pj-row-name{font-size:13px;font-weight:600;color:#1e293b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.pj-row-pages{font-size:11px;color:#64748b;margin-top:1px;}
/* 삭제 */
.pj-row-del{background:#fee2e2;color:#dc2626;border:1px solid #fca5a5;border-radius:6px;padding:5px 9px;font-size:12px;cursor:pointer;-webkit-flex-shrink:0;flex-shrink:0;-webkit-appearance:none;font-family:inherit;font-weight:600;}
.pj-row-del:hover{background:#fecaca;}

/* 버튼 공통 */
.pj-btn-row{display:-webkit-flex;display:flex;gap:8px;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin-top:8px;}
.pj-btn{background:#fff;color:#1e40af;border:1.5px solid #93c5fd;border-radius:8px;padding:9px 13px;font-size:13px;cursor:pointer;-webkit-appearance:none;font-family:inherit;font-weight:600;}
.pj-btn:hover{background:#eff6ff;}
.pj-btn-green{background:#059669;color:#fff;border-color:#059669;}
.pj-btn-green:hover{background:#047857;}
.pj-btn-orange{background:#d97706;color:#fff;border-color:#d97706;font-size:12px;padding:7px 11px;}

/* 툴팁 */
.pj-tooltip-wrap{position:relative;display:inline-block;}
.pj-tooltip{position:absolute;bottom:calc(100% + 7px);left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);background:#1e293b;color:#fff;font-size:11px;padding:5px 9px;border-radius:6px;pointer-events:none;opacity:0;-webkit-transition:opacity 0.2s;transition:opacity 0.2s;z-index:9999;white-space:nowrap;text-align:center;line-height:1.4;}
.pj-tooltip::after{content:'';position:absolute;top:100%;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);border:5px solid transparent;border-top-color:#1e293b;}
.pj-tooltip-wrap:hover .pj-tooltip{opacity:1;}

/* 구글드라이브 */
.pj-gdrive-toggle{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:8px;background:#fef9c3;border:1.5px solid #fde68a;border-radius:10px;padding:10px 14px;cursor:pointer;margin-top:12px;-webkit-user-select:none;user-select:none;}
.pj-gdrive-toggle span{font-size:13px;color:#92400e;font-weight:700;-webkit-flex:1;flex:1;}
.pj-gdrive-badge{display:inline-block;background:#d97706;color:#fff;font-size:10px;font-weight:700;border-radius:4px;padding:2px 6px;}
.pj-gdrive-arrow{font-size:13px;color:#92400e;-webkit-transition:-webkit-transform 0.2s;transition:transform 0.2s;}
.pj-gdrive-arrow.open{-webkit-transform:rotate(180deg);transform:rotate(180deg);}
.pj-gdrive-body{display:none;background:#fefce8;border:1.5px solid #fde68a;border-top:none;border-radius:0 0 10px 10px;padding:12px;}
.pj-gdrive-body.open{display:block;}
.pj-gdrive-desc{font-size:12px;color:#92400e;margin-bottom:10px;line-height:1.6;}
.pj-gdrive-link-item{display:-webkit-flex;display:flex;gap:6px;margin-bottom:8px;-webkit-align-items:center;align-items:center;}
.pj-gdrive-input{-webkit-flex:1;flex:1;background:#fff;border:1.5px solid #fbbf24;border-radius:7px;padding:7px 10px;font-size:12px;color:#1e293b;-webkit-appearance:none;font-family:inherit;}
.pj-gdrive-name-input{width:90px;background:#fff;border:1.5px solid #fbbf24;border-radius:7px;padding:7px 8px;font-size:12px;color:#1e293b;-webkit-appearance:none;font-family:inherit;}

/* 공지 */
.pj-notice-area{margin-bottom:14px;}
.pj-notice-label{font-size:13px;color:#64748b;margin-bottom:6px;font-weight:700;}
.pj-notice-tabs{display:-webkit-flex;display:flex;gap:6px;margin-bottom:8px;}
.pj-ntab{background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:7px;padding:6px 13px;font-size:12px;font-weight:700;color:#64748b;cursor:pointer;-webkit-appearance:none;font-family:inherit;}
.pj-ntab.active{background:#eff6ff;border-color:#3b82f6;color:#1e40af;}
.pj-notice-textarea{width:100%;background:#f8fafc;border:1.5px solid #cbd5e1;border-radius:8px;padding:10px;font-size:14px;color:#1e293b;resize:vertical;min-height:80px;font-family:inherit;-webkit-appearance:none;}
.pj-notice-textarea:focus{outline:none;border-color:#3b82f6;}
.pj-notice-upload-area{border:2px dashed #cbd5e1;border-radius:8px;padding:14px;text-align:center;background:#f8fafc;cursor:pointer;}
.pj-notice-upload-area:hover{background:#eff6ff;border-color:#3b82f6;}
.pj-notice-preview{margin-top:8px;max-width:100%;max-height:100px;object-fit:contain;border-radius:6px;display:block;}
.pj-notice-opt{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:8px;margin-top:8px;background:#f0fdf4;border-radius:8px;padding:10px;}
.pj-notice-opt label{font-size:13px;color:#166534;-webkit-flex:1;flex:1;}
.pj-notice-opt input[type=checkbox]{width:18px;height:18px;accent-color:#059669;cursor:pointer;}

/* 사이간지 */
.pj-inter-options{display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-bottom:12px;}
.pj-inter-btn{background:#f8fafc;border:2px solid #e2e8f0;border-radius:8px;padding:8px 12px;font-size:13px;color:#475569;cursor:pointer;-webkit-appearance:none;font-family:inherit;font-weight:600;}
.pj-inter-btn.active{border-color:#3b82f6;color:#1e40af;background:#eff6ff;}
.pj-inter-count{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:10px;margin-top:8px;}
.pj-inter-count label{font-size:13px;color:#64748b;font-weight:600;}
.pj-inter-count input{background:#f8fafc;border:1.5px solid #cbd5e1;color:#1e293b;border-radius:6px;padding:6px 10px;font-size:14px;width:70px;-webkit-appearance:none;text-align:center;}

/* 타이머 */
.pj-timer-mode{display:-webkit-flex;display:flex;gap:8px;-webkit-flex-wrap:wrap;flex-wrap:wrap;margin-bottom:12px;}
.pj-mode-btn{background:#f8fafc;border:2px solid #e2e8f0;border-radius:8px;padding:9px 15px;font-size:13px;color:#475569;cursor:pointer;-webkit-appearance:none;font-family:inherit;font-weight:600;}
.pj-mode-btn.active{border-color:#3b82f6;color:#1e40af;background:#eff6ff;}
.pj-timer-set{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px;}
.pj-timer-set label{font-size:13px;color:#64748b;display:block;margin-bottom:4px;font-weight:600;}
.pj-timer-set input{background:#f8fafc;border:1.5px solid #cbd5e1;color:#1e293b;border-radius:6px;padding:8px 10px;font-size:22px;width:100%;-webkit-appearance:none;text-align:center;font-weight:700;}
.pj-timer-opts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px;}
.pj-opt-row{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:8px;background:#f8fafc;border-radius:8px;padding:9px;border:1px solid #e2e8f0;}
.pj-opt-row label{font-size:13px;color:#475569;-webkit-flex:1;flex:1;font-weight:600;}
.pj-opt-row input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:#3b82f6;}
.pj-timer-pos{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:10px;}
.pj-pos-btn,.pj-size-btn{background:#f8fafc;border:2px solid #e2e8f0;border-radius:8px;padding:7px 4px;font-size:12px;color:#475569;cursor:pointer;-webkit-appearance:none;font-family:inherit;text-align:center;font-weight:600;}
.pj-pos-btn.active,.pj-size-btn.active{border-color:#3b82f6;color:#1e40af;background:#eff6ff;}
.pj-timer-size{display:-webkit-flex;display:flex;gap:8px;margin-bottom:10px;}
.pj-size-btn{padding:7px 18px;}
.pj-opacity-row{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:10px;margin-bottom:10px;}
.pj-opacity-row label{font-size:13px;color:#64748b;min-width:55px;font-weight:600;}
.pj-opacity-row input[type=range]{-webkit-flex:1;flex:1;accent-color:#3b82f6;}
.pj-opacity-row span{font-size:13px;color:#1e40af;min-width:36px;text-align:right;font-weight:700;}
.pj-caption-box{background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;padding:12px;margin-top:10px;}
.pj-caption-input{width:100%;background:#fff;border:1.5px solid #cbd5e1;border-radius:8px;padding:8px 10px;font-size:14px;color:#1e293b;-webkit-appearance:none;font-family:inherit;margin-top:8px;}
.pj-caption-opts{display:-webkit-flex;display:flex;gap:8px;margin-top:8px;}
.pj-cap-mode-btn{background:#f8fafc;border:2px solid #e2e8f0;border-radius:7px;padding:6px 11px;font-size:12px;color:#475569;cursor:pointer;-webkit-appearance:none;font-family:inherit;font-weight:600;}
.pj-cap-mode-btn.active{border-color:#3b82f6;color:#1e40af;background:#eff6ff;}

/* 전체보기 버튼 */
.pj-fullview-btn-wrap{margin:18px 12px 0;}
.pj-fullview-btn{background:linear-gradient(135deg,#1e40af,#3b82f6);color:#fff;border:none;border-radius:14px;padding:16px 40px;font-size:18px;font-weight:700;cursor:pointer;width:100%;-webkit-appearance:none;font-family:inherit;letter-spacing:1px;box-shadow:0 4px 14px rgba(59,130,246,0.4);}
.pj-fullview-btn:hover{background:linear-gradient(135deg,#1d4ed8,#2563eb);}
.pj-share-row{margin:12px 12px 0;display:-webkit-flex;display:flex;gap:8px;-webkit-flex-wrap:wrap;flex-wrap:wrap;}

/* ============================
   전체보기 오버레이
   ============================ */
.pj-overlay{position:fixed;top:0 !important;left:0 !important;right:0 !important;bottom:0 !important;width:100% !important;height:100% !important;background:#0a0a0a;z-index:2147483647 !important;display:none;margin:0 !important;padding:0 !important;pointer-events:none !important;}
.pj-overlay.active{display:block !important;}

/* 슬라이드 컨테이너 */
.pj-slide-container{position:fixed;top:0;left:0;width:100%;height:100%;overflow:hidden;pointer-events:none !important;}
/* 개별 슬라이드 */
.pj-slide{position:absolute;top:0;left:0;width:100%;height:100%;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;background:#0a0a0a;-webkit-transition:opacity 0.15s;transition:opacity 0.15s;pointer-events:none;}
.pj-slide.hidden{display:none;}
.pj-slide canvas{max-width:100%;max-height:calc(100% - 60px);display:block;object-fit:contain;}
.pj-slide img{max-width:100%;max-height:calc(100% - 60px);object-fit:contain;display:block;}

/* 공지 슬라이드 */
.pj-slide-notice{background:#0f172a;-webkit-flex-direction:column;flex-direction:column;padding:30px 24px 80px;}
.pj-slide-notice-inner{background:rgba(255,255,255,0.05);border:1px solid rgba(59,130,246,0.35);border-radius:14px;padding:28px;max-width:700px;width:100%;text-align:center;}
.pj-slide-notice-inner h2{font-size:20px;color:#93c5fd;margin-bottom:14px;font-weight:700;}
.pj-slide-notice-inner p{font-size:16px;color:#e2e8f0;line-height:1.9;white-space:pre-wrap;}
.pj-slide-notice-inner img{max-width:100%;max-height:50vh;object-fit:contain;border-radius:8px;}

/* 사이간지 슬라이드 */
.pj-slide-inter{background:#0f172a;}
.pj-inter-countdown{font-size:140px;font-weight:900;color:#3b82f6;line-height:1;}
.pj-inter-wait{font-size:28px;font-weight:700;color:#94a3b8;}

/* 하단 컨트롤바 */
.pj-ctrl-bar{position:fixed;bottom:0;left:0;right:0;pointer-events:auto !important;background:rgba(10,10,30,0.97);border-top:2px solid #3b82f6;padding:7px 8px;z-index:2147483647;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:5px;overflow:visible;}
.pj-ctrl-bar-tabs{display:-webkit-flex;display:flex;gap:3px;-webkit-flex:1;flex:1;overflow-x:auto;overflow-y:visible;-webkit-overflow-scrolling:touch;padding-bottom:1px;padding-top:30px;margin-top:-30px;}
.pj-ctrl-bar-tabs::-webkit-scrollbar{height:2px;}
.pj-ctrl-bar-tabs::-webkit-scrollbar-thumb{background:#3b82f6;border-radius:2px;}
.pj-tab-btn{background:rgba(59,130,246,0.15);border:1.5px solid rgba(59,130,246,0.5);border-radius:6px;padding:5px 10px;font-size:13px;color:#93c5fd;cursor:pointer;-webkit-appearance:none;white-space:nowrap;font-family:inherit;font-weight:700;min-width:36px;text-align:center;}
.pj-tab-btn.active{background:#3b82f6;color:#fff;border-color:#3b82f6;}
.pj-tab-btn.done{background:rgba(5,150,105,0.25);border-color:#059669;color:#6ee7b7;cursor:default;}
.pj-tab-btn.notice-btn{background:rgba(217,119,6,0.2);border-color:#d97706;color:#fbbf24;}
.pj-ctrl-btns{display:-webkit-flex;display:flex;gap:4px;-webkit-flex-shrink:0;flex-shrink:0;}
.pj-ctrl-btn{background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.2);border-radius:7px;padding:6px 10px;font-size:13px;cursor:pointer;color:#fff;-webkit-appearance:none;font-family:inherit;font-weight:600;white-space:nowrap;}
.pj-ctrl-btn:hover{background:#3b82f6;}

/* 페이지 이동 화살표 */
.pj-nav-btn{position:fixed;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);pointer-events:auto !important;background:rgba(30,64,175,0.45);color:#fff;border:none;border-radius:50%;width:44px;height:44px;font-size:22px;cursor:pointer;z-index:2147483645;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-appearance:none;pointer-events:auto;-webkit-transition:background 0.15s;transition:background 0.15s;}
.pj-nav-btn:hover{background:rgba(59,130,246,0.75);}
.pj-nav-prev{left:8px;}
.pj-nav-next{right:8px;}
.pj-nav-btn:disabled{opacity:0.2;cursor:default;}

/* 슬라이드 번호 표시 */
.pj-slide-counter{position:fixed;top:10px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);background:rgba(10,10,30,0.65);color:#93c5fd;font-size:12px;font-weight:600;padding:4px 12px;border-radius:12px;z-index:2147483644;pointer-events:none;}

/* 타이머 */
.pj-timer-overlay{position:fixed;z-index:2147483640;pointer-events:none;display:none;}
.pj-timer-overlay.active{display:block;}
.pj-timer-box{background:rgba(10,20,40,0.7);border-radius:12px;padding:9px 16px;border:2px solid rgba(59,130,246,0.45);cursor:move;pointer-events:auto !important;min-width:fit-content;width:auto;text-align:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);resize:both;overflow:visible;white-space:nowrap;}
.pj-timer-display{font-size:32px;font-weight:700;color:#fff;font-variant-numeric:tabular-nums;letter-spacing:2px;line-height:1.1;font-family:'Courier New',Courier,monospace;white-space:nowrap;display:block;}
.pj-timer-display.warn1{color:#fbbf24;-webkit-animation:pj-blink 1s infinite;animation:pj-blink 1s infinite;}
.pj-timer-display.warn2{color:#f87171;-webkit-animation:pj-blink 0.5s infinite;animation:pj-blink 0.5s infinite;}
.pj-timer-display.overtime{color:#f87171;}
.pj-timer-ctrl{display:-webkit-flex;display:flex;gap:4px;margin-top:5px;-webkit-justify-content:center;justify-content:center;}
.pj-timer-ctrl button{background:rgba(255,255,255,0.12);border:1px solid rgba(255,255,255,0.22);border-radius:5px;padding:3px 10px;font-size:14px;color:#fff;cursor:pointer;-webkit-appearance:none;pointer-events:auto;}
.pj-timer-ctrl button:hover{background:rgba(59,130,246,0.55);}
.pj-timer-caption{font-size:12px;color:#94a3b8;margin-top:4px;width:160px;overflow:hidden;white-space:nowrap;display:block;position:relative;}
.pj-timer-caption.scroll{display:block;overflow:hidden;}
.pj-timer-caption.scroll span{display:inline-block;white-space:nowrap;-webkit-animation:pj-scroll 10s linear infinite;animation:pj-scroll 10s linear infinite;padding-right:40px;}

/* 닫기 버튼 */
.pj-close-btn{position:fixed;top:8px;right:8px;z-index:2147483647;pointer-events:auto !important;background:rgba(59,130,246,0.8);color:#fff;border:none;border-radius:50%;width:38px;height:38px;font-size:17px;cursor:pointer;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;-webkit-appearance:none;box-shadow:0 2px 8px rgba(0,0,0,0.4);}

/* 로딩 */
.pj-loading{position:fixed;top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);background:rgba(15,23,42,0.93);color:#fff;border-radius:14px;padding:24px 36px;font-size:15px;font-weight:600;z-index:2147483647;text-align:center;display:none;}
.pj-loading.show{display:block;}
.pj-spinner{width:32px;height:32px;border:3px solid rgba(255,255,255,0.2);border-top-color:#3b82f6;border-radius:50%;-webkit-animation:pj-spin 0.8s linear infinite;animation:pj-spin 0.8s linear infinite;margin:0 auto 10px;}

/* 토스트 */
.pj-toast{position:fixed;bottom:calc(env(safe-area-inset-bottom,0px) + 76px);left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);background:#1e293b;color:#fff;border-radius:10px;padding:10px 18px;font-size:14px;font-weight:600;z-index:2147483647;opacity:0;-webkit-transition:opacity 0.3s;transition:opacity 0.3s;pointer-events:none;white-space:nowrap;}
.pj-toast.show{opacity:1;}

/* 사용설명서 */
.pj-manual{background:#fff;border-radius:14px;margin:14px 12px 0;padding:14px 18px;border:1px solid #bfdbfe;font-size:13px;line-height:1.9;color:#475569;}
.pj-manual h3{color:#1e40af;font-size:15px;margin:0 0 10px;font-weight:700;}
.pj-manual ol{margin:0;padding-left:18px;}
.pj-manual li{margin-bottom:4px;}
.pj-manual b{color:#1e40af;}

@-webkit-keyframes pj-scroll{0%{-webkit-transform:translateX(60%);transform:translateX(60%);}100%{-webkit-transform:translateX(-120%);transform:translateX(-120%);}}
@keyframes pj-scroll{0%{transform:translateX(60%);}100%{transform:translateX(-120%);}}
@-webkit-keyframes pj-blink{0%,100%{opacity:1;}50%{opacity:0.15;}}
@keyframes pj-blink{0%,100%{opacity:1;}50%{opacity:0.15;}}
@-webkit-keyframes pj-spin{to{-webkit-transform:rotate(360deg);transform:rotate(360deg);}}
@keyframes pj-spin{to{transform:rotate(360deg);}}

/* 경고 멘트 자막 */
.pj-warn-caption{position:fixed;bottom:58px;left:0;right:0;text-align:center;z-index:2147483646;pointer-events:none !important;display:none;overflow:hidden;height:36px;line-height:36px;}
.pj-warn-caption.show{display:block;}
.pj-warn-caption-inner{display:inline-block;background:rgba(15,23,42,0.9);color:#fff;font-size:14px;font-weight:700;padding:5px 24px;border-radius:8px;border:1.5px solid #ef4444;white-space:nowrap;}
.pj-warn-caption-inner.scroll{-webkit-animation:pjWarnScroll 10s linear 1 forwards;animation:pjWarnScroll 10s linear 1 forwards;}
.pj-warn-caption-inner.blink{-webkit-animation:pjWarnBlink 1.2s ease-in-out 3 forwards;animation:pjWarnBlink 1.2s ease-in-out 3 forwards;}
@-webkit-keyframes pjWarnScroll{0%{-webkit-transform:translateX(110vw);transform:translateX(110vw);}100%{-webkit-transform:translateX(-110%);transform:translateX(-110%);}}
@keyframes pjWarnScroll{0%{transform:translateX(110vw);}100%{transform:translateX(-110%);}}
@-webkit-keyframes pjWarnBlink{0%,100%{opacity:1;}50%{opacity:0.1;}}
@keyframes pjWarnBlink{0%,100%{opacity:1;}50%{opacity:0.1;}}
@media(max-width:500px){
  .pj-timer-opts{grid-template-columns:1fr;}
  .pj-timer-pos{grid-template-columns:repeat(2,1fr);}
  .pj-header-title h1{font-size:14px;}
  .pj-hdr-btn{font-size:10px;padding:5px 7px;}
  .pj-tooltip{white-space:nowrap !important;}
}
@media(max-width:360px){
  .pj-hdr-btn{font-size:10px;padding:4px 6px;}
  .pj-header-title h1{font-size:13px;}
}
&lt;/style&gt;

&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;600;700&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Sortable/1.15.2/Sortable.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/lz-string/1.5.0/lz-string.min.js&quot;&gt;&lt;/script&gt;

&lt;div class=&quot;pj-wrap&quot;&gt;
  &lt;!-- 헤더 (전체저장/불러오기 버튼 포함) --&gt;
  &lt;div class=&quot;pj-header&quot;&gt;
    &lt;div class=&quot;pj-header-title&quot;&gt;
      &lt;h1&gt;  모두의 발표장 계산기&lt;/h1&gt;
      &lt;p&gt;출처: 스타트업ex _ cds1981@naver.com | V29_260605&lt;/p&gt;
    &lt;/div&gt;
    &lt;div class=&quot;pj-header-btns&quot;&gt;
      &lt;div class=&quot;pj-tooltip-wrap&quot;&gt;
        &lt;button class=&quot;pj-hdr-btn&quot; id=&quot;pjResetBtn&quot; style=&quot;background:rgba(220,38,38,0.55);border-color:rgba(220,38,38,0.7);&quot;&gt;  초기화&lt;/button&gt;
        &lt;div class=&quot;pj-tooltip&quot;&gt;모든 파일과 설정을 초기값으로 리셋합니다&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pj-tooltip-wrap&quot;&gt;
        &lt;button class=&quot;pj-hdr-btn pj-hdr-btn-green&quot; id=&quot;pjSaveSessionBtn&quot;&gt;  전체저장&lt;/button&gt;
        &lt;div class=&quot;pj-tooltip&quot;&gt;PDF와 모든 옵션을 .발표장 파일로 저장합니다&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pj-tooltip-wrap&quot;&gt;
        &lt;button class=&quot;pj-hdr-btn&quot; id=&quot;pjLoadSessionBtn&quot;&gt;  불러오기&lt;/button&gt;
        &lt;div class=&quot;pj-tooltip&quot;&gt;.발표장 파일을 불러와 자동 복원합니다&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pj-tooltip-wrap&quot;&gt;
        &lt;button class=&quot;pj-hdr-btn&quot; id=&quot;pjFullviewBtnHdr&quot; style=&quot;background:rgba(220,38,38,0.75);border-color:rgba(220,38,38,0.9);font-size:13px;&quot;&gt;▶ 발표시작&lt;/button&gt;
        &lt;div class=&quot;pj-tooltip&quot;&gt;전체화면으로 발표를 시작합니다&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- ① 파일 업로드 &amp; 리스트 --&gt;
  &lt;div class=&quot;pj-section&quot;&gt;
    &lt;div class=&quot;pj-section-title&quot;&gt;&lt;span&gt; &lt;/span&gt; 발표자료 업로드 &amp;amp; 순서 조정&lt;/div&gt;
    &lt;!-- 드롭존 (크게) --&gt;
    &lt;div class=&quot;pj-dropzone&quot; id=&quot;pjDropzone&quot;&gt;
      &lt;div class=&quot;pj-dropzone-icon&quot;&gt; &lt;/div&gt;
      &lt;p&gt;&lt;b&gt;PDF 파일을 여기에 드래그&lt;/b&gt;하거나 탭해서 추가하세요&lt;/p&gt;
      &lt;small&gt;여러 파일 동시 선택 가능 · 서버 미전송 (브라우저 내 처리)&lt;/small&gt;
    &lt;/div&gt;
    &lt;!-- 파일 리스트 (스크롤 가능) --&gt;
    &lt;div class=&quot;pj-file-list-wrap&quot; id=&quot;pjFileListWrap&quot;&gt;
      &lt;ul class=&quot;pj-file-list&quot; id=&quot;pjFileList&quot;&gt;&lt;/ul&gt;
    &lt;/div&gt;
    &lt;div class=&quot;pj-size-warn&quot; id=&quot;pjSizeWarn&quot;&gt;⚠ 총 용량이 크면 전체보기 시 버벅일 수 있습니다. 50MB 이하 권장.&lt;/div&gt;
    &lt;div style=&quot;font-size:11px;color:#94a3b8;margin:4px 0 8px;&quot;&gt;※ 파일 1개 기준: 10MB 이하 권장 / 30MB 초과 시 느려질 수 있음&lt;/div&gt;
    &lt;div class=&quot;pj-btn-row&quot; style=&quot;flex-wrap:wrap;&quot;&gt;
      &lt;div class=&quot;pj-tooltip-wrap&quot;&gt;
        &lt;button class=&quot;pj-btn&quot; id=&quot;pjBackupBtn&quot;&gt;  PDF 백업&lt;/button&gt;
        &lt;div class=&quot;pj-tooltip&quot;&gt;업로드된 PDF를 다운로드합니다&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pj-tooltip-wrap&quot;&gt;
        &lt;button class=&quot;pj-btn&quot; id=&quot;pjSortUploadBtn&quot;&gt;  업로드순&lt;/button&gt;
        &lt;div class=&quot;pj-tooltip&quot;&gt;1번: 업로드순 / 2번: 역순&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pj-tooltip-wrap&quot;&gt;
        &lt;button class=&quot;pj-btn&quot; id=&quot;pjSortNameBtn&quot;&gt;  이름순&lt;/button&gt;
        &lt;div class=&quot;pj-tooltip&quot;&gt;1번: 가나다순 / 2번: 역순&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pj-tooltip-wrap&quot;&gt;
        &lt;button class=&quot;pj-btn&quot; id=&quot;pjSortSizeBtn&quot;&gt;  용량순&lt;/button&gt;
        &lt;div class=&quot;pj-tooltip&quot;&gt;1번: 작은순 / 2번: 큰순&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;input type=&quot;file&quot; class=&quot;pj-file-input&quot; id=&quot;pjFileInput&quot; accept=&quot;.pdf&quot; multiple&gt;
    &lt;input type=&quot;file&quot; class=&quot;pj-file-input&quot; id=&quot;pjSessionInput&quot; accept=&quot;.발표장,.json&quot;&gt;

    

    &lt;!-- 구글드라이브 접기 --&gt;
    &lt;div class=&quot;pj-gdrive-toggle&quot; id=&quot;pjGdriveToggle&quot;&gt;
      &lt;span&gt;  구글드라이브 링크 불러오기 &lt;span class=&quot;pj-gdrive-badge&quot;&gt;테스트중&lt;/span&gt;&lt;/span&gt;
      &lt;span class=&quot;pj-gdrive-arrow&quot; id=&quot;pjGdriveArrow&quot;&gt;▼&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&quot;pj-gdrive-body&quot; id=&quot;pjGdriveBody&quot;&gt;
      &lt;div style=&quot;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:8px;margin-bottom:10px;padding:8px 10px;background:#fef3c7;border-radius:7px;&quot;&gt;
        &lt;input type=&quot;checkbox&quot; id=&quot;pjGdriveUse&quot; style=&quot;width:18px;height:18px;accent-color:#d97706;cursor:pointer;&quot;&gt;
        &lt;label for=&quot;pjGdriveUse&quot; style=&quot;font-size:13px;color:#92400e;font-weight:700;cursor:pointer;&quot;&gt;구글드라이브 링크 사용 (실제 파일 업로드와 동시 사용 불가)&lt;/label&gt;
      &lt;/div&gt;
      &lt;div id=&quot;pjGdriveUseWrap&quot; style=&quot;display:none;&quot;&gt;
        &lt;div class=&quot;pj-gdrive-desc&quot;&gt;  구글드라이브 파일을 &lt;b&gt;공개 공유&lt;/b&gt;로 설정 후 링크 입력&lt;br&gt;✅ 공유 설정: &lt;b&gt;링크가 있는 모든 사람 → 뷰어&lt;/b&gt;&lt;br&gt;⚠ CORS 정책으로 일부 환경에서 제한될 수 있습니다 &lt;b&gt;(테스트중)&lt;/b&gt;&lt;/div&gt;
        &lt;div id=&quot;pjGdriveLinkList&quot;&gt;&lt;/div&gt;
        &lt;div style=&quot;display:-webkit-flex;display:flex;gap:6px;margin-top:8px;-webkit-flex-wrap:wrap;flex-wrap:wrap;&quot;&gt;
          &lt;button class=&quot;pj-btn&quot; id=&quot;pjGdriveAddLinkBtn&quot; style=&quot;font-size:12px;padding:6px 10px;&quot;&gt;+ 링크 추가&lt;/button&gt;
          &lt;button class=&quot;pj-btn pj-btn-orange&quot; id=&quot;pjGdriveLoadAllBtn&quot;&gt;  전체 불러오기&lt;/button&gt;
        &lt;/div&gt;
        &lt;div style=&quot;margin-top:8px;font-size:11px;color:#92400e;line-height:1.7;&quot;&gt;  공유 URL: drive.google.com/file/d/&lt;b&gt;파일ID&lt;/b&gt;/view?usp=sharing&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- ② 표시 옵션 --&gt;
  &lt;div class=&quot;pj-section&quot;&gt;
    &lt;div class=&quot;pj-section-title&quot;&gt;&lt;span&gt;⚙️&lt;/span&gt; 표시 옵션&lt;/div&gt;
    &lt;div style=&quot;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:8px;padding:10px;background:#f8fafc;border-radius:8px;border:1px solid #e2e8f0;&quot;&gt;
      &lt;input type=&quot;checkbox&quot; id=&quot;pjShowTabTooltipMain&quot; style=&quot;width:18px;height:18px;accent-color:#3b82f6;cursor:pointer;&quot;&gt;
      &lt;label for=&quot;pjShowTabTooltipMain&quot; style=&quot;font-size:13px;color:#1e293b;font-weight:600;cursor:pointer;-webkit-flex:1;flex:1;&quot;&gt;
        전체보기 발표순서 숫자 위에 마우스 위치시 파일명 말풍선 표시
        &lt;span style=&quot;font-size:11px;color:#94a3b8;font-weight:400;&quot;&gt; — 숫자는 그대로, 마우스 올릴 때만 파일명 표시 (기본: 미체크)&lt;/span&gt;
      &lt;/label&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- ③ 공지사항 --&gt;
  &lt;div class=&quot;pj-section&quot;&gt;
    &lt;div class=&quot;pj-section-title&quot;&gt;&lt;span&gt; &lt;/span&gt; 공지사항 설정&lt;/div&gt;

    &lt;!-- 공1: 발표전 공지 --&gt;
    &lt;div style=&quot;margin-bottom:14px;&quot;&gt;
      &lt;div style=&quot;font-size:14px;font-weight:700;color:#1e40af;margin-bottom:8px;&quot;&gt;  공1 — 발표전 공지 &lt;span style=&quot;font-size:11px;color:#64748b;font-weight:400;&quot;&gt;(전체보기 [공1] 버튼 클릭 시 오버레이 표시)&lt;/span&gt;&lt;/div&gt;
      &lt;div class=&quot;pj-notice-tabs&quot; data-group=&quot;judge&quot;&gt;
        &lt;button class=&quot;pj-ntab active&quot; data-target=&quot;judgeTextWrap&quot;&gt;✏️ 텍스트&lt;/button&gt;
        &lt;button class=&quot;pj-ntab&quot; data-target=&quot;judgeFileWrap&quot;&gt;  이미지/PDF&lt;/button&gt;
      &lt;/div&gt;
      &lt;div id=&quot;judgeTextWrap&quot;&gt;
        &lt;textarea class=&quot;pj-notice-textarea&quot; id=&quot;pjJudgeNotice&quot; placeholder=&quot;발표 전 안내할 내용을 입력하세요.&quot;&gt;&lt;/textarea&gt;
        &lt;div class=&quot;pj-color-row&quot;&gt;
          &lt;label style=&quot;font-size:12px;color:#64748b;&quot;&gt;글자색&lt;/label&gt;
          &lt;input type=&quot;color&quot; class=&quot;pj-color-input&quot; id=&quot;pjJudgeTextColor&quot; value=&quot;#e2e8f0&quot;&gt;
          &lt;label style=&quot;font-size:12px;color:#64748b;&quot;&gt;배경색&lt;/label&gt;
          &lt;input type=&quot;color&quot; class=&quot;pj-color-input&quot; id=&quot;pjJudgeBgColor&quot; value=&quot;#0f172a&quot;&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&quot;judgeFileWrap&quot; style=&quot;display:none;&quot;&gt;
        &lt;div class=&quot;pj-notice-upload-area&quot; id=&quot;pjJudgeFileZone&quot;&gt;
          &lt;p style=&quot;font-size:13px;color:#64748b;&quot;&gt;  이미지 또는 PDF를 드래그하거나 탭하세요&lt;/p&gt;
          &lt;img id=&quot;pjJudgePreview&quot; class=&quot;pj-notice-preview&quot; style=&quot;display:none;&quot;&gt;
          &lt;p id=&quot;pjJudgeFileName&quot; style=&quot;font-size:12px;color:#3b82f6;margin-top:4px;&quot;&gt;&lt;/p&gt;
        &lt;/div&gt;
        &lt;input type=&quot;file&quot; class=&quot;pj-file-input&quot; id=&quot;pjJudgeFileInput&quot; accept=&quot;image/*,.pdf&quot;&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 발표자공지 목록 (추가 가능) --&gt;
    &lt;div style=&quot;margin-bottom:10px;&quot;&gt;
      &lt;div style=&quot;font-size:14px;font-weight:700;color:#1e40af;margin-bottom:8px;&quot;&gt;  발표자공지 &lt;span style=&quot;font-size:11px;color:#64748b;font-weight:400;&quot;&gt;(각 발표자료 바로 위에 표시 · 여러개 추가 가능)&lt;/span&gt;&lt;/div&gt;
      &lt;div id=&quot;pjPresenterNoticeList&quot;&gt;&lt;/div&gt;
      &lt;button class=&quot;pj-btn&quot; id=&quot;pjAddPresenterNoticeBtn&quot; style=&quot;margin-top:6px;font-size:12px;padding:7px 12px;&quot;&gt;+ 발표자공지 추가&lt;/button&gt;
    &lt;/div&gt;

    &lt;!-- 옵션들 --&gt;
    &lt;div style=&quot;background:#f0fdf4;border-radius:10px;padding:12px 14px;border:1px solid #bbf7d0;&quot;&gt;
      &lt;div style=&quot;font-size:13px;font-weight:700;color:#166534;margin-bottom:10px;&quot;&gt;⚙️ 공지 표시 옵션&lt;/div&gt;
      &lt;div style=&quot;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:8px;margin-bottom:8px;&quot;&gt;
        &lt;input type=&quot;checkbox&quot; id=&quot;pjPresenterNoticeInclude&quot; style=&quot;width:18px;height:18px;accent-color:#059669;cursor:pointer;&quot;&gt;
        &lt;label for=&quot;pjPresenterNoticeInclude&quot; style=&quot;font-size:13px;color:#166534;cursor:pointer;&quot;&gt;발표자료마다 앞에 발표자공지 삽입하기 &lt;span style=&quot;color:#94a3b8;font-size:11px;&quot;&gt;(기본: 미체크)&lt;/span&gt;&lt;/label&gt;
      &lt;/div&gt;
      &lt;!-- 말풍선 옵션은 위 표시옵션 섹션에서 관리 --&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- ④ 사이간지 --&gt;
  &lt;div class=&quot;pj-section&quot;&gt;
    &lt;div class=&quot;pj-section-title&quot;&gt;&lt;span&gt; &lt;/span&gt; 사이간지 옵션&lt;/div&gt;
    &lt;div class=&quot;pj-inter-options&quot; id=&quot;pjInterOptions&quot;&gt;
      &lt;button class=&quot;pj-inter-btn active&quot; data-val=&quot;none&quot;&gt;❌ 없음&lt;/button&gt;
      &lt;button class=&quot;pj-inter-btn&quot; data-val=&quot;black&quot;&gt;⬛ 빈 화면&lt;/button&gt;
      &lt;button class=&quot;pj-inter-btn&quot; data-val=&quot;wait&quot;&gt;⏳ 대기중&lt;/button&gt;
      &lt;button class=&quot;pj-inter-btn&quot; data-val=&quot;logo&quot;&gt;  배경이미지&lt;/button&gt;
      &lt;button class=&quot;pj-inter-btn&quot; data-val=&quot;countdown&quot;&gt;3·2·1 카운트&lt;/button&gt;
    &lt;/div&gt;
    &lt;div class=&quot;pj-inter-count&quot;&gt;
      &lt;label&gt;간지 장수:&lt;/label&gt;
      &lt;input type=&quot;number&quot; id=&quot;pjInterCount&quot; value=&quot;2&quot; min=&quot;1&quot; max=&quot;5&quot;&gt;
      &lt;span style=&quot;font-size:12px;color:#64748b;&quot;&gt;장 (카운트다운=3장 고정)&lt;/span&gt;
    &lt;/div&gt;
    &lt;div id=&quot;pjLogoUploadWrap&quot; style=&quot;display:none;margin-top:10px;&quot;&gt;
      &lt;button class=&quot;pj-btn&quot; id=&quot;pjLogoUploadBtn&quot;&gt;  배경이미지 선택&lt;/button&gt;
      &lt;input type=&quot;file&quot; class=&quot;pj-file-input&quot; id=&quot;pjLogoInput&quot; accept=&quot;image/*&quot;&gt;
      &lt;span id=&quot;pjLogoName&quot; style=&quot;font-size:12px;color:#64748b;margin-left:8px;&quot;&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;!-- 발표 진행 모드 --&gt;
    &lt;div style=&quot;margin-top:14px;&quot;&gt;
      &lt;div style=&quot;font-size:13px;color:#475569;margin-bottom:8px;font-weight:700;&quot;&gt;  발표 진행 모드&lt;/div&gt;
      &lt;div style=&quot;display:-webkit-flex;display:flex;gap:8px;flex-wrap:wrap;&quot;&gt;
        &lt;div class=&quot;pj-pmode-item active&quot; id=&quot;pjPmodeScroll&quot; onclick=&quot;setPresentMode('scroll')&quot;&gt;
          &lt;input type=&quot;radio&quot; name=&quot;pjPmode&quot; id=&quot;pjPmodeScrollR&quot; value=&quot;scroll&quot; checked&gt;
          &lt;label for=&quot;pjPmodeScrollR&quot;&gt;  전체 스크롤 (기본)&lt;/label&gt;
        &lt;/div&gt;
        &lt;div class=&quot;pj-pmode-item&quot; id=&quot;pjPmodeClick&quot; onclick=&quot;setPresentMode('click')&quot;&gt;
          &lt;input type=&quot;radio&quot; name=&quot;pjPmode&quot; id=&quot;pjPmodeClickR&quot; value=&quot;click&quot;&gt;
          &lt;label for=&quot;pjPmodeClickR&quot;&gt;  순번 클릭시에만 이동&lt;/label&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div style=&quot;font-size:11px;color:#94a3b8;margin-top:5px;&quot;&gt;
        전체스크롤: 모든 자료가 이어져 휠/화살표로 이동&lt;br&gt;
        클릭이동: 번호 클릭 시에만 이동, 끝나도 다음으로 안 넘어감
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- ⑤ 타이머 --&gt;
  &lt;div class=&quot;pj-section&quot;&gt;
    &lt;div class=&quot;pj-section-title&quot;&gt;&lt;span&gt;⏱️&lt;/span&gt; 타이머 설정&lt;/div&gt;
    &lt;div style=&quot;font-size:13px;color:#64748b;margin-bottom:6px;font-weight:700;&quot;&gt;표시 모드&lt;/div&gt;
    &lt;div class=&quot;pj-timer-mode&quot; id=&quot;pjTimerMode&quot;&gt;
      &lt;button class=&quot;pj-mode-btn active&quot; data-mode=&quot;timer&quot;&gt;⏱ 타이머&lt;/button&gt;
      &lt;button class=&quot;pj-mode-btn&quot; data-mode=&quot;stopwatch&quot;&gt;⏲ 스톱워치&lt;/button&gt;
      &lt;button class=&quot;pj-mode-btn&quot; data-mode=&quot;clock&quot;&gt;  현재시간&lt;/button&gt;
      &lt;button class=&quot;pj-mode-btn&quot; data-mode=&quot;none&quot;&gt;  시계없음&lt;/button&gt;
    &lt;/div&gt;
    &lt;div id=&quot;pjTimerSetWrap&quot;&gt;
      &lt;div class=&quot;pj-timer-set&quot;&gt;
        &lt;div&gt;&lt;label&gt;분 (min)&lt;/label&gt;&lt;input type=&quot;number&quot; id=&quot;pjTimerMin&quot; value=&quot;5&quot; min=&quot;0&quot; max=&quot;999&quot;&gt;&lt;/div&gt;
        &lt;div&gt;&lt;label&gt;초 (sec)&lt;/label&gt;&lt;input type=&quot;number&quot; id=&quot;pjTimerSec&quot; value=&quot;0&quot; min=&quot;0&quot; max=&quot;59&quot;&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div style=&quot;font-size:13px;color:#64748b;margin-bottom:8px;font-weight:700;&quot;&gt;⚠️ 경고 옵션&lt;/div&gt;
    &lt;div class=&quot;pj-timer-opts&quot;&gt;
      &lt;div class=&quot;pj-opt-row&quot;&gt;&lt;label&gt;1분 전 깜빡임&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;pjWarn1Blink&quot; checked&gt;&lt;/div&gt;
      &lt;div class=&quot;pj-opt-row&quot;&gt;&lt;label&gt;1분 전 소리&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;pjWarn1Sound&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;pj-opt-row&quot;&gt;&lt;label&gt;30초 전 깜빡임&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;pjWarn2Blink&quot; checked&gt;&lt;/div&gt;
      &lt;div class=&quot;pj-opt-row&quot;&gt;&lt;label&gt;30초 전 소리&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;pjWarn2Sound&quot; checked&gt;&lt;/div&gt;
      &lt;div class=&quot;pj-opt-row&quot;&gt;&lt;label&gt;종료 소리&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;pjEndSound&quot; checked&gt;&lt;/div&gt;
      &lt;div class=&quot;pj-opt-row&quot;&gt;&lt;label&gt;초과시 계속 표시&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;pjOvertime&quot; checked&gt;&lt;/div&gt;
      &lt;div class=&quot;pj-opt-row&quot;&gt;&lt;label&gt;완료 시 깜빡임&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;pjEndBlink&quot; checked&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;!-- 경고 멘트 옵션 --&gt;
    &lt;div style=&quot;margin-bottom:12px;&quot;&gt;
      &lt;div style=&quot;font-size:13px;color:#475569;font-weight:700;margin-bottom:6px;&quot;&gt;  시간별 자동 스크롤 멘트 추가&lt;/div&gt;&lt;div style=&quot;font-size:11px;color:#94a3b8;margin-bottom:8px;&quot;&gt;체크 후 멘트 입력 → 해당 시간에 하단에 자동 표시됩니다&lt;/div&gt;
      &lt;div id=&quot;pjWarnMsgList&quot; style=&quot;display:grid;gap:8px;&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 타이머 하단 스크롤 멘트 --&gt;
    &lt;div style=&quot;margin-bottom:12px;&quot;&gt;
      &lt;div style=&quot;font-size:13px;color:#475569;font-weight:700;margin-bottom:6px;&quot;&gt;  타이머 하단 스크롤 멘트 (선택)&lt;/div&gt;
      &lt;div style=&quot;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:8px;padding:10px;&quot;&gt;
        &lt;div style=&quot;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:8px;margin-bottom:6px;&quot;&gt;
          &lt;input type=&quot;checkbox&quot; id=&quot;pjCaptionOn&quot; style=&quot;width:18px;height:18px;accent-color:#3b82f6;cursor:pointer;&quot;&gt;
          &lt;label for=&quot;pjCaptionOn&quot; style=&quot;font-size:13px;color:#475569;font-weight:600;cursor:pointer;&quot;&gt;시계 하단 문구 표시&lt;/label&gt;
        &lt;/div&gt;
        &lt;div id=&quot;pjCaptionWrap&quot; style=&quot;display:none;&quot;&gt;
          &lt;input type=&quot;text&quot; class=&quot;pj-caption-input&quot; id=&quot;pjCaptionText&quot; placeholder=&quot;예) 발표 시간을 지켜주세요  &quot; maxlength=&quot;60&quot;&gt;
          &lt;div class=&quot;pj-caption-opts&quot; id=&quot;pjCapModes&quot; style=&quot;margin-top:6px;&quot;&gt;
            &lt;button class=&quot;pj-cap-mode-btn active&quot; data-capmode=&quot;fixed&quot;&gt;고정&lt;/button&gt;
            &lt;button class=&quot;pj-cap-mode-btn&quot; data-capmode=&quot;scroll&quot;&gt;스크롤&lt;/button&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div style=&quot;font-size:13px;color:#64748b;margin-bottom:6px;font-weight:700;&quot;&gt;  위치&lt;/div&gt;
    &lt;div class=&quot;pj-timer-pos&quot; id=&quot;pjTimerPos&quot;&gt;
      &lt;button class=&quot;pj-pos-btn&quot; data-pos=&quot;top-left&quot;&gt;↖ 좌상단&lt;/button&gt;
      &lt;button class=&quot;pj-pos-btn active&quot; data-pos=&quot;top-right&quot;&gt;↗ 우상단&lt;/button&gt;
      &lt;button class=&quot;pj-pos-btn&quot; data-pos=&quot;bottom-left&quot;&gt;↙ 좌하단&lt;/button&gt;
      &lt;button class=&quot;pj-pos-btn&quot; data-pos=&quot;bottom-right&quot;&gt;↘ 우하단&lt;/button&gt;
    &lt;/div&gt;
    &lt;div style=&quot;font-size:13px;color:#64748b;margin-bottom:6px;font-weight:700;&quot;&gt;  크기&lt;/div&gt;
    &lt;div class=&quot;pj-timer-size&quot; id=&quot;pjTimerSize&quot;&gt;
      &lt;button class=&quot;pj-size-btn&quot; data-size=&quot;sm&quot;&gt;소&lt;/button&gt;
      &lt;button class=&quot;pj-size-btn active&quot; data-size=&quot;md&quot;&gt;중&lt;/button&gt;
      &lt;button class=&quot;pj-size-btn&quot; data-size=&quot;lg&quot;&gt;대&lt;/button&gt;
    &lt;/div&gt;
    &lt;div class=&quot;pj-opacity-row&quot;&gt;
      &lt;label&gt;투명도&lt;/label&gt;
      &lt;input type=&quot;range&quot; id=&quot;pjTimerOpacity&quot; min=&quot;20&quot; max=&quot;100&quot; value=&quot;70&quot;&gt;
      &lt;span id=&quot;pjOpacityVal&quot;&gt;70%&lt;/span&gt;
    &lt;/div&gt;
    &lt;div style=&quot;font-size:13px;color:#64748b;margin:10px 0 6px;font-weight:700;&quot;&gt;  타이머 하단 문구&lt;/div&gt;
    &lt;div class=&quot;pj-caption-box&quot;&gt;
      &lt;div style=&quot;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:8px;&quot;&gt;
        &lt;input type=&quot;checkbox&quot; id=&quot;pjCaptionOn&quot; style=&quot;width:18px;height:18px;accent-color:#3b82f6;cursor:pointer;&quot;&gt;
        &lt;label for=&quot;pjCaptionOn&quot; style=&quot;font-size:13px;color:#475569;font-weight:600;cursor:pointer;&quot;&gt;문구 표시 사용&lt;/label&gt;
      &lt;/div&gt;
      &lt;div id=&quot;pjCaptionWrap&quot; style=&quot;display:none;&quot;&gt;
        &lt;input type=&quot;text&quot; class=&quot;pj-caption-input&quot; id=&quot;pjCaptionText&quot; placeholder=&quot;예) 발표 시간을 지켜주세요  &quot; maxlength=&quot;60&quot;&gt;
        &lt;div class=&quot;pj-caption-opts&quot; id=&quot;pjCapModes&quot;&gt;
          &lt;button class=&quot;pj-cap-mode-btn active&quot; data-capmode=&quot;fixed&quot;&gt;고정 표시&lt;/button&gt;
          &lt;button class=&quot;pj-cap-mode-btn&quot; data-capmode=&quot;scroll&quot;&gt;자막처럼 흐르기&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 공유 --&gt;
  &lt;div class=&quot;pj-share-row&quot;&gt;
    &lt;div class=&quot;pj-tooltip-wrap&quot;&gt;
      &lt;button class=&quot;pj-btn pj-btn-green&quot; id=&quot;pjShareOptsBtn&quot;&gt;  옵션 공유 URL&lt;/button&gt;
      &lt;div class=&quot;pj-tooltip&quot;&gt;현재 옵션을 URL로 복사&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;pj-tooltip-wrap&quot;&gt;
      &lt;button class=&quot;pj-btn&quot; id=&quot;pjShareQrBtn&quot;&gt;  옵션 QR&lt;/button&gt;
      &lt;div class=&quot;pj-tooltip&quot;&gt;옵션 공유 QR 생성&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&quot;pjQrWrap&quot; style=&quot;display:none;margin:10px 12px 0;background:#fff;border-radius:12px;padding:14px;border:1px solid #e2e8f0;text-align:center;&quot;&gt;
    &lt;div id=&quot;pjQrCanvas&quot;&gt;&lt;/div&gt;
    &lt;p style=&quot;font-size:12px;color:#64748b;margin-top:8px;&quot;&gt;QR 스캔 → 같은 옵션으로 설정&lt;/p&gt;
  &lt;/div&gt;

  &lt;!-- 전체보기 --&gt;
  &lt;div class=&quot;pj-fullview-btn-wrap&quot;&gt;
    &lt;button class=&quot;pj-fullview-btn&quot; id=&quot;pjFullviewBtn&quot;&gt;▶ 전체보기 시작&lt;/button&gt;
  &lt;/div&gt;

  &lt;!-- 메모리 최적화 &amp; PDF 병합 저장 --&gt;
  &lt;div class=&quot;pj-section&quot; style=&quot;margin-top:14px;&quot;&gt;
    &lt;div class=&quot;pj-section-title&quot;&gt;&lt;span&gt;⚡&lt;/span&gt; 메모리 최적화 &amp;amp; 발표자료 병합 저장&lt;/div&gt;
    &lt;div style=&quot;font-size:13px;color:#475569;margin-bottom:12px;line-height:1.8;&quot;&gt;
      버벅임이 심할 때 메모리를 정리하거나, 여러 PDF를 하나로 병합해서 저장할 수 있습니다.
    &lt;/div&gt;
    &lt;div class=&quot;pj-btn-row&quot;&gt;
      &lt;div class=&quot;pj-tooltip-wrap&quot;&gt;
        &lt;button class=&quot;pj-btn&quot; id=&quot;pjMemOptBtn&quot;&gt;  메모리 최적화&lt;/button&gt;
        &lt;div class=&quot;pj-tooltip&quot;&gt;렌더된 캔버스 캐시를 비워 메모리를 확보합니다&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pj-tooltip-wrap&quot;&gt;
        &lt;button class=&quot;pj-btn pj-btn-green&quot; id=&quot;pjMergeExportBtn&quot;&gt;  발표자료 병합 저장&lt;/button&gt;
        &lt;div class=&quot;pj-tooltip&quot;&gt;업로드된 모든 PDF를 하나로 병합해 다운로드합니다 (시간이 걸릴 수 있음)&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;pjOptProgress&quot; style=&quot;display:none;margin-top:10px;font-size:13px;color:#3b82f6;font-weight:600;&quot;&gt;&lt;/div&gt;
    &lt;div style=&quot;margin-top:10px;font-size:12px;color:#94a3b8;line-height:1.7;&quot;&gt;
        메모리 최적화: 전체보기 후 캔버스 캐시 해제 (재진입 시 다시 렌더)&lt;br&gt;
        병합 저장: PDF.js + Blob으로 순서대로 합쳐 단일 파일 다운로드&lt;br&gt;
      ⚠ 실제 PDF 압축은 브라우저에서 불가. 용량 절감이 필요하면 Adobe Acrobat 등 별도 도구를 사용하세요.
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 레이저포인터 테스트 --&gt;
  &lt;div class=&quot;pj-section&quot; style=&quot;margin-top:14px;&quot;&gt;
    &lt;div class=&quot;pj-section-title&quot;&gt;&lt;span&gt; &lt;/span&gt; 레이저포인터 &amp;amp; 슬라이드 이동 테스트&lt;/div&gt;
    &lt;div style=&quot;font-size:13px;color:#475569;line-height:1.9;margin-bottom:10px;&quot;&gt;
      전체보기에서 발표자료 영역은 &lt;b&gt;pointer-events:none&lt;/b&gt;으로 마우스가 통과됩니다.&lt;br&gt;
      레이저포인터 앱이 정상 작동해야 합니다.
    &lt;/div&gt;
    &lt;div style=&quot;background:#f8fafc;border-radius:10px;padding:14px;border:1px solid #e2e8f0;font-size:13px;color:#475569;line-height:2.2;&quot;&gt;
      ⌨️ &lt;b&gt;키보드 단축키 (전체보기 중)&lt;/b&gt;&lt;br&gt;
      &amp;nbsp;&amp;nbsp;← → ↑ ↓ Space : 슬라이드 이동&lt;br&gt;
      &amp;nbsp;&amp;nbsp;숫자 1~9, 10~ : 발표자 직접 이동 (연속입력 400ms)&lt;br&gt;
      &amp;nbsp;&amp;nbsp;R : 타이머 리셋 &amp;amp; 재시작
    &lt;/div&gt;
    &lt;div style=&quot;margin-top:10px;background:#eff6ff;border-radius:10px;padding:12px;border:1px solid #bfdbfe;font-size:13px;color:#1e40af;line-height:1.9;&quot;&gt;
      ✅ 발표자료 영역 클릭 → 레이저포인터 통과 (pointer-events:none)&lt;br&gt;
      ✅ 하단 번호탭, 화살표, 닫기 버튼 → 클릭 가능&lt;br&gt;
      ✅ 타이머 박스 → 드래그 가능
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 사용설명서 --&gt;
  &lt;div class=&quot;pj-manual&quot; id=&quot;pjManualBox&quot;&gt;
    &lt;h3 style=&quot;cursor:pointer;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:8px;&quot; id=&quot;pjManualToggle&quot;&gt;
        사용설명서
      &lt;span id=&quot;pjManualArrow&quot; style=&quot;font-size:12px;color:#3b82f6;margin-left:auto;&quot;&gt;▲ 접기&lt;/span&gt;
    &lt;/h3&gt;
    &lt;div id=&quot;pjManualContent&quot;&gt;
    &lt;ol&gt;
      &lt;li&gt;&lt;b&gt;파일 추가:&lt;/b&gt; 드롭존에 PDF 드래그 or 탭하여 선택. ☰ 핸들 드래그로 순서 조정.&lt;/li&gt;
      &lt;li&gt;&lt;b&gt;공지(공1/공2):&lt;/b&gt; 텍스트 or 이미지/PDF. 전체보기에서 한 장 페이지로 표시.&lt;/li&gt;
      &lt;li&gt;&lt;b&gt;전체보기:&lt;/b&gt; 브라우저 전체화면 전환. 좌우 화살표 or 키보드 ←→ 로 한 페이지씩 이동.&lt;/li&gt;
      &lt;li&gt;&lt;b&gt;하단 탭:&lt;/b&gt; 번호 클릭 → 즉시 이동. &lt;b&gt;더블클릭 → &quot;완료&quot; 표시&lt;/b&gt; (이후 클릭 이동 불가).&lt;/li&gt;
      &lt;li&gt;&lt;b&gt;공1/공2 버튼:&lt;/b&gt; 탭 끝의 [공1][공2] 클릭 → 해당 공지 슬라이드로 즉시 이동.&lt;/li&gt;
      &lt;li&gt;&lt;b&gt;타이머 ↺:&lt;/b&gt; 설정 시간으로 즉시 재시작.&lt;/li&gt;
      &lt;li&gt;&lt;b&gt;레이저포인터:&lt;/b&gt; 타이머 박스 외 영역 pointer-events:none 적용.&lt;/li&gt;
      &lt;li&gt;&lt;b&gt;전체저장/불러오기:&lt;/b&gt; 상단 헤더 버튼으로 .발표장 파일 저장·복원.&lt;/li&gt;
    &lt;/ol&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;pj-loading&quot; id=&quot;pjLoading&quot;&gt;
  &lt;div class=&quot;pj-spinner&quot;&gt;&lt;/div&gt;
  &lt;div id=&quot;pjLoadingMsg&quot;&gt;처리 중...&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;pj-toast&quot; id=&quot;pjToast&quot;&gt;&lt;/div&gt;

&lt;!-- 전체보기 --&gt;
&lt;div class=&quot;pj-overlay&quot; id=&quot;pjOverlay&quot;&gt;
  &lt;button class=&quot;pj-close-btn&quot; id=&quot;pjCloseBtn&quot;&gt;✕&lt;/button&gt;
  &lt;div class=&quot;pj-warn-caption&quot; id=&quot;pjWarnCaption&quot;&gt;&lt;/div&gt;
  &lt;!-- 페이지 이동 화살표 --&gt;
  &lt;button class=&quot;pj-nav-btn pj-nav-prev&quot; id=&quot;pjNavPrev&quot;&gt;&amp;#8249;&lt;/button&gt;
  &lt;button class=&quot;pj-nav-btn pj-nav-next&quot; id=&quot;pjNavNext&quot;&gt;&amp;#8250;&lt;/button&gt;
  &lt;!-- 슬라이드 카운터 --&gt;
  &lt;div class=&quot;pj-slide-counter&quot; id=&quot;pjSlideCounter&quot;&gt;1 / 1&lt;/div&gt;
  &lt;!-- 슬라이드 컨테이너 --&gt;
  &lt;div class=&quot;pj-slide-container&quot; id=&quot;pjSlideContainer&quot;&gt;&lt;/div&gt;
  &lt;!-- 타이머 --&gt;
  &lt;div class=&quot;pj-timer-overlay&quot; id=&quot;pjTimerOverlay&quot;&gt;
    &lt;div class=&quot;pj-timer-box&quot; id=&quot;pjTimerBox&quot;&gt;
      &lt;div class=&quot;pj-timer-display&quot; id=&quot;pjTimerDisplay&quot;&gt;05:00&lt;/div&gt;
      &lt;div class=&quot;pj-timer-ctrl&quot;&gt;
        &lt;button id=&quot;pjTCtrlPlay&quot;&gt;▶&lt;/button&gt;
        &lt;button id=&quot;pjTCtrlPause&quot;&gt;⏸&lt;/button&gt;
        &lt;button id=&quot;pjTCtrlReset&quot;&gt;↺&lt;/button&gt;
      &lt;/div&gt;
      &lt;div class=&quot;pj-timer-caption&quot; id=&quot;pjTimerCaption&quot; style=&quot;display:none;&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;!-- 하단 탭 --&gt;
  &lt;div class=&quot;pj-ctrl-bar&quot; id=&quot;pjCtrlBar&quot;&gt;
    &lt;div class=&quot;pj-ctrl-bar-tabs&quot; id=&quot;pjCtrlTabs&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;pj-ctrl-btns&quot;&gt;
      &lt;button class=&quot;pj-ctrl-btn&quot; id=&quot;pjCtrlClose&quot;&gt;✕ 닫기&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
(function(){
'use strict';
if(window.pdfjsLib){
  pdfjsLib.GlobalWorkerOptions.workerSrc='https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js';
}

// ── 상태 ──
var state={
  files:[],
  gdriveLinks:[],
  judgeNotice:'',judgeNoticeFileData:null,judgeNoticeFileType:'',
  // presenterNotice 단수는 presenterNotices 배열로 대체,presenterNoticeFileData:null,presenterNoticeFileType:'',
  presenterNoticeInclude:false,
  interType:'none',interCount:2,logoDataUrl:null,
  timerMode:'timer',timerMin:5,timerSec:0,
  warn1Blink:true,warn1Sound:false,warn2Blink:true,warn2Sound:true,
  endSound:true,overtime:true,endBlink:true,
  timerPos:'top-right',timerSize:'lg',timerOpacity:70,
  captionOn:false,captionText:'',captionMode:'fixed',
  presentMode:'scroll',
  showTabTooltip:false,
  warnMsg2On:false, warnMsg2Text:'2분 남았습니다.',
  warnMsg1On:false, warnMsg1Text:'1분 남았습니다.',
  warnMsgEndOn:false, warnMsgEndText:'발표시간 완료되었습니다.',
  warnMsgOverOn:false, warnMsgOverText:'시간 30초 초과되었습니다. 발표종료합니다.',
  judgeTextColor:'#e2e8f0',
  judgeBgColor:'#0f172a',
  presenterNotices:[],  // [{text,fileData,fileType,textColor,bgColor}]
  presenterNoticeInclude:false
};
var timerRT={running:false,elapsed:0,startTs:0,total:0,interval:null,warn1done:false,warn2done:false,enddone:false,warn1mindone:false,warn2mindone:false,warnOverDone:false};
var LS_KEY='pj_opts_v5';

// 슬라이드 관련
var slides=[];        // 슬라이드 배열 {type,el,fileIdx}
var curSlide=0;
var fileSlideMap=[];  // 각 파일의 첫 슬라이드 인덱스
var judgeSlideIdx=-1;
var presenterSlideIdxs=[];
var tabDoneMap={};    // 탭 완료 상태

// ── localStorage ──
function saveOpts(){
  var o={judgeNotice:state.judgeNotice,presenterNotice:state.presenterNotice,presenterNoticeInclude:state.presenterNoticeInclude,interType:state.interType,interCount:state.interCount,timerMode:state.timerMode,timerMin:state.timerMin,timerSec:state.timerSec,warn1Blink:state.warn1Blink,warn1Sound:state.warn1Sound,warn2Blink:state.warn2Blink,warn2Sound:state.warn2Sound,endSound:state.endSound,overtime:state.overtime,timerPos:state.timerPos,timerSize:state.timerSize,timerOpacity:state.timerOpacity,captionOn:state.captionOn,captionText:state.captionText,captionMode:state.captionMode,gdriveLinks:state.gdriveLinks};
  try{localStorage.setItem(LS_KEY,JSON.stringify(o));}catch(e){}
}
function loadOpts(){try{var s=localStorage.getItem(LS_KEY);if(!s)return;var o=JSON.parse(s);for(var k in o){if(o.hasOwnProperty(k))state[k]=o[k];}}catch(e){}}
function loadOptsFromUrl(){try{var m=(window.location.search||'').match(/[?&amp;]pjopts=([^&amp;]+)/);if(!m)return;var json=LZString.decompressFromEncodedURIComponent(m[1]);if(!json)return;var o=JSON.parse(json);for(var k in o){if(o.hasOwnProperty(k))state[k]=o[k];}}catch(e){}}

// ── UI 동기화 ──
function syncUI(){
  document.getElementById('pjJudgeNotice').value=state.judgeNotice||'';
  // presenterNotice는 renderPresenterNotices()에서 처리
  document.getElementById('pjPresenterNoticeInclude').checked=!!state.presenterNoticeInclude;
  var ibtns=document.querySelectorAll('.pj-inter-btn');for(var i=0;i&lt;ibtns.length;i++)ibtns[i].classList[ibtns[i].dataset.val===state.interType?'add':'remove']('active');
  document.getElementById('pjInterCount').value=state.interCount;
  document.getElementById('pjLogoUploadWrap').style.display=state.interType==='logo'?'block':'none';
  var mbtns=document.querySelectorAll('.pj-mode-btn');for(var j=0;j&lt;mbtns.length;j++)mbtns[j].classList[mbtns[j].dataset.mode===state.timerMode?'add':'remove']('active');
  document.getElementById('pjTimerSetWrap').style.display=state.timerMode==='timer'?'block':'none';
  document.getElementById('pjTimerMin').value=state.timerMin;document.getElementById('pjTimerSec').value=state.timerSec;
  document.getElementById('pjWarn1Blink').checked=state.warn1Blink;document.getElementById('pjWarn1Sound').checked=state.warn1Sound;document.getElementById('pjWarn2Blink').checked=state.warn2Blink;document.getElementById('pjWarn2Sound').checked=state.warn2Sound;document.getElementById('pjEndSound').checked=state.endSound;document.getElementById('pjOvertime').checked=state.overtime;var ebEl=document.getElementById('pjEndBlink');if(ebEl)ebEl.checked=!!state.endBlink;
  var pbtns=document.querySelectorAll('.pj-pos-btn');for(var p=0;p&lt;pbtns.length;p++)pbtns[p].classList[pbtns[p].dataset.pos===state.timerPos?'add':'remove']('active');
  var sbtns=document.querySelectorAll('.pj-size-btn');for(var s2=0;s2&lt;sbtns.length;s2++)sbtns[s2].classList[sbtns[s2].dataset.size===state.timerSize?'add':'remove']('active');
  document.getElementById('pjTimerOpacity').value=state.timerOpacity;document.getElementById('pjOpacityVal').textContent=state.timerOpacity+'%';
  document.getElementById('pjCaptionOn').checked=!!state.captionOn;document.getElementById('pjCaptionWrap').style.display=state.captionOn?'block':'none';document.getElementById('pjCaptionText').value=state.captionText||'';
  var cbtns=document.querySelectorAll('.pj-cap-mode-btn');for(var c=0;c&lt;cbtns.length;c++)cbtns[c].classList[cbtns[c].dataset.capmode===state.captionMode?'add':'remove']('active');
  // 발표모드
  document.getElementById('pjPmodeScroll').classList[state.presentMode==='scroll'?'add':'remove']('active');
  document.getElementById('pjPmodeClick').classList[state.presentMode==='click'?'add':'remove']('active');
  document.getElementById('pjPmodeScrollR').checked=(state.presentMode==='scroll');
  document.getElementById('pjPmodeClickR').checked=(state.presentMode==='click');
  // 말풍선/공지옵션
  var stt=document.getElementById('pjShowTabTooltip');if(stt)stt.checked=!!state.showTabTooltip;
  var sttm=document.getElementById('pjShowTabTooltipMain');if(sttm)sttm.checked=!!state.showTabTooltip;
  var pni=document.getElementById('pjPresenterNoticeInclude');if(pni)pni.checked=!!state.presenterNoticeInclude;
  // 공지 색상
  var jtc=document.getElementById('pjJudgeTextColor');if(jtc)jtc.value=state.judgeTextColor||'#e2e8f0';
  var jbc=document.getElementById('pjJudgeBgColor');if(jbc)jbc.value=state.judgeBgColor||'#0f172a';
  // 발표자공지 목록
  renderPresenterNotices();
  renderWarnMsgOptions();
  renderGdriveLinks();
}
function showToast(msg){var t=document.getElementById('pjToast');t.textContent=msg;t.classList.add('show');setTimeout(function(){t.classList.remove('show');},2200);}
function showLoading(msg){document.getElementById('pjLoadingMsg').textContent=msg||'처리 중...';document.getElementById('pjLoading').classList.add('show');}
function hideLoading(){document.getElementById('pjLoading').classList.remove('show');}
function escHtml(s){return (s+'').replace(/&amp;/g,'&amp;amp;').replace(/&lt;/g,'&amp;lt;').replace(/&gt;/g,'&amp;gt;');}
function pad2(n){return n&lt;10?'0'+n:''+n;}

// ── 파일 리스트 렌더 (가로 길게) ──
function renderFileList(){
  var ul=document.getElementById('pjFileList');
  var wrap=document.getElementById('pjFileListWrap');
  ul.innerHTML='';
  if(!state.files.length){wrap.style.display='none';return;}
  wrap.style.display='block';
  for(var i=0;i&lt;state.files.length;i++){
    (function(idx){
      var f=state.files[idx];
      var li=document.createElement('li');li.className='pj-file-row';li.dataset.idx=idx;
      // 핸들
      var handle=document.createElement('span');handle.className='pj-row-handle';handle.innerHTML='☰';li.appendChild(handle);
      // 번호
      var num=document.createElement('span');num.className='pj-row-num';num.textContent=idx+1;li.appendChild(num);
      // 정보 먼저 (파일명 잘 보이게)
      var info=document.createElement('div');info.className='pj-row-info';
      {
        var fsize=f.data?f.data.byteLength:0;
        var fsizeStr=fsize&gt;1048576?(fsize/1048576).toFixed(1)+'MB':(fsize/1024).toFixed(0)+'KB';
        var sizeWarn=fsize&gt;30*1024*1024;
        info.innerHTML='&lt;div class=&quot;pj-row-name&quot; title=&quot;'+escHtml(f.name)+'&quot;&gt;'+escHtml(f.name)+'&lt;/div&gt;'
          +'&lt;div class=&quot;pj-row-size'+(sizeWarn?' warn':'')+'&quot;&gt;'+fsizeStr+(sizeWarn?' ⚠버벅임주의':'')+(f.isLink?' (링크)':' · '+f.pages+'p')+'&lt;/div&gt;';
      }
      li.appendChild(info);
      // 썸네일 (오른쪽 끝 배치)
      var thumb=document.createElement('div');thumb.className='pj-row-thumb';
      if(f.thumbCanvas){var tImg=document.createElement('img');tImg.src=f.thumbCanvas;thumb.appendChild(tImg);}
      else{var tIco=document.createElement('span');tIco.style.fontSize='14px';tIco.textContent=' ';thumb.appendChild(tIco);}
      li.appendChild(thumb);
      // 삭제
      var del=document.createElement('button');del.className='pj-row-del';del.textContent='삭제';
      var _dt=false;
      del.addEventListener('touchend',function(e){e.preventDefault();e.stopPropagation();_dt=true;removeFile(idx);setTimeout(function(){_dt=false;},400);},false);
      del.addEventListener('click',function(e){e.stopPropagation();if(_dt)return;removeFile(idx);},false);
      li.appendChild(del);
      ul.appendChild(li);
    })(i);
  }
  if(window.Sortable){
    Sortable.create(ul,{
      handle:'.pj-row-handle',
      animation:150,
      forceFallback:false,
      fallbackTolerance:3,
      touchStartThreshold:3,
      onEnd:function(evt){
        var moved=state.files.splice(evt.oldIndex,1)[0];
        state.files.splice(evt.newIndex,0,moved);
        renderFileList();
      }
    });
  }
  // 총 용량 경고
  var totalSize=0;for(var si=0;si&lt;state.files.length;si++)if(state.files[si].data)totalSize+=state.files[si].data.byteLength;
  var warnEl=document.getElementById('pjSizeWarn');
  if(warnEl){
    var totalMB=(totalSize/1048576).toFixed(1);
    if(totalSize&gt;50*1024*1024){warnEl.classList.add('show');warnEl.textContent='⚠ 총 용량 '+totalMB+'MB — 전체보기 시 버벅일 수 있습니다. 50MB 이하 권장.';}
    else{warnEl.classList.remove('show');}
  }
}
function removeFile(idx){state.files.splice(idx,1);renderFileList();showToast('파일 삭제됨');}

// ── PDF 로드 ──
function loadPdfBuffer(ab,name){
  return new Promise(function(resolve,reject){
    pdfjsLib.getDocument({data:ab.slice(0)}).promise.then(function(pdf){
      pdf.getPage(1).then(function(page){
        var vp=page.getViewport({scale:0.4});
        var c=document.createElement('canvas');c.width=vp.width;c.height=vp.height;
        page.render({canvasContext:c.getContext('2d'),viewport:vp}).promise.then(function(){
          resolve({name:name,data:ab,pages:pdf.numPages,thumbCanvas:c.toDataURL(),isLink:false,uploadOrder:Date.now()+Math.random()});
        }).catch(reject);
      }).catch(reject);
    }).catch(reject);
  });
}
function loadPdfFile(file){
  return new Promise(function(resolve,reject){
    var reader=new FileReader();
    reader.onload=function(e){loadPdfBuffer(e.target.result,file.name).then(resolve).catch(reject);};
    reader.onerror=reject;reader.readAsArrayBuffer(file);
  });
}
function handleFiles(files){
  var pending=[];
  for(var i=0;i&lt;files.length;i++){
    var f=files[i];
    var isPdf=(f.type==='application/pdf')||(f.name&amp;&amp;f.name.toLowerCase().slice(-4)==='.pdf');
    if(isPdf)pending.push(f);
  }
  if(!pending.length){showToast('PDF 파일을 선택해주세요');return;}
  showLoading(pending.length+'개 로딩 중...');
  // results 배열로 순서 보장
  var results=new Array(pending.length);
  var loaded=0;
  for(var j=0;j&lt;pending.length;j++){
    (function(jj,file){
      loadPdfFile(file).then(function(obj){
        results[jj]=obj;
        loaded++;
        if(loaded===pending.length){
          for(var k=0;k&lt;results.length;k++){if(results[k])state.files.push(results[k]);}
          renderFileList();
          hideLoading();
          showToast(loaded+'개 파일 추가됨!');
        }
      }).catch(function(err){
        loaded++;
        if(loaded===pending.length){renderFileList();hideLoading();showToast('일부 파일 로드 실패');}
      });
    })(j,pending[j]);
  }
}

// ── 업로드 이벤트 ──
var dz=document.getElementById('pjDropzone');
var _td=false;
dz.addEventListener('touchend',function(e){e.preventDefault();_td=true;document.getElementById('pjFileInput').click();setTimeout(function(){_td=false;},400);},false);
dz.addEventListener('click',function(){if(_td)return;document.getElementById('pjFileInput').click();},false);
dz.addEventListener('dragover',function(e){e.preventDefault();dz.classList.add('drag-over');},false);
dz.addEventListener('dragleave',function(){dz.classList.remove('drag-over');},false);
dz.addEventListener('drop',function(e){e.preventDefault();dz.classList.remove('drag-over');if(e.dataTransfer&amp;&amp;e.dataTransfer.files)handleFiles(e.dataTransfer.files);},false);
document.getElementById('pjFileInput').addEventListener('change',function(){if(this.files&amp;&amp;this.files.length)handleFiles(this.files);this.value='';},false);

function getAbsentSet(){return {};}

// ── 구글드라이브 ──
document.getElementById('pjGdriveToggle').addEventListener('click',function(){
  var body=document.getElementById('pjGdriveBody');var arrow=document.getElementById('pjGdriveArrow');
  var open=body.classList.toggle('open');arrow.classList[open?'add':'remove']('open');
},false);
(function(){
  var chk=document.getElementById('pjGdriveUse');
  var wrap=document.getElementById('pjGdriveUseWrap');
  if(!chk||!wrap)return;
  chk.addEventListener('change',function(){
    wrap.style.display=this.checked?'block':'none';
    if(!this.checked){state.gdriveLinks=[];renderGdriveLinks();}
  },false);
})();
function renderGdriveLinks(){
  var list=document.getElementById('pjGdriveLinkList');list.innerHTML='';
  var links=state.gdriveLinks||[];
  for(var i=0;i&lt;links.length;i++){
    (function(idx){
      var row=document.createElement('div');row.className='pj-gdrive-link-item';
      var nameIn=document.createElement('input');nameIn.type='text';nameIn.className='pj-gdrive-name-input';nameIn.placeholder='파일명';nameIn.value=links[idx].name||'';
      nameIn.addEventListener('change',function(){state.gdriveLinks[idx].name=this.value;saveOpts();},false);
      var urlIn=document.createElement('input');urlIn.type='text';urlIn.className='pj-gdrive-input';urlIn.placeholder='drive.google.com/file/d/...';urlIn.value=links[idx].url||'';
      urlIn.addEventListener('change',function(){state.gdriveLinks[idx].url=this.value;saveOpts();},false);
      var delBtn=document.createElement('button');delBtn.className='pj-btn';delBtn.style.cssText='font-size:12px;padding:5px 8px;color:#dc2626;border-color:#fca5a5;';delBtn.textContent='✕';
      delBtn.addEventListener('click',function(){state.gdriveLinks.splice(idx,1);saveOpts();renderGdriveLinks();},false);
      row.appendChild(nameIn);row.appendChild(urlIn);row.appendChild(delBtn);list.appendChild(row);
    })(i);
  }
}
document.getElementById('pjGdriveAddLinkBtn').addEventListener('click',function(){if(!state.gdriveLinks)state.gdriveLinks=[];state.gdriveLinks.push({url:'',name:''});saveOpts();renderGdriveLinks();},false);
document.getElementById('pjGdriveLoadAllBtn').addEventListener('click',function(){
  var links=(state.gdriveLinks||[]).filter(function(l){return l.url&amp;&amp;l.url.trim();});
  if(!links.length){showToast('링크를 입력해주세요');return;}
  showLoading('구글드라이브 로딩 중...('+links.length+'개)');
  var loaded=0;
  for(var j=0;j&lt;links.length;j++){
    (function(link){
      var fileId='';var m1=(link.url||'').match(/\/file\/d\/([^\/\?]+)/);var m2=(link.url||'').match(/id=([^&amp;]+)/);
      if(m1)fileId=m1[1];else if(m2)fileId=m2[1];
      if(!fileId){loaded++;if(loaded===links.length)hideLoading();return;}
      var fname=link.name&amp;&amp;link.name.trim()?link.name:'gdrive_'+fileId.slice(0,8)+'.pdf';
      fetch('https://drive.google.com/uc?export=download&amp;id='+fileId).then(function(res){if(!res.ok)throw new Error('');return res.arrayBuffer();}).then(function(ab){return loadPdfBuffer(ab,fname);}).then(function(obj){state.files.push(obj);loaded++;if(loaded===links.length){renderFileList();hideLoading();showToast('로드 완료!');}}).catch(function(){loaded++;if(loaded===links.length){renderFileList();hideLoading();showToast('일부 실패(CORS)');}});
    })(links[j]);
  }
},false);

// ── 공지 탭 ──
(function(){
  var groups=[{sel:'[data-group=&quot;judge&quot;]',tw:'judgeTextWrap',fw:'judgeFileWrap'},{sel:'[data-group=&quot;presenter&quot;]',tw:'presenterTextWrap',fw:'presenterFileWrap'}];
  for(var g=0;g&lt;groups.length;g++){(function(grp){var tabs=document.querySelectorAll(grp.sel+' .pj-ntab');for(var i=0;i&lt;tabs.length;i++){(function(btn){btn.addEventListener('click',function(){for(var j=0;j&lt;tabs.length;j++)tabs[j].classList.remove('active');btn.classList.add('active');document.getElementById(grp.tw).style.display=btn.dataset.target===grp.tw?'block':'none';document.getElementById(grp.fw).style.display=btn.dataset.target===grp.fw?'block':'none';},false);})(tabs[i]);};})(groups[g]);}
})();
function setupNoticeFile(zoneId,inputId,previewId,nameId,dataKey,typeKey){
  var zone=document.getElementById(zoneId);var inp=document.getElementById(inputId);
  function process(file){var r=new FileReader();r.onload=function(e){state[dataKey]=e.target.result;state[typeKey]=file.type;document.getElementById(nameId).textContent=file.name;if(file.type.indexOf('image')&gt;-1){var p=document.getElementById(previewId);p.src=e.target.result;p.style.display='block';}saveOpts();};r.readAsDataURL(file);}
  zone.addEventListener('click',function(){inp.click();},false);zone.addEventListener('touchend',function(e){e.preventDefault();inp.click();},false);
  zone.addEventListener('dragover',function(e){e.preventDefault();},false);zone.addEventListener('drop',function(e){e.preventDefault();if(e.dataTransfer&amp;&amp;e.dataTransfer.files[0])process(e.dataTransfer.files[0]);},false);
  inp.addEventListener('change',function(){if(this.files&amp;&amp;this.files[0])process(this.files[0]);this.value='';},false);
}
setupNoticeFile('pjJudgeFileZone','pjJudgeFileInput','pjJudgePreview','pjJudgeFileName','judgeNoticeFileData','judgeNoticeFileType');
// presenterNotice는 동적 생성 (renderPresenterNotices에서 처리)
document.getElementById('pjJudgeNotice').addEventListener('input',function(){state.judgeNotice=this.value;saveOpts();},false);
// 공지 글자/배경색
(function(){
  var jtc=document.getElementById('pjJudgeTextColor');
  var jbc=document.getElementById('pjJudgeBgColor');
  if(jtc)jtc.addEventListener('input',function(){state.judgeTextColor=this.value;saveOpts();},false);
  if(jbc)jbc.addEventListener('input',function(){state.judgeBgColor=this.value;saveOpts();},false);
})();
// 공지 삽입 + 말풍선 옵션
(function(){
  var pni=document.getElementById('pjPresenterNoticeInclude');
  if(pni)pni.addEventListener('change',function(){state.presenterNoticeInclude=this.checked;saveOpts();},false);
  var stt=document.getElementById('pjShowTabTooltip');
  if(stt)stt.addEventListener('change',function(){state.showTabTooltip=this.checked;saveOpts();},false);
})();

// 발표자공지 렌더
function renderPresenterNotices(){
  var list=document.getElementById('pjPresenterNoticeList');
  if(!list)return;
  list.innerHTML='';
  if(!state.presenterNotices)state.presenterNotices=[];
  // 기본 1개 보장
  if(!state.presenterNotices.length)state.presenterNotices.push({text:'',fileData:null,fileType:'',textColor:'#e2e8f0',bgColor:'#0f172a'});
  for(var i=0;i&lt;state.presenterNotices.length;i++){
    (function(idx){
      var n=state.presenterNotices[idx];
      var wrap=document.createElement('div');
      wrap.style.cssText='background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;padding:12px;margin-bottom:10px;';
      var lbl=document.createElement('div');
      lbl.style.cssText='font-size:13px;font-weight:700;color:#1e40af;margin-bottom:8px;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:8px;';
      lbl.innerHTML='  발표자공지'+(idx+1)+(state.presenterNotices.length&gt;1?'':' &lt;span style=&quot;font-size:11px;color:#94a3b8;&quot;&gt;(발표자료마다 삽입)&lt;/span&gt;');
      if(state.presenterNotices.length&gt;1){
        var delBtn=document.createElement('button');
        delBtn.textContent='삭제';delBtn.style.cssText='margin-left:auto;background:#fee2e2;color:#dc2626;border:1px solid #fca5a5;border-radius:5px;padding:2px 8px;font-size:11px;cursor:pointer;-webkit-appearance:none;';
        delBtn.addEventListener('click',function(){state.presenterNotices.splice(idx,1);saveOpts();renderPresenterNotices();},false);
        lbl.appendChild(delBtn);
      }
      wrap.appendChild(lbl);
      var ta=document.createElement('textarea');
      ta.className='pj-notice-textarea';ta.placeholder='발표자 안내 내용 입력...';ta.value=n.text||'';ta.style.marginBottom='6px';
      ta.addEventListener('input',function(){state.presenterNotices[idx].text=this.value;saveOpts();},false);
      wrap.appendChild(ta);
      var crow=document.createElement('div');crow.className='pj-color-row';
      crow.innerHTML='&lt;label&gt;글자색&lt;/label&gt;&lt;input type=&quot;color&quot; class=&quot;pj-color-input&quot; value=&quot;'+(n.textColor||'#e2e8f0')+'&quot; id=&quot;pnTextColor'+idx+'&quot;&gt;'
        +'&lt;label&gt;배경색&lt;/label&gt;&lt;input type=&quot;color&quot; class=&quot;pj-color-input&quot; value=&quot;'+(n.bgColor||'#0f172a')+'&quot; id=&quot;pnBgColor'+idx+'&quot;&gt;';
      wrap.appendChild(crow);
      list.appendChild(wrap);
      // 색상 이벤트
      setTimeout(function(){
        var tc=document.getElementById('pnTextColor'+idx);
        var bc=document.getElementById('pnBgColor'+idx);
        if(tc)tc.addEventListener('input',function(){state.presenterNotices[idx].textColor=this.value;saveOpts();},false);
        if(bc)bc.addEventListener('input',function(){state.presenterNotices[idx].bgColor=this.value;saveOpts();},false);
      },0);
    })(i);
  }
}
// 발표자공지 추가
(function(){
  var addBtn=document.getElementById('pjAddPresenterNoticeBtn');
  if(addBtn)addBtn.addEventListener('click',function(){
    if(!state.presenterNotices)state.presenterNotices=[];
    state.presenterNotices.push({text:'',fileData:null,fileType:'',textColor:'#e2e8f0',bgColor:'#0f172a'});
    saveOpts();renderPresenterNotices();
  },false);
})();

// ── 사이간지/타이머 이벤트 ──
document.getElementById('pjInterOptions').addEventListener('click',function(e){var btn=e.target;if(!btn.classList.contains('pj-inter-btn'))return;state.interType=btn.dataset.val;syncUI();saveOpts();},false);
document.getElementById('pjInterCount').addEventListener('change',function(){state.interCount=parseInt(this.value)||2;saveOpts();},false);
var _tlo=false;document.getElementById('pjLogoUploadBtn').addEventListener('touchend',function(e){e.preventDefault();_tlo=true;document.getElementById('pjLogoInput').click();setTimeout(function(){_tlo=false;},400);},false);document.getElementById('pjLogoUploadBtn').addEventListener('click',function(){if(_tlo)return;document.getElementById('pjLogoInput').click();},false);
document.getElementById('pjLogoInput').addEventListener('change',function(){if(!this.files||!this.files[0])return;var r=new FileReader();r.onload=function(e){state.logoDataUrl=e.target.result;document.getElementById('pjLogoName').textContent='설정됨';saveOpts();};r.readAsDataURL(this.files[0]);this.value='';},false);
document.getElementById('pjTimerMode').addEventListener('click',function(e){var btn=e.target;if(!btn.classList.contains('pj-mode-btn'))return;state.timerMode=btn.dataset.mode;syncUI();saveOpts();},false);
document.getElementById('pjTimerMin').addEventListener('change',function(){state.timerMin=parseInt(this.value)||0;saveOpts();},false);
document.getElementById('pjTimerSec').addEventListener('change',function(){state.timerSec=parseInt(this.value)||0;saveOpts();},false);
var chkMap={'pjWarn1Blink':'warn1Blink','pjWarn1Sound':'warn1Sound','pjWarn2Blink':'warn2Blink','pjWarn2Sound':'warn2Sound','pjEndSound':'endSound','pjOvertime':'overtime','pjEndBlink':'endBlink'};
var chkIds=['pjWarn1Blink','pjWarn1Sound','pjWarn2Blink','pjWarn2Sound','pjEndSound','pjOvertime','pjEndBlink'];
for(var ci=0;ci&lt;chkIds.length;ci++){(function(id){document.getElementById(id).addEventListener('change',function(){state[chkMap[id]]=this.checked;saveOpts();},false);})(chkIds[ci]);}
document.getElementById('pjTimerPos').addEventListener('click',function(e){var btn=e.target;if(!btn.classList.contains('pj-pos-btn'))return;state.timerPos=btn.dataset.pos;syncUI();saveOpts();},false);
document.getElementById('pjTimerSize').addEventListener('click',function(e){var btn=e.target;if(!btn.classList.contains('pj-size-btn'))return;state.timerSize=btn.dataset.size;syncUI();saveOpts();},false);
document.getElementById('pjTimerOpacity').addEventListener('input',function(){state.timerOpacity=parseInt(this.value);document.getElementById('pjOpacityVal').textContent=state.timerOpacity+'%';saveOpts();},false);
document.getElementById('pjCaptionOn').addEventListener('change',function(){state.captionOn=this.checked;document.getElementById('pjCaptionWrap').style.display=this.checked?'block':'none';saveOpts();},false);
document.getElementById('pjCaptionText').addEventListener('input',function(){state.captionText=this.value;saveOpts();},false);
document.getElementById('pjCapModes').addEventListener('click',function(e){var btn=e.target;if(!btn.classList.contains('pj-cap-mode-btn'))return;state.captionMode=btn.dataset.capmode;syncUI();saveOpts();},false);

// ── 경고 멘트 표시 ──
function showWarnCaption(text){
  var el=document.getElementById('pjWarnCaption');
  if(!el||!text)return;
  el.innerHTML='';
  var inner=document.createElement('div');
  inner.className='pj-warn-caption-inner';
  inner.textContent=text;
  el.appendChild(inner);
  el.classList.add('show');
  var mode=state.warnCaptionMode||'scroll';
  setTimeout(function(){inner.classList.add(mode);},30);
  var dur=(mode==='scroll')?10500:5500;
  setTimeout(function(){el.classList.remove('show');el.innerHTML='';},dur);
}

// ── 경고멘트 옵션 렌더 ──
function renderWarnMsgOptions(){
  var list=document.getElementById('pjWarnMsgList');
  if(!list)return;
  var items=[
    {onKey:'warnMsg2On',textKey:'warnMsg2Text',label:'2분 전 멘트',def:'2분 남았습니다.'},
    {onKey:'warnMsg1On',textKey:'warnMsg1Text',label:'1분 전 멘트',def:'1분 남았습니다.'},
    {onKey:'warnMsgEndOn',textKey:'warnMsgEndText',label:'완료 멘트',def:'발표시간 완료되었습니다.'},
    {onKey:'warnMsgOverOn',textKey:'warnMsgOverText',label:'경고 멘트 (30초 초과)',def:'시간 30초 초과되었습니다. 발표종료합니다.'},
  ];
  list.innerHTML='';
  for(var i=0;i&lt;items.length;i++){
    (function(item){
      var row=document.createElement('div');
      row.style.cssText='background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:8px;padding:8px 10px;';
      var top=document.createElement('div');
      top.style.cssText='display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;gap:8px;margin-bottom:6px;';
      var chk=document.createElement('input');chk.type='checkbox';chk.style.cssText='width:16px;height:16px;accent-color:#3b82f6;cursor:pointer;';
      chk.checked=!!state[item.onKey];
      var lbl=document.createElement('label');lbl.style.cssText='font-size:13px;font-weight:600;color:#475569;cursor:pointer;-webkit-flex:1;flex:1;';lbl.textContent=item.label;
      top.appendChild(chk);top.appendChild(lbl);row.appendChild(top);
      var inp=document.createElement('input');inp.type='text';
      inp.style.cssText='width:100%;background:#fff;border:1.5px solid #cbd5e1;border-radius:7px;padding:6px 10px;font-size:13px;color:#1e293b;-webkit-appearance:none;font-family:inherit;display:'+(state[item.onKey]?'block':'none')+';';
      inp.value=state[item.textKey]||item.def;
      inp.placeholder=item.def;
      chk.addEventListener('change',function(){
        state[item.onKey]=this.checked;
        if(this.checked&amp;&amp;!state[item.textKey])state[item.textKey]=item.def;
        inp.style.display=this.checked?'block':'none';
        saveOpts();
      },false);
      inp.addEventListener('input',function(){state[item.textKey]=this.value;saveOpts();},false);
      row.appendChild(inp);list.appendChild(row);
    })(items[i]);
  }
}

// ── 오디오 ──
function beep(freq,dur,vol){try{var ctx=new(window.AudioContext||window.webkitAudioContext)();var o=ctx.createOscillator();var g=ctx.createGain();o.connect(g);g.connect(ctx.destination);o.frequency.value=freq;g.gain.value=vol||0.3;o.start();o.stop(ctx.currentTime+(dur||0.3));}catch(e){}}
function playWarn1(){if(state.warn1Sound)beep(880,0.4,0.3);}
function playWarn2(){if(state.warn2Sound){beep(1100,0.2,0.4);setTimeout(function(){beep(1100,0.2,0.4);},300);}}
function playEnd(){if(state.endSound){beep(660,0.5,0.5);setTimeout(function(){beep(880,0.5,0.5);},600);}}

// ── 타이머 ──
function timerFormat(ms){var abs=Math.abs(ms);var total=Math.floor(abs/1000);return pad2(Math.floor(total/60))+':'+pad2(total%60);}
function timerTick(){
  var now=Date.now();var elapsed=timerRT.elapsed+(now-timerRT.startTs);
  var disp=document.getElementById('pjTimerDisplay');
  if(state.timerMode==='none'){return;}
  if(state.timerMode==='stopwatch'){disp.textContent=timerFormat(elapsed);disp.className='pj-timer-display';}
  else if(state.timerMode==='clock'){var d=new Date();disp.textContent=pad2(d.getHours())+':'+pad2(d.getMinutes())+':'+pad2(d.getSeconds());disp.className='pj-timer-display';}
  else{
    var rem=timerRT.total-elapsed;
    if(rem&lt;=0){
      if(!timerRT.enddone){
        timerRT.enddone=true;playEnd();
        if(state.endBlink)disp.className='pj-timer-display warn2';
        if(state.warnMsgEndOn&amp;&amp;state.warnMsgEndText)showWarnCaption(state.warnMsgEndText);
      }
      if(state.overtime){
        var over=Math.abs(rem);
        disp.textContent='+'+timerFormat(over);disp.className='pj-timer-display overtime';
        if(over&gt;=30000&amp;&amp;!timerRT.warnOverDone){
          timerRT.warnOverDone=true;
          if(state.warnMsgOverOn&amp;&amp;state.warnMsgOverText)showWarnCaption(state.warnMsgOverText);
        }
      } else {
        disp.textContent='00:00';disp.className='pj-timer-display';
      }
    }
    else{
      // 30초 전
      if(rem&lt;=30000&amp;&amp;!timerRT.warn2done){
        timerRT.warn2done=true;playWarn2();
      }
      // 1분 전
      if(rem&lt;=60000&amp;&amp;!timerRT.warn1done){
        timerRT.warn1done=true;playWarn1();
        if(state.warnMsg1On&amp;&amp;state.warnMsg1Text)showWarnCaption(state.warnMsg1Text);
      }
      // 2분 전
      if(rem&lt;=120000&amp;&amp;!timerRT.warn2mindone){
        timerRT.warn2mindone=true;
        if(state.warnMsg2On&amp;&amp;state.warnMsg2Text)showWarnCaption(state.warnMsg2Text);
      }
      disp.textContent=timerFormat(rem);
      if(rem&lt;=30000&amp;&amp;state.warn2Blink)disp.className='pj-timer-display warn2';
      else if(rem&lt;=60000&amp;&amp;state.warn1Blink)disp.className='pj-timer-display warn1';
      else disp.className='pj-timer-display';
    }
  }
}
function timerStart(){if(timerRT.running)return;timerRT.running=true;timerRT.startTs=Date.now();timerRT.interval=setInterval(timerTick,200);}
function timerPause(){if(!timerRT.running)return;timerRT.elapsed+=Date.now()-timerRT.startTs;timerRT.running=false;clearInterval(timerRT.interval);}
function timerReset(){timerPause();timerRT.elapsed=0;timerRT.warn1done=false;timerRT.warn2done=false;timerRT.enddone=false;timerRT.warn1mindone=false;timerRT.warn2mindone=false;timerRT.warnOverDone=false;timerRT.total=(state.timerMin*60+state.timerSec)*1000;var disp=document.getElementById('pjTimerDisplay');if(state.timerMode==='timer')disp.textContent=timerFormat(timerRT.total);else if(state.timerMode==='stopwatch')disp.textContent='00:00';else{var d=new Date();disp.textContent=pad2(d.getHours())+':'+pad2(d.getMinutes());}disp.className='pj-timer-display';timerStart();}
document.getElementById('pjTCtrlPlay').addEventListener('click',function(){timerStart();},false);
document.getElementById('pjTCtrlPause').addEventListener('click',function(){timerPause();},false);
document.getElementById('pjTCtrlReset').addEventListener('click',function(){timerReset();},false);

function applyCaption(){
  var el=document.getElementById('pjTimerCaption');
  if(state.captionOn&amp;&amp;state.captionText){
    if(state.captionMode==='scroll'){
      el.className='pj-timer-caption scroll';
      el.innerHTML='&lt;span&gt;'+escHtml(state.captionText)+'&lt;/span&gt;';
    } else {
      el.className='pj-timer-caption';
      el.textContent=state.captionText;
    }
    el.style.display='block';
  } else {
    el.style.display='none';
  }
}

// ── 타이머 드래그 ──
(function(){
  var box=document.getElementById('pjTimerBox');var ol=document.getElementById('pjTimerOverlay');
  var dragging=false,ox=0,oy=0,bx=0,by=0;
  function getPos(){return{x:parseInt(ol.style.left)||0,y:parseInt(ol.style.top)||0};}
  box.addEventListener('mousedown',function(e){if(e.target.tagName==='BUTTON')return;dragging=true;var p=getPos();bx=p.x;by=p.y;ox=e.clientX;oy=e.clientY;e.preventDefault();},false);
  document.addEventListener('mousemove',function(e){if(!dragging)return;ol.style.left=(bx+(e.clientX-ox))+'px';ol.style.top=(by+(e.clientY-oy))+'px';ol.style.right='auto';ol.style.bottom='auto';},false);
  document.addEventListener('mouseup',function(){dragging=false;},false);
  box.addEventListener('touchstart',function(e){if(e.target.tagName==='BUTTON')return;dragging=true;var t=e.touches[0];var p=getPos();bx=p.x;by=p.y;ox=t.clientX;oy=t.clientY;e.preventDefault();},{passive:false});
  document.addEventListener('touchmove',function(e){if(!dragging)return;var t=e.touches[0];ol.style.left=(bx+(t.clientX-ox))+'px';ol.style.top=(by+(t.clientY-oy))+'px';ol.style.right='auto';ol.style.bottom='auto';e.preventDefault();},{passive:false});
  document.addEventListener('touchend',function(){dragging=false;},false);
})();

function applyTimerPos(){
  var ol=document.getElementById('pjTimerOverlay');
  if(state.timerMode==='none'){ol.style.display='none';return;}
  ol.style.display='';
  var fs={sm:20,md:32,lg:50}[state.timerSize]||32;
  document.getElementById('pjTimerDisplay').style.fontSize=fs+'px';
  ol.style.opacity=(state.timerOpacity/100)+'';
  ol.style.left='';ol.style.right='';ol.style.top='';ol.style.bottom='';
  var pos=state.timerPos;
  if(pos==='top-left'){ol.style.left='12px';ol.style.top='12px';}
  else if(pos==='top-right'){ol.style.right='12px';ol.style.top='12px';}
  else if(pos==='bottom-left'){ol.style.left='12px';ol.style.bottom='68px';}
  else{ol.style.right='12px';ol.style.bottom='68px';}
}

// ── 슬라이드 이동 ──
function isFileDone(fii){return !!tabDoneMap[fii];}
// 해당 슬라이드 인덱스가 완료된 파일 범위인지 확인
function isSlideInDoneFile(sIdx){
  if(sIdx&lt;0||sIdx&gt;=slides.length)return false;
  var sl=slides[sIdx];
  if(!sl)return false;
  var fii=sl.fileIdx;
  if(fii&lt;0)return false;
  // 완료 처리된 파일 OR 불참 슬롯
  if(tabDoneMap[fii])return true;
  if(sl.type==='absent')return false; // 불참은 한번은 보여줌
  return false;
}
// 완료 파일 범위 건너뛰며 이동
function getNextUndoneSlide(from,direction){
  var target=from+direction;
  var safety=0;
  while(target&gt;=0&amp;&amp;target&lt;slides.length&amp;&amp;safety&lt;slides.length){
    // 완료된 파일 범위 건너뜀
    if(isSlideInDoneFile(target)){
      // 이 파일의 마지막/첫 슬라이드를 건너뜀
      var fii2=slides[target].fileIdx;
      if(direction&gt;0){
        // 앞으로: 이 파일 마지막 이후로
        while(target&lt;slides.length&amp;&amp;slides[target]&amp;&amp;slides[target].fileIdx===fii2)target++;
      } else {
        // 뒤로: 이 파일 첫번째 이전으로
        while(target&gt;=0&amp;&amp;slides[target]&amp;&amp;slides[target].fileIdx===fii2)target--;
      }
    } else {
      break;
    }
    safety++;
  }
  return target;
}

function goToSlide(idx){
  if(!slides.length)return;
  if(idx&lt;0)idx=0;
  if(idx&gt;=slides.length)idx=slides.length-1;
  if(slides[curSlide]&amp;&amp;slides[curSlide].el)slides[curSlide].el.classList.add('hidden');
  curSlide=idx;
  if(slides[curSlide]&amp;&amp;slides[curSlide].el)slides[curSlide].el.classList.remove('hidden');
  document.getElementById('pjSlideCounter').textContent=(curSlide+1)+' / '+slides.length;
  var activeFile=slides[curSlide]?slides[curSlide].fileIdx:-1;
  // 탭 active 표시 - 완료는 done 유지, 현재는 active
  var tabEls=document.querySelectorAll('.pj-tab-btn[data-tab-idx]');
  for(var i=0;i&lt;tabEls.length;i++){
    var ti=parseInt(tabEls[i].dataset.tabIdx);
    if(tabDoneMap[ti]){tabEls[i].classList.remove('active');}
    else{tabEls[i].classList[ti===activeFile?'add':'remove']('active');}
  }
  // 현재 슬라이드가 없으면 1번(fileIdx=0) active
  if(activeFile&lt;0){
    var firstTab=document.querySelector('.pj-tab-btn[data-tab-idx=&quot;0&quot;]');
    if(firstTab&amp;&amp;!tabDoneMap[0])firstTab.classList.add('active');
  }
  // 클릭모드: 현재 파일 범위 내에서만 이동
  if(state.presentMode==='click'&amp;&amp;activeFile&gt;=0){
    var fStart=fileSlideMap[activeFile];
    var fEnd=slides.length-1;
    for(var fi2=activeFile+1;fi2&lt;state.files.length;fi2++){
      if(fileSlideMap[fi2]!==undefined){fEnd=fileSlideMap[fi2]-1;break;}
    }
    document.getElementById('pjNavPrev').disabled=curSlide&lt;=fStart;
    document.getElementById('pjNavNext').disabled=curSlide&gt;=fEnd;
  } else {
    document.getElementById('pjNavPrev').disabled=curSlide===0;
    document.getElementById('pjNavNext').disabled=curSlide===slides.length-1;
  }
  if(typeof renderNearbySlides==='function')renderNearbySlides(curSlide);
  // 불참 슬라이드면 잠깐 보여주고 자동으로 다음 이동 (건너뜀)
  // 탭 클릭이 아닌 화살표/휠 이동 시만 자동 건너뜀
}
// 불참 N 오버레이
function showAbsentOverlay(num){
  var ol=document.getElementById('pjOverlay');
  if(!ol)return;
  var ex=ol.querySelector('.pj-absent-overlay');
  if(ex){ol.removeChild(ex);return;}
  var ov=document.createElement('div');
  ov.className='pj-absent-overlay';
  ov.style.cssText='position:absolute;top:0;left:0;right:0;bottom:0;z-index:2147483645;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;background:rgba(10,10,10,0.9);pointer-events:auto;';
  var inner=document.createElement('div');
  inner.style.cssText='text-align:center;';
  var nDiv=document.createElement('div');
  nDiv.style.cssText='color:#ef4444;font-size:160px;font-weight:900;line-height:1;font-family:Arial,sans-serif;';
  nDiv.textContent='N';
  var nLabel=document.createElement('div');
  nLabel.style.cssText='color:#fca5a5;font-size:22px;font-weight:700;margin-top:10px;';
  nLabel.textContent=num+'번 — 불참';
  var nBtn=document.createElement('button');
  nBtn.style.cssText='margin-top:20px;background:#ef4444;color:#fff;border:none;border-radius:8px;padding:10px 24px;font-size:15px;cursor:pointer;pointer-events:auto;';
  nBtn.textContent='✕ 닫기';
  nBtn.addEventListener('click',function(){ol.removeChild(ov);},false);
  inner.appendChild(nDiv);inner.appendChild(nLabel);inner.appendChild(nBtn);
  ov.appendChild(inner);
  ov.addEventListener('click',function(e){if(e.target===ov)ol.removeChild(ov);},false);
  ol.appendChild(ov);
}

function prevSlide(){
  var target=getNextUndoneSlide(curSlide,-1);
  // 불참 슬라이드면 한번 더 건너뜀
  if(slides[target]&amp;&amp;slides[target].type==='absent'){
    target=getNextUndoneSlide(target,-1);
  }
  goToSlide(target);
}
function nextSlide(){
  var target=getNextUndoneSlide(curSlide,1);
  // 불참 슬라이드면 한번 더 건너뜀
  if(slides[target]&amp;&amp;slides[target].type==='absent'){
    target=getNextUndoneSlide(target,1);
  }
  goToSlide(target);
}
var _judgeNoticeDone=false;
var _noticeOverlay=null; // 공지 임시 오버레이
var _noticeOverlaySlide=-1; // 오버레이 표시 전 슬라이드 인덱스

// 공지 오버레이 토글: 버튼 클릭 → 공지 오버레이, 다시클릭 → 원래화면
function showNoticeOverlay(slideIdx,noticeTitle,noticeText,noticeBg,noticeColor){
  var ol=document.getElementById('pjOverlay');
  if(!ol)return;
  // 이미 오버레이 표시중이면 닫기
  var existing=ol.querySelector('.pj-notice-overlay');
  if(existing){ol.removeChild(existing);_noticeOverlay=null;return;}

  var ov=document.createElement('div');ov.className='pj-notice-overlay';
  ov.style.cssText='position:absolute;top:0;left:0;right:0;bottom:0;z-index:2147483646;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;padding:20px 16px 80px;pointer-events:auto;';
  var inner=document.createElement('div');inner.className='pj-notice-overlay-inner';
  inner.style.cssText='background:'+(noticeBg||'rgba(15,23,42,0.97)')+';border:2px solid #3b82f6;border-radius:16px;padding:28px 24px;max-width:680px;width:100%;text-align:center;max-height:80vh;overflow-y:auto;';

  // 슬라이드 인덱스로 내용 가져오기
  if(slideIdx&gt;=0&amp;&amp;slides[slideIdx]){
    var cloned=slides[slideIdx].el.cloneNode(true);
    cloned.style.cssText='width:100%;position:static;display:block;background:transparent;';
    cloned.classList.remove('hidden');
    inner.appendChild(cloned);
  } else if(noticeTitle){
    // 직접 내용 구성
    var h2=document.createElement('h2');
    h2.textContent=noticeTitle;
    h2.style.cssText='font-size:20px;font-weight:700;color:'+(noticeColor||'#93c5fd')+';margin-bottom:14px;';
    inner.appendChild(h2);
    if(noticeText){
      var p=document.createElement('p');
      p.textContent=noticeText;
      p.style.cssText='font-size:15px;color:'+(noticeColor||'#e2e8f0')+';line-height:1.9;white-space:pre-wrap;';
      inner.appendChild(p);
    }
  } else {
    return; // 내용 없으면 표시 안함
  }

  var closeBtn=document.createElement('button');
  closeBtn.textContent='✕ 닫기';
  closeBtn.style.cssText='margin-top:14px;background:#3b82f6;color:#fff;border:none;border-radius:8px;padding:8px 20px;font-size:14px;cursor:pointer;pointer-events:auto;';
  closeBtn.addEventListener('click',function(){ol.removeChild(ov);_noticeOverlay=null;},false);
  inner.appendChild(closeBtn);
  ov.appendChild(inner);
  ov.addEventListener('click',function(e){if(e.target===ov){ol.removeChild(ov);_noticeOverlay=null;}},false);
  ol.appendChild(ov);
  _noticeOverlay=ov;
}

function toggleJudgeNoticeDone(){
  _judgeNoticeDone=!_judgeNoticeDone;
  if(judgeSlideIdx&lt;0||!slides[judgeSlideIdx])return;
  var el=slides[judgeSlideIdx].el;
  var existing=el.querySelector('.pj-slide-notice-done');
  if(_judgeNoticeDone){
    if(!existing){var ov2=document.createElement('div');ov2.className='pj-slide-notice-done';ov2.innerHTML='&lt;span&gt;✅ 공지 완료&lt;/span&gt;';el.appendChild(ov2);}
    showToast('발표전 공지 완료 처리됨');
  } else {
    if(existing)el.removeChild(existing);
    showToast('발표전 공지 완료 해제됨');
  }
}

document.getElementById('pjNavPrev').addEventListener('click',function(){prevSlide();},false);
document.getElementById('pjNavNext').addEventListener('click',function(){nextSlide();},false);

// 키보드 이동
// ── 기기 레이저포인터 + 키보드 단축키 ──
// 무선 프레젠터: PageDown(다음)/PageUp(이전) 또는 Arrow 키
var _numBuf='';var _numTimer=null;
document.addEventListener('keydown',function(e){
  if(!document.getElementById('pjOverlay').classList.contains('active'))return;
  var k=e.key;
  // 다음 슬라이드 (레이저포인터 PageDown, ., Right, Down, Space, Enter)
  if(k==='PageDown'||k==='ArrowRight'||k==='ArrowDown'||k===' '||k==='Enter'||k==='.'){
    e.preventDefault();e.stopPropagation();nextSlide();return;
  }
  // 이전 슬라이드 (PageUp, Left, Up, Backspace)
  if(k==='PageUp'||k==='ArrowLeft'||k==='ArrowUp'||k==='Backspace'){
    e.preventDefault();e.stopPropagation();prevSlide();return;
  }
  // F5: 타이머 리셋
  if(k==='F5'){e.preventDefault();timerReset();return;}
  // Escape: 전체보기 닫기
  if(k==='Escape'){e.preventDefault();closeFullview();return;}
  // R: 타이머 리셋
  if(k==='r'||k==='R'){e.preventDefault();timerReset();showToast('⏱ 타이머 리셋');return;}
  // 숫자키: 발표자 직접 이동 (연속입력 400ms로 10번이상 지원)
  if(k&gt;='0'&amp;&amp;k&lt;='9'){
    e.preventDefault();
    _numBuf+=k;
    if(_numTimer)clearTimeout(_numTimer);
    _numTimer=setTimeout(function(){
      var num=parseInt(_numBuf)-1;
      _numBuf='';
      if(num&gt;=0&amp;&amp;num&lt;state.files.length&amp;&amp;fileSlideMap[num]!==undefined){
        goToSlide(fileSlideMap[num]);showToast((num+1)+'번으로 이동');
      }
    },400);
  }
},false);
// keyup도 preventDefault (일부 프레젠터 키 반복 방지)
document.addEventListener('keyup',function(e){
  if(!document.getElementById('pjOverlay').classList.contains('active'))return;
  if(e.key==='PageDown'||e.key==='PageUp'||e.key==='F5')e.preventDefault();
},false);
// 마우스 휠 이동
var _wt=false;
document.getElementById('pjOverlay').addEventListener('wheel',function(e){
  e.preventDefault();
  if(_wt)return;_wt=true;
  if(e.deltaY&gt;0)nextSlide();else prevSlide();
  setTimeout(function(){_wt=false;},350);
},{passive:false});


// 터치 스와이프 (좌우)
(function(){
  var startX=0,startY=0;
  var cont=document.getElementById('pjOverlay');
  cont.addEventListener('touchstart',function(e){startX=e.touches[0].clientX;startY=e.touches[0].clientY;},{passive:true});
  cont.addEventListener('touchend',function(e){
    if(e.target.closest&amp;&amp;e.target.closest('.pj-timer-box'))return;
    if(e.target.closest&amp;&amp;e.target.closest('.pj-ctrl-bar'))return;
    var dx=e.changedTouches[0].clientX-startX;
    var dy=e.changedTouches[0].clientY-startY;
    if(Math.abs(dx)&gt;Math.abs(dy)&amp;&amp;Math.abs(dx)&gt;40){
      if(dx&lt;0)nextSlide();else prevSlide();
    }
  },{passive:true});
})();

// ── 슬라이드 빌드 ──
function buildSlides(){
  var container=document.getElementById('pjSlideContainer');
  container.innerHTML='';
  slides=[];fileSlideMap=[];judgeSlideIdx=-1;presenterSlideIdxs=[];tabDoneMap={};

  if(!state.files.length){
    document.getElementById('pjSlideCounter').textContent='0 / 0';
    return;
  }

  function makeSlide(cls){
    var el=document.createElement('div');
    el.className='pj-slide hidden'+(cls?' '+cls:'');
    container.appendChild(el);
    return el;
  }

  // 1단계: 모든 파일 페이지수 수집 (비동기 병렬)
  var pageCounts=new Array(state.files.length).fill(1);
  var collected=0;

  function allCollected(){
    // 2단계: 슬라이드 배열 완전 동기 확정
    // 발표전 공지(공1): 맨 앞에 배치 (공1버튼으로도 접근 가능)
    if((state.judgeNotice&amp;&amp;state.judgeNotice.trim())||state.judgeNoticeFileData){
      var jel=makeSlide('pj-slide-notice');
      jel.style.position='relative';
      buildNoticeContent(jel,'  발표전 공지',state.judgeNotice,state.judgeNoticeFileData,state.judgeNoticeFileType,state.judgeTextColor,state.judgeBgColor);
      judgeSlideIdx=slides.length; // = 0
      slides.push({type:'judgeNotice',el:jel,fileIdx:-1});
    }

    for(var fi=0;fi&lt;state.files.length;fi++){
      var fii=fi;
      var fObj=state.files[fii]; // 현재 파일 객체 (순서대로)
      var numPages=pageCounts[fii];

      // 사이간지 (첫 파일 앞에는 없음)
      if(fii&gt;0&amp;&amp;state.interType!=='none'){
        var interN=state.interType==='countdown'?3:(state.interCount||2);
        for(var ni=0;ni&lt;interN;ni++){
          var iel=makeSlide('pj-slide-inter');
          buildInterContent(iel,ni);
          slides.push({type:'inter',el:iel,fileIdx:-1});
        }
      }

      // 발표자 공지 처리
        var notices=state.presenterNotices||[];
        var hasNotice=state.presenterNoticeInclude&amp;&amp;notices.length&amp;&amp;notices.some(function(n){return n.text&amp;&amp;n.text.trim();});
        if(hasNotice){
          fileSlideMap[fii]=slides.length; // 공지 슬라이드부터
          var firstNoticeForSlide=null;
          for(var ni2=0;ni2&lt;notices.length;ni2++){
            if(notices[ni2].text&amp;&amp;notices[ni2].text.trim()){firstNoticeForSlide=notices[ni2];break;}
          }
          if(firstNoticeForSlide){
            var pel=makeSlide('pj-slide-notice');
            buildNoticeContent(pel,'  발표자공지',firstNoticeForSlide.text,firstNoticeForSlide.fileData,firstNoticeForSlide.fileType,firstNoticeForSlide.textColor,firstNoticeForSlide.bgColor);
            presenterSlideIdxs.push(slides.length);
            slides.push({type:'presenterNotice',el:pel,fileIdx:fii});
          }
        } else {
          fileSlideMap[fii]=slides.length; // PDF 첫장
        }
        // PDF 페이지 플레이스홀더
        for(var pi=0;pi&lt;numPages;pi++){
          var psel=makeSlide('');
          psel.style.cssText='background:#0a0a0a;position:relative;';
          slides.push({type:'pdf',el:psel,fileIdx:fii,pageNum:pi+1});
        }
    }

    // 슬라이드 카운터/화살표
    document.getElementById('pjSlideCounter').textContent='1 / '+slides.length;
    document.getElementById('pjNavPrev').disabled=true;
    document.getElementById('pjNavNext').disabled=slides.length&lt;=1;

    // 탭 빌드
    buildTabs();

    // 첫 슬라이드 표시 (발표전공지 제외 — 공1버튼으로만)
    // presentMode 'click': 첫 발표자 fileSlideMap[0] 부터
    // presentMode 'scroll': 동일
    curSlide=0; // 발표전공지가 있으면 0번(공지)부터 시작
    if(slides[curSlide])slides[curSlide].el.classList.remove('hidden');
    document.getElementById('pjSlideCounter').textContent=(curSlide+1)+' / '+slides.length;
    document.getElementById('pjNavPrev').disabled=curSlide===0;
    document.getElementById('pjNavNext').disabled=slides.length&lt;=1;
    hideLoading();

    // 3단계: canvas 렌더 (비동기)
    renderAllCanvas();
  }

  // 페이지수 수집
  for(var i=0;i&lt;state.files.length;i++){
    (function(idx){
      var f=state.files[idx];
      if(!f||!f.data){pageCounts[idx]=0;collected++;if(collected===state.files.length)allCollected();return;}
      pdfjsLib.getDocument({data:f.data.slice(0)}).promise.then(function(pdf){
        pageCounts[idx]=pdf.numPages;
        collected++;
        if(collected===state.files.length)allCollected();
      }).catch(function(){
        collected++;
        if(collected===state.files.length)allCollected();
      });
    })(i);
  }
}

// 3단계: 지연 로드 — 현재 슬라이드 ±5장 우선 렌더, 나머지는 idle 처리
var _renderedSet={};
function renderSlideCanvas(sobj){
  if(!sobj||sobj.type!=='pdf')return;
  var key=sobj.fileIdx+'_'+sobj.pageNum;
  if(_renderedSet[key])return;
  _renderedSet[key]=true;
  var f=state.files[sobj.fileIdx];
  if(!f||!f.data)return;
  pdfjsLib.getDocument({data:f.data.slice(0)}).promise.then(function(pdf){
    pdf.getPage(sobj.pageNum).then(function(page){
      var W=window.innerWidth;var H=window.innerHeight-62;
      var vp0=page.getViewport({scale:1});
      var scale=Math.min(W/vp0.width,H/vp0.height);
      if(scale&lt;0.2)scale=0.2;if(scale&gt;6)scale=6;
      var vp=page.getViewport({scale:scale});
      var canvas=document.createElement('canvas');
      canvas.width=vp.width;canvas.height=vp.height;
      canvas.style.cssText='display:block;max-width:100%;max-height:calc(100vh - 62px);object-fit:contain;';
      // 이미 canvas 있으면 스킵
      if(sobj.el.querySelector('canvas'))return;
      sobj.el.appendChild(canvas);
      page.render({canvasContext:canvas.getContext('2d'),viewport:vp});
    });
  });
}
function renderAllCanvas(){
  _renderedSet={};
  // 현재 슬라이드 ±5 우선 렌더
  renderNearbySlides(curSlide);
  // 나머지는 requestIdleCallback or setTimeout으로 순차 렌더
  var remaining=[];
  for(var si=0;si&lt;slides.length;si++){
    var key=(slides[si].fileIdx||0)+'_'+(slides[si].pageNum||0);
    if(slides[si].type==='pdf'&amp;&amp;!_renderedSet[key])remaining.push(slides[si]);
  }
  (function renderNext(arr,idx){
    if(idx&gt;=arr.length)return;
    if(window.requestIdleCallback){
      requestIdleCallback(function(){renderSlideCanvas(arr[idx]);renderNext(arr,idx+1);});
    } else {
      setTimeout(function(){renderSlideCanvas(arr[idx]);renderNext(arr,idx+1);},30);
    }
  })(remaining,0);
}
function renderNearbySlides(center){
  var range=5;
  for(var i=Math.max(0,center-range);i&lt;=Math.min(slides.length-1,center+range);i++){
    renderSlideCanvas(slides[i]);
  }
}

function buildNoticeContent(el,title,text,fileData,fileType,textColor,bgColor){
  el.classList.add('pj-slide-notice');
  if(bgColor)el.style.background=bgColor;
  var inner=document.createElement('div');inner.className='pj-slide-notice-inner';
  var h2=document.createElement('h2');h2.textContent=title;
  if(textColor)h2.style.color=textColor;
  inner.appendChild(h2);
  if(fileData){
    if(fileType&amp;&amp;fileType.indexOf('image')&gt;-1){var img=document.createElement('img');img.src=fileData;inner.appendChild(img);}
    else if(fileType&amp;&amp;fileType.indexOf('pdf')&gt;-1){
      var c2=document.createElement('canvas');c2.style.cssText='max-width:100%;display:block;margin:0 auto;';inner.appendChild(c2);
      var bin=atob(fileData.split(',')[1]);var arr=new Uint8Array(bin.length);for(var j=0;j&lt;bin.length;j++)arr[j]=bin.charCodeAt(j);
      pdfjsLib.getDocument({data:arr.buffer}).promise.then(function(pdf){pdf.getPage(1).then(function(page){var vp0=page.getViewport({scale:1});var scale=Math.min(600,window.innerWidth-60)/vp0.width;var vp=page.getViewport({scale:scale});c2.width=vp.width;c2.height=vp.height;c2.style.width='100%';c2.style.height='auto';page.render({canvasContext:c2.getContext('2d'),viewport:vp});});});
    }
  }
  if(text&amp;&amp;text.trim()){var p2=document.createElement('p');p2.textContent=text;if(textColor)p2.style.color=textColor;inner.appendChild(p2);}
  el.appendChild(inner);
}

function buildInterContent(el,ni){
  el.classList.add('pj-slide-inter');
  if(state.interType==='black'){el.style.background='#000';}
  else if(state.interType==='wait'){var t=document.createElement('div');t.className='pj-inter-wait';t.textContent='잠시 대기해 주세요 ⏳';el.appendChild(t);}
  else if(state.interType==='logo'&amp;&amp;state.logoDataUrl){var img=document.createElement('img');img.src=state.logoDataUrl;img.style.cssText='max-width:100%;max-height:80vh;object-fit:contain;';el.appendChild(img);}
  else if(state.interType==='countdown'){var num=3-ni;var cnt=document.createElement('div');cnt.className='pj-inter-countdown';cnt.textContent=num&gt;0?num+'':'▶';el.appendChild(cnt);}
}

// ── 탭 빌드 ──
function buildTabs(){
  var tabs=document.getElementById('pjCtrlTabs');tabs.innerHTML='';
  // 공1 버튼을 맨앞에 배치
  var b1=document.createElement('button');b1.className='pj-tab-btn notice-btn';
  b1.textContent='공1';b1.title='공지 (더블클릭: 공지완료)';
  b1.style.setProperty('pointer-events','auto','important');
  b1.style.cssText+=';background:rgba(59,130,246,0.35);border-color:#3b82f6;color:#93c5fd;font-weight:700;';
  var _b1t=0;var _b1done=false;
  b1.addEventListener('click',function(){
    var now=Date.now();var isDbl=(now-_b1t&lt;380);_b1t=now;
    if(isDbl){
      _b1done=!_b1done;
      if(_b1done){b1.textContent='공지완료';b1.style.opacity='0.45';b1.classList.add('done');}
      else{b1.textContent='공1';b1.style.opacity='1';b1.classList.remove('done');}
    } else {
      if(_b1done)return;
      if(judgeSlideIdx&gt;=0){goToSlide(judgeSlideIdx);}
      else if(state.judgeNotice&amp;&amp;state.judgeNotice.trim()){
        showNoticeOverlay(-1,'발표전 공지',state.judgeNotice,state.judgeBgColor,state.judgeTextColor);
      }
    }
  },false);
  tabs.appendChild(b1);
  for(var ti=0;ti&lt;state.files.length;ti++){
    (function(tii){
      var btn=document.createElement('button');
      btn.className='pj-tab-btn';
      btn.textContent=(tii+1)+'';
      btn.dataset.tabIdx=tii;
      // 말풍선 파일명 (IIFE 클로저로 정확한 파일명 캡처)
      if(state.showTabTooltip&amp;&amp;state.files[tii]){
        (function(fname,b){
          var tip=document.createElement('span');
          tip.style.cssText='position:absolute;bottom:calc(100% + 8px);left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);background:#1e293b;color:#fff;font-size:11px;padding:5px 9px;border-radius:7px;white-space:nowrap;pointer-events:none !important;opacity:0;-webkit-transition:opacity 0.15s;transition:opacity 0.15s;z-index:2147483647;text-align:center;line-height:1.4;';
          tip.textContent=fname;
          b.style.position='relative';b.style.overflow='visible';
          b.appendChild(tip);
          b.addEventListener('mouseenter',function(){tip.style.opacity='1';},false);
          b.addEventListener('mouseleave',function(){tip.style.opacity='0';},false);
        })(state.files[tii].name, btn);
      }
      var lastClick=0;
      btn.addEventListener('click',function(){
        var now=Date.now();var isDbl=(now-lastClick&lt;380);lastClick=now;
        if(isDbl){
          tabDoneMap[tii]=!tabDoneMap[tii];
          if(tabDoneMap[tii]){
            btn.classList.add('done');btn.classList.remove('active');btn.textContent=(tii+1)+'완료';
            // 다음 미완료 발표자로 이동
            var nextFii=-1;
            for(var nf=tii+1;nf&lt;state.files.length;nf++){if(!tabDoneMap[nf]){nextFii=nf;break;}}
            if(nextFii&gt;=0&amp;&amp;fileSlideMap[nextFii]!==undefined){
              setTimeout(function(){goToSlide(fileSlideMap[nextFii]);},200);
            }
          } else {
            btn.classList.remove('done');btn.textContent=(tii+1)+'';
          }
        } else {
          if(fileSlideMap[tii]===undefined)return;
          timerPause();
          timerRT.elapsed=0;timerRT.warn1done=false;timerRT.warn2done=false;timerRT.enddone=false;
          timerRT.total=(state.timerMin*60+state.timerSec)*1000;
          var disp2=document.getElementById('pjTimerDisplay');
          if(disp2&amp;&amp;state.timerMode==='timer')disp2.textContent=timerFormat(timerRT.total);
          disp2&amp;&amp;(disp2.className='pj-timer-display');
          if(state.presentMode==='click'){showFileOnly(tii);}
          else{goToSlide(fileSlideMap[tii]);}
        }
      },false);
      tabs.appendChild(btn);
    })(ti);
  }
  // 공1은 buildTabs 맨앞에서 처리됨
  var b2=document.createElement('button');b2.className='pj-tab-btn notice-btn';b2.textContent='발표자공지';
  b2.title='발표자 공지 (클릭: 오버레이표시/숨김)';
  b2.addEventListener('click',function(){
    // 기존 오버레이 있으면 닫기
    var ol2=document.getElementById('pjOverlay');
    if(ol2&amp;&amp;ol2.querySelector('.pj-notice-overlay')){
      var ex=ol2.querySelector('.pj-notice-overlay');
      ol2.removeChild(ex);_noticeOverlay=null;
      b2.classList.remove('active');
      return;
    }
    // 발표자공지 모든 내용 하나의 오버레이에 표시
    var notices2=state.presenterNotices||[];
    var hasAny=false;
    for(var ni3=0;ni3&lt;notices2.length;ni3++){if(notices2[ni3].text&amp;&amp;notices2[ni3].text.trim()){hasAny=true;break;}}
    if(!hasAny)return;
    // 오버레이 직접 구성 (여러 공지 순서대로)
    if(!ol2)return;
    var ov3=document.createElement('div');
    ov3.className='pj-notice-overlay';
    ov3.style.cssText='position:absolute;top:0;left:0;right:0;bottom:0;z-index:2147483646;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;padding:20px 16px 80px;pointer-events:auto;';
    var inner3=document.createElement('div');
    inner3.style.cssText='background:rgba(15,23,42,0.97);border:2px solid #3b82f6;border-radius:16px;padding:24px;max-width:680px;width:100%;text-align:center;max-height:80vh;overflow-y:auto;';
    for(var ni4=0;ni4&lt;notices2.length;ni4++){
      var nn4=notices2[ni4];
      if(!nn4.text||!nn4.text.trim())continue;
      var block=document.createElement('div');
      block.style.cssText='margin-bottom:'+(ni4&lt;notices2.length-1?'18px':'0')+';padding-bottom:'+(ni4&lt;notices2.length-1?'18px':'0')+';border-bottom:'+(ni4&lt;notices2.length-1?'1px solid rgba(255,255,255,0.1)':'none')+';';
      var h4=document.createElement('h2');
      h4.textContent='  발표자공지'+(notices2.length&gt;1?(ni4+1):'');
      h4.style.cssText='font-size:18px;font-weight:700;color:'+(nn4.textColor||'#93c5fd')+';margin-bottom:10px;';
      var p4=document.createElement('p');
      p4.textContent=nn4.text;
      p4.style.cssText='font-size:15px;color:'+(nn4.textColor||'#e2e8f0')+';line-height:1.9;white-space:pre-wrap;';
      block.appendChild(h4);block.appendChild(p4);inner3.appendChild(block);
    }
    var cb3=document.createElement('button');
    cb3.textContent='✕ 닫기';
    cb3.style.cssText='margin-top:14px;background:#3b82f6;color:#fff;border:none;border-radius:8px;padding:8px 20px;font-size:14px;cursor:pointer;pointer-events:auto;';
    cb3.addEventListener('click',function(){ol2.removeChild(ov3);_noticeOverlay=null;b2.classList.remove('active');},false);
    inner3.appendChild(cb3);ov3.appendChild(inner3);
    ov3.addEventListener('click',function(e){if(e.target===ov3){ol2.removeChild(ov3);_noticeOverlay=null;b2.classList.remove('active');}},false);
    ol2.appendChild(ov3);_noticeOverlay=ov3;
    b2.classList.add('active');
  },false);
  tabs.appendChild(b2);
}
function showFileOnly(fii){
  if(fileSlideMap[fii]===undefined)return;
  goToSlide(fileSlideMap[fii]);
}

// ── 전체화면 API ──
function requestFullscreen(el){if(el.requestFullscreen)el.requestFullscreen();else if(el.webkitRequestFullscreen)el.webkitRequestFullscreen();else if(el.mozRequestFullScreen)el.mozRequestFullScreen();else if(el.msRequestFullscreen)el.msRequestFullscreen();}
function exitFullscreen(){if(document.exitFullscreen)document.exitFullscreen();else if(document.webkitExitFullscreen)document.webkitExitFullscreen();else if(document.mozCancelFullScreen)document.mozCancelFullScreen();else if(document.msExitFullscreen)document.msExitFullscreen();}
function isFullscreen(){return !!(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement);}
document.addEventListener('fullscreenchange',function(){if(!isFullscreen()&amp;&amp;document.getElementById('pjOverlay').classList.contains('active'))closeFullview(true);},false);
document.addEventListener('webkitfullscreenchange',function(){if(!isFullscreen()&amp;&amp;document.getElementById('pjOverlay').classList.contains('active'))closeFullview(true);},false);

// ── 전체보기 열기/닫기 ──
var _tfv=false;
document.getElementById('pjFullviewBtn').addEventListener('touchend',function(e){e.preventDefault();_tfv=true;openFullview();setTimeout(function(){_tfv=false;},400);},false);
document.getElementById('pjFullviewBtn').addEventListener('click',function(){if(_tfv)return;openFullview();},false);
(function(){
  var hb=document.getElementById('pjFullviewBtnHdr');
  if(!hb)return;
  var _th=false;
  hb.addEventListener('touchend',function(e){e.preventDefault();_th=true;openFullview();setTimeout(function(){_th=false;},400);},false);
  hb.addEventListener('click',function(){if(_th)return;openFullview();},false);
})();

function openFullview(){
  if(!state.files.length){alert('발표자료를 먼저 업로드해주세요.');return;}
  var ol=document.getElementById('pjOverlay');
  ol.classList.add('active');
  document.body.classList.add('pj-popup-open');
  document.body.style.cssText='overflow:hidden !important;position:fixed !important;width:100% !important;';
  (function(){
    var ss=['#header','header','.header','.gnb','.lnb','#gnb','#lnb','nav','#nav','.menu','#menu','.sidebar','#sidebar'];
    for(var si=0;si&lt;ss.length;si++){var el=document.querySelector(ss[si]);if(el)el.style.setProperty('z-index','-1','important');}
  })();
  requestFullscreen(document.documentElement);
  showLoading('슬라이드 준비 중...');
  timerReset();applyTimerPos();applyCaption();
  document.getElementById('pjTimerOverlay').classList.add('active');
  buildSlides(); // 내부 allCollected에서 buildTabs+hideLoading 처리
  // 기기 레이저포인터 포커스 확보
  var olEl=document.getElementById('pjOverlay');
  if(olEl){olEl.setAttribute('tabindex','0');setTimeout(function(){olEl.focus();},100);}
}
function closeFullview(skipExit){
  timerPause();
  document.getElementById('pjOverlay').classList.remove('active');
  document.body.classList.remove('pj-popup-open');
  document.body.style.cssText='';
  (function(){
    var ss=['#header','header','.header','.gnb','.lnb','#gnb','#lnb','nav','#nav','.menu','#menu','.sidebar','#sidebar'];
    for(var si=0;si&lt;ss.length;si++){var el=document.querySelector(ss[si]);if(el)el.style.removeProperty('z-index');}
  })();
  document.getElementById('pjTimerOverlay').classList.remove('active');
  if(!skipExit&amp;&amp;isFullscreen())exitFullscreen();
  hideLoading();
}
var _tcb=false;document.getElementById('pjCloseBtn').addEventListener('touchend',function(e){e.preventDefault();_tcb=true;closeFullview();setTimeout(function(){_tcb=false;},400);},false);document.getElementById('pjCloseBtn').addEventListener('click',function(){if(_tcb)return;closeFullview();},false);
var _tcc=false;document.getElementById('pjCtrlClose').addEventListener('touchend',function(e){e.preventDefault();_tcc=true;closeFullview();setTimeout(function(){_tcc=false;},400);},false);document.getElementById('pjCtrlClose').addEventListener('click',function(){if(_tcc)return;closeFullview();},false);
window.addEventListener('hashchange',function(){if(document.getElementById('pjOverlay').classList.contains('active'))closeFullview();},false);

// ── 백업 ──
var _tbk=false;document.getElementById('pjBackupBtn').addEventListener('touchend',function(e){e.preventDefault();_tbk=true;downloadBackup();setTimeout(function(){_tbk=false;},400);},false);document.getElementById('pjBackupBtn').addEventListener('click',function(){if(_tbk)return;downloadBackup();},false);

// 초기화
(function(){
  var rb=document.getElementById('pjResetBtn');if(!rb)return;
  rb.addEventListener('click',function(){
    if(!confirm('모든 파일과 설정을 초기화할까요?'))return;
    state.files=[];state.gdriveLinks=[];
    state.judgeNotice='';state.judgeNoticeFileData=null;state.judgeNoticeFileType='';
    state.judgeTextColor='#e2e8f0';state.judgeBgColor='#0f172a';
    state.presenterNotices=[{text:'',fileData:null,fileType:'',textColor:'#e2e8f0',bgColor:'#0f172a'}];
    state.presenterNoticeInclude=false;
    state.interType='none';state.interCount=2;state.logoDataUrl=null;
    state.timerMode='timer';state.timerMin=5;state.timerSec=0;
    state.timerPos='top-right';state.timerSize='md';state.timerOpacity=70;
    state.captionOn=false;state.captionText='';state.captionMode='fixed';
    state.presentMode='scroll';state.showTabTooltip=true;
    try{localStorage.removeItem('pj_opts_v5');}catch(e){}
    syncUI();renderFileList();showToast('초기화 완료!');
  },false);
})();

// ── 정렬 버튼 ──
function bindBtn(id,fn){
  var el=document.getElementById(id);if(!el)return;
  var _t=false;
  el.addEventListener('touchend',function(e){e.preventDefault();_t=true;fn();setTimeout(function(){_t=false;},400);},false);
  el.addEventListener('click',function(){if(_t)return;fn();},false);
}
var _sortState={upload:0,name:0,size:0};
bindBtn('pjSortUploadBtn',function(){
  _sortState.upload=(_sortState.upload+1)%2;
  state.files.sort(function(a,b){return (a.uploadOrder||0)-(b.uploadOrder||0);});
  if(_sortState.upload===1)state.files.reverse();
  renderFileList();showToast(_sortState.upload===0?'업로드순':'업로드 역순');
});
bindBtn('pjSortNameBtn',function(){
  _sortState.name=(_sortState.name+1)%2;
  state.files.sort(function(a,b){return a.name.localeCompare(b.name,'ko');});
  if(_sortState.name===1)state.files.reverse();
  renderFileList();showToast(_sortState.name===0?'이름순':'이름 역순');
});
bindBtn('pjSortSizeBtn',function(){
  _sortState.size=(_sortState.size+1)%2;
  state.files.sort(function(a,b){return (a.data?a.data.byteLength:0)-(b.data?b.data.byteLength:0);});
  if(_sortState.size===1)state.files.reverse();
  renderFileList();showToast(_sortState.size===0?'용량 작은순':'용량 큰순');
});

// ── 발표모드 전환 ──
window.setPresentMode=function(mode){
  state.presentMode=mode;syncUI();saveOpts();
  showToast(mode==='scroll'?'  전체 스크롤 모드':'  순번 클릭 이동 모드');
};
function downloadBackup(){if(!state.files.length){showToast('파일 없음');return;}for(var i=0;i&lt;state.files.length;i++){if(!state.files[i].data)continue;(function(f){var blob=new Blob([f.data],{type:'application/pdf'});var url=URL.createObjectURL(blob);var a=document.createElement('a');a.href=url;a.download=f.name;document.body.appendChild(a);a.click();setTimeout(function(){document.body.removeChild(a);URL.revokeObjectURL(url);},1000);})(state.files[i]);}showToast('PDF 다운로드!');}

// ── 전체저장 / 불러오기 ──
var _tss=false;document.getElementById('pjSaveSessionBtn').addEventListener('touchend',function(e){e.preventDefault();_tss=true;saveSession();setTimeout(function(){_tss=false;},400);},false);document.getElementById('pjSaveSessionBtn').addEventListener('click',function(){if(_tss)return;saveSession();},false);
function saveSession(){
  if(!state.files.length){showToast('파일 없음');return;}
  showLoading('전체 저장 중...');
  var session={version:5,opts:{judgeNotice:state.judgeNotice,judgeNoticeFileData:state.judgeNoticeFileData,judgeNoticeFileType:state.judgeNoticeFileType,presenterNotice:state.presenterNotice,presenterNoticeFileData:state.presenterNoticeFileData,presenterNoticeFileType:state.presenterNoticeFileType,presenterNoticeInclude:state.presenterNoticeInclude,interType:state.interType,interCount:state.interCount,timerMode:state.timerMode,timerMin:state.timerMin,timerSec:state.timerSec,warn1Blink:state.warn1Blink,warn1Sound:state.warn1Sound,warn2Blink:state.warn2Blink,warn2Sound:state.warn2Sound,endSound:state.endSound,overtime:state.overtime,timerPos:state.timerPos,timerSize:state.timerSize,timerOpacity:state.timerOpacity,captionOn:state.captionOn,captionText:state.captionText,captionMode:state.captionMode,gdriveLinks:state.gdriveLinks},files:[]};
  var filesToSave=state.files.filter(function(f){return !!f.data;});
  var loaded=0;
  if(!filesToSave.length){hideLoading();showToast('저장 가능한 파일 없음');return;}
  for(var i=0;i&lt;filesToSave.length;i++){(function(f){var reader=new FileReader();reader.onload=function(e){session.files.push({name:f.name,pages:f.pages,b64:e.target.result.split(',')[1]});loaded++;if(loaded===filesToSave.length){var blob=new Blob([JSON.stringify(session)],{type:'application/json'});var url=URL.createObjectURL(blob);var a=document.createElement('a');a.href=url;a.download='발표세션_'+new Date().toISOString().slice(0,10)+'.발표장';document.body.appendChild(a);a.click();setTimeout(function(){document.body.removeChild(a);URL.revokeObjectURL(url);},1000);hideLoading();showToast('전체 저장 완료!');}};reader.readAsDataURL(new Blob([f.data],{type:'application/pdf'}));})(filesToSave[i]);}
}
var _tls=false;document.getElementById('pjLoadSessionBtn').addEventListener('touchend',function(e){e.preventDefault();_tls=true;document.getElementById('pjSessionInput').click();setTimeout(function(){_tls=false;},400);},false);document.getElementById('pjLoadSessionBtn').addEventListener('click',function(){if(_tls)return;document.getElementById('pjSessionInput').click();},false);
document.getElementById('pjSessionInput').addEventListener('change',function(){
  if(!this.files||!this.files[0])return;showLoading('불러오는 중...');
  var reader=new FileReader();
  reader.onload=function(e){
    try{var session=JSON.parse(e.target.result);if(!session.files)throw new Error('invalid');var o=session.opts||{};for(var k in o){if(o.hasOwnProperty(k))state[k]=o[k];}syncUI();saveOpts();state.files=[];var loaded2=0;var total=session.files.length;if(!total){hideLoading();return;}for(var i=0;i&lt;total;i++){(function(sf){var bin=atob(sf.b64);var arr=new Uint8Array(bin.length);for(var j=0;j&lt;bin.length;j++)arr[j]=bin.charCodeAt(j);loadPdfBuffer(arr.buffer,sf.name).then(function(obj){state.files.push(obj);loaded2++;if(loaded2===total){renderFileList();hideLoading();showToast('불러오기 완료!');}}).catch(function(){loaded2++;if(loaded2===total){renderFileList();hideLoading();}});})(session.files[i]);};}catch(ex){hideLoading();showToast('파일 오류');}
  };reader.readAsText(this.files[0]);this.value='';
},false);

// ── 옵션 공유 ──
function getOptsJson(){
  return JSON.stringify({
    judgeNotice:state.judgeNotice,
    judgeNoticeFileType:state.judgeNoticeFileType,
    judgeTextColor:state.judgeTextColor,
    judgeBgColor:state.judgeBgColor,
    presenterNotices:state.presenterNotices,
    presenterNoticeInclude:state.presenterNoticeInclude,
    showTabTooltip:state.showTabTooltip,
    interType:state.interType,interCount:state.interCount,
    timerMode:state.timerMode,timerMin:state.timerMin,timerSec:state.timerSec,
    warn1Blink:state.warn1Blink,warn1Sound:state.warn1Sound,
    warn2Blink:state.warn2Blink,warn2Sound:state.warn2Sound,
    endSound:state.endSound,overtime:state.overtime,
    timerPos:state.timerPos,timerSize:state.timerSize,timerOpacity:state.timerOpacity,
    captionOn:state.captionOn,captionText:state.captionText,captionMode:state.captionMode,
    presentMode:state.presentMode
  });
}
function getShareUrl(){return window.location.href.split('?')[0]+'?pjopts='+LZString.compressToEncodedURIComponent(getOptsJson());}
function fallbackCopy(text){var ta=document.createElement('textarea');ta.value=text;ta.style.cssText='position:fixed;top:-9999px;';document.body.appendChild(ta);ta.focus();ta.select();try{document.execCommand('copy');showToast('복사됨!');}catch(e){showToast('복사 실패');}document.body.removeChild(ta);}
var _tsh=false;document.getElementById('pjShareOptsBtn').addEventListener('touchend',function(e){e.preventDefault();_tsh=true;var u=getShareUrl();if(navigator.clipboard&amp;&amp;navigator.clipboard.writeText)navigator.clipboard.writeText(u).then(function(){showToast('URL 복사됨!');}).catch(function(){fallbackCopy(u);});else fallbackCopy(u);setTimeout(function(){_tsh=false;},400);},false);document.getElementById('pjShareOptsBtn').addEventListener('click',function(){if(_tsh)return;var u=getShareUrl();if(navigator.clipboard&amp;&amp;navigator.clipboard.writeText)navigator.clipboard.writeText(u).then(function(){showToast('URL 복사됨!');}).catch(function(){fallbackCopy(u);});else fallbackCopy(u);},false);
var _tqr=false;document.getElementById('pjShareQrBtn').addEventListener('touchend',function(e){e.preventDefault();_tqr=true;showQr();setTimeout(function(){_tqr=false;},400);},false);document.getElementById('pjShareQrBtn').addEventListener('click',function(){if(_tqr)return;showQr();},false);
function showQr(){var wrap=document.getElementById('pjQrWrap');var qrDiv=document.getElementById('pjQrCanvas');qrDiv.innerHTML='';wrap.style.display='block';function mk(){new QRCode(qrDiv,{text:getShareUrl(),width:180,height:180,correctLevel:QRCode.CorrectLevel.M});}if(window.QRCode)mk();else{var s=document.createElement('script');s.src='https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js';s.onload=mk;document.head.appendChild(s);}showToast('QR 생성됨!');}

// ── 메모리 최적화 ──
(function(){
  var btn=document.getElementById('pjMemOptBtn');
  if(!btn)return;
  btn.addEventListener('click',function(){
    // 전체보기 캔버스 캐시 초기화
    if(typeof _renderedSet!=='undefined')_renderedSet={};
    // 가비지 컬렉션 유도 (간접적)
    var prog=document.getElementById('pjOptProgress');
    if(prog){prog.style.display='block';prog.textContent='메모리 최적화 완료! 다음 전체보기 시 슬라이드가 다시 렌더됩니다.';}
    showToast('  메모리 최적화 완료');
    setTimeout(function(){if(prog)prog.style.display='none';},3000);
  },false);
})();
// ── PDF 병합 저장 ──
(function(){
  var btn=document.getElementById('pjMergeExportBtn');
  if(!btn)return;
  btn.addEventListener('click',function(){
    if(!state.files||!state.files.length){showToast('파일이 없습니다');return;}
    var validFiles=state.files.filter(function(f){return f.data&amp;&amp;!f.isAbsent;});
    if(!validFiles.length){showToast('병합할 파일이 없습니다');return;}
    var prog=document.getElementById('pjOptProgress');
    if(prog){prog.style.display='block';prog.textContent='병합 중... ('+validFiles.length+'개 파일)';}
    showLoading('PDF 병합 중...');
    // 순서대로 Blob 배열 생성 후 다운로드 (각각 개별 다운로드)
    var delay=0;
    for(var i=0;i&lt;validFiles.length;i++){
      (function(f,idx){
        setTimeout(function(){
          var blob=new Blob([f.data],{type:'application/pdf'});
          var url=URL.createObjectURL(blob);
          var a=document.createElement('a');
          a.href=url;a.download=(idx+1).toString().padStart(2,'0')+'_'+f.name;
          document.body.appendChild(a);a.click();
          setTimeout(function(){document.body.removeChild(a);URL.revokeObjectURL(url);},500);
          if(idx===validFiles.length-1){
            hideLoading();
            if(prog){prog.textContent=validFiles.length+'개 파일 다운로드 완료!';}
            setTimeout(function(){if(prog)prog.style.display='none';},3000);
          }
        },delay);
        delay+=800;
      })(validFiles[i],i);
    }
  },false);
})();

// ── 사용설명서 접기/펴기 ──
(function(){
  var toggle=document.getElementById('pjManualToggle');
  var content=document.getElementById('pjManualContent');
  var arrow=document.getElementById('pjManualArrow');
  if(!toggle||!content)return;
  var open=true;
  toggle.addEventListener('click',function(){
    open=!open;
    content.style.display=open?'block':'none';
    arrow.textContent=open?'▲ 접기':'▼ 펴기';
  },false);
})();

// ── 초기화 ──
loadOpts();loadOptsFromUrl();
if(!state.presenterNotices||!state.presenterNotices.length)state.presenterNotices=[{text:'',fileData:null,fileType:'',textColor:'#e2e8f0',bgColor:'#0f172a'}];
syncUI();
// 표시옵션 섹션 이벤트
(function(){
  var el=document.getElementById('pjShowTabTooltipMain');
  if(el){
    el.checked=!!state.showTabTooltip;
    el.addEventListener('change',function(){
      state.showTabTooltip=this.checked;
      // pjShowTabTooltip도 동기화
      var el2=document.getElementById('pjShowTabTooltip');
      if(el2)el2.checked=this.checked;
      saveOpts();
    },false);
  }
})();

})();
&lt;/script&gt;</description>
      <category>모두의계산기/행사공지계산기_16</category>
      <category>발표장</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/30</guid>
      <comments>https://0-1.kr/30#entry30comment</comments>
      <pubDate>Mon, 23 Nov 2020 11:17:47 +0900</pubDate>
    </item>
    <item>
      <title>모두의 단어암기장 계산기_(0-1.kr/29)</title>
      <link>https://0-1.kr/29</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no&quot;&gt;
&lt;title&gt;모두의 단어암기장 (시안)&lt;/title&gt;
&lt;style&gt;
  :root{
    --wa-navy:#26355E;
    --wa-navy-deep:#1A2542;
    --wa-paper:#FBF9F4;
    --wa-line:#D8CDBF;
    --wa-ink:#2A2A28;
    --wa-sub:#6E6A61;
    --wa-good:#3F8F5F;
    --wa-good-bg:#E7F3EB;
    --wa-bad:#C85A46;
    --wa-bad-bg:#F8E9E5;
    --wa-accent:#B8863E;
    --wa-panel:#EFECE3;
    --wa-radius:10px;
  }
  *{box-sizing:border-box;}
  #wa-root{
    font-family:&quot;Pretendard&quot;,&quot;Apple SD Gothic Neo&quot;,&quot;Malgun Gothic&quot;,sans-serif;
    color:var(--wa-ink);
    background:var(--wa-panel);
    max-width:760px;
    margin:0 auto;
    padding:0 0 40px 0;
    line-height:1.5;
  }
  #wa-root *{box-sizing:border-box;}
  .wa-header{
    background:var(--wa-navy);
    background-image:linear-gradient(135deg,var(--wa-navy) 0%,var(--wa-navy-deep) 100%);
    color:#fff;
    padding:22px 20px 18px 20px;
    border-radius:0 0 16px 16px;
  }
  .wa-header-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px;flex-wrap:wrap;}
  .wa-title{font-size:20px;font-weight:800;letter-spacing:-0.3px;margin:0;}
  .wa-title small{display:block;font-size:11.5px;font-weight:500;opacity:0.65;margin-top:3px;letter-spacing:0;}
  .wa-badge{
    font-size:11px;background:rgba(255,255,255,0.14);padding:4px 9px;border-radius:20px;
    white-space:nowrap;font-weight:600;
  }
  .wa-hdr-actions{display:flex;gap:6px;flex:none;}
  .wa-hdr-btn{
    appearance:none;border:1px solid rgba(255,255,255,0.28);background:rgba(255,255,255,0.10);
    color:#fff;font-size:11.5px;font-weight:700;padding:6px 10px;border-radius:20px;cursor:pointer;
    white-space:nowrap;transition:background .15s;
  }
  .wa-hdr-btn:active{transform:scale(0.96);}
  .wa-hdr-btn:hover{background:rgba(255,255,255,0.2);}
  .wa-hdr-btn-accent{background:var(--wa-accent);border-color:var(--wa-accent);}
  @media (max-width:460px){
    .wa-header-top{flex-direction:column;align-items:flex-start;}
    .wa-hdr-actions{width:100%;}
    .wa-hdr-btn{flex:1;text-align:center;}
  }
  .wa-tabs{
    display:flex;gap:6px;margin-top:16px;overflow-x:auto;padding-bottom:2px;
    -webkit-overflow-scrolling:touch;
  }
  .wa-tab{
    flex:1 0 auto;text-align:center;padding:9px 10px;border-radius:8px;font-size:13px;font-weight:700;
    background:rgba(255,255,255,0.08);color:rgba(255,255,255,0.72);cursor:pointer;
    border:1px solid transparent;white-space:nowrap;transition:background .15s;
    user-select:none;
  }
  .wa-tab.wa-active{background:#fff;color:var(--wa-navy-deep);}
  .wa-body{padding:16px 16px 0 16px;}
  .wa-panel{
    background:var(--wa-paper);border:1px solid var(--wa-line);border-radius:var(--wa-radius);
    padding:16px;margin-bottom:14px;
  }
  .wa-panel h3{margin:0 0 10px 0;font-size:14px;font-weight:800;color:var(--wa-navy-deep);
    display:flex;align-items:center;gap:6px;}
  .wa-hint{font-size:12px;color:var(--wa-sub);margin:0 0 10px 0;line-height:1.55;}
  textarea.wa-input{
    width:100%;min-height:110px;border:1px solid var(--wa-line);border-radius:8px;padding:10px 12px;
    font-size:14px;font-family:inherit;resize:vertical;background:#fff;color:var(--wa-ink);
  }
  textarea.wa-input:focus, input.wa-field:focus{outline:2px solid var(--wa-accent);outline-offset:1px;}
  .wa-row{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;}
  .wa-btn{
    appearance:none;border:none;border-radius:8px;padding:9px 14px;font-size:13px;font-weight:700;
    cursor:pointer;background:var(--wa-navy);color:#fff;transition:opacity .15s,transform .1s;
  }
  .wa-btn:active{transform:scale(0.97);}
  .wa-btn.wa-ghost{background:#fff;color:var(--wa-navy);border:1px solid var(--wa-line);}
  .wa-btn.wa-good{background:var(--wa-good);}
  .wa-btn.wa-bad{background:var(--wa-bad);}
  .wa-btn.wa-accent{background:var(--wa-accent);}
  .wa-btn.wa-sm{padding:6px 10px;font-size:12px;border-radius:6px;}
  .wa-btn:disabled{opacity:0.4;cursor:not-allowed;}
  input.wa-field{
    border:1px solid var(--wa-line);border-radius:8px;padding:8px 10px;font-size:13px;
    font-family:inherit;background:#fff;color:var(--wa-ink);
  }
  .wa-add-row{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap;}
  .wa-add-row input{flex:1 1 120px;}

  .wa-wordlist{margin-top:12px;border-top:1px dashed var(--wa-line);}
  .wa-wordrow{
    display:flex;align-items:center;gap:8px;padding:8px 2px;border-bottom:1px solid #EEE7D9;font-size:13px;
  }
  .wa-wordrow .wa-idx{width:22px;color:var(--wa-sub);font-size:11px;flex:none;}
  .wa-wordrow .wa-w{font-weight:700;flex:1 1 40%;}
  .wa-wordrow .wa-m{color:var(--wa-sub);flex:1 1 45%;}
  .wa-wordrow .wa-del{flex:none;background:none;border:none;color:var(--wa-bad);font-size:16px;cursor:pointer;padding:2px 6px;}
  .wa-empty{padding:22px 10px;text-align:center;color:var(--wa-sub);font-size:13px;}

  /* Card mode — index-card / ring-notebook signature */
  .wa-card-wrap{padding:6px 4px 4px 4px;}
  .wa-progress-bar{height:5px;background:var(--wa-line);border-radius:3px;overflow:hidden;margin-bottom:14px;}
  .wa-progress-fill{height:100%;background:var(--wa-accent);border-radius:3px;transition:width .2s;}
  .wa-stat-row{display:flex;justify-content:space-between;font-size:12px;color:var(--wa-sub);margin-bottom:10px;font-weight:600;}
  .wa-card-stage{perspective:1200px;height:220px;margin:0 auto 16px auto;position:relative;}
  .wa-index-card{
    width:100%;height:100%;position:relative;transform-style:preserve-3d;
    transition:transform .45s cubic-bezier(.2,.7,.3,1);cursor:pointer;
  }
  .wa-index-card.wa-flipped{transform:rotateY(180deg);}
  .wa-card-face{
    position:absolute;inset:0;backface-visibility:hidden;border-radius:12px;
    border:1px solid var(--wa-line);background:
      repeating-linear-gradient(to bottom, transparent 0 34px, #E9E1D0 34px 35px),
      linear-gradient(#FFFDF8,#FBF6EC);
    box-shadow:0 3px 0 var(--wa-line), 0 8px 18px rgba(38,53,94,0.10);
    display:flex;align-items:center;justify-content:center;flex-direction:column;padding:20px;
  }
  .wa-card-face:before{
    content:&quot;&quot;;position:absolute;left:34px;top:0;bottom:0;width:1px;background:#E3A9A0;opacity:0.55;
  }
  .wa-card-face.wa-back{transform:rotateY(180deg);}
  .wa-card-holes{position:absolute;left:12px;top:0;bottom:0;display:flex;flex-direction:column;
    justify-content:space-evenly;align-items:center;width:14px;}
  .wa-card-holes span{width:8px;height:8px;border-radius:50%;background:var(--wa-panel);
    box-shadow:inset 0 1px 2px rgba(0,0,0,0.25);}
  .wa-card-label{font-size:10.5px;letter-spacing:1px;color:var(--wa-sub);font-weight:700;
    text-transform:uppercase;position:absolute;top:12px;left:46px;}
  .wa-card-word{font-size:27px;font-weight:800;color:var(--wa-navy-deep);text-align:center;
    padding:0 10px;word-break:keep-all;}
  .wa-card-meaning{font-size:18px;font-weight:600;color:var(--wa-ink);text-align:center;padding:0 14px;
    word-break:keep-all;}
  .wa-card-tip{font-size:11px;color:var(--wa-sub);margin-top:10px;}
  .wa-card-controls{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:12px;}
  .wa-know-row{display:flex;gap:10px;}
  .wa-know-row .wa-btn{flex:1;padding:12px;font-size:14px;}
  .wa-speak-btn{
    appearance:none;border:1px solid var(--wa-line);background:#fff;color:var(--wa-navy);
    border-radius:50%;width:26px;height:26px;flex:none;font-size:13px;cursor:pointer;line-height:1;
    display:inline-flex;align-items:center;justify-content:center;padding:0;
  }
  .wa-speak-btn:active{transform:scale(0.92);background:var(--wa-panel);}
  .wa-speak-btn.wa-speak-lg{width:36px;height:36px;font-size:16px;}

  /* Hide mode */
  .wa-hide-toolbar{display:flex;gap:8px;margin-bottom:10px;flex-wrap:wrap;align-items:center;}
  .wa-hide-toolbar select{border:1px solid var(--wa-line);border-radius:8px;padding:7px 8px;font-size:12px;background:#fff;}
  .wa-hiderow{display:flex;align-items:center;gap:10px;padding:9px 2px;border-bottom:1px solid #EEE7D9;font-size:14px;}
  .wa-hiderow .wa-idx{width:20px;color:var(--wa-sub);font-size:11px;flex:none;}
  .wa-hiderow .wa-front{font-weight:700;flex:1 1 40%;}
  .wa-mask{
    flex:1 1 45%;background:#E7E1D2;border-radius:6px;color:transparent;padding:6px 8px;cursor:pointer;
    user-select:none;font-size:13px;position:relative;text-align:center;
  }
  .wa-mask.wa-shown{background:transparent;color:var(--wa-ink);cursor:default;text-align:left;}
  .wa-mask:not(.wa-shown):after{content:&quot;  탭하여 보기&quot;;color:var(--wa-sub);font-size:11px;position:absolute;
    left:0;right:0;top:50%;transform:translateY(-50%);}

  /* Quiz mode */
  .wa-quiz-q{font-size:12px;color:var(--wa-sub);font-weight:700;margin-bottom:6px;}
  .wa-quiz-word{font-size:24px;font-weight:800;color:var(--wa-navy-deep);text-align:center;
    padding:18px 10px;background:#fff;border:1px solid var(--wa-line);border-radius:10px;margin-bottom:14px;}
  .wa-choice{
    display:block;width:100%;text-align:left;background:#fff;border:1px solid var(--wa-line);
    border-radius:8px;padding:12px 14px;font-size:14px;margin-bottom:8px;cursor:pointer;font-family:inherit;
    color:var(--wa-ink);
  }
  .wa-choice:hover{border-color:var(--wa-accent);}
  .wa-choice.wa-correct{background:var(--wa-good-bg);border-color:var(--wa-good);color:var(--wa-good);font-weight:700;}
  .wa-choice.wa-wrong{background:var(--wa-bad-bg);border-color:var(--wa-bad);color:var(--wa-bad);font-weight:700;}
  .wa-choice:disabled{cursor:default;}
  .wa-quiz-result{text-align:center;padding:20px 10px;}
  .wa-quiz-score{font-size:34px;font-weight:800;color:var(--wa-navy-deep);}
  .wa-quiz-score span{font-size:16px;color:var(--wa-sub);font-weight:600;}
  .wa-wrong-list{margin-top:14px;text-align:left;}
  .wa-wrong-list .wa-wordrow{font-size:12.5px;}

  /* Stats */
  .wa-stat-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:10px;}
  .wa-stat-box{background:#fff;border:1px solid var(--wa-line);border-radius:8px;padding:12px 8px;text-align:center;}
  .wa-stat-box .n{font-size:20px;font-weight:800;color:var(--wa-navy-deep);}
  .wa-stat-box .l{font-size:11px;color:var(--wa-sub);margin-top:2px;font-weight:600;}

  .wa-footer{
    display:flex;flex-wrap:wrap;gap:8px;padding:14px 16px 4px 16px;border-top:1px solid var(--wa-line);
    margin-top:6px;
  }

  /* Test / Exam mode */
  .wa-exam-cover{text-align:center;padding:34px 20px;}
  .wa-exam-kicker{font-size:11px;letter-spacing:2px;color:var(--wa-accent);font-weight:800;text-transform:uppercase;}
  .wa-exam-title{margin:8px 0 12px 0;font-size:22px;color:var(--wa-navy-deep);}
  .wa-exam-desc{font-size:13px;color:var(--wa-sub);line-height:1.7;margin:0 auto;max-width:360px;}
  .wa-exam-countdown{font-size:64px;font-weight:800;color:var(--wa-navy-deep);margin-bottom:6px;}
  .wa-exam-timerbar-wrap{height:6px;background:var(--wa-line);border-radius:0;margin:0 -16px 0 -16px;overflow:hidden;}
  .wa-exam-timerbar{height:100%;width:100%;background:var(--wa-good);transition:width 1s linear,background .3s;}
  .wa-exam-timerbar.wa-time-low{background:var(--wa-bad);}
  .wa-exam-timer-row{display:flex;justify-content:space-between;align-items:center;padding:10px 4px 4px 4px;
    font-size:12px;color:var(--wa-sub);font-weight:700;}
  .wa-exam-clock{font-family:&quot;SFMono-Regular&quot;,Consolas,monospace;font-size:20px;color:var(--wa-navy-deep);
    font-weight:800;letter-spacing:1px;}
  .wa-exam-q{border-bottom:1px dashed var(--wa-line);padding:14px 2px;}
  .wa-exam-q:last-child{border-bottom:none;}
  .wa-exam-q .wa-exam-q-num{font-size:11px;color:var(--wa-sub);font-weight:700;margin-bottom:4px;}
  .wa-exam-q .wa-exam-q-word{font-size:17px;font-weight:800;color:var(--wa-navy-deep);margin-bottom:8px;}
  .wa-exam-q input{
    width:100%;border:1px solid var(--wa-line);border-radius:8px;padding:10px 12px;font-size:14px;
    font-family:inherit;background:#fff;
  }
  .wa-exam-q input:disabled{background:var(--wa-panel);color:var(--wa-sub);}
  .wa-exam-review-row{display:flex;gap:8px;padding:8px 2px;border-bottom:1px solid #EEE7D9;font-size:12.5px;align-items:flex-start;}
  .wa-exam-review-row .wa-tag{flex:none;font-weight:800;border-radius:5px;padding:1px 6px;font-size:11px;}
  .wa-exam-review-row .wa-tag.ok{background:var(--wa-good-bg);color:var(--wa-good);}
  .wa-exam-review-row .wa-tag.no{background:var(--wa-bad-bg);color:var(--wa-bad);}

  #wa-root.wa-participant-mode .wa-tabs,
  #wa-root.wa-participant-mode .wa-hdr-actions,
  #wa-root.wa-participant-mode .wa-footer{display:none;}
  #wa-root.wa-participant-mode .wa-tabpage:not([data-page=&quot;test&quot;]){display:none !important;}
  .wa-wm{width:100%;text-align:center;font-size:10.5px;color:var(--wa-sub);margin-top:10px;opacity:0.75;}
  .wa-toast{
    position:fixed;left:50%;bottom:22px;transform:translateX(-50%) translateY(10px);
    background:var(--wa-navy-deep);color:#fff;padding:10px 18px;border-radius:20px;font-size:13px;
    opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:999999;font-weight:600;
    max-width:88%;text-align:center;
  }
  .wa-toast.wa-show{opacity:1;transform:translateX(-50%) translateY(0);}
  .wa-modal-bg{
    position:fixed;inset:0;background:rgba(26,37,66,0.55);display:none;align-items:center;justify-content:center;
    z-index:999998;padding:20px;
  }
  .wa-modal-bg.wa-show{display:flex;}
  .wa-modal{background:#fff;border-radius:12px;padding:20px;max-width:320px;width:100%;text-align:center;}
  .wa-modal h4{margin:0 0 10px 0;font-size:14px;}
  .wa-modal img{margin:8px auto;display:block;}
  .wa-modal input{width:100%;font-size:12px;margin-top:8px;text-align:center;}
  @media (max-width:420px){
    .wa-card-word{font-size:22px;}
    .wa-card-stage{height:190px;}
    .wa-stat-grid{grid-template-columns:1fr 1fr;}
  }
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;wa-root&quot;&gt;

  &lt;div class=&quot;wa-header&quot;&gt;
    &lt;div class=&quot;wa-header-top&quot;&gt;
      &lt;div class=&quot;wa-title&quot;&gt;  모두의 단어암기장 &lt;small&gt;쓰고 · 외우고 · 가리고 · 채점하고 · 공유하기 — 시안 v3&lt;/small&gt;&lt;/div&gt;
      &lt;div class=&quot;wa-hdr-actions&quot;&gt;
        &lt;button class=&quot;wa-hdr-btn&quot; id=&quot;wa-hdr-share&quot; title=&quot;URL로 단어장 공유&quot;&gt;  공유&lt;/button&gt;
        &lt;button class=&quot;wa-hdr-btn&quot; id=&quot;wa-hdr-tiny&quot; title=&quot;짧은 링크 만들기&quot;&gt;✂️ 짧은링크&lt;/button&gt;
        &lt;button class=&quot;wa-hdr-btn wa-hdr-btn-accent&quot; id=&quot;wa-hdr-test&quot; title=&quot;시험 만들기&quot;&gt;  테스트&lt;/button&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;wa-tabs&quot; id=&quot;wa-tabs&quot;&gt;
      &lt;div class=&quot;wa-tab wa-active&quot; data-tab=&quot;edit&quot;&gt;✏️ 입력&lt;/div&gt;
      &lt;div class=&quot;wa-tab&quot; data-tab=&quot;card&quot;&gt;  카드&lt;/div&gt;
      &lt;div class=&quot;wa-tab&quot; data-tab=&quot;hide&quot;&gt;  가리기&lt;/div&gt;
      &lt;div class=&quot;wa-tab&quot; data-tab=&quot;quiz&quot;&gt;  퀴즈&lt;/div&gt;
      &lt;div class=&quot;wa-tab&quot; data-tab=&quot;test&quot;&gt;  테스트&lt;/div&gt;
      &lt;div class=&quot;wa-tab&quot; data-tab=&quot;stat&quot;&gt;  통계&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;wa-body&quot;&gt;

    &lt;!-- EDIT TAB --&gt;
    &lt;div class=&quot;wa-tabpage&quot; data-page=&quot;edit&quot;&gt;
      &lt;div class=&quot;wa-panel&quot;&gt;
        &lt;h3&gt;일괄 붙여넣기&lt;/h3&gt;
        &lt;p class=&quot;wa-hint&quot;&gt;한 줄에 「단어 + 구분기호 + 뜻」 형식으로 붙여넣으세요. 구분기호는 탭, 콤마(,), 대시(-), 콜론(:) 모두 인식합니다.&lt;br&gt;예) apple, 사과 / run - 달리다&lt;/p&gt;
        &lt;textarea class=&quot;wa-input&quot; id=&quot;wa-bulk&quot; placeholder=&quot;apple, 사과&amp;#10;run - 달리다&amp;#10;beautiful : 아름다운&quot;&gt;&lt;/textarea&gt;
        &lt;div class=&quot;wa-row&quot;&gt;
          &lt;button class=&quot;wa-btn&quot; id=&quot;wa-bulk-add&quot;&gt;목록에 추가&lt;/button&gt;
          &lt;button class=&quot;wa-btn wa-ghost&quot; id=&quot;wa-bulk-clear&quot;&gt;입력창 비우기&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;wa-panel&quot;&gt;
        &lt;h3&gt;한 개씩 추가&lt;/h3&gt;
        &lt;div class=&quot;wa-add-row&quot;&gt;
          &lt;input class=&quot;wa-field&quot; id=&quot;wa-single-word&quot; placeholder=&quot;단어&quot;&gt;
          &lt;input class=&quot;wa-field&quot; id=&quot;wa-single-mean&quot; placeholder=&quot;뜻&quot;&gt;
          &lt;button class=&quot;wa-btn wa-accent wa-sm&quot; id=&quot;wa-single-add&quot; style=&quot;flex:none;&quot;&gt;추가&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;div class=&quot;wa-panel&quot;&gt;
        &lt;h3&gt;현재 단어장 (&lt;span id=&quot;wa-count&quot;&gt;0&lt;/span&gt;개)&lt;/h3&gt;
        &lt;div class=&quot;wa-row&quot; style=&quot;margin-top:0;&quot;&gt;
          &lt;button class=&quot;wa-btn wa-ghost wa-sm&quot; id=&quot;wa-sort-shuffle&quot;&gt;  순서 섞기&lt;/button&gt;
          &lt;button class=&quot;wa-btn wa-ghost wa-sm&quot; id=&quot;wa-sort-az&quot;&gt;가나다순&lt;/button&gt;
          &lt;button class=&quot;wa-btn wa-bad wa-sm&quot; id=&quot;wa-clear-all&quot;&gt;전체 삭제&lt;/button&gt;
        &lt;/div&gt;
        &lt;div class=&quot;wa-wordlist&quot; id=&quot;wa-wordlist&quot;&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- CARD TAB --&gt;
    &lt;div class=&quot;wa-tabpage&quot; data-page=&quot;card&quot; style=&quot;display:none;&quot;&gt;
      &lt;div class=&quot;wa-panel wa-card-wrap&quot;&gt;
        &lt;div class=&quot;wa-stat-row&quot;&gt;
          &lt;span id=&quot;wa-card-pos&quot;&gt;0 / 0&lt;/span&gt;
          &lt;span&gt;✅ &lt;span id=&quot;wa-card-known&quot;&gt;0&lt;/span&gt; ·   &lt;span id=&quot;wa-card-unknown&quot;&gt;0&lt;/span&gt;&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&quot;wa-progress-bar&quot;&gt;&lt;div class=&quot;wa-progress-fill&quot; id=&quot;wa-card-progress&quot; style=&quot;width:0%;&quot;&gt;&lt;/div&gt;&lt;/div&gt;

        &lt;div class=&quot;wa-card-stage&quot; id=&quot;wa-card-stage&quot;&gt;
          &lt;div class=&quot;wa-index-card&quot; id=&quot;wa-index-card&quot;&gt;
            &lt;div class=&quot;wa-card-face wa-front&quot;&gt;
              &lt;div class=&quot;wa-card-holes&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
              &lt;div class=&quot;wa-card-label&quot;&gt;단어&lt;/div&gt;
              &lt;div class=&quot;wa-card-word&quot; id=&quot;wa-card-front-text&quot;&gt;단어를 먼저 입력해 주세요&lt;/div&gt;
              &lt;button class=&quot;wa-speak-btn wa-speak-lg&quot; id=&quot;wa-card-speak&quot; title=&quot;발음 듣기&quot;&gt; &lt;/button&gt;
              &lt;div class=&quot;wa-card-tip&quot;&gt;탭하면 뜻이 보여요&lt;/div&gt;
            &lt;/div&gt;
            &lt;div class=&quot;wa-card-face wa-back&quot;&gt;
              &lt;div class=&quot;wa-card-holes&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
              &lt;div class=&quot;wa-card-label&quot;&gt;뜻&lt;/div&gt;
              &lt;div class=&quot;wa-card-meaning&quot; id=&quot;wa-card-back-text&quot;&gt;-&lt;/div&gt;
              &lt;div class=&quot;wa-card-tip&quot;&gt;다시 탭하면 단어로&lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;

        &lt;div class=&quot;wa-card-controls&quot;&gt;
          &lt;button class=&quot;wa-btn wa-ghost wa-sm&quot; id=&quot;wa-card-prev&quot;&gt;◀ 이전&lt;/button&gt;
          &lt;button class=&quot;wa-btn wa-ghost wa-sm&quot; id=&quot;wa-card-shuffle-toggle&quot;&gt;  랜덤 끄기&lt;/button&gt;
          &lt;button class=&quot;wa-btn wa-ghost wa-sm&quot; id=&quot;wa-card-next&quot;&gt;다음 ▶&lt;/button&gt;
        &lt;/div&gt;
        &lt;div class=&quot;wa-know-row&quot;&gt;
          &lt;button class=&quot;wa-btn wa-bad&quot; id=&quot;wa-card-unknown-btn&quot;&gt;  모르는 단어&lt;/button&gt;
          &lt;button class=&quot;wa-btn wa-good&quot; id=&quot;wa-card-known-btn&quot;&gt;✅ 아는 단어&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- HIDE TAB --&gt;
    &lt;div class=&quot;wa-tabpage&quot; data-page=&quot;hide&quot; style=&quot;display:none;&quot;&gt;
      &lt;div class=&quot;wa-panel&quot;&gt;
        &lt;h3&gt;가리기 학습&lt;/h3&gt;
        &lt;div class=&quot;wa-hide-toolbar&quot;&gt;
          &lt;select id=&quot;wa-hide-direction&quot;&gt;
            &lt;option value=&quot;mean&quot;&gt;뜻 가리기 (단어 보고 뜻 맞히기)&lt;/option&gt;
            &lt;option value=&quot;word&quot;&gt;단어 가리기 (뜻 보고 단어 맞히기)&lt;/option&gt;
          &lt;/select&gt;
          &lt;button class=&quot;wa-btn wa-ghost wa-sm&quot; id=&quot;wa-hide-all&quot;&gt;전체 가리기&lt;/button&gt;
          &lt;button class=&quot;wa-btn wa-ghost wa-sm&quot; id=&quot;wa-show-all&quot;&gt;전체 보이기&lt;/button&gt;
        &lt;/div&gt;
        &lt;div id=&quot;wa-hidelist&quot;&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- QUIZ TAB --&gt;
    &lt;div class=&quot;wa-tabpage&quot; data-page=&quot;quiz&quot; style=&quot;display:none;&quot;&gt;
      &lt;div class=&quot;wa-panel&quot; id=&quot;wa-quiz-panel&quot;&gt;
        &lt;div id=&quot;wa-quiz-live&quot;&gt;
          &lt;div class=&quot;wa-quiz-q&quot;&gt;문제 &lt;span id=&quot;wa-quiz-n&quot;&gt;1&lt;/span&gt; / &lt;span id=&quot;wa-quiz-total&quot;&gt;0&lt;/span&gt; · 맞힌 개수 &lt;span id=&quot;wa-quiz-score&quot;&gt;0&lt;/span&gt;&lt;/div&gt;
          &lt;div class=&quot;wa-quiz-word&quot;&gt;&lt;span id=&quot;wa-quiz-word&quot;&gt;단어장을 먼저 채워주세요&lt;/span&gt;
            &lt;button class=&quot;wa-speak-btn&quot; id=&quot;wa-quiz-speak&quot; title=&quot;발음 듣기&quot; style=&quot;vertical-align:middle;margin-left:8px;&quot;&gt; &lt;/button&gt;
          &lt;/div&gt;
          &lt;div id=&quot;wa-quiz-choices&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
        &lt;div id=&quot;wa-quiz-result&quot; style=&quot;display:none;&quot; class=&quot;wa-quiz-result&quot;&gt;
          &lt;div class=&quot;wa-quiz-score&quot;&gt;&lt;span id=&quot;wa-quiz-final&quot;&gt;0&lt;/span&gt; / &lt;span id=&quot;wa-quiz-final-total&quot;&gt;0&lt;/span&gt; &lt;span&gt;정답&lt;/span&gt;&lt;/div&gt;
          &lt;div class=&quot;wa-row&quot; style=&quot;justify-content:center;&quot;&gt;
            &lt;button class=&quot;wa-btn wa-accent&quot; id=&quot;wa-quiz-restart&quot;&gt;  다시 풀기&lt;/button&gt;
            &lt;button class=&quot;wa-btn wa-bad&quot; id=&quot;wa-quiz-retry-wrong&quot;&gt;틀린 것만 다시&lt;/button&gt;
          &lt;/div&gt;
          &lt;div class=&quot;wa-wrong-list&quot; id=&quot;wa-quiz-wronglist&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;wa-row&quot; style=&quot;padding:0 2px 12px 2px;&quot;&gt;
        &lt;button class=&quot;wa-btn wa-ghost wa-sm&quot; id=&quot;wa-quiz-start&quot;&gt;▶ 퀴즈 새로 시작&lt;/button&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- TEST TAB --&gt;
    &lt;div class=&quot;wa-tabpage&quot; data-page=&quot;test&quot; style=&quot;display:none;&quot;&gt;

      &lt;!-- 1) ADMIN BUILDER VIEW --&gt;
      &lt;div id=&quot;wa-test-admin&quot;&gt;
        &lt;div class=&quot;wa-panel&quot;&gt;
          &lt;h3&gt;  시험 만들기&lt;/h3&gt;
          &lt;p class=&quot;wa-hint&quot;&gt;현재 단어장(&lt;span id=&quot;wa-test-wordcount&quot;&gt;0&lt;/span&gt;개)으로 시험지를 만들어요. 응시자는 이름을 적고 제한시간 안에 뜻(또는 단어)을 입력하고, 종료되면 결과가 자동 채점돼요.&lt;/p&gt;
          &lt;div class=&quot;wa-add-row&quot; style=&quot;flex-direction:column;align-items:stretch;&quot;&gt;
            &lt;input class=&quot;wa-field&quot; id=&quot;wa-test-title&quot; placeholder=&quot;시험 제목 (예: 7월 3주차 영단어 시험)&quot; value=&quot;단어 시험&quot;&gt;
            &lt;div class=&quot;wa-row&quot; style=&quot;margin-top:8px;&quot;&gt;
              &lt;input class=&quot;wa-field&quot; id=&quot;wa-test-minutes&quot; type=&quot;number&quot; min=&quot;1&quot; max=&quot;120&quot; value=&quot;5&quot; style=&quot;width:90px;&quot;&gt;
              &lt;span style=&quot;font-size:12px;color:var(--wa-sub);align-self:center;&quot;&gt;분 제한시간&lt;/span&gt;
              &lt;select id=&quot;wa-test-direction&quot; style=&quot;border:1px solid var(--wa-line);border-radius:8px;padding:8px;font-size:12px;&quot;&gt;
                &lt;option value=&quot;mean&quot;&gt;단어 보고 뜻 쓰기&lt;/option&gt;
                &lt;option value=&quot;word&quot;&gt;뜻 보고 단어 쓰기&lt;/option&gt;
              &lt;/select&gt;
            &lt;/div&gt;
            &lt;input class=&quot;wa-field&quot; id=&quot;wa-test-email&quot; type=&quot;email&quot; placeholder=&quot;결과를 받을 이메일 주소&quot; style=&quot;margin-top:8px;&quot;&gt;
          &lt;/div&gt;
          &lt;div class=&quot;wa-row&quot;&gt;
            &lt;button class=&quot;wa-btn wa-accent&quot; id=&quot;wa-test-build&quot;&gt;  시험 링크 만들기&lt;/button&gt;
            &lt;button class=&quot;wa-btn wa-ghost&quot; id=&quot;wa-test-preview&quot;&gt;  미리 응시해보기&lt;/button&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;!-- 2) PARTICIPANT: COVER --&gt;
      &lt;div id=&quot;wa-test-cover&quot; style=&quot;display:none;&quot;&gt;
        &lt;div class=&quot;wa-panel wa-exam-cover&quot;&gt;
          &lt;div class=&quot;wa-exam-kicker&quot;&gt;단어 시험&lt;/div&gt;
          &lt;h2 class=&quot;wa-exam-title&quot; id=&quot;wa-exam-title&quot;&gt;단어 시험&lt;/h2&gt;
          &lt;p class=&quot;wa-exam-desc&quot;&gt;
            총 &lt;b id=&quot;wa-exam-count&quot;&gt;0&lt;/b&gt;문항 · 제한시간 &lt;b id=&quot;wa-exam-minutes&quot;&gt;5&lt;/b&gt;분&lt;br&gt;
            시작하면 타이머가 바로 진행돼요. 시간이 끝나면 입력이 자동으로 잠기고 결과가 채점됩니다.
          &lt;/p&gt;
          &lt;div class=&quot;wa-add-row&quot; style=&quot;flex-direction:column;align-items:stretch;max-width:320px;margin:0 auto;&quot;&gt;
            &lt;input class=&quot;wa-field&quot; id=&quot;wa-exam-name&quot; placeholder=&quot;이름 (필수)&quot;&gt;
            &lt;input class=&quot;wa-field&quot; id=&quot;wa-exam-info&quot; placeholder=&quot;소속 · 학번 등 (선택)&quot; style=&quot;margin-top:8px;&quot;&gt;
          &lt;/div&gt;
          &lt;button class=&quot;wa-btn wa-accent&quot; id=&quot;wa-exam-start&quot; style=&quot;margin-top:16px;padding:12px 28px;font-size:15px;&quot;&gt;시험 시작&lt;/button&gt;
          &lt;div id=&quot;wa-exam-exit-preview&quot; style=&quot;display:none;margin-top:14px;&quot;&gt;
            &lt;a href=&quot;#&quot; id=&quot;wa-exam-exit-link&quot; style=&quot;font-size:12px;color:var(--wa-sub);text-decoration:underline;&quot;&gt;← 미리보기 종료하고 관리자 화면으로&lt;/a&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;!-- 3) PARTICIPANT: COUNTDOWN --&gt;
      &lt;div id=&quot;wa-test-countdown&quot; style=&quot;display:none;&quot;&gt;
        &lt;div class=&quot;wa-panel wa-exam-cover&quot;&gt;
          &lt;div class=&quot;wa-exam-countdown&quot; id=&quot;wa-exam-countdown-num&quot;&gt;3&lt;/div&gt;
          &lt;p class=&quot;wa-exam-desc&quot;&gt;시험이 곧 시작됩니다&lt;/p&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;!-- 4) PARTICIPANT: IN PROGRESS --&gt;
      &lt;div id=&quot;wa-test-live&quot; style=&quot;display:none;&quot;&gt;
        &lt;div class=&quot;wa-exam-timerbar-wrap&quot;&gt;
          &lt;div class=&quot;wa-exam-timerbar&quot; id=&quot;wa-exam-timerbar&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;wa-exam-timer-row&quot;&gt;
          &lt;span id=&quot;wa-exam-taker-label&quot;&gt;응시자&lt;/span&gt;
          &lt;span class=&quot;wa-exam-clock&quot; id=&quot;wa-exam-clock&quot;&gt;05:00&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&quot;wa-panel&quot;&gt;
          &lt;div id=&quot;wa-exam-questions&quot;&gt;&lt;/div&gt;
          &lt;div class=&quot;wa-row&quot; style=&quot;justify-content:center;margin-top:6px;&quot;&gt;
            &lt;button class=&quot;wa-btn wa-good&quot; id=&quot;wa-exam-submit&quot; style=&quot;padding:12px 26px;&quot;&gt;제출하기&lt;/button&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;!-- 5) PARTICIPANT: RESULT --&gt;
      &lt;div id=&quot;wa-test-result&quot; style=&quot;display:none;&quot;&gt;
        &lt;div class=&quot;wa-panel&quot; style=&quot;text-align:center;&quot;&gt;
          &lt;div class=&quot;wa-exam-kicker&quot;&gt;수고하셨습니다&lt;/div&gt;
          &lt;div class=&quot;wa-quiz-score&quot;&gt;&lt;span id=&quot;wa-exam-score&quot;&gt;0&lt;/span&gt; / &lt;span id=&quot;wa-exam-total&quot;&gt;0&lt;/span&gt; &lt;span&gt;정답&lt;/span&gt;&lt;/div&gt;
          &lt;p class=&quot;wa-exam-desc&quot; id=&quot;wa-exam-result-name&quot;&gt;-&lt;/p&gt;
          &lt;div class=&quot;wa-row&quot; style=&quot;justify-content:center;&quot;&gt;
            &lt;button class=&quot;wa-btn wa-accent&quot; id=&quot;wa-exam-send-mail&quot;&gt;  결과 이메일로 보내기&lt;/button&gt;
            &lt;button class=&quot;wa-btn wa-ghost&quot; id=&quot;wa-exam-copy&quot;&gt;결과 복사&lt;/button&gt;
          &lt;/div&gt;
          &lt;div class=&quot;wa-wrong-list&quot; id=&quot;wa-exam-review&quot; style=&quot;text-align:left;margin-top:16px;&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;!-- STAT TAB --&gt;
    &lt;div class=&quot;wa-tabpage&quot; data-page=&quot;stat&quot; style=&quot;display:none;&quot;&gt;
      &lt;div class=&quot;wa-panel&quot;&gt;
        &lt;h3&gt;학습 현황&lt;/h3&gt;
        &lt;div class=&quot;wa-stat-grid&quot;&gt;
          &lt;div class=&quot;wa-stat-box&quot;&gt;&lt;div class=&quot;n&quot; id=&quot;wa-stat-total&quot;&gt;0&lt;/div&gt;&lt;div class=&quot;l&quot;&gt;전체 단어&lt;/div&gt;&lt;/div&gt;
          &lt;div class=&quot;wa-stat-box&quot;&gt;&lt;div class=&quot;n&quot; id=&quot;wa-stat-known&quot;&gt;0&lt;/div&gt;&lt;div class=&quot;l&quot;&gt;아는 단어&lt;/div&gt;&lt;/div&gt;
          &lt;div class=&quot;wa-stat-box&quot;&gt;&lt;div class=&quot;n&quot; id=&quot;wa-stat-unknown&quot;&gt;0&lt;/div&gt;&lt;div class=&quot;l&quot;&gt;모르는 단어&lt;/div&gt;&lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;wa-stat-grid&quot;&gt;
          &lt;div class=&quot;wa-stat-box&quot;&gt;&lt;div class=&quot;n&quot; id=&quot;wa-stat-quiz&quot;&gt;-&lt;/div&gt;&lt;div class=&quot;l&quot;&gt;최근 퀴즈 점수&lt;/div&gt;&lt;/div&gt;
          &lt;div class=&quot;wa-stat-box&quot;&gt;&lt;div class=&quot;n&quot; id=&quot;wa-stat-rate&quot;&gt;-&lt;/div&gt;&lt;div class=&quot;l&quot;&gt;정답률&lt;/div&gt;&lt;/div&gt;
          &lt;div class=&quot;wa-stat-box&quot;&gt;&lt;div class=&quot;n&quot; id=&quot;wa-stat-date&quot;&gt;-&lt;/div&gt;&lt;div class=&quot;l&quot;&gt;마지막 학습&lt;/div&gt;&lt;/div&gt;
        &lt;/div&gt;
        &lt;button class=&quot;wa-btn wa-ghost wa-sm&quot; id=&quot;wa-stat-reset&quot;&gt;학습기록 초기화 (단어는 유지)&lt;/button&gt;
      &lt;/div&gt;
    &lt;/div&gt;

  &lt;/div&gt;

  &lt;div class=&quot;wa-footer&quot;&gt;
    &lt;button class=&quot;wa-btn wa-ghost wa-sm&quot; id=&quot;wa-save&quot;&gt;  저장&lt;/button&gt;
    &lt;button class=&quot;wa-btn wa-ghost wa-sm&quot; id=&quot;wa-load&quot;&gt;  불러오기&lt;/button&gt;
    &lt;button class=&quot;wa-btn wa-ghost wa-sm&quot; id=&quot;wa-qr&quot;&gt;  QR코드&lt;/button&gt;
    &lt;button class=&quot;wa-btn wa-ghost wa-sm&quot; id=&quot;wa-export-csv&quot;&gt;⬇ CSV 내보내기&lt;/button&gt;
    &lt;label class=&quot;wa-btn wa-ghost wa-sm&quot; style=&quot;margin:0;&quot;&gt;⬆ CSV 가져오기
      &lt;input type=&quot;file&quot; id=&quot;wa-import-csv&quot; accept=&quot;.csv,.txt&quot; style=&quot;display:none;&quot;&gt;
    &lt;/label&gt;
    &lt;div class=&quot;wa-wm&quot;&gt;모두의 단어암기장 · 0-1.kr/29 · 스타트업EX&lt;/div&gt;
  &lt;/div&gt;

&lt;/div&gt;

&lt;div class=&quot;wa-toast&quot; id=&quot;wa-toast&quot;&gt;&lt;/div&gt;
&lt;div class=&quot;wa-modal-bg&quot; id=&quot;wa-modal-bg&quot;&gt;
  &lt;div class=&quot;wa-modal&quot;&gt;
    &lt;h4 id=&quot;wa-modal-title&quot;&gt;공유&lt;/h4&gt;
    &lt;div id=&quot;wa-modal-body&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;wa-row&quot; style=&quot;justify-content:center;&quot;&gt;
      &lt;button class=&quot;wa-btn wa-ghost wa-sm&quot; id=&quot;wa-modal-close&quot;&gt;닫기&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/lz-string/1.5.0/lz-string.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;
(function(){
  &quot;use strict&quot;;

  var STORAGE_KEY = &quot;wa_wordbook_v1&quot;;
  var root = document.getElementById(&quot;wa-root&quot;);

  var state = {
    words: [],            // [{w:'apple', m:'사과', known:null}]
    cardOrder: [],
    cardIdx: 0,
    cardShuffle: true,
    cardKnownCount: 0,
    cardUnknownCount: 0,
    quiz: {active:false, order:[], idx:0, score:0, wrong:[], direction:'mean'},
    hideDirection: 'mean',
    lastQuizScore: null,
    lastQuizTotal: null,
    lastStudyDate: null,
    test: {
      isParticipant: false,   // true when this page was opened as an exam link (?test=...) or preview
      payload: null,          // { t: title, mn: minutes, dir: 'mean'|'word', em: email, w: [[word,mean],...] }
      order: [],              // shuffled question indices into payload.w
      answers: [],            // participant's typed answers, aligned with order
      name: '', info: '',
      totalSeconds: 0,
      remaining: 0,
      timerHandle: null,
      score: 0,
      submitted: false
    }
  };

  // ---------- helpers ----------
  function $(id){ return document.getElementById(id); }
  function esc(s){
    return String(s).replace(/[&amp;&lt;&gt;&quot;']/g, function(c){
      return {&quot;&amp;&quot;:&quot;&amp;amp;&quot;,&quot;&lt;&quot;:&quot;&amp;lt;&quot;,&quot;&gt;&quot;:&quot;&amp;gt;&quot;,'&quot;':&quot;&amp;quot;&quot;,&quot;'&quot;:&quot;&amp;#39;&quot;}[c];
    });
  }
  function toast(msg){
    var t = $(&quot;wa-toast&quot;);
    t.textContent = msg;
    t.className = &quot;wa-toast wa-show&quot;;
    setTimeout(function(){ t.className = &quot;wa-toast&quot;; }, 1800);
  }
  function shuffleArray(arr){
    var a = arr.slice();
    for (var i = a.length - 1; i &gt; 0; i--){
      var j = Math.floor(Math.random() * (i + 1));
      var tmp = a[i]; a[i] = a[j]; a[j] = tmp;
    }
    return a;
  }
  function todayStr(){
    var d = new Date();
    return (d.getMonth()+1) + &quot;/&quot; + d.getDate();
  }
  function speak(text){
    if (!text) return;
    if (!(&quot;speechSynthesis&quot; in window)){
      toast(&quot;이 브라우저는 음성 재생을 지원하지 않아요&quot;);
      return;
    }
    try{
      window.speechSynthesis.cancel();
      var utter = new SpeechSynthesisUtterance(text);
      var isKorean = /[\uAC00-\uD7A3]/.test(text);
      utter.lang = isKorean ? &quot;ko-KR&quot; : &quot;en-US&quot;;
      utter.rate = 0.92;
      window.speechSynthesis.speak(utter);
    }catch(e){
      toast(&quot;발음 재생에 실패했어요&quot;);
    }
  }

  // ---------- parsing ----------
  function parseLine(line){
    line = line.replace(/\s+$/,'');
    if (!line) return null;
    var m = line.split(/\t|\s-\s|\s:\s|,|:|-/);
    if (m.length &lt; 2){
      // fallback: try splitting on first whitespace run if long enough
      var idx = line.search(/\s{2,}/);
      if (idx &gt; -1){
        return { w: line.slice(0, idx).trim(), m: line.slice(idx).trim() };
      }
      return null;
    }
    var w = m[0].trim();
    var rest = line.slice(line.indexOf(m[0]) + m[0].length);
    rest = rest.replace(/^\s*[,:\-]\s*/, '');
    if (!w || !rest) return null;
    return { w: w, m: rest.trim() };
  }

  function addWord(w, m){
    if (!w || !m) return false;
    state.words.push({ w: w, m: m, known: null });
    return true;
  }

  // ---------- render: word list (edit tab) ----------
  function renderWordList(){
    var list = $(&quot;wa-wordlist&quot;);
    $(&quot;wa-count&quot;).textContent = state.words.length;
    if (state.words.length === 0){
      list.innerHTML = '&lt;div class=&quot;wa-empty&quot;&gt;아직 등록된 단어가 없어요.&lt;br&gt;위에서 붙여넣거나 하나씩 추가해 보세요.&lt;/div&gt;';
      return;
    }
    var html = &quot;&quot;;
    for (var i = 0; i &lt; state.words.length; i++){
      var it = state.words[i];
      html += '&lt;div class=&quot;wa-wordrow&quot;&gt;&lt;span class=&quot;wa-idx&quot;&gt;' + (i+1) + '&lt;/span&gt;' +
        '&lt;span class=&quot;wa-w&quot;&gt;' + esc(it.w) + '&lt;/span&gt;' +
        '&lt;span class=&quot;wa-m&quot;&gt;' + esc(it.m) + '&lt;/span&gt;' +
        '&lt;button class=&quot;wa-del&quot; data-idx=&quot;' + i + '&quot; title=&quot;삭제&quot;&gt;✕&lt;/button&gt;&lt;/div&gt;';
    }
    list.innerHTML = html;
    var dels = list.querySelectorAll(&quot;.wa-del&quot;);
    for (var k = 0; k &lt; dels.length; k++){
      dels[k].addEventListener(&quot;click&quot;, function(e){
        var idx = parseInt(e.target.getAttribute(&quot;data-idx&quot;), 10);
        state.words.splice(idx, 1);
        renderAll();
      });
    }
  }

  // ---------- CARD MODE ----------
  function buildCardOrder(){
    var idxs = [];
    for (var i = 0; i &lt; state.words.length; i++) idxs.push(i);
    state.cardOrder = state.cardShuffle ? shuffleArray(idxs) : idxs;
    state.cardIdx = 0;
  }
  function renderCard(){
    var el = $(&quot;wa-index-card&quot;);
    el.className = &quot;wa-index-card&quot;;
    var total = state.cardOrder.length;
    if (total === 0){
      $(&quot;wa-card-front-text&quot;).textContent = &quot;단어를 먼저 입력해 주세요&quot;;
      $(&quot;wa-card-back-text&quot;).textContent = &quot;-&quot;;
      $(&quot;wa-card-pos&quot;).textContent = &quot;0 / 0&quot;;
      $(&quot;wa-card-progress&quot;).style.width = &quot;0%&quot;;
      return;
    }
    if (state.cardIdx &gt;= total) state.cardIdx = 0;
    var word = state.words[state.cardOrder[state.cardIdx]];
    $(&quot;wa-card-front-text&quot;).textContent = word.w;
    $(&quot;wa-card-back-text&quot;).textContent = word.m;
    $(&quot;wa-card-pos&quot;).textContent = (state.cardIdx + 1) + &quot; / &quot; + total;
    $(&quot;wa-card-progress&quot;).style.width = Math.round(((state.cardIdx+1)/total) * 100) + &quot;%&quot;;
    updateCardCounts();
  }
  function updateCardCounts(){
    var known = 0, unknown = 0;
    for (var i = 0; i &lt; state.words.length; i++){
      if (state.words[i].known === true) known++;
      else if (state.words[i].known === false) unknown++;
    }
    $(&quot;wa-card-known&quot;).textContent = known;
    $(&quot;wa-card-unknown&quot;).textContent = unknown;
  }
  function cardNext(){
    if (state.cardOrder.length === 0) return;
    state.cardIdx = (state.cardIdx + 1) % state.cardOrder.length;
    renderCard();
  }
  function cardPrev(){
    if (state.cardOrder.length === 0) return;
    state.cardIdx = (state.cardIdx - 1 + state.cardOrder.length) % state.cardOrder.length;
    renderCard();
  }
  function markCurrent(known){
    if (state.cardOrder.length === 0) return;
    var w = state.words[state.cardOrder[state.cardIdx]];
    w.known = known;
    state.lastStudyDate = todayStr();
    updateCardCounts();
    cardNext();
  }

  // ---------- HIDE MODE ----------
  function renderHide(){
    var list = $(&quot;wa-hidelist&quot;);
    if (state.words.length === 0){
      list.innerHTML = '&lt;div class=&quot;wa-empty&quot;&gt;단어를 먼저 입력해 주세요.&lt;/div&gt;';
      return;
    }
    var dir = $(&quot;wa-hide-direction&quot;).value;
    state.hideDirection = dir;
    var html = &quot;&quot;;
    for (var i = 0; i &lt; state.words.length; i++){
      var it = state.words[i];
      var frontText = dir === 'mean' ? it.w : it.m;
      var maskText = dir === 'mean' ? it.m : it.w;
      html += '&lt;div class=&quot;wa-hiderow&quot;&gt;' +
        '&lt;span class=&quot;wa-idx&quot;&gt;' + (i+1) + '&lt;/span&gt;' +
        '&lt;button class=&quot;wa-speak-btn&quot; data-say=&quot;' + esc(frontText) + '&quot;&gt; &lt;/button&gt;' +
        '&lt;span class=&quot;wa-front&quot;&gt;' + esc(frontText) + '&lt;/span&gt;' +
        '&lt;span class=&quot;wa-mask&quot; data-idx=&quot;' + i + '&quot;&gt;' + esc(maskText) + '&lt;/span&gt;' +
        '&lt;/div&gt;';
    }
    list.innerHTML = html;
    var masks = list.querySelectorAll(&quot;.wa-mask&quot;);
    for (var k = 0; k &lt; masks.length; k++){
      masks[k].addEventListener(&quot;click&quot;, function(e){
        e.currentTarget.classList.toggle(&quot;wa-shown&quot;);
      });
    }
    var speakBtns = list.querySelectorAll(&quot;.wa-speak-btn&quot;);
    for (var s = 0; s &lt; speakBtns.length; s++){
      speakBtns[s].addEventListener(&quot;click&quot;, function(e){
        e.stopPropagation();
        speak(e.currentTarget.getAttribute(&quot;data-say&quot;));
      });
    }
  }

  // ---------- QUIZ MODE ----------
  function startQuiz(onlyIdxs){
    var pool = onlyIdxs || (function(){
      var a = []; for (var i=0;i&lt;state.words.length;i++) a.push(i); return a;
    })();
    if (pool.length &lt; 2){
      toast(&quot;퀴즈를 만들려면 단어가 2개 이상 필요해요&quot;);
      return;
    }
    state.quiz.active = true;
    state.quiz.order = shuffleArray(pool);
    state.quiz.idx = 0;
    state.quiz.score = 0;
    state.quiz.wrong = [];
    $(&quot;wa-quiz-live&quot;).style.display = &quot;&quot;;
    $(&quot;wa-quiz-result&quot;).style.display = &quot;none&quot;;
    renderQuizQuestion();
  }
  function renderQuizQuestion(){
    var q = state.quiz;
    var total = q.order.length;
    $(&quot;wa-quiz-total&quot;).textContent = total;
    $(&quot;wa-quiz-score&quot;).textContent = q.score;
    if (q.idx &gt;= total){
      finishQuiz();
      return;
    }
    $(&quot;wa-quiz-n&quot;).textContent = q.idx + 1;
    var correctIdx = q.order[q.idx];
    var item = state.words[correctIdx];
    $(&quot;wa-quiz-word&quot;).textContent = item.w;
    $(&quot;wa-quiz-speak&quot;).setAttribute(&quot;data-say&quot;, item.w);

    // build 4 choices (1 correct + up to 3 distractors)
    var others = [];
    for (var i = 0; i &lt; state.words.length; i++){
      if (i !== correctIdx) others.push(i);
    }
    others = shuffleArray(others).slice(0, 3);
    var choiceIdxs = shuffleArray([correctIdx].concat(others));

    var box = $(&quot;wa-quiz-choices&quot;);
    box.innerHTML = &quot;&quot;;
    for (var c = 0; c &lt; choiceIdxs.length; c++){
      var btn = document.createElement(&quot;button&quot;);
      btn.className = &quot;wa-choice&quot;;
      btn.textContent = state.words[choiceIdxs[c]].m;
      btn.setAttribute(&quot;data-correct&quot;, choiceIdxs[c] === correctIdx ? &quot;1&quot; : &quot;0&quot;);
      btn.setAttribute(&quot;data-word-idx&quot;, correctIdx);
      btn.addEventListener(&quot;click&quot;, onChoiceClick);
      box.appendChild(btn);
    }
  }
  function onChoiceClick(e){
    var btn = e.currentTarget;
    var allBtns = $(&quot;wa-quiz-choices&quot;).querySelectorAll(&quot;.wa-choice&quot;);
    for (var i = 0; i &lt; allBtns.length; i++) allBtns[i].disabled = true;

    var isCorrect = btn.getAttribute(&quot;data-correct&quot;) === &quot;1&quot;;
    var wordIdx = parseInt(btn.getAttribute(&quot;data-word-idx&quot;), 10);
    if (isCorrect){
      btn.classList.add(&quot;wa-correct&quot;);
      state.quiz.score++;
    } else {
      btn.classList.add(&quot;wa-wrong&quot;);
      for (var j = 0; j &lt; allBtns.length; j++){
        if (allBtns[j].getAttribute(&quot;data-correct&quot;) === &quot;1&quot;) allBtns[j].classList.add(&quot;wa-correct&quot;);
      }
      if (state.quiz.wrong.indexOf(wordIdx) === -1) state.quiz.wrong.push(wordIdx);
    }
    setTimeout(function(){
      state.quiz.idx++;
      renderQuizQuestion();
    }, 700);
  }
  function finishQuiz(){
    $(&quot;wa-quiz-live&quot;).style.display = &quot;none&quot;;
    var res = $(&quot;wa-quiz-result&quot;);
    res.style.display = &quot;&quot;;
    $(&quot;wa-quiz-final&quot;).textContent = state.quiz.score;
    $(&quot;wa-quiz-final-total&quot;).textContent = state.quiz.order.length;
    state.lastQuizScore = state.quiz.score;
    state.lastQuizTotal = state.quiz.order.length;
    state.lastStudyDate = todayStr();

    var wl = $(&quot;wa-quiz-wronglist&quot;);
    if (state.quiz.wrong.length === 0){
      wl.innerHTML = '&lt;div class=&quot;wa-empty&quot;&gt;  모두 맞혔어요!&lt;/div&gt;';
      $(&quot;wa-quiz-retry-wrong&quot;).disabled = true;
    } else {
      var html = '&lt;h3 style=&quot;margin-top:14px;&quot;&gt;틀린 단어 (' + state.quiz.wrong.length + ')&lt;/h3&gt;';
      for (var i = 0; i &lt; state.quiz.wrong.length; i++){
        var it = state.words[state.quiz.wrong[i]];
        html += '&lt;div class=&quot;wa-wordrow&quot;&gt;&lt;span class=&quot;wa-w&quot;&gt;' + esc(it.w) + '&lt;/span&gt;&lt;span class=&quot;wa-m&quot;&gt;' + esc(it.m) + '&lt;/span&gt;&lt;/div&gt;';
      }
      wl.innerHTML = html;
      $(&quot;wa-quiz-retry-wrong&quot;).disabled = false;
    }
    saveStudyMeta();
  }

  // ---------- STATS ----------
  function renderStats(){
    var known = 0, unknown = 0;
    for (var i = 0; i &lt; state.words.length; i++){
      if (state.words[i].known === true) known++;
      else if (state.words[i].known === false) unknown++;
    }
    $(&quot;wa-stat-total&quot;).textContent = state.words.length;
    $(&quot;wa-stat-known&quot;).textContent = known;
    $(&quot;wa-stat-unknown&quot;).textContent = unknown;
    $(&quot;wa-stat-quiz&quot;).textContent = state.lastQuizScore !== null ?
      (state.lastQuizScore + &quot; / &quot; + state.lastQuizTotal) : &quot;-&quot;;
    $(&quot;wa-stat-rate&quot;).textContent = (state.lastQuizScore !== null &amp;&amp; state.lastQuizTotal) ?
      Math.round(state.lastQuizScore / state.lastQuizTotal * 100) + &quot;%&quot; : &quot;-&quot;;
    $(&quot;wa-stat-date&quot;).textContent = state.lastStudyDate || &quot;-&quot;;
  }

  // ---------- TABS ----------
  function switchTab(name){
    var tabs = document.querySelectorAll(&quot;.wa-tab&quot;);
    for (var i = 0; i &lt; tabs.length; i++){
      tabs[i].classList.toggle(&quot;wa-active&quot;, tabs[i].getAttribute(&quot;data-tab&quot;) === name);
    }
    var pages = document.querySelectorAll(&quot;.wa-tabpage&quot;);
    for (var j = 0; j &lt; pages.length; j++){
      pages[j].style.display = pages[j].getAttribute(&quot;data-page&quot;) === name ? &quot;&quot; : &quot;none&quot;;
    }
    if (name === &quot;card&quot;){ buildCardOrder(); renderCard(); }
    if (name === &quot;hide&quot;){ renderHide(); }
    if (name === &quot;stat&quot;){ renderStats(); }
    if (name === &quot;quiz&quot; &amp;&amp; !state.quiz.active){ startQuiz(); state.quiz.active = true; }
    if (name === &quot;test&quot;){
      if (state.test.isParticipant){
        // leave whichever exam sub-screen is already active as-is
      } else {
        refreshTestAdmin();
        showTestSubview(&quot;admin&quot;);
      }
    }
  }

  // ---------- SAVE / LOAD / SHARE ----------
  function saveStudyMeta(){
    try{
      var meta = { lastQuizScore: state.lastQuizScore, lastQuizTotal: state.lastQuizTotal, lastStudyDate: state.lastStudyDate };
      localStorage.setItem(STORAGE_KEY + &quot;_meta&quot;, JSON.stringify(meta));
    }catch(e){}
  }
  function saveToLocal(){
    try{
      localStorage.setItem(STORAGE_KEY, JSON.stringify(state.words));
      saveStudyMeta();
      toast(&quot;이 브라우저에 저장했어요 (&quot; + state.words.length + &quot;개)&quot;);
    }catch(e){
      toast(&quot;저장에 실패했어요&quot;);
    }
  }
  function loadFromLocal(){
    try{
      var raw = localStorage.getItem(STORAGE_KEY);
      if (!raw){ toast(&quot;저장된 단어장이 없어요&quot;); return; }
      state.words = JSON.parse(raw);
      var metaRaw = localStorage.getItem(STORAGE_KEY + &quot;_meta&quot;);
      if (metaRaw){
        var meta = JSON.parse(metaRaw);
        state.lastQuizScore = meta.lastQuizScore;
        state.lastQuizTotal = meta.lastQuizTotal;
        state.lastStudyDate = meta.lastStudyDate;
      }
      renderAll();
      toast(&quot;단어장을 불러왔어요 (&quot; + state.words.length + &quot;개)&quot;);
    }catch(e){
      toast(&quot;불러오기에 실패했어요&quot;);
    }
  }
  function buildShareURL(){
    var payload = state.words.map(function(w){ return [w.w, w.m]; });
    var compressed = LZString.compressToEncodedURIComponent(JSON.stringify(payload));
    var base = location.href.split(&quot;?&quot;)[0].split(&quot;#&quot;)[0];
    return base + &quot;?d=&quot; + compressed;
  }
  function loadFromURLIfPresent(){
    var params = new URLSearchParams(location.search);
    var d = params.get(&quot;d&quot;);
    if (!d) return false;
    try{
      var json = LZString.decompressFromEncodedURIComponent(d);
      var arr = JSON.parse(json);
      if (!arr || !arr.length) return false;
      state.words = arr.map(function(pair){ return { w: pair[0], m: pair[1], known: null }; });
      return true;
    }catch(e){
      return false;
    }
  }
  function openModal(title, bodyHTML){
    $(&quot;wa-modal-title&quot;).textContent = title;
    $(&quot;wa-modal-body&quot;).innerHTML = bodyHTML;
    $(&quot;wa-modal-bg&quot;).className = &quot;wa-modal-bg wa-show&quot;;
  }
  function closeModal(){
    $(&quot;wa-modal-bg&quot;).className = &quot;wa-modal-bg&quot;;
    $(&quot;wa-modal-body&quot;).innerHTML = &quot;&quot;;
  }
  function shareURL(){
    if (state.words.length === 0){ toast(&quot;공유할 단어가 없어요&quot;); return; }
    var url = buildShareURL();
    openModal(&quot;URL 공유&quot;, '&lt;input class=&quot;wa-field&quot; id=&quot;wa-share-url-field&quot; readonly value=&quot;' + esc(url) + '&quot;&gt;&lt;p style=&quot;font-size:11px;color:var(--wa-sub);margin-top:8px;&quot;&gt;이 링크를 열면 같은 단어장이 그대로 로드됩니다.&lt;/p&gt;');
    setTimeout(function(){
      var f = $(&quot;wa-share-url-field&quot;);
      if (f){
        f.addEventListener(&quot;click&quot;, function(){ f.select(); try{ document.execCommand(&quot;copy&quot;); toast(&quot;복사했어요&quot;); }catch(e){} });
      }
    }, 50);
  }
  function showQR(){
    if (state.words.length === 0){ toast(&quot;QR로 만들 단어가 없어요&quot;); return; }
    var url = buildShareURL();
    openModal(&quot;QR 코드&quot;, '&lt;div id=&quot;wa-qr-box&quot; style=&quot;display:flex;justify-content:center;&quot;&gt;&lt;/div&gt;');
    setTimeout(function(){
      var box = $(&quot;wa-qr-box&quot;);
      if (box &amp;&amp; window.QRCode){
        new QRCode(box, { text: url, width: 180, height: 180 });
      } else if (box){
        box.innerHTML = '&lt;p style=&quot;font-size:12px;color:var(--wa-sub);&quot;&gt;QR 라이브러리를 불러오지 못했어요. URL 공유를 이용해 주세요.&lt;/p&gt;';
      }
    }, 50);
  }
  function exportCSV(){
    if (state.words.length === 0){ toast(&quot;내보낼 단어가 없어요&quot;); return; }
    var lines = [&quot;단어,뜻&quot;];
    for (var i = 0; i &lt; state.words.length; i++){
      lines.push('&quot;' + state.words[i].w.replace(/&quot;/g,'&quot;&quot;') + '&quot;,&quot;' + state.words[i].m.replace(/&quot;/g,'&quot;&quot;') + '&quot;');
    }
    var csv = lines.join(&quot;\n&quot;);
    var blob = new Blob([&quot;\uFEFF&quot; + csv], { type: &quot;text/csv;charset=utf-8;&quot; });
    var link = document.createElement(&quot;a&quot;);
    link.href = URL.createObjectURL(blob);
    link.download = &quot;단어암기장_&quot; + todayStr().replace(&quot;/&quot;,&quot;-&quot;) + &quot;.csv&quot;;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
    toast(&quot;CSV로 내보냈어요&quot;);
  }
  function importCSV(file){
    var reader = new FileReader();
    reader.onload = function(e){
      var text = e.target.result.replace(/^\uFEFF/, '');
      var lines = text.split(/\r?\n/);
      var added = 0;
      for (var i = 0; i &lt; lines.length; i++){
        var line = lines[i];
        if (!line || /^단어\s*,\s*뜻/.test(line)) continue;
        var parts = line.match(/(?:&quot;([^&quot;]*)&quot;|([^,]+))\s*,\s*(?:&quot;([^&quot;]*)&quot;|([^,]+))/);
        var w, m;
        if (parts){
          w = (parts[1] !== undefined ? parts[1] : parts[2] || &quot;&quot;).trim();
          m = (parts[3] !== undefined ? parts[3] : parts[4] || &quot;&quot;).trim();
        } else {
          var p = parseLine(line);
          if (p){ w = p.w; m = p.m; }
        }
        if (w &amp;&amp; m){ addWord(w, m); added++; }
      }
      renderAll();
      toast(added + &quot;개 단어를 가져왔어요&quot;);
    };
    reader.readAsText(file, &quot;UTF-8&quot;);
  }

  // ---------- TINYURL ----------
  function shortenURL(longUrl, cb){
    fetch(&quot;https://tinyurl.com/api-create.php?url=&quot; + encodeURIComponent(longUrl))
      .then(function(r){ if (!r.ok) throw new Error(&quot;bad status&quot;); return r.text(); })
      .then(function(text){
        text = (text || &quot;&quot;).trim();
        if (text.indexOf(&quot;http&quot;) === 0) cb(text); else cb(null);
      })
      .catch(function(){ cb(null); });
  }
  function tinyModal(longUrl){
    openModal(&quot;짧은 링크&quot;, '&lt;p style=&quot;font-size:12px;color:var(--wa-sub);&quot;&gt;TinyURL로 줄이는 중...&lt;/p&gt;');
    shortenURL(longUrl, function(short){
      if (short){
        openModal(&quot;짧은 링크&quot;, '&lt;input class=&quot;wa-field&quot; id=&quot;wa-tiny-field&quot; readonly value=&quot;' + esc(short) + '&quot;&gt;' +
          '&lt;p style=&quot;font-size:11px;color:var(--wa-sub);margin-top:8px;&quot;&gt;탭하면 복사돼요.&lt;/p&gt;');
        setTimeout(function(){
          var f = $(&quot;wa-tiny-field&quot;);
          if (f) f.addEventListener(&quot;click&quot;, function(){ f.select(); try{ document.execCommand(&quot;copy&quot;); toast(&quot;복사했어요&quot;); }catch(e){} });
        }, 50);
      } else {
        openModal(&quot;짧은 링크&quot;, '&lt;p style=&quot;font-size:12px;color:var(--wa-sub);&quot;&gt;짧은 링크 생성에 실패했어요. 원본 링크를 이용해 주세요.&lt;/p&gt;' +
          '&lt;input class=&quot;wa-field&quot; readonly value=&quot;' + esc(longUrl) + '&quot;&gt;');
      }
    });
  }

  // ---------- TEST / EXAM MODE ----------
  function encodeTestPayload(p){
    return LZString.compressToEncodedURIComponent(JSON.stringify(p));
  }
  function decodeTestPayload(str){
    try{
      var json = LZString.decompressFromEncodedURIComponent(str);
      var p = JSON.parse(json);
      if (!p || !p.w || !p.w.length) return null;
      return p;
    }catch(e){ return null; }
  }
  function showTestSubview(name){
    var ids = [&quot;wa-test-admin&quot;,&quot;wa-test-cover&quot;,&quot;wa-test-countdown&quot;,&quot;wa-test-live&quot;,&quot;wa-test-result&quot;];
    for (var i = 0; i &lt; ids.length; i++){
      $(ids[i]).style.display = (ids[i] === &quot;wa-test-&quot; + name) ? &quot;&quot; : &quot;none&quot;;
    }
  }
  function refreshTestAdmin(){
    $(&quot;wa-test-wordcount&quot;).textContent = state.words.length;
  }
  function buildTestPayloadFromAdmin(){
    var title = $(&quot;wa-test-title&quot;).value.trim() || &quot;단어 시험&quot;;
    var minutes = parseInt($(&quot;wa-test-minutes&quot;).value, 10);
    if (!minutes || minutes &lt; 1) minutes = 5;
    var direction = $(&quot;wa-test-direction&quot;).value;
    var email = $(&quot;wa-test-email&quot;).value.trim();
    if (state.words.length === 0){ toast(&quot;먼저 단어를 등록해 주세요&quot;); return null; }
    return {
      t: title, mn: minutes, dir: direction, em: email,
      w: state.words.map(function(w){ return [w.w, w.m]; })
    };
  }
  function adminBuildTestLink(){
    var payload = buildTestPayloadFromAdmin();
    if (!payload) return;
    if (!payload.em || payload.em.indexOf(&quot;@&quot;) === -1){
      toast(&quot;결과를 받을 이메일을 정확히 입력해 주세요&quot;);
      return;
    }
    var base = location.href.split(&quot;?&quot;)[0].split(&quot;#&quot;)[0];
    var url = base + &quot;?test=&quot; + encodeTestPayload(payload);
    openModal(&quot;  시험 링크&quot;, '&lt;input class=&quot;wa-field&quot; id=&quot;wa-test-url-field&quot; readonly value=&quot;' + esc(url) + '&quot;&gt;' +
      '&lt;p style=&quot;font-size:11px;color:var(--wa-sub);margin:8px 0;&quot;&gt;이 링크를 응시자에게 보내주세요. 결과는 응시자 이메일 앱을 통해 ' + esc(payload.em) + ' 로 전송됩니다.&lt;/p&gt;' +
      '&lt;div class=&quot;wa-row&quot; style=&quot;justify-content:center;&quot;&gt;&lt;button class=&quot;wa-btn wa-ghost wa-sm&quot; id=&quot;wa-test-url-tiny&quot;&gt;✂️ 짧은 링크로&lt;/button&gt;&lt;/div&gt;');
    setTimeout(function(){
      var f = $(&quot;wa-test-url-field&quot;);
      if (f) f.addEventListener(&quot;click&quot;, function(){ f.select(); try{ document.execCommand(&quot;copy&quot;); toast(&quot;복사했어요&quot;); }catch(e){} });
      var tinyBtn = $(&quot;wa-test-url-tiny&quot;);
      if (tinyBtn) tinyBtn.addEventListener(&quot;click&quot;, function(){ tinyModal(url); });
    }, 50);
  }
  function enterParticipantMode(payload){
    state.test.payload = payload;
    state.test.isParticipant = true;
    $(&quot;wa-exam-title&quot;).textContent = payload.t;
    $(&quot;wa-exam-count&quot;).textContent = payload.w.length;
    $(&quot;wa-exam-minutes&quot;).textContent = payload.mn;
    $(&quot;wa-exam-exit-preview&quot;).style.display = state.test.isPreview ? &quot;&quot; : &quot;none&quot;;
    root.classList.add(&quot;wa-participant-mode&quot;);
    switchTab(&quot;test&quot;);
    showTestSubview(&quot;cover&quot;);
  }
  function previewTest(){
    var payload = buildTestPayloadFromAdmin();
    if (!payload) return;
    state.test.isPreview = true;
    enterParticipantMode(payload);
  }
  function exitPreview(){
    state.test.isParticipant = false;
    state.test.isPreview = false;
    if (state.test.timerHandle) clearInterval(state.test.timerHandle);
    root.classList.remove(&quot;wa-participant-mode&quot;);
    switchTab(&quot;test&quot;);
  }
  function startExamCountdown(){
    var name = $(&quot;wa-exam-name&quot;).value.trim();
    if (!name){ toast(&quot;이름을 입력해 주세요&quot;); return; }
    state.test.name = name;
    state.test.info = $(&quot;wa-exam-info&quot;).value.trim();
    showTestSubview(&quot;countdown&quot;);
    var n = 3;
    $(&quot;wa-exam-countdown-num&quot;).textContent = n;
    var iv = setInterval(function(){
      n--;
      if (n &lt;= 0){
        clearInterval(iv);
        beginExamLive();
      } else {
        $(&quot;wa-exam-countdown-num&quot;).textContent = n;
      }
    }, 700);
  }
  function beginExamLive(){
    var payload = state.test.payload;
    var idxs = [];
    for (var i = 0; i &lt; payload.w.length; i++) idxs.push(i);
    state.test.order = shuffleArray(idxs);
    state.test.answers = [];
    for (var qi = 0; qi &lt; state.test.order.length; qi++) state.test.answers.push(&quot;&quot;);
    state.test.submitted = false;
    state.test.totalSeconds = payload.mn * 60;
    state.test.remaining = state.test.totalSeconds;
    $(&quot;wa-exam-taker-label&quot;).textContent = state.test.name + (state.test.info ? &quot; · &quot; + state.test.info : &quot;&quot;);
    renderExamQuestions();
    updateExamClock();
    showTestSubview(&quot;live&quot;);
    if (state.test.timerHandle) clearInterval(state.test.timerHandle);
    state.test.timerHandle = setInterval(function(){
      state.test.remaining--;
      updateExamClock();
      if (state.test.remaining &lt;= 0){
        clearInterval(state.test.timerHandle);
        submitExam(true);
      }
    }, 1000);
  }
  function updateExamClock(){
    var r = Math.max(0, state.test.remaining);
    var mm = Math.floor(r / 60); var ss = r % 60;
    $(&quot;wa-exam-clock&quot;).textContent = (mm &lt; 10 ? &quot;0&quot; + mm : mm) + &quot;:&quot; + (ss &lt; 10 ? &quot;0&quot; + ss : ss);
    var pct = Math.max(0, (r / state.test.totalSeconds) * 100);
    var bar = $(&quot;wa-exam-timerbar&quot;);
    bar.style.width = pct + &quot;%&quot;;
    bar.classList.toggle(&quot;wa-time-low&quot;, pct &lt;= 20);
  }
  function renderExamQuestions(){
    var payload = state.test.payload;
    var box = $(&quot;wa-exam-questions&quot;);
    var html = &quot;&quot;;
    for (var i = 0; i &lt; state.test.order.length; i++){
      var pair = payload.w[state.test.order[i]];
      var front = payload.dir === &quot;mean&quot; ? pair[0] : pair[1];
      html += '&lt;div class=&quot;wa-exam-q&quot;&gt;' +
        '&lt;div class=&quot;wa-exam-q-num&quot;&gt;문항 ' + (i+1) + '&lt;/div&gt;' +
        '&lt;div class=&quot;wa-exam-q-word&quot;&gt;' + esc(front) +
        ' &lt;button class=&quot;wa-speak-btn&quot; data-say=&quot;' + esc(front) + '&quot; style=&quot;vertical-align:middle;&quot;&gt; &lt;/button&gt;&lt;/div&gt;' +
        '&lt;input type=&quot;text&quot; data-qidx=&quot;' + i + '&quot; autocomplete=&quot;off&quot;&gt;' +
        '&lt;/div&gt;';
    }
    box.innerHTML = html;
    var inputs = box.querySelectorAll(&quot;input&quot;);
    for (var j = 0; j &lt; inputs.length; j++){
      inputs[j].addEventListener(&quot;input&quot;, function(e){
        var idx = parseInt(e.target.getAttribute(&quot;data-qidx&quot;), 10);
        state.test.answers[idx] = e.target.value;
      });
    }
    var speakBtns = box.querySelectorAll(&quot;.wa-speak-btn&quot;);
    for (var s = 0; s &lt; speakBtns.length; s++){
      speakBtns[s].addEventListener(&quot;click&quot;, function(e){
        e.stopPropagation();
        speak(e.currentTarget.getAttribute(&quot;data-say&quot;));
      });
    }
  }
  function normalize(s){ return String(s || &quot;&quot;).trim().toLowerCase().replace(/\s+/g,&quot; &quot;); }
  function submitExam(){
    if (state.test.submitted) return;
    state.test.submitted = true;
    if (state.test.timerHandle) clearInterval(state.test.timerHandle);
    var inputs = document.querySelectorAll(&quot;#wa-exam-questions input&quot;);
    for (var i = 0; i &lt; inputs.length; i++) inputs[i].disabled = true;

    var payload = state.test.payload;
    var score = 0;
    var reviewHTML = &quot;&quot;;
    for (var q = 0; q &lt; state.test.order.length; q++){
      var pair = payload.w[state.test.order[q]];
      var correctAnswer = payload.dir === &quot;mean&quot; ? pair[1] : pair[0];
      var frontText = payload.dir === &quot;mean&quot; ? pair[0] : pair[1];
      var given = state.test.answers[q] || &quot;&quot;;
      var ok = normalize(given) === normalize(correctAnswer);
      if (ok) score++;
      reviewHTML += '&lt;div class=&quot;wa-exam-review-row&quot;&gt;' +
        '&lt;span class=&quot;wa-tag ' + (ok ? &quot;ok&quot; : &quot;no&quot;) + '&quot;&gt;' + (ok ? &quot;정답&quot; : &quot;오답&quot;) + '&lt;/span&gt;' +
        '&lt;span style=&quot;flex:1;&quot;&gt;&lt;b&gt;' + esc(frontText) + '&lt;/b&gt; — 응답: ' + esc(given || &quot;(미입력)&quot;) +
        (ok ? &quot;&quot; : ' · 정답: ' + esc(correctAnswer)) + '&lt;/span&gt;&lt;/div&gt;';
    }
    state.test.score = score;
    $(&quot;wa-exam-score&quot;).textContent = score;
    $(&quot;wa-exam-total&quot;).textContent = state.test.order.length;
    $(&quot;wa-exam-result-name&quot;).innerHTML = esc(state.test.name) + (state.test.info ? &quot; · &quot; + esc(state.test.info) : &quot;&quot;) +
      &quot;&lt;br&gt;&quot; + esc(payload.t);
    $(&quot;wa-exam-review&quot;).innerHTML = reviewHTML;
    showTestSubview(&quot;result&quot;);
  }
  function buildExamResultText(){
    var payload = state.test.payload;
    var lines = [];
    lines.push(payload.t + &quot; 응시 결과&quot;);
    lines.push(&quot;이름: &quot; + state.test.name + (state.test.info ? &quot; (&quot; + state.test.info + &quot;)&quot; : &quot;&quot;));
    lines.push(&quot;점수: &quot; + state.test.score + &quot; / &quot; + state.test.order.length);
    lines.push(&quot;&quot;);
    for (var q = 0; q &lt; state.test.order.length; q++){
      var pair = payload.w[state.test.order[q]];
      var correctAnswer = payload.dir === &quot;mean&quot; ? pair[1] : pair[0];
      var frontText = payload.dir === &quot;mean&quot; ? pair[0] : pair[1];
      var given = state.test.answers[q] || &quot;(미입력)&quot;;
      lines.push((q+1) + &quot;. &quot; + frontText + &quot; → 응답: &quot; + given + &quot; / 정답: &quot; + correctAnswer);
    }
    return lines.join(&quot;\n&quot;);
  }
  function sendExamMail(){
    var payload = state.test.payload;
    var text = buildExamResultText();
    var subject = payload.t + &quot; 응시결과 - &quot; + state.test.name;
    var mailto = &quot;mailto:&quot; + encodeURIComponent(payload.em || &quot;&quot;) +
      &quot;?subject=&quot; + encodeURIComponent(subject) + &quot;&amp;body=&quot; + encodeURIComponent(text);
    window.location.href = mailto;
  }
  function copyExamResult(){
    var text = buildExamResultText();
    var ta = document.createElement(&quot;textarea&quot;);
    ta.value = text;
    ta.style.position = &quot;fixed&quot;; ta.style.opacity = &quot;0&quot;;
    document.body.appendChild(ta);
    ta.select();
    try{ document.execCommand(&quot;copy&quot;); toast(&quot;결과를 복사했어요&quot;); }catch(e){ toast(&quot;복사에 실패했어요&quot;); }
    document.body.removeChild(ta);
  }
  function detectTestParam(){
    var params = new URLSearchParams(location.search);
    var t = params.get(&quot;test&quot;);
    if (!t) return false;
    var payload = decodeTestPayload(t);
    if (!payload) return false;
    enterParticipantMode(payload);
    return true;
  }

  // ---------- render all ----------
  function renderAll(){
    renderWordList();
    buildCardOrder();
    renderCard();
    renderHide();
    renderStats();
  }

  // ---------- events ----------
  document.getElementById(&quot;wa-tabs&quot;).addEventListener(&quot;click&quot;, function(e){
    var tab = e.target.closest ? e.target.closest(&quot;.wa-tab&quot;) : null;
    if (!tab) return;
    switchTab(tab.getAttribute(&quot;data-tab&quot;));
  });

  $(&quot;wa-bulk-add&quot;).addEventListener(&quot;click&quot;, function(){
    var text = $(&quot;wa-bulk&quot;).value;
    var lines = text.split(/\n/);
    var added = 0;
    for (var i = 0; i &lt; lines.length; i++){
      var p = parseLine(lines[i]);
      if (p &amp;&amp; addWord(p.w, p.m)) added++;
    }
    if (added &gt; 0){
      $(&quot;wa-bulk&quot;).value = &quot;&quot;;
      renderAll();
      toast(added + &quot;개 단어를 추가했어요&quot;);
    } else {
      toast(&quot;인식된 단어가 없어요. 형식을 확인해 주세요&quot;);
    }
  });
  $(&quot;wa-bulk-clear&quot;).addEventListener(&quot;click&quot;, function(){ $(&quot;wa-bulk&quot;).value = &quot;&quot;; });

  $(&quot;wa-single-add&quot;).addEventListener(&quot;click&quot;, function(){
    var w = $(&quot;wa-single-word&quot;).value.trim();
    var m = $(&quot;wa-single-mean&quot;).value.trim();
    if (addWord(w, m)){
      $(&quot;wa-single-word&quot;).value = &quot;&quot;;
      $(&quot;wa-single-mean&quot;).value = &quot;&quot;;
      $(&quot;wa-single-word&quot;).focus();
      renderAll();
    } else {
      toast(&quot;단어와 뜻을 모두 입력해 주세요&quot;);
    }
  });
  $(&quot;wa-single-mean&quot;).addEventListener(&quot;keydown&quot;, function(e){
    if (e.key === &quot;Enter&quot;) $(&quot;wa-single-add&quot;).click();
  });

  $(&quot;wa-sort-shuffle&quot;).addEventListener(&quot;click&quot;, function(){
    state.words = shuffleArray(state.words);
    renderAll();
  });
  $(&quot;wa-sort-az&quot;).addEventListener(&quot;click&quot;, function(){
    state.words.sort(function(a,b){ return a.w.localeCompare(b.w); });
    renderAll();
  });
  $(&quot;wa-clear-all&quot;).addEventListener(&quot;click&quot;, function(){
    if (state.words.length === 0) return;
    if (confirm(&quot;전체 단어를 삭제할까요? 되돌릴 수 없어요.&quot;)){
      state.words = [];
      renderAll();
    }
  });

  $(&quot;wa-card-next&quot;).addEventListener(&quot;click&quot;, cardNext);
  $(&quot;wa-card-prev&quot;).addEventListener(&quot;click&quot;, cardPrev);
  $(&quot;wa-index-card&quot;).addEventListener(&quot;click&quot;, function(){
    this.classList.toggle(&quot;wa-flipped&quot;);
  });
  $(&quot;wa-card-speak&quot;).addEventListener(&quot;click&quot;, function(e){
    e.stopPropagation();
    var order = state.cardOrder;
    if (order.length === 0) return;
    speak(state.words[order[state.cardIdx]].w);
  });
  $(&quot;wa-quiz-speak&quot;).addEventListener(&quot;click&quot;, function(e){
    e.stopPropagation();
    speak(e.currentTarget.getAttribute(&quot;data-say&quot;));
  });
  $(&quot;wa-card-known-btn&quot;).addEventListener(&quot;click&quot;, function(){ markCurrent(true); });
  $(&quot;wa-card-unknown-btn&quot;).addEventListener(&quot;click&quot;, function(){ markCurrent(false); });
  $(&quot;wa-card-shuffle-toggle&quot;).addEventListener(&quot;click&quot;, function(){
    state.cardShuffle = !state.cardShuffle;
    this.textContent = state.cardShuffle ? &quot;  랜덤 끄기&quot; : &quot;➡ 랜덤 켜기&quot;;
    buildCardOrder();
    renderCard();
  });

  $(&quot;wa-hide-direction&quot;).addEventListener(&quot;change&quot;, renderHide);
  $(&quot;wa-hide-all&quot;).addEventListener(&quot;click&quot;, function(){
    var masks = document.querySelectorAll(&quot;.wa-mask&quot;);
    for (var i=0;i&lt;masks.length;i++) masks[i].classList.remove(&quot;wa-shown&quot;);
  });
  $(&quot;wa-show-all&quot;).addEventListener(&quot;click&quot;, function(){
    var masks = document.querySelectorAll(&quot;.wa-mask&quot;);
    for (var i=0;i&lt;masks.length;i++) masks[i].classList.add(&quot;wa-shown&quot;);
  });

  $(&quot;wa-quiz-start&quot;).addEventListener(&quot;click&quot;, function(){ startQuiz(); });
  $(&quot;wa-quiz-restart&quot;).addEventListener(&quot;click&quot;, function(){ startQuiz(); });
  $(&quot;wa-quiz-retry-wrong&quot;).addEventListener(&quot;click&quot;, function(){
    if (state.quiz.wrong.length &gt; 0) startQuiz(state.quiz.wrong.slice());
  });

  $(&quot;wa-save&quot;).addEventListener(&quot;click&quot;, saveToLocal);
  $(&quot;wa-load&quot;).addEventListener(&quot;click&quot;, loadFromLocal);
  $(&quot;wa-qr&quot;).addEventListener(&quot;click&quot;, showQR);
  $(&quot;wa-export-csv&quot;).addEventListener(&quot;click&quot;, exportCSV);
  $(&quot;wa-import-csv&quot;).addEventListener(&quot;change&quot;, function(e){
    if (e.target.files &amp;&amp; e.target.files[0]) importCSV(e.target.files[0]);
    e.target.value = &quot;&quot;;
  });
  $(&quot;wa-stat-reset&quot;).addEventListener(&quot;click&quot;, function(){
    for (var i=0;i&lt;state.words.length;i++) state.words[i].known = null;
    state.lastQuizScore = null; state.lastQuizTotal = null; state.lastStudyDate = null;
    renderAll();
    toast(&quot;학습기록을 초기화했어요&quot;);
  });
  $(&quot;wa-modal-close&quot;).addEventListener(&quot;click&quot;, closeModal);
  $(&quot;wa-modal-bg&quot;).addEventListener(&quot;click&quot;, function(e){ if (e.target === this) closeModal(); });

  // header quick actions
  $(&quot;wa-hdr-share&quot;).addEventListener(&quot;click&quot;, shareURL);
  $(&quot;wa-hdr-tiny&quot;).addEventListener(&quot;click&quot;, function(){
    if (state.words.length === 0){ toast(&quot;공유할 단어가 없어요&quot;); return; }
    tinyModal(buildShareURL());
  });
  $(&quot;wa-hdr-test&quot;).addEventListener(&quot;click&quot;, function(){ switchTab(&quot;test&quot;); });

  // test / exam tab
  $(&quot;wa-test-build&quot;).addEventListener(&quot;click&quot;, adminBuildTestLink);
  $(&quot;wa-test-preview&quot;).addEventListener(&quot;click&quot;, previewTest);
  $(&quot;wa-exam-start&quot;).addEventListener(&quot;click&quot;, startExamCountdown);
  $(&quot;wa-exam-exit-link&quot;).addEventListener(&quot;click&quot;, function(e){ e.preventDefault(); exitPreview(); });
  $(&quot;wa-exam-submit&quot;).addEventListener(&quot;click&quot;, function(){ submitExam(); });
  $(&quot;wa-exam-send-mail&quot;).addEventListener(&quot;click&quot;, sendExamMail);
  $(&quot;wa-exam-copy&quot;).addEventListener(&quot;click&quot;, copyExamResult);

  // ---------- init ----------
  function init(){
    var isTest = detectTestParam();
    if (isTest) return; // participant exam view — don't touch the admin wordbook state

    var loadedFromURL = loadFromURLIfPresent();
    if (!loadedFromURL){
      try{
        var raw = localStorage.getItem(STORAGE_KEY);
        if (raw) state.words = JSON.parse(raw);
        var metaRaw = localStorage.getItem(STORAGE_KEY + &quot;_meta&quot;);
        if (metaRaw){
          var meta = JSON.parse(metaRaw);
          state.lastQuizScore = meta.lastQuizScore;
          state.lastQuizTotal = meta.lastQuizTotal;
          state.lastStudyDate = meta.lastStudyDate;
        }
      }catch(e){}
    } else {
      // sample seed only if URL had no words somehow — otherwise keep loaded words
    }
    if (state.words.length === 0){
      // seed with a few sample rows so the UI isn't empty on first look
      addWord(&quot;apple&quot;, &quot;사과&quot;);
      addWord(&quot;beautiful&quot;, &quot;아름다운&quot;);
      addWord(&quot;achieve&quot;, &quot;성취하다&quot;);
      addWord(&quot;negotiate&quot;, &quot;협상하다&quot;);
    }
    renderAll();
  }
  init();

})();
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>모두의계산기</category>
      <category>win10</category>
      <category>기본기능</category>
      <category>캡쳐</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/29</guid>
      <comments>https://0-1.kr/29#entry29comment</comments>
      <pubDate>Fri, 20 Nov 2020 13:24:03 +0900</pubDate>
    </item>
    <item>
      <title>ppt타이머 / 발표 타이머 / 팝업에도 살아있는 타이머 / 사업계획서 발표용</title>
      <link>https://0-1.kr/27</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;900&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1yMvC/btqNEfibrSs/kUkAugpLJpC7Sp1QC3cHik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1yMvC/btqNEfibrSs/kUkAugpLJpC7Sp1QC3cHik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1yMvC/btqNEfibrSs/kUkAugpLJpC7Sp1QC3cHik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1yMvC%2FbtqNEfibrSs%2FkUkAugpLJpC7Sp1QC3cHik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;150&quot; height=&quot;900&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;900&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정부지원 사업계획서 발표 또는 대학교 레포트 테스트 용으로 사용하시면 좋습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;피피티에도 타이머가 있지만 정작 발표장에 가면 버전이 달라 당황하는 경우가 많죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시계를 보고 하자니 없어보이고.. 연습만이 살길입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연습시 최고의 발표용 타이머 ppt타이머를 추천드리겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/dVGziL/btqNHpRQ9C3/gXqYzncwJUkaTgk1RsLpck/%EB%B0%9C%ED%91%9CPPT%ED%83%80%EC%9D%B4%EB%A8%B8.zip?attach=1&amp;amp;knm=tfile.zip&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;발표PPT타이머.zip&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.01MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;사용시 유의사항&lt;/b&gt;&lt;br /&gt;&lt;b&gt;1. 타이머를 더블클릭하면 설정된 시간으로 돌아갑니다.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;2. 더블클릭 후 ppt 또는 발표자료를 반드시 클릭해야지만 발표자료가 작동하니&lt;/b&gt;&lt;br /&gt;&lt;b&gt;반드시 발표자료를 마지막에 클릭해주시기 바랍니다. &lt;br /&gt;(발표자료가 넘어가지 않아 당황할 수도 있으니 반드시 발표자료를 마지막에 클릭해주시기 바랍니다.)&lt;/b&gt;&lt;/blockquote&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;아무래도 시계가 팝업이다 보니&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;시계를 클릭하면 발표자료가 뒤에 있게되어&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;레이저 포인트가 먹통이 됩니다.&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;반드시 시계리셋 후 발표자료를 한 번 클릭을 해야&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;레이저포인트가 작동하여 발표자가 당황하지 않는다는 점&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;확인하고 사용하세요!&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(또는 alt+tap 키를 이용하여 발표자료를 선택해주세요)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 피피티를 띄어놓고 연습을 해야 되는데 전체화면으로 하면 시계가 안보이는 경우가 대부분입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이건 전체화면시에도 팝업 위에 있어 시간체크에 딱인듯 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;696&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBpmW0/btqNEdYXp9W/ooczT7ffP4jbmxVCjzrQQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBpmW0/btqNEdYXp9W/ooczT7ffP4jbmxVCjzrQQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBpmW0/btqNEdYXp9W/ooczT7ffP4jbmxVCjzrQQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBpmW0%2FbtqNEdYXp9W%2FooczT7ffP4jbmxVCjzrQQK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;981&quot; height=&quot;696&quot; data-origin-width=&quot;981&quot; data-origin-height=&quot;696&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;압축을 풀면 왼쪽 하단의 digitimer가 떠요. 요걸 클릭하면 팝업이 뜹니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최대 카운트 다운이 30분이 좀 아쉽긴 하지만 30분 초과시 숫자가 올라가므로(이걸 카운트 업이라 하나요?ㅎ)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;적절하게 사용하심 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;폰트드 맘대로 사용할수 있구요. 3분전,1분전 소리가 나오게도 세팅이 되네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;발표자 또는 발표장 세팅하는 매니저들에게도 좋을 듯하네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;몇번 클릭해보시면 아시겠지만 동영상으로 살짝 준비해 봤습니다.&lt;/p&gt;

            &lt;figure class=&quot;unsupported component-kakaotv&quot; contenteditable=&quot;false&quot; style=&quot;background:#000;margin:16px 0;min-height:72px;padding:10px 16px;display:flex;align-items:center;justify-content:center;text-align:center;box-sizing:border-box;width:100%;max-width:100%;&quot;&gt;
                &lt;p contenteditable=&quot;false&quot; style=&quot;margin:0;color:#8a8a8a;font-size:13px;line-height:1.6;user-select:none;pointer-events:none;&quot;&gt;동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.&lt;/p&gt;
            &lt;/figure&gt;
        
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 더블 클릭시 초기화&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 크기 조정 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 소리 알림 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 쓰세요!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;p.s. 1분남았을때, 종료시, 강제종료시에 적당한 효과음입니다.(윈도우xp 경고음과 종료음이오니 잘 사용하세요)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로 발표시 3번 종료음은 너무 잔인하오니 사용을 안하시는걸 추천드려요!^^a&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/nx2ck/btsdenbTDEt/bpAB69z1saCAZkMRFiFPy1/01.1%EB%B6%84%EA%B2%BD%EA%B3%A0%EC%9D%8C_%EB%9A%B1.wav?attach=1&amp;amp;knm=tfile.wav&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;01.1분경고음_뚱.wav&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.04MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bXxnju/btsdsRoVTSE/b0G1c5XCVfnv76lna7RKuk/02.%EC%A2%85%EB%A3%8C%EA%B2%BD%EA%B3%A0%EC%9D%8C_%EB%9A%B1%EB%9A%B1.wav?attach=1&amp;amp;knm=tfile.wav&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;02.종료경고음_뚱뚱.wav&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.04MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bg14fK/btsdwtuwJI9/IKlG7H4bKoCgYfKk4pg6KK/03.%EC%A2%85%EB%A3%8C%EC%9D%8C_%EB%A7%88%EA%B0%90.wav?attach=1&amp;amp;knm=tfile.wav&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;03.종료음_마감.wav&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.27MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; data-ke-mobileStyle=&quot;widthContent&quot; data-filename=&quot;스업상단_복사본-1.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;150&quot;&gt;&lt;a href=&quot;http://www.0-4.co.kr&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caFg7w/btqNBfwH6t6/BMNNDB3oAlbJPYWIip962K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaFg7w%2FbtqNBfwH6t6%2FBMNNDB3oAlbJPYWIip962K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;150&quot; data-filename=&quot;스업상단_복사본-1.png&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;150&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스타트업EX는 국내 예비창업자와 스타트업 관련 창업지원 프로그램을 전달해드립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>스타트업 운영TIP/사업계획서작성 TIP</category>
      <category>ppt시계</category>
      <category>ppt타이머</category>
      <category>시계</category>
      <category>타이머</category>
      <category>팝업무시</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/27</guid>
      <comments>https://0-1.kr/27#entry27comment</comments>
      <pubDate>Tue, 17 Nov 2020 15:49:07 +0900</pubDate>
    </item>
    <item>
      <title>9캔버스와 린캔버스 비교해보기</title>
      <link>https://0-1.kr/26</link>
      <description>&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-8b433c90-2a28-4f62-8481-157b067d06bb&quot;&gt;&lt;span&gt;사업계획서는 용도에 따라 작성방법이 다른거 아시죠?&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-2e1a7cd7-1620-4d7e-9d00-cb8bfcff14b2&quot;&gt;&lt;span&gt;누구를 위한 사업계획서인가를 꼭 먼저 생각하고 작성하셔야 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-62d07d8c-da1e-47d1-a2fa-8fdf72c61d2a&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-07f66011-2f93-4440-9ae3-a01af2e7ee76&quot;&gt;&lt;span&gt;앞서 9캔버스를 1장짜리 사업계획서라고 했는데요.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-69dcce8b-ee20-465c-a614-6a87caab846b&quot;&gt;&lt;span&gt;이건 창업전&amp;middot;후에 아이템이 수익화 되는 과정까지 연습하는데&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-129531b1-8fef-45e3-a42c-5c1933234c35&quot;&gt;&lt;span&gt;도움이 된답니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-295f1605-be14-4b4d-ba38-0d10e61d1852&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-7b7fb771-f6a1-4320-b179-f93e184776e2&quot;&gt;&lt;span&gt;이번에 소개해드릴 린캔버스는&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;현재 창업중인 기업에서&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-49f14739-34af-451a-98ac-ef75dd25fc46&quot;&gt;&lt;span&gt;부족한 부분을 찾고 개선하여 수익증대에 도움이 되는&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-db270e83-3fb1-430b-afd1-cdcfa2160ff4&quot;&gt;&lt;span&gt;캔버스라고 불립니다.&lt;/span&gt;&lt;/p&gt;
&lt;p id=&quot;SE-fd06ebf8-45bc-47dd-ba25-17230439b41c&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p id=&quot;SE-a356aa04-bee6-49d5-8104-a10880e140e9&quot;&gt;&lt;span&gt;우선 작성을 위해 다운로드!ㅎ&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/cgTO8S/btqNqCRL93y/SZIVHJdziKKFalqOFTSju0/%EB%A6%B0%EC%BA%94%EB%B2%84%EC%8A%A4_%ED%95%9C%EA%B8%80.hwp?attach=1&amp;amp;knm=tfile.hwp&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;린캔버스_한글.hwp&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.04MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-filename=&quot;린캔버스_한글001.jpg&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DJ8Nt/btqNqZ61N1R/Hyt15hO8ekeszW6JncGG2k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DJ8Nt/btqNqZ61N1R/Hyt15hO8ekeszW6JncGG2k/img.jpg&quot; data-alt=&quot;린캔버스&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DJ8Nt/btqNqZ61N1R/Hyt15hO8ekeszW6JncGG2k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDJ8Nt%2FbtqNqZ61N1R%2FHyt15hO8ekeszW6JncGG2k%2Fimg.jpg&quot; data-filename=&quot;린캔버스_한글001.jpg&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;린캔버스&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatRight&quot; width=&quot;400&quot; data-filename=&quot;스업상단_복사본-1.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot;&gt;&lt;a href=&quot;http://www.0-4.co.kr&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0CXlS/btqNpe5aini/yXAVEsn9o80ZVQKHzgXHm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0CXlS%2FbtqNpe5aini%2FyXAVEsn9o80ZVQKHzgXHm0%2Fimg.png&quot; width=&quot;400&quot; data-filename=&quot;스업상단_복사본-1.png&quot; data-origin-width=&quot;0&quot; data-origin-height=&quot;0&quot; data-ke-mobilestyle=&quot;widthContent&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p&gt;스타트업EX는 국내 예비창업자와 스타트업 관련 창업지원 프로그램을 전달해드립니다.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>스타트업 운영TIP/사업계획서작성 TIP</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/26</guid>
      <comments>https://0-1.kr/26#entry26comment</comments>
      <pubDate>Fri, 13 Nov 2020 23:40:28 +0900</pubDate>
    </item>
    <item>
      <title>모두의 서류요청계산기_v10(0-1.kr/23)</title>
      <link>https://0-1.kr/23</link>
      <description>&lt;style&gt;
#drc-root button{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;background:none;font-family:inherit;cursor:pointer;touch-action:manipulation;margin:0;}
#drc-root input:not([type=checkbox]):not([type=radio]),#drc-root textarea{-webkit-appearance:none;appearance:none;font-family:inherit;}
#drc-root input[type=checkbox]{width:17px;height:17px;flex:none;}
&lt;/style&gt;
&lt;div id=&quot;drc-root&quot; style=&quot;max-width:720px;margin:0 auto;padding:14px 12px 80px;background:#fbfbf9;font-family:-apple-system,BlinkMacSystemFont,'Malgun Gothic',sans-serif;color:#222;touch-action:manipulation;&quot;&gt;

&lt;div id=&quot;drc-toast&quot; style=&quot;display:none;position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#222;color:#fff;padding:10px 18px;border-radius:20px;font-size:13px;max-width:88%;text-align:center;z-index:2147483647;-webkit-transform:translateX(-50%);&quot;&gt;&lt;/div&gt;

&lt;!-- 상단 타이틀바 --&gt;
&lt;div style=&quot;display:flex;align-items:flex-start;justify-content:space-between;background:#1a4d3c;border-radius:14px 14px 0 0;padding:12px 14px;&quot;&gt;
  &lt;div style=&quot;color:#fff;font-size:15px;font-weight:700;padding-top:6px;&quot;&gt;서류요청계산기_v1&lt;/div&gt;
  &lt;div style=&quot;display:flex;gap:10px;&quot;&gt;
    &lt;button id=&quot;drc-btn-share-top&quot; type=&quot;button&quot; style=&quot;background:none;color:#fff;display:flex;flex-direction:column;align-items:center;gap:2px;&quot;&gt;&lt;span style=&quot;font-size:18px;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10px;opacity:.85;&quot;&gt;보내기&lt;/span&gt;&lt;/button&gt;
    &lt;button id=&quot;drc-btn-import-top&quot; type=&quot;button&quot; style=&quot;background:none;color:#fff;display:flex;flex-direction:column;align-items:center;gap:2px;&quot;&gt;&lt;span style=&quot;font-size:18px;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10px;opacity:.85;&quot;&gt;불러오기&lt;/span&gt;&lt;/button&gt;
    &lt;button id=&quot;drc-btn-export-top&quot; type=&quot;button&quot; style=&quot;background:none;color:#fff;display:flex;flex-direction:column;align-items:center;gap:2px;&quot;&gt;&lt;span style=&quot;font-size:18px;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10px;opacity:.85;&quot;&gt;저장&lt;/span&gt;&lt;/button&gt;
    &lt;button id=&quot;drc-btn-merge-top&quot; type=&quot;button&quot; style=&quot;background:none;color:#fff;display:flex;flex-direction:column;align-items:center;gap:2px;&quot;&gt;&lt;span style=&quot;font-size:18px;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10px;opacity:.85;&quot;&gt;취합PDF다운&lt;/span&gt;&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;
&lt;input id=&quot;drc-import-file-input&quot; type=&quot;file&quot; accept=&quot;application/json&quot; style=&quot;display:none;&quot; /&gt;

&lt;!-- Title --&gt;
&lt;div style=&quot;background:#fff;border:1px solid #e5e2d8;border-top:none;border-radius:0 0 14px 14px;padding:14px;margin-bottom:14px;&quot;&gt;
  &lt;label style=&quot;font-size:12px;color:#999;font-weight:700;&quot;&gt;Title&lt;/label&gt;
  &lt;input id=&quot;drc-input-title&quot; type=&quot;text&quot; placeholder=&quot;예: OO사업 지원서류 취합본&quot; style=&quot;width:100%;box-sizing:border-box;padding:10px;font-size:16px;font-weight:700;border:1px solid #ddd;border-radius:8px;margin:4px 0 2px;&quot; /&gt;
  &lt;div style=&quot;font-size:11px;color:#aaa;margin-bottom:10px;&quot;&gt;(취합 시 파일명으로 사용됩니다)&lt;/div&gt;

  &lt;button id=&quot;drc-toggle-guide&quot; type=&quot;button&quot; style=&quot;width:100%;text-align:left;font-size:14px;font-weight:700;color:#444;padding:6px 0;&quot;&gt;▾ 설명 및 전달멘트 접기&lt;/button&gt;
  &lt;div id=&quot;drc-guide-wrap&quot; style=&quot;display:block;&quot;&gt;
    &lt;div style=&quot;font-size:12px;color:#666;line-height:1.6;background:#f7f7f2;border-radius:8px;padding:10px;margin:6px 0 10px;&quot;&gt;
      [요청자]: 섹션별 요청파일명 기재 후 (보내기) 발송&lt;br/&gt;&lt;br/&gt;
      [제출자]: 요청파일 확인→업로드→파일저장 후 발송
    &lt;/div&gt;

    &lt;label style=&quot;font-size:12px;color:#999;font-weight:700;&quot;&gt;요청자 전달멘트&lt;/label&gt;
    &lt;input id=&quot;drc-input-req-msg&quot; type=&quot;text&quot; placeholder=&quot;예: 7/20까지 제출 부탁드립니다&quot; style=&quot;width:100%;box-sizing:border-box;padding:9px;font-size:13px;border:1px solid #ddd;border-radius:8px;margin:4px 0 10px;&quot; /&gt;
    &lt;label style=&quot;font-size:12px;color:#999;font-weight:700;&quot;&gt;제출자 전달멘트&lt;/label&gt;
    &lt;input id=&quot;drc-input-sub-msg&quot; type=&quot;text&quot; placeholder=&quot;예: 확인했습니다, 오늘 중 제출하겠습니다&quot; style=&quot;width:100%;box-sizing:border-box;padding:9px;font-size:13px;border:1px solid #ddd;border-radius:8px;margin:4px 0 12px;&quot; /&gt;
  &lt;/div&gt;

  &lt;div id=&quot;drc-progress&quot; style=&quot;font-size:13px;color:#666;&quot;&gt;업로드 완료 0 / 0 항목&lt;/div&gt;
  &lt;div style=&quot;background:#eee;border-radius:8px;height:8px;margin-top:6px;overflow:hidden;&quot;&gt;
    &lt;div id=&quot;drc-progress-bar&quot; style=&quot;background:#2e8b57;height:8px;width:0%;-webkit-transition:width .3s;transition:width .3s;&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div id=&quot;drc-sections&quot; style=&quot;display:flex;flex-direction:column;gap:12px;&quot;&gt;&lt;/div&gt;

&lt;button id=&quot;drc-btn-add-section&quot; type=&quot;button&quot; style=&quot;width:100%;margin-top:14px;padding:14px;font-size:15px;font-weight:700;border:2px dashed #2e8b57;color:#2e8b57;background:#f3faf5;border-radius:12px;&quot;&gt;＋ 서류 항목 추가&lt;/button&gt;

&lt;!-- 취합 옵션 (기본 펼침) --&gt;
&lt;div style=&quot;margin-top:14px;&quot;&gt;
  &lt;button id=&quot;drc-toggle-options&quot; type=&quot;button&quot; style=&quot;width:100%;text-align:left;padding:12px 14px;background:#eef4ff;border:1px solid #cfe0fb;border-radius:10px;font-size:14px;font-weight:700;color:#1a4d8a;&quot;&gt;▾ 취합 옵션 접기&lt;/button&gt;
  &lt;div id=&quot;drc-options-panel&quot; style=&quot;display:block;padding:14px 4px;&quot;&gt;
    &lt;label style=&quot;display:flex;align-items:center;gap:8px;font-size:14px;margin:6px 0;&quot;&gt;&lt;input id=&quot;drc-opt-watermark&quot; type=&quot;checkbox&quot; /&gt; 전체 파일에 제목 표기(워터마크)&lt;/label&gt;
    &lt;label style=&quot;display:flex;align-items:center;gap:8px;font-size:14px;margin:6px 0;&quot;&gt;&lt;input id=&quot;drc-opt-pagenum&quot; type=&quot;checkbox&quot; checked /&gt; 페이지 번호 삽입&lt;/label&gt;

    &lt;div style=&quot;margin-top:14px;padding-top:12px;border-top:1px dashed #ddd;&quot;&gt;
      &lt;div style=&quot;font-size:13px;font-weight:700;color:#444;margin-bottom:6px;&quot;&gt;취합 PDF 용량(화질) 조절&lt;/div&gt;
      &lt;div id=&quot;drc-compress-segment&quot; style=&quot;display:flex;gap:6px;margin-bottom:8px;&quot;&gt;&lt;/div&gt;
      &lt;div id=&quot;drc-compress-estimate&quot; style=&quot;font-size:12px;color:#666;&quot;&gt;&lt;/div&gt;
      &lt;div id=&quot;drc-compress-recommend&quot; style=&quot;font-size:12px;color:#1a7a4c;margin-top:2px;&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;

    &lt;div style=&quot;border-top:1px dashed #ddd;margin-top:14px;&quot;&gt;&lt;/div&gt;

    &lt;div style=&quot;display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:14px;&quot;&gt;
      &lt;div style=&quot;position:relative;&quot;&gt;
        &lt;button id=&quot;drc-btn-export-json&quot; type=&quot;button&quot; style=&quot;width:100%;box-sizing:border-box;padding:12px 6px;background:#fff;border:1px solid #ccc;border-radius:8px;font-size:13px;font-weight:700;&quot;&gt;✎ 파일저장_수정가능&lt;/button&gt;
        &lt;button id=&quot;drc-btn-export-tip&quot; type=&quot;button&quot; style=&quot;position:absolute;top:-8px;right:-6px;width:20px;height:20px;border-radius:50%;background:#1a4d8a;color:#fff;font-size:11px;font-weight:700;&quot;&gt;ⓘ&lt;/button&gt;
        &lt;div id=&quot;drc-export-tip-bubble&quot; style=&quot;display:none;position:relative;margin-top:6px;background:#222;color:#fff;font-size:11px;line-height:1.5;padding:8px 10px;border-radius:8px;&quot;&gt;요청자에게 이 파일을 전달하면 받는 사람이 파일명·순서를 계속 수정할 수 있고, 필요할 때 언제든 PDF로 쉽게 변환할 수 있어요.&lt;/div&gt;
        &lt;div style=&quot;font-size:11px;color:#c0392b;margin-top:6px;&quot;&gt;*해당파일로 저장 시 요청자가 수정가능한 파일로 저장됩니다.&lt;/div&gt;
      &lt;/div&gt;
      &lt;button id=&quot;drc-btn-import-json&quot; type=&quot;button&quot; style=&quot;padding:12px 6px;background:#fff;border:1px solid #ccc;border-radius:8px;font-size:13px;font-weight:700;&quot;&gt;  파일불러오기&lt;/button&gt;
      &lt;button id=&quot;drc-btn-merge&quot; type=&quot;button&quot; style=&quot;padding:12px 6px;background:#1a4d8a;color:#fff;border-radius:8px;font-size:13px;font-weight:700;&quot;&gt;  전체취합_PDF로 합치기&lt;/button&gt;
      &lt;button id=&quot;drc-btn-save-separate&quot; type=&quot;button&quot; style=&quot;padding:12px 6px;background:#fff;border:1px solid #ccc;border-radius:8px;font-size:13px;font-weight:700;&quot;&gt;  별도파일저장(zip)&lt;/button&gt;
    &lt;/div&gt;
    &lt;div style=&quot;font-size:11px;color:#aaa;margin-top:8px;&quot;&gt;※ 저장한 파일은 0-1.kr/29 에서 다시 불러와 수정할 수 있어요&lt;/div&gt;
    &lt;div style=&quot;border-top:1px dashed #ddd;margin-top:14px;&quot;&gt;&lt;/div&gt;

    &lt;label style=&quot;display:flex;align-items:center;gap:8px;font-size:14px;color:#333;margin-top:14px;&quot;&gt;
      &lt;input id=&quot;drc-opt-prefix&quot; type=&quot;checkbox&quot; checked /&gt; 말머리+파일명 저장
    &lt;/label&gt;
    &lt;div style=&quot;font-size:11px;color:#999;margin-top:4px;&quot;&gt;체크 시 파일명 앞에 [섹션번호]_[파일순번]. 형식이 자동으로 붙어요. (예: 01_01. 사업자등록증) 순서를 바꾸면 번호도 자동으로 다시 매겨집니다. 해지하면 원래 파일명만 사용해요.&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div style=&quot;margin-top:18px;&quot;&gt;
  &lt;div style=&quot;background:#fff7e8;border:1px solid #f0dca0;border-radius:12px;padding:14px;&quot;&gt;
    &lt;div style=&quot;font-size:14px;font-weight:700;color:#8a6300;margin-bottom:4px;&quot;&gt;  요청자&lt;/div&gt;
    &lt;div style=&quot;font-size:13px;color:#555;line-height:1.6;&quot;&gt;섹션별 서류명 기재 후 제출자에게 전달&lt;/div&gt;
    &lt;div style=&quot;font-size:12px;color:#a98a3f;margin-top:4px;&quot;&gt;유의사항: 메모·링크까지 채워두면 제출자가 헷갈리지 않아요. 다 채웠으면 상단  보내기로 링크 전달.&lt;/div&gt;
  &lt;/div&gt;
  &lt;div style=&quot;text-align:center;font-size:20px;color:#bbb;line-height:1;padding:2px 0;&quot;&gt;↓&lt;/div&gt;
  &lt;div style=&quot;background:#f3faf5;border:1px solid #cfe8d6;border-radius:12px;padding:14px;&quot;&gt;
    &lt;div style=&quot;font-size:14px;font-weight:700;color:#1a7a4c;margin-bottom:4px;&quot;&gt;  제출자&lt;/div&gt;
    &lt;div style=&quot;font-size:13px;color:#555;line-height:1.6;&quot;&gt;각 파일 확인 후 업로드&lt;/div&gt;
    &lt;div style=&quot;font-size:12px;color:#5fa37e;margin-top:4px;&quot;&gt;유의사항: 예시보기로 확인 → 업로드 → ✎파일저장_수정가능 클릭 → 요청자에게 해당 파일 발송&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;button id=&quot;drc-btn-manual&quot; type=&quot;button&quot; style=&quot;width:100%;margin-top:18px;padding:10px;background:none;border:1px solid #ddd;border-radius:8px;color:#888;font-size:13px;&quot;&gt;ℹ 사용설명서&lt;/button&gt;
&lt;div style=&quot;text-align:center;font-size:11px;color:#c8c5ba;margin-top:10px;&quot;&gt;완벽서류요청계산기_V10_(260714) · 스타트업ex · cds1981@naver.com&lt;/div&gt;

&lt;!-- 사용설명서 모달 --&gt;
&lt;div id=&quot;drc-manual-modal&quot; style=&quot;display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:2147483647;&quot;&gt;
  &lt;div style=&quot;background:#fff;max-width:600px;margin:8vh auto;padding:20px;border-radius:14px;max-height:78vh;overflow:auto;-webkit-overflow-scrolling:touch;&quot;&gt;
    &lt;h3 style=&quot;margin-top:0;&quot;&gt;사용설명서 (V10)&lt;/h3&gt;
    &lt;ol style=&quot;font-size:14px;line-height:1.7;padding-left:18px;&quot;&gt;
      &lt;li&gt;자동저장이 IndexedDB 기반으로 바뀌어 localStorage보다 훨씬 넉넉한 용량(수백MB 이상)까지 파일을 담아도 안전합니다. (예전 버전에서 쓰던 데이터는 자동으로 옮겨옵니다)&lt;/li&gt;
      &lt;li&gt;취합 옵션 하단의 &quot;말머리+파일명 저장&quot;이 기본 체크되어 있으면, 파일명 앞에 [섹션번호]_[파일순번]. 형식이 자동으로 붙습니다(예: 01_01. 사업자등록증). 체크 해제하면 원래 파일명만 사용됩니다. 순서를 바꾸면 번호도 자동으로 재계산됩니다.&lt;/li&gt;
      &lt;li&gt;파일 행의 ⠿을 드래그하면 같은 섹션 안에서 파일 순서를 바꿀 수 있고, 파일명도 직접 수정할 수 있습니다. 수정한 이름은 저장·다운로드 시 그대로 반영됩니다.&lt;/li&gt;
      &lt;li&gt;Title에 취합 시 사용할 파일명을 입력합니다. 그 아래 설명·전달멘트 영역은 접었다 펼 수 있고, 접은 상태로 저장·전달하면 받는 사람도 접힌 상태로 받습니다.&lt;/li&gt;
      &lt;li&gt;요청 항목만 입력한 상태에서 상단  보내기로 파라미터가 담긴 링크(또는 짧은 URL·QR)를 만들어 전달할 수 있습니다. 파일이 첨부된 상태에서는 링크 공유가 막힙니다.&lt;/li&gt;
      &lt;li&gt;각 항목 왼쪽 ⠿을 드래그하면 순서가 바뀝니다. 번호를 누르면 항목이 접히고, 접힌 상태에서는 파일 첨부 여부만 표시됩니다.&lt;/li&gt;
      &lt;li&gt;&quot;파일업로드&quot; 탭: 파일 유무와 상관없이 항상 보이는 기본 메모칸이 있고, 업로드된 파일마다 미리보기·파일명·PDF표시·용량과 파일별 메모도 남길 수 있습니다. &quot;전달사항&quot; 탭: 상단 전달사항메모(높이 조절 가능) + 체크리스트 항목 자유 추가 + 관련 링크. &quot;예시보기&quot; 탭: 예시링크(구글/이미지/블로그)를 열거나 발급방법을 적고, 요청자가 올린 예시 PDF를 바로 볼 수 있습니다.&lt;/li&gt;
      &lt;li&gt;취합 옵션에서 용량(화질)을 조절할 수 있고, 현재 업로드된 이미지 용량 기준 추천 강도가 표시됩니다.&lt;/li&gt;
      &lt;li&gt;✎ 파일저장_수정가능(ⓘ 눌러 설명 확인) = 파일명/순서를 계속 편집 가능한 json으로 저장.   파일불러오기 = 그 json을 다시 불러와 편집.   전체취합_PDF로 합치기 = 모든 파일을 한 개의 PDF로 병합.   별도파일저장(zip) = 각 파일을 개별 PDF로 만들어 zip 하나로 압축 저장.&lt;/li&gt;
      &lt;li&gt;모든 입력은 4초마다 자동저장됩니다.&lt;/li&gt;
    &lt;/ol&gt;
    &lt;button id=&quot;drc-manual-close&quot; type=&quot;button&quot; style=&quot;width:100%;padding:12px;background:#222;color:#fff;border-radius:8px;&quot;&gt;닫기&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- 보내기(링크/QR) 모달 --&gt;
&lt;div id=&quot;drc-share-modal&quot; style=&quot;display:none;position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:2147483647;&quot;&gt;
  &lt;div style=&quot;background:#fff;max-width:480px;margin:12vh auto;padding:20px;border-radius:14px;max-height:74vh;overflow:auto;&quot;&gt;
    &lt;h3 style=&quot;margin-top:0;&quot;&gt;링크로 보내기&lt;/h3&gt;
    &lt;div id=&quot;drc-share-box&quot; style=&quot;font-size:12px;word-break:break-all;&quot;&gt;&lt;/div&gt;
    &lt;button id=&quot;drc-share-close&quot; type=&quot;button&quot; style=&quot;width:100%;margin-top:16px;padding:12px;background:#222;color:#fff;border-radius:8px;&quot;&gt;닫기&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;

&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdf-lib/1.17.1/pdf-lib.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/Sortable/1.15.0/Sortable.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/lz-string/1.5.0/lz-string.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/qrcodejs/1.0.0/qrcode.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/jszip/3.10.1/jszip.min.js&quot;&gt;&lt;/script&gt;

&lt;script&gt;
(function(){

var STORAGE_KEY = 'drc_state_v2';
var _saveTimer = null;
var STATE = null;
var _collapsedMap = {};
function isCollapsed(id){ return !!_collapsedMap[id]; }
function toggleCollapse(id){ _collapsedMap[id] = !_collapsedMap[id]; renderSections(); }
var _activeTabMap = {};
function getActiveTab(id){ return _activeTabMap[id] || 'upload'; }

/* ===== IndexedDB 저장소 (localStorage 5~10MB 제한 해결용) ===== */
var IDB_NAME = 'drc_db_v1';
var IDB_STORE = 'state';
var _idbPromise = null;

function openIDB(){
  if(_idbPromise) return _idbPromise;
  _idbPromise = new Promise(function(resolve, reject){
    if(!window.indexedDB){ reject(new Error('indexedDB 미지원')); return; }
    var req = indexedDB.open(IDB_NAME, 1);
    req.onupgradeneeded = function(e){
      var db = e.target.result;
      if(!db.objectStoreNames.contains(IDB_STORE)){ db.createObjectStore(IDB_STORE); }
    };
    req.onsuccess = function(e){ resolve(e.target.result); };
    req.onerror = function(){ reject(req.error); };
  });
  return _idbPromise;
}
function idbGet(key){
  return openIDB().then(function(db){
    return new Promise(function(resolve, reject){
      var tx = db.transaction(IDB_STORE, 'readonly');
      var req = tx.objectStore(IDB_STORE).get(key);
      req.onsuccess = function(){ resolve(req.result || null); };
      req.onerror = function(){ reject(req.error); };
    });
  });
}
function idbSet(key, value){
  return openIDB().then(function(db){
    return new Promise(function(resolve, reject){
      var tx = db.transaction(IDB_STORE, 'readwrite');
      var req = tx.objectStore(IDB_STORE).put(value, key);
      req.onsuccess = function(){ resolve(true); };
      req.onerror = function(){ reject(req.error); };
    });
  });
}

var COMPRESS_PRESETS = {
  original: { quality:0.92, maxWidth:2000, label:'원본화질', mult:1.0 },
  standard: { quality:0.65, maxWidth:1600, label:'표준압축', mult:0.45 },
  small:    { quality:0.40, maxWidth:1000, label:'고용량절약', mult:0.2 }
};

function $(id){ return document.getElementById(id); }
function uid(){ return 'id' + Date.now().toString(36) + Math.floor(Math.random()*10000).toString(36); }
function todayStr(){
  var d = new Date();
  return String(d.getFullYear()).slice(2) + ('0'+(d.getMonth()+1)).slice(-2) + ('0'+d.getDate()).slice(-2);
}
function showToast(msg){
  var t = $('drc-toast');
  t.textContent = msg;
  t.style.display = 'block';
  window.setTimeout(function(){ t.style.display='none'; }, 2600);
}
function openUrl(url){
  if(!url) { showToast('링크가 비어있습니다'); return; }
  var u = url;
  if(!/^https?:\/\//i.test(u)) u = 'https://' + u;
  window.open(u, '_blank');
}
function fmtBytes(n){
  if(n &lt; 1024) return n + 'B';
  if(n &lt; 1024*1024) return Math.round(n/1024) + 'KB';
  return (Math.round(n/1024/1024*10)/10) + 'MB';
}

function defaultOptions(){ return { watermark:false, pagenum:true, compressLevel:'standard', prefixNaming:true }; }

function defaultState(){
  return {
    title: '',
    requesterMsg: '',
    submitterMsg: '',
    guideCollapsed: false,
    sections: [
      { id: uid(), name: '사업자등록증', desc: '', link: '', exampleLink: 'https://www.hometax.go.kr', issueMethod: '최근 3개월 이내 발급본을 업로드해주세요.', checklist: [], uploadNote:'', exampleFile: null, files: [] },
      { id: uid(), name: '통장사본', desc: '', link: '', exampleLink: '', issueMethod: '입금계좌로 사용할 통장 첫 페이지 사본입니다.', checklist: [], uploadNote:'', exampleFile: null, files: [] }
    ],
    options: defaultOptions()
  };
}

function parseQuery(){
  var out = {};
  var s = window.location.search.replace('?','');
  if(!s) return out;
  var parts = s.split('&amp;');
  for(var i=0;i&lt;parts.length;i++){
    var kv = parts[i].split('=');
    out[decodeURIComponent(kv[0])] = decodeURIComponent(kv[1]||'');
  }
  return out;
}

function loadInitialState(){
  try{
    var qs = parseQuery();
    if(qs.tpl &amp;&amp; window.LZString){
      var json = LZString.decompressFromEncodedURIComponent(qs.tpl);
      if(json){
        var tpl = JSON.parse(json);
        var st = { title: tpl.title||'', requesterMsg: tpl.requesterMsg||'', submitterMsg: tpl.submitterMsg||'', guideCollapsed: !!tpl.guideCollapsed, sections: [], options: defaultOptions() };
        for(var i=0;i&lt;tpl.sections.length;i++){
          var ts = tpl.sections[i];
          st.sections.push({ id: uid(), name: ts.name, desc: ts.desc||'', link: ts.link||'', exampleLink: ts.exampleLink||'', issueMethod: ts.issueMethod||'', checklist: ts.checklist||[], uploadNote: ts.uploadNote||'', exampleFile: null, files: [] });
        }
        return Promise.resolve(st);
      }
    }
  }catch(e){}

  return idbGet(STORAGE_KEY).then(function(saved){
    if(saved) return saved;
    return migrateFromLocalStorage();
  }).catch(function(){
    return migrateFromLocalStorage();
  });
}

function migrateFromLocalStorage(){
  try{
    var raw = localStorage.getItem(STORAGE_KEY);
    if(raw){
      var migrated = JSON.parse(raw);
      idbSet(STORAGE_KEY, migrated).catch(function(){});
      return migrated;
    }
  }catch(e){}
  return defaultState();
}

function persistState(pushHist){
  if(_saveTimer) window.clearTimeout(_saveTimer);
  _saveTimer = window.setTimeout(function(){
    idbSet(STORAGE_KEY, STATE).then(function(){
      showToast('자동저장됨');
    }).catch(function(){
      try{ localStorage.setItem(STORAGE_KEY, JSON.stringify(STATE)); showToast('자동저장됨'); }
      catch(e){ showToast('자동저장 실패'); }
    });
  }, 4000);
}

/* ===== 유틸 ===== */

function el(tag, attrs, children){
  var e = document.createElement(tag);
  for(var k in attrs){
    if(k === 'style') e.style.cssText = attrs[k];
    else if(k.indexOf('data-') === 0) e.setAttribute(k, attrs[k]);
    else e[k] = attrs[k];
  }
  children = children || [];
  for(var i=0;i&lt;children.length;i++){ e.appendChild(children[i]); }
  return e;
}
function arrayBufferToBase64(buffer){
  var bytes = new Uint8Array(buffer);
  var binary = '';
  var chunk = 0x8000;
  for(var i=0;i&lt;bytes.length;i+=chunk){ binary += String.fromCharCode.apply(null, bytes.subarray(i, i+chunk)); }
  return btoa(binary);
}
function base64ToUint8(b64){
  var bin = atob(b64);
  var bytes = new Uint8Array(bin.length);
  for(var i=0;i&lt;bin.length;i++){ bytes[i] = bin.charCodeAt(i); }
  return bytes;
}
function findSection(id){
  for(var i=0;i&lt;STATE.sections.length;i++){ if(STATE.sections[i].id === id) return STATE.sections[i]; }
  return null;
}
function downloadBytes(bytes, filename, mime){
  var blob = new Blob([bytes], { type: mime || 'application/pdf' });
  var url = URL.createObjectURL(blob);
  var a = document.createElement('a');
  a.href = url; a.download = filename;
  document.body.appendChild(a); a.click(); document.body.removeChild(a);
  window.setTimeout(function(){ URL.revokeObjectURL(url); }, 3000);
}

/* ===== 렌더링 ===== */

function renderAll(){
  $('drc-input-title').value = STATE.title;
  $('drc-input-req-msg').value = STATE.requesterMsg || '';
  $('drc-input-sub-msg').value = STATE.submitterMsg || '';
  applyGuideCollapsed();
  $('drc-opt-prefix').checked = STATE.options.prefixNaming !== false;
  $('drc-opt-watermark').checked = STATE.options.watermark;
  $('drc-opt-pagenum').checked = STATE.options.pagenum;
  renumberAll();
  renderSections();
  renderProgress();
  renderCompressControl();
}

function applyGuideCollapsed(){
  var wrap = $('drc-guide-wrap');
  var btn = $('drc-toggle-guide');
  var collapsed = !!STATE.guideCollapsed;
  wrap.style.display = collapsed ? 'none' : 'block';
  btn.textContent = (collapsed ? '▸' : '▾') + ' 설명 및 전달멘트 ' + (collapsed ? '펼치기' : '접기');
}

function renumberAll(){
  var prefixOn = !STATE.options || STATE.options.prefixNaming !== false;
  for(var i=0;i&lt;STATE.sections.length;i++){
    var files = STATE.sections[i].files;
    var secNum = ('0'+(i+1)).slice(-2);
    for(var j=0;j&lt;files.length;j++){
      var base = files[j].baseName || files[j].name.replace(/^\d+_\d+\.\s*/, '').replace(/^\[\d+\]\s*/, '');
      files[j].baseName = base;
      if(prefixOn){
        var fnum = ('0'+(j+1)).slice(-2);
        files[j].name = secNum + '_' + fnum + '. ' + base;
      } else {
        files[j].name = base;
      }
    }
  }
}

function renderProgress(){
  var total = STATE.sections.length, done = 0;
  for(var i=0;i&lt;total;i++){ if(STATE.sections[i].files.length&gt;0) done++; }
  $('drc-progress').textContent = '업로드 완료 ' + done + ' / ' + total + ' 항목';
  $('drc-progress-bar').style.width = (total? Math.round(done/total*100):0) + '%';
}

function flattenFiles(){
  var out = [];
  for(var i=0;i&lt;STATE.sections.length;i++){
    var files = STATE.sections[i].files;
    for(var j=0;j&lt;files.length;j++){ out.push(files[j]); }
  }
  return out;
}

function renderCompressControl(){
  var seg = $('drc-compress-segment');
  seg.innerHTML = '';
  var levels = ['original','standard','small'];
  var current = STATE.options.compressLevel || 'standard';
  var rec = recommendLevel();
  for(var i=0;i&lt;levels.length;i++){
    var lv = levels[i];
    var active = lv === current;
    var btn = el('button', { type:'button', style:'flex:1;padding:9px 4px;font-size:12px;font-weight:700;border-radius:8px;background:'+(active?'#1a4d8a':'#f0eee5')+';color:'+(active?'#fff':'#555')+';' });
    btn.textContent = COMPRESS_PRESETS[lv].label + (lv===rec?' ⭐':'');
    btn.addEventListener('click', (function(l){ return function(){ STATE.options.compressLevel = l; renderCompressControl(); persistState(); }; })(lv));
    seg.appendChild(btn);
  }
  var files = flattenFiles();
  var estCurrent = estimateTotalBytes(current);
  var estOriginal = estimateTotalBytes('original');
  var estBox = $('drc-compress-estimate');
  estBox.innerHTML = '';
  if(files.length){
    var lbl = document.createElement('span'); lbl.textContent = '예상 파일용량: ';
    var val = document.createElement('strong'); val.style.color = '#1a4d8a'; val.textContent = fmtBytes(estCurrent);
    var sub = document.createElement('span'); sub.style.color = '#999'; sub.textContent = ' (원본 기준 ' + fmtBytes(estOriginal) + ')';
    estBox.appendChild(lbl); estBox.appendChild(val); estBox.appendChild(sub);
  } else {
    estBox.textContent = '파일을 업로드하면 예상 파일용량이 표시됩니다';
  }
  if(files.length &amp;&amp; rec !== 'original'){
    $('drc-compress-recommend').textContent = '  원본 기준 용량이 커요 — ' + COMPRESS_PRESETS[rec].label + '을 추천해요 (제출처 업로드 용량제한 대비)';
  } else {
    $('drc-compress-recommend').textContent = '';
  }
}

function estimateTotalBytes(level){
  var mult = COMPRESS_PRESETS[level].mult;
  var total = 0;
  var files = flattenFiles();
  for(var i=0;i&lt;files.length;i++){
    var f = files[i];
    total += f.kind === 'image' ? (f.origSize * mult) : f.origSize;
  }
  return Math.round(total);
}

function recommendLevel(){
  var estOriginal = estimateTotalBytes('original');
  if(estOriginal &gt; 15*1024*1024) return 'small';
  if(estOriginal &gt; 5*1024*1024) return 'standard';
  return 'original';
}

function renderSections(){
  var wrap = $('drc-sections');
  wrap.innerHTML = '';
  for(var i=0;i&lt;STATE.sections.length;i++){
    wrap.appendChild(renderSectionCard(STATE.sections[i], i));
  }
  if(window.Sortable){
    Sortable.create(wrap, {
      handle: '.drc-drag-handle',
      animation: 150,
      onEnd: function(){
        var newOrder = [];
        var nodes = wrap.querySelectorAll('.drc-section-card');
        for(var k=0;k&lt;nodes.length;k++){
          var sid = nodes[k].getAttribute('data-id');
          for(var m=0;m&lt;STATE.sections.length;m++){
            if(STATE.sections[m].id === sid){ newOrder.push(STATE.sections[m]); break; }
          }
        }
        STATE.sections = newOrder;
        renumberAll();
        renderSections();
        persistState();
      }
    });
  }
}

function renderSectionCard(sec, idx){
  var card = el('div', { className:'drc-section-card', style:'background:#fff;border:1px solid #e5e2d8;border-radius:14px;padding:14px;', 'data-id': sec.id });

  var collapsed = isCollapsed(sec.id);

  var head = el('div', { style:'display:flex;align-items:center;gap:8px;margin-bottom:'+(collapsed?'0':'10px')+';' });

  var dragHandle = el('div', { className:'drc-drag-handle', style:'flex:none;font-size:18px;color:#bbb;padding:4px 2px;cursor:grab;' });
  dragHandle.textContent = '⠿';

  var badgeWrap = el('div', { style:'flex:none;display:flex;align-items:center;gap:3px;cursor:pointer;' });
  var chevron = el('span', { style:'font-size:10px;color:#999;width:10px;display:inline-block;' });
  chevron.textContent = collapsed ? '▸' : '▾';
  var badge = el('div', { style:'flex:none;width:28px;height:28px;border-radius:50%;background:#2e8b57;color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;' });
  badge.textContent = ('0'+(idx+1)).slice(-2);
  badgeWrap.appendChild(chevron); badgeWrap.appendChild(badge);
  badgeWrap.addEventListener('click', (function(s){ return function(){ toggleCollapse(s.id); }; })(sec));

  var titleInput = el('input', { type:'text', value: sec.name, placeholder:'서류명 입력', style:'flex:1;min-width:0;border:none;background:transparent;font-size:16px;font-weight:700;color:#222;padding:4px 2px;' });
  titleInput.addEventListener('change', (function(s){ return function(e){ s.name = e.target.value; persistState(); }; })(sec));

  var delBtn = el('button', { type:'button', style:'flex:none;font-size:13px;color:#a33;background:none;padding:2px 4px;' });
  delBtn.textContent = '✕';
  delBtn.addEventListener('click', (function(s){ return function(){ removeSection(s.id); }; })(sec));

  head.appendChild(dragHandle); head.appendChild(badgeWrap); head.appendChild(titleInput); head.appendChild(delBtn);
  card.appendChild(head);

  if(collapsed){
    var summary = el('div', { style:'padding:2px 4px 2px 50px;font-size:12px;color:'+(sec.files.length&gt;0?'#2e8b57':'#a33')+';' });
    summary.textContent = sec.files.length&gt;0 ? ('  파일 ' + sec.files.length + '개 첨부됨') : '⚠ 미첨부';
    card.appendChild(summary);
    return card;
  }

  /* 연결형 탭 그룹 (3탭) */
  var tabGroup = el('div', { style:'border:1px solid #e5e2d8;border-radius:10px;overflow:hidden;' });
  var tabBar = el('div', { style:'display:flex;' });
  var tabDefs = [ ['upload','파일업로드'], ['deliver','전달사항'], ['example','예시보기'] ];
  var tabBtns = [];
  for(var t=0;t&lt;tabDefs.length;t++){
    var tb = el('button', { type:'button', className:'drc-tab-btn', 'data-tab':tabDefs[t][0], style:'flex:1;padding:8px 4px;font-size:12px;font-weight:700;background:#e9f0fa;color:#1a4d8a;' });
    tb.textContent = tabDefs[t][1];
    tabBar.appendChild(tb);
    tabBtns.push(tb);
  }
  tabGroup.appendChild(tabBar);

  var contentWrap = el('div', { style:'background:#fafaf7;padding:10px;' });

  /* 탭1: 파일업로드 */
  var uploadPane = el('div', { className:'drc-tab-pane', 'data-pane':'upload' });
  var drop = el('label', { style:'display:block;border:2px dashed #cfcabb;border-radius:10px;padding:14px;text-align:center;color:#888;font-size:12px;cursor:pointer;background:#fff;box-sizing:border-box;' });
  drop.textContent = '  파일을 드래그하거나 눌러서 업로드 (이미지→PDF 자동변환)';
  var input = el('input', { type:'file', accept:'image/*,application/pdf', multiple:true, style:'display:none;' });
  input.addEventListener('change', (function(s){ return function(e){ handleFiles(s, e.target.files); e.target.value=''; }; })(sec));
  drop.appendChild(input);
  drop.addEventListener('dragover', function(e){ e.preventDefault(); drop.style.background='#eef7ee'; });
  drop.addEventListener('dragleave', function(){ drop.style.background='#fff'; });
  drop.addEventListener('drop', (function(s){ return function(e){ e.preventDefault(); drop.style.background='#fff'; handleFiles(s, e.dataTransfer.files); }; })(sec));
  uploadPane.appendChild(drop);

  var uploadNote = el('textarea', { placeholder:'간단메모 (파일과 무관하게 자유롭게 메모)', style:'width:100%;box-sizing:border-box;padding:8px;font-size:12px;border:1px solid #ddd;border-radius:8px;height:44px;resize:vertical;margin-top:8px;' });
  uploadNote.value = sec.uploadNote || '';
  uploadNote.addEventListener('change', (function(s){ return function(e){ s.uploadNote = e.target.value; persistState(); }; })(sec));
  uploadPane.appendChild(uploadNote);

  var flist = el('div', { style:'margin-top:8px;display:flex;flex-direction:column;gap:8px;', 'data-sid': sec.id });
  for(var i=0;i&lt;sec.files.length;i++){ flist.appendChild(renderFileRow(sec, sec.files[i])); }
  uploadPane.appendChild(flist);
  contentWrap.appendChild(uploadPane);
  if(window.Sortable &amp;&amp; sec.files.length &gt; 1){
    Sortable.create(flist, {
      handle: '.drc-file-drag',
      animation: 150,
      onEnd: function(){
        var sid = flist.getAttribute('data-sid');
        var s = findSection(sid);
        var newFiles = [];
        var nodes = flist.querySelectorAll('.drc-file-row');
        for(var k=0;k&lt;nodes.length;k++){
          var fid = nodes[k].getAttribute('data-fid');
          for(var m=0;m&lt;s.files.length;m++){
            if(s.files[m].id === fid){ newFiles.push(s.files[m]); break; }
          }
        }
        s.files = newFiles;
        renumberAll();
        renderSections();
        persistState();
      }
    });
  }

  /* 탭2: 전달사항 (메모 + 체크리스트 + 관련링크) */
  var deliverPane = el('div', { className:'drc-tab-pane', 'data-pane':'deliver', style:'display:none;' });
  var deliverMemoLabel = el('div', { style:'font-size:12px;color:#999;font-weight:700;margin-bottom:4px;' });
  deliverMemoLabel.textContent = '전달사항메모';
  deliverPane.appendChild(deliverMemoLabel);
  var deliverMemo = el('textarea', { placeholder:'전달사항을 자유롭게 적어주세요', style:'width:100%;box-sizing:border-box;padding:9px;font-size:13px;border:1px solid #ddd;border-radius:8px;height:60px;resize:vertical;margin-bottom:10px;' });
  deliverMemo.value = sec.desc || '';
  deliverMemo.addEventListener('change', (function(s){ return function(e){ s.desc = e.target.value; persistState(); }; })(sec));
  deliverPane.appendChild(deliverMemo);

  var checkWrap = el('div', { style:'display:flex;flex-direction:column;gap:6px;margin-bottom:8px;' });
  if(!sec.checklist) sec.checklist = [];
  for(var c=0;c&lt;sec.checklist.length;c++){ checkWrap.appendChild(renderChecklistRow(sec, sec.checklist[c])); }
  deliverPane.appendChild(checkWrap);

  var addCheckBtn = el('button', { type:'button', style:'width:100%;padding:8px;font-size:12px;font-weight:700;color:#1a4d8a;background:#e9f0fa;border:1px dashed #1a4d8a;border-radius:8px;margin-bottom:10px;' });
  addCheckBtn.textContent = '+ 전달사항 항목추가';
  addCheckBtn.addEventListener('click', (function(s){ return function(){
    s.checklist.push({ id: uid(), text:'', checked:false });
    _activeTabMap[s.id] = 'deliver';
    renderSections(); persistState();
  }; })(sec));
  deliverPane.appendChild(addCheckBtn);

  var linkRow = el('div', { style:'display:flex;gap:6px;' });
  var linkInput = el('input', { type:'text', value: sec.link||'', placeholder:'관련 링크 연결', style:'flex:1;min-width:0;padding:9px;font-size:13px;border:1px solid #ddd;border-radius:8px;' });
  linkInput.addEventListener('change', (function(s){ return function(e){ s.link = e.target.value; persistState(); }; })(sec));
  var openBtn = el('button', { type:'button', style:'flex:none;padding:9px 12px;font-size:12px;background:#eee;border-radius:8px;' });
  openBtn.textContent = '열기';
  openBtn.addEventListener('click', (function(s){ return function(){ openUrl(s.link); }; })(sec));
  linkRow.appendChild(linkInput); linkRow.appendChild(openBtn);
  deliverPane.appendChild(linkRow);
  contentWrap.appendChild(deliverPane);

  /* 탭3: 예시보기 (예시링크 + 발급방법 + 예시파일 미리보기) */
  var examplePane = el('div', { className:'drc-tab-pane', 'data-pane':'example', style:'display:none;' });
  var exLinkRow = el('div', { style:'display:flex;gap:6px;margin-bottom:8px;' });
  var exLinkInput = el('input', { type:'text', value: sec.exampleLink||'', placeholder:'예시링크 (구글/이미지/블로그 등)', style:'flex:1;min-width:0;padding:9px;font-size:13px;border:1px solid #ddd;border-radius:8px;' });
  exLinkInput.addEventListener('change', (function(s){ return function(e){ s.exampleLink = e.target.value; persistState(); }; })(sec));
  var exOpenBtn = el('button', { type:'button', style:'flex:none;padding:9px 12px;font-size:12px;background:#eee;border-radius:8px;' });
  exOpenBtn.textContent = '열기';
  exOpenBtn.addEventListener('click', (function(s){ return function(){ openUrl(s.exampleLink); }; })(sec));
  exLinkRow.appendChild(exLinkInput); exLinkRow.appendChild(exOpenBtn);
  examplePane.appendChild(exLinkRow);

  var issueBox = el('textarea', { placeholder:'발급방법 안내', style:'width:100%;box-sizing:border-box;padding:9px;font-size:13px;border:1px solid #ddd;border-radius:8px;height:60px;margin-bottom:10px;' });
  issueBox.value = sec.issueMethod || '';
  issueBox.addEventListener('change', (function(s){ return function(e){ s.issueMethod = e.target.value; persistState(); }; })(sec));
  examplePane.appendChild(issueBox);

  if(sec.exampleFile){
    var previewWrap = el('div', { style:'border:1px solid #ddd;border-radius:8px;overflow:hidden;background:#fff;' });
    var previewHead = el('div', { style:'display:flex;justify-content:space-between;align-items:center;padding:8px 10px;background:#f2f2ee;font-size:12px;' });
    var pName = el('span', {}); pName.textContent = sec.exampleFile.name;
    var pDel = el('button', { type:'button', style:'color:#a33;background:none;font-size:12px;' });
    pDel.textContent = '삭제';
    pDel.addEventListener('click', (function(s){ return function(){ s.exampleFile = null; renderSections(); persistState(); }; })(sec));
    previewHead.appendChild(pName); previewHead.appendChild(pDel);
    var iframe = el('iframe', { src: sec.exampleFile.pdfDataUrl, style:'width:100%;height:320px;border:none;display:block;' });
    previewWrap.appendChild(previewHead); previewWrap.appendChild(iframe);
    examplePane.appendChild(previewWrap);
  } else {
    var exDrop = el('label', { style:'display:block;border:2px dashed #cfcabb;border-radius:10px;padding:16px;text-align:center;color:#888;font-size:13px;cursor:pointer;background:#fff;' });
    exDrop.textContent = '  예시 PDF/이미지 업로드 (요청자용 - 제출자에게 미리보기로 표시됩니다)';
    var exInput = el('input', { type:'file', accept:'image/*,application/pdf', style:'display:none;' });
    exInput.addEventListener('change', (function(s){ return function(e){ if(e.target.files[0]) handleExampleFile(s, e.target.files[0]); e.target.value=''; }; })(sec));
    exDrop.appendChild(exInput);
    examplePane.appendChild(exDrop);
  }
  contentWrap.appendChild(examplePane);

  tabGroup.appendChild(contentWrap);
  card.appendChild(tabGroup);

  for(var b=0;b&lt;tabBtns.length;b++){
    (function(btn){ btn.addEventListener('click', function(){
      var t = btn.getAttribute('data-tab');
      _activeTabMap[sec.id] = t;
      switchTab(card, t);
    }); })(tabBtns[b]);
  }
  switchTab(card, getActiveTab(sec.id));

  return card;
}

function renderChecklistRow(sec, item){
  var row = el('div', { style:'display:flex;align-items:center;gap:6px;' });
  var cb = el('input', { type:'checkbox' });
  cb.checked = !!item.checked;
  cb.addEventListener('change', function(e){ item.checked = e.target.checked; persistState(); });
  var txt = el('input', { type:'text', value: item.text||'', placeholder:'전달사항 입력', style:'flex:1;min-width:0;padding:8px;font-size:13px;border:1px solid #ddd;border-radius:8px;' });
  txt.addEventListener('change', function(e){ item.text = e.target.value; persistState(); });
  var del = el('button', { type:'button', style:'flex:none;font-size:12px;color:#a33;padding:4px 6px;' });
  del.textContent = '✕';
  del.addEventListener('click', function(){
    sec.checklist = sec.checklist.filter(function(x){ return x.id !== item.id; });
    renderSections(); persistState();
  });
  row.appendChild(cb); row.appendChild(txt); row.appendChild(del);
  return row;
}


function switchTab(card, tab){
  var btns = card.querySelectorAll('.drc-tab-btn');
  var panes = card.querySelectorAll('.drc-tab-pane');
  for(var i=0;i&lt;btns.length;i++){
    var isActive = btns[i].getAttribute('data-tab') === tab;
    btns[i].style.background = isActive ? '#1a4d8a' : '#e9f0fa';
    btns[i].style.color = isActive ? '#fff' : '#1a4d8a';
  }
  for(var j=0;j&lt;panes.length;j++){
    panes[j].style.display = panes[j].getAttribute('data-pane') === tab ? 'block' : 'none';
  }
}

function renderFileRow(sec, f){
  var row = el('div', { className:'drc-file-row', style:'background:#f6f6f2;border-radius:8px;padding:8px;', 'data-fid': f.id });
  var topRow = el('div', { style:'display:flex;align-items:center;gap:8px;' });

  var dragHandle = el('div', { className:'drc-file-drag', style:'flex:none;font-size:15px;color:#bbb;cursor:grab;padding:2px;' });
  dragHandle.textContent = '⠿';

  var thumb = el('div', { style:'flex:none;width:36px;height:36px;border-radius:6px;overflow:hidden;background:#fff;border:1px solid #ddd;display:flex;align-items:center;justify-content:center;font-size:16px;' });
  if(f.thumbDataUrl){
    thumb.appendChild(el('img', { src: f.thumbDataUrl, style:'width:100%;height:100%;object-fit:cover;display:block;' }));
  } else {
    thumb.textContent = ' ';
  }

  var nameInput = el('input', { type:'text', value: f.name, style:'flex:1;min-width:0;border:none;background:transparent;font-size:13px;color:#333;' });
  nameInput.addEventListener('change', (function(s,file){ return function(e){
    file.baseName = e.target.value.replace(/^\d+_\d+\.\s*/, '').replace(/^\[\d+\]\s*/, '');
    renumberAll(); renderSections(); persistState();
  }; })(sec,f));

  var extBadge = el('span', { style:'flex:none;font-size:10px;font-weight:700;color:#1a4d8a;background:#e9f0fa;padding:2px 6px;border-radius:4px;' });
  extBadge.textContent = 'PDF';

  var sizeTag = el('span', { style:'flex:none;font-size:11px;color:#999;' });
  sizeTag.textContent = fmtBytes(f.origSize);

  var dlBtn = el('button', { type:'button', style:'flex:none;font-size:12px;color:#1a4d8a;padding:4px 6px;background:none;' });
  dlBtn.textContent = '⬇';
  dlBtn.addEventListener('click', (function(file){ return function(){
    showToast('변환 중...');
    convertFileToPdfBytes(file).then(function(bytes){
      downloadBytes(bytes, file.name + '.pdf');
    }).catch(function(){ showToast('다운로드 실패'); });
  }; })(f));

  var delBtn = el('button', { type:'button', style:'flex:none;font-size:12px;color:#a33;padding:4px 6px;background:none;' });
  delBtn.textContent = '✕';
  delBtn.addEventListener('click', (function(s,file){ return function(){
    s.files = s.files.filter(function(x){ return x.id !== file.id; });
    renumberAll(); renderSections(); renderProgress(); renderCompressControl(); persistState();
  }; })(sec,f));

  topRow.appendChild(dragHandle); topRow.appendChild(thumb); topRow.appendChild(nameInput); topRow.appendChild(extBadge); topRow.appendChild(sizeTag); topRow.appendChild(dlBtn); topRow.appendChild(delBtn);
  row.appendChild(topRow);

  var memoInput = el('input', { type:'text', value: f.memo||'', placeholder:'파일 메모 (간단히)', style:'width:100%;box-sizing:border-box;margin-top:6px;padding:6px 8px;font-size:12px;border:1px solid #ddd;border-radius:6px;' });
  memoInput.addEventListener('change', (function(file){ return function(e){ file.memo = e.target.value; persistState(); }; })(f));
  row.appendChild(memoInput);

  return row;
}

/* ===== 섹션 이동/추가/삭제 ===== */

function moveSection(id, dir){
  var i;
  for(i=0;i&lt;STATE.sections.length;i++){ if(STATE.sections[i].id === id) break; }
  var ni = i + dir;
  if(ni &lt; 0 || ni &gt;= STATE.sections.length) return;
  var tmp = STATE.sections[i];
  STATE.sections[i] = STATE.sections[ni];
  STATE.sections[ni] = tmp;
  renumberAll(); renderSections(); persistState();
}
function addSection(){
  STATE.sections.push({ id: uid(), name: '', desc: '', link: '', exampleLink: '', issueMethod: '', checklist: [], uploadNote:'', exampleFile: null, files: [] });
  renumberAll(); renderSections(); renderProgress(); persistState();
}
function removeSection(id){
  STATE.sections = STATE.sections.filter(function(s){ return s.id !== id; });
  renumberAll(); renderSections(); renderProgress(); renderCompressControl(); persistState();
}

/* ===== 파일 업로드(원본 보관, 변환은 지연) ===== */

function handleFiles(sec, fileList){
  for(var i=0;i&lt;fileList.length;i++){ processOneFile(sec, fileList[i]); }
}

function processOneFile(sec, file){
  var reader = new FileReader();
  reader.onload = function(e){
    var buf = e.target.result;
    if(file.type === 'application/pdf'){
      PDFLib.PDFDocument.load(buf).then(function(doc){
        addFileToSection(sec, file.name, 'pdf', doc.getPageCount(), buf, null);
      }).catch(function(){ showToast('PDF 읽기 실패: ' + file.name); });
    } else if(file.type.indexOf('image/') === 0){
      makeThumbnail(buf).then(function(thumb){
        addFileToSection(sec, file.name.replace(/\.[^.]+$/, '') + '.pdf', 'image', 1, buf, thumb);
      }).catch(function(){
        addFileToSection(sec, file.name.replace(/\.[^.]+$/, '') + '.pdf', 'image', 1, buf, null);
      });
    } else {
      showToast('지원하지 않는 형식: ' + file.name);
    }
  };
  reader.readAsArrayBuffer(file);
}

function makeThumbnail(arrayBuffer){
  return new Promise(function(resolve, reject){
    var blob = new Blob([arrayBuffer]);
    var url = URL.createObjectURL(blob);
    var img = new Image();
    img.onload = function(){
      var w = 80, h = Math.round(80 * img.height / img.width);
      var canvas = document.createElement('canvas');
      canvas.width = w; canvas.height = h;
      canvas.getContext('2d').drawImage(img, 0, 0, w, h);
      URL.revokeObjectURL(url);
      resolve(canvas.toDataURL('image/jpeg', 0.5));
    };
    img.onerror = reject;
    img.src = url;
  });
}

function addFileToSection(sec, originalName, kind, pageCount, buf, thumb){
  var f = {
    id: uid(), baseName: originalName, name: originalName,
    kind: kind, pages: pageCount, memo:'', thumbDataUrl: thumb || null,
    rawBase64: arrayBufferToBase64(buf), origSize: buf.byteLength
  };
  sec.files.push(f);
  renumberAll(); renderSections(); renderProgress(); renderCompressControl(); persistState();
  showToast('업로드 완료: ' + originalName);
}

function handleExampleFile(sec, file){
  var reader = new FileReader();
  reader.onload = function(e){
    var buf = e.target.result;
    if(file.type === 'application/pdf'){
      sec.exampleFile = { name: file.name, pdfDataUrl: 'data:application/pdf;base64,' + arrayBufferToBase64(buf) };
      renderSections(); persistState();
    } else if(file.type.indexOf('image/') === 0){
      imageBufferToPdfBytes(buf, COMPRESS_PRESETS.standard).then(function(bytes){
        sec.exampleFile = { name: file.name.replace(/\.[^.]+$/, '') + '.pdf', pdfDataUrl: 'data:application/pdf;base64,' + arrayBufferToBase64(bytes.buffer || bytes) };
        renderSections(); persistState();
      });
    } else { showToast('지원하지 않는 형식입니다'); }
  };
  reader.readAsArrayBuffer(file);
}

/* ===== 변환(지연 실행, 압축강도 반영) ===== */

function convertFileToPdfBytes(file){
  if(file.kind === 'pdf'){
    return Promise.resolve(base64ToUint8(file.rawBase64));
  }
  var preset = COMPRESS_PRESETS[STATE.options.compressLevel || 'standard'];
  var raw = base64ToUint8(file.rawBase64);
  return imageBufferToPdfBytes(raw.buffer, preset);
}

function imageBufferToPdfBytes(arrayBuffer, preset){
  return new Promise(function(resolve, reject){
    var blob = new Blob([arrayBuffer]);
    var url = URL.createObjectURL(blob);
    var img = new Image();
    img.onload = function(){
      var w = img.width, h = img.height;
      if(w &gt; preset.maxWidth){ h = Math.round(h * (preset.maxWidth/w)); w = preset.maxWidth; }
      var canvas = document.createElement('canvas');
      canvas.width = w; canvas.height = h;
      var ctx = canvas.getContext('2d');
      ctx.drawImage(img, 0, 0, w, h);
      var jpegUrl = canvas.toDataURL('image/jpeg', preset.quality);
      URL.revokeObjectURL(url);
      var b64 = jpegUrl.split(',')[1];
      var bin = atob(b64);
      var bytes = new Uint8Array(bin.length);
      for(var i=0;i&lt;bin.length;i++){ bytes[i] = bin.charCodeAt(i); }
      PDFLib.PDFDocument.create().then(function(pdfDoc){
        return pdfDoc.embedJpg(bytes).then(function(jpgImg){
          var page = pdfDoc.addPage([jpgImg.width, jpgImg.height]);
          page.drawImage(jpgImg, { x:0, y:0, width: jpgImg.width, height: jpgImg.height });
          return pdfDoc.save();
        });
      }).then(resolve).catch(reject);
    };
    img.onerror = reject;
    img.src = url;
  });
}

/* ===== 전체취합 ===== */

function mergeAndDownload(){
  var flat = flattenFiles();
  if(flat.length === 0){ showToast('업로드된 파일이 없습니다'); return; }
  showToast('취합 중...');
  var chain = PDFLib.PDFDocument.create();
  chain.then(function(mergedDoc){
    var p = Promise.resolve();
    flat.forEach(function(f){
      p = p.then(function(){
        return convertFileToPdfBytes(f).then(function(bytes){
          return PDFLib.PDFDocument.load(bytes).then(function(src){
            return mergedDoc.copyPages(src, src.getPageIndices()).then(function(pages){
              pages.forEach(function(pg){ mergedDoc.addPage(pg); });
            });
          });
        });
      });
    });
    return p.then(function(){ return mergedDoc; });
  }).then(function(mergedDoc){
    return mergedDoc.embedFont(PDFLib.StandardFonts.Helvetica).then(function(font){
      var pages = mergedDoc.getPages();
      var total = pages.length;
      pages.forEach(function(p, idx){
        var sz = p.getSize();
        if(STATE.options.pagenum){
          p.drawText((idx+1) + ' / ' + total, { x: sz.width-70, y:16, size:9, font:font, color: PDFLib.rgb(0.4,0.4,0.4) });
        }
        if(STATE.options.watermark){
          p.drawText(STATE.title || '문서', { x:12, y: sz.height-18, size:8, font:font, color: PDFLib.rgb(0.6,0.6,0.6), opacity:0.7 });
        }
      });
      return mergedDoc.save();
    });
  }).then(function(bytes){
    downloadBytes(bytes, (STATE.title||'취합서류') + '_' + todayStr() + '.pdf');
    showToast('취합 완료 · 실제 용량 ' + fmtBytes(bytes.length));
  }).catch(function(err){
    showToast('취합 실패: ' + (err &amp;&amp; err.message ? err.message : '오류'));
  });
}

function saveFilesSeparately(){
  var flat = flattenFiles();
  if(flat.length === 0){ showToast('업로드된 파일이 없습니다'); return; }
  if(!window.JSZip){ showToast('압축 기능을 불러오지 못했습니다'); return; }
  showToast('압축 파일 만드는 중...');
  var zip = new JSZip();
  var usedNames = {};
  var p = Promise.resolve();
  flat.forEach(function(f){
    p = p.then(function(){
      return convertFileToPdfBytes(f).then(function(bytes){
        var zname = f.name + '.pdf';
        if(usedNames[zname]){ usedNames[zname]++; zname = f.name + '_' + usedNames[zname] + '.pdf'; }
        else { usedNames[zname] = 1; }
        zip.file(zname, bytes);
      });
    });
  });
  p.then(function(){
    return zip.generateAsync({ type:'uint8array', compression:'DEFLATE', compressionOptions:{ level:6 } });
  }).then(function(content){
    downloadBytes(content, (STATE.title||'서류') + '_개별파일_' + todayStr() + '.zip', 'application/zip');
    showToast('압축 저장 완료 · 실제 용량 ' + fmtBytes(content.length));
  }).catch(function(){ showToast('압축 저장 실패'); });
}

/* ===== 보내기(링크/QR/TinyURL) ===== */

function shareLink(){
  var hasFile = false;
  for(var i=0;i&lt;STATE.sections.length;i++){ if(STATE.sections[i].files.length&gt;0){ hasFile = true; break; } }
  $('drc-share-modal').style.display = 'block';
  document.body.style.overflow = 'hidden';
  var box = $('drc-share-box');
  box.innerHTML = '';
  if(hasFile){
    var warn = el('div', { style:'color:#a33;font-size:13px;padding:10px;background:#fdecec;border-radius:8px;' });
    warn.textContent = '파일이 첨부된 상태에서는 링크 공유가 불가합니다. (요청 항목만 있을 때 사용)';
    box.appendChild(warn);
    return;
  }
  var tpl = { title: STATE.title, requesterMsg: STATE.requesterMsg, submitterMsg: STATE.submitterMsg, guideCollapsed: STATE.guideCollapsed, sections: [] };
  for(var i=0;i&lt;STATE.sections.length;i++){
    var s = STATE.sections[i];
    tpl.sections.push({ name: s.name, desc: s.desc, link: s.link, exampleLink: s.exampleLink, issueMethod: s.issueMethod, checklist: s.checklist, uploadNote: s.uploadNote });
  }
  var compressed = LZString.compressToEncodedURIComponent(JSON.stringify(tpl));
  var url = window.location.origin + window.location.pathname + '?tpl=' + compressed;

  var urlDiv = el('div', { style:'margin-bottom:8px;padding:8px;background:#f7f7f5;border-radius:8px;' });
  urlDiv.textContent = url.length &gt; 300 ? '(주소가 길어 짧은 URL 사용을 권장합니다)' : url;
  box.appendChild(urlDiv);

  var btnRow = el('div', { style:'display:flex;gap:6px;flex-wrap:wrap;' });
  var copyBtn = el('button', { type:'button', style:'padding:8px 12px;font-size:12px;background:#eee;border-radius:6px;' });
  copyBtn.textContent = '주소 복사';
  copyBtn.addEventListener('click', function(){ copyToClipboard(url); });
  var tinyBtn = el('button', { type:'button', style:'padding:8px 12px;font-size:12px;background:#eee;border-radius:6px;' });
  tinyBtn.textContent = '짧은 URL 만들기';
  tinyBtn.addEventListener('click', function(){
    fetch('https://tinyurl.com/api-create.php?url=' + encodeURIComponent(url))
      .then(function(r){ return r.text(); })
      .then(function(short){
        urlDiv.textContent = short;
        copyBtn.onclick = function(){ copyToClipboard(short); };
        drawQr(short);
      }).catch(function(){ showToast('짧은 URL 생성 실패'); });
  });
  btnRow.appendChild(copyBtn); btnRow.appendChild(tinyBtn);
  box.appendChild(btnRow);

  var qrHolder = el('div', { id:'drc-qr-holder', style:'margin-top:10px;text-align:center;' });
  box.appendChild(qrHolder);
  drawQr(url);
}

function drawQr(url){
  var holder = $('drc-qr-holder');
  if(!holder || !window.QRCode) return;
  holder.innerHTML = '';
  new QRCode(holder, { text: url, width:140, height:140 });
}

function copyToClipboard(text){
  if(navigator.clipboard &amp;&amp; navigator.clipboard.writeText){
    navigator.clipboard.writeText(text).then(function(){ showToast('복사됨'); }).catch(function(){ fallbackCopy(text); });
  } else {
    fallbackCopy(text);
  }
}
function fallbackCopy(text){
  var ta = document.createElement('textarea');
  ta.value = text; ta.style.position='fixed'; ta.style.left='-999px';
  document.body.appendChild(ta); ta.focus(); ta.select();
  try{ document.execCommand('copy'); showToast('복사됨'); }catch(e){ showToast('복사 실패'); }
  document.body.removeChild(ta);
}

/* ===== 수정가능파일 저장/불러오기 (JSON) ===== */

function exportEditableJson(){
  var dataStr = JSON.stringify(STATE);
  var blob = new Blob([dataStr], { type:'application/json' });
  var url = URL.createObjectURL(blob);
  var a = document.createElement('a');
  a.href = url; a.download = (STATE.title||'서류요청') + '_수정가능_' + todayStr() + '.json';
  document.body.appendChild(a); a.click(); document.body.removeChild(a);
  window.setTimeout(function(){ URL.revokeObjectURL(url); }, 3000);
  showToast('수정가능 파일 저장 완료 · 0-1.kr/29 에서 다시 불러와 수정할 수 있어요');
}

function importEditableJson(file){
  var reader = new FileReader();
  reader.onload = function(e){
    try{
      var parsed = JSON.parse(e.target.result);
      if(!parsed || !parsed.sections) throw new Error('invalid');
      STATE = parsed;
      if(!STATE.options) STATE.options = defaultOptions();
      renderAll();
      persistState(true);
      showToast('파일 불러오기 완료 · 0-1.kr/29 에서 언제든 다시 불러와 수정할 수 있어요');
    }catch(err){ showToast('파일을 읽을 수 없습니다(json 형식만 지원)'); }
  };
  reader.readAsText(file);
}

/* ===== 이벤트 바인딩 ===== */

function bindEvents(){
  $('drc-btn-add-section').addEventListener('click', addSection);

  $('drc-toggle-options').addEventListener('click', function(){
    var panel = $('drc-options-panel');
    var open = panel.style.display !== 'none';
    panel.style.display = open ? 'none' : 'block';
    this.textContent = (open?'▸':'▾') + ' 취합 옵션 ' + (open?'펼치기':'접기');
  });

  $('drc-input-title').addEventListener('change', function(e){ STATE.title = e.target.value; persistState(); });
  $('drc-toggle-guide').addEventListener('click', function(){ STATE.guideCollapsed = !STATE.guideCollapsed; applyGuideCollapsed(); persistState(); });
  $('drc-input-req-msg').addEventListener('change', function(e){ STATE.requesterMsg = e.target.value; persistState(); });
  $('drc-input-sub-msg').addEventListener('change', function(e){ STATE.submitterMsg = e.target.value; persistState(); });
  $('drc-btn-share-top').addEventListener('click', shareLink);
  $('drc-share-close').addEventListener('click', function(){ $('drc-share-modal').style.display='none'; document.body.style.overflow=''; });
  $('drc-opt-prefix').addEventListener('change', function(e){
    STATE.options.prefixNaming = e.target.checked;
    renumberAll(); renderSections(); persistState();
  });
  $('drc-opt-watermark').addEventListener('change', function(e){ STATE.options.watermark = e.target.checked; persistState(); });
  $('drc-opt-pagenum').addEventListener('change', function(e){ STATE.options.pagenum = e.target.checked; persistState(); });

  $('drc-btn-merge-top').addEventListener('click', mergeAndDownload);
  $('drc-btn-merge').addEventListener('click', mergeAndDownload);
  $('drc-btn-export-top').addEventListener('click', exportEditableJson);
  $('drc-btn-export-json').addEventListener('click', exportEditableJson);
  $('drc-btn-export-tip').addEventListener('click', function(e){
    e.stopPropagation();
    var b = $('drc-export-tip-bubble');
    b.style.display = b.style.display === 'none' ? 'block' : 'none';
  });
  $('drc-btn-save-separate').addEventListener('click', saveFilesSeparately);

  var importInput = $('drc-import-file-input');
  function triggerImport(){ importInput.click(); }
  $('drc-btn-import-top').addEventListener('click', triggerImport);
  $('drc-btn-import-json').addEventListener('click', triggerImport);
  importInput.addEventListener('change', function(e){
    if(e.target.files[0]) importEditableJson(e.target.files[0]);
    e.target.value = '';
  });

  $('drc-btn-manual').addEventListener('click', function(){ $('drc-manual-modal').style.display='block'; document.body.style.overflow='hidden'; });
  $('drc-manual-close').addEventListener('click', function(){ $('drc-manual-modal').style.display='none'; document.body.style.overflow=''; });
}

/* ===== 초기화 ===== */

function init(){
  bindEvents();
  loadInitialState().then(function(state){
    STATE = state;
    if(!STATE.options) STATE.options = defaultOptions();
    renderAll();
    persistState(true);
  }).catch(function(){
    STATE = defaultState();
    renderAll();
  });
}

if(document.readyState === 'loading'){ document.addEventListener('DOMContentLoaded', init); } else { init(); }

})();
&lt;/script&gt;</description>
      <category>모두의계산기/PDF취합관련</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/23</guid>
      <comments>https://0-1.kr/23#entry23comment</comments>
      <pubDate>Thu, 12 Nov 2020 21:11:37 +0900</pubDate>
    </item>
    <item>
      <title>모두의 팝업타이머_V5(0-1.kr/22)</title>
      <link>https://0-1.kr/22</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
&lt;title&gt;발표장타이머 | 스타트업EX&lt;/title&gt;
&lt;style&gt;
*{margin:0;padding:0;box-sizing:border-box;}
body{background:#f0f2f5;color:#222;font-family:'Malgun Gothic','Apple SD Gothic Neo',sans-serif;}

/* ===== 메인 페이지 ===== */
#page-main{display:none;padding:0 0 60px;background:#f0f2f5;min-height:100vh;}
.main-wrap{max-width:600px;margin:0 auto;padding:0 16px;}

/* 상단 헤더 */
.main-top{display:flex;align-items:center;justify-content:space-between;padding:20px 0 14px;border-bottom:1px solid #e2e8f0;margin-bottom:16px;}
.main-top-left{}
.main-title{font-size:22px;font-weight:900;letter-spacing:-0.5px;color:#1a1a2e;line-height:1;}
.main-version{font-size:11px;color:#aab;margin-top:3px;font-weight:500;}
.main-share-btn{display:flex;align-items:center;gap:6px;padding:8px 14px;background:#1a1a2e;border:none;border-radius:10px;color:#fff;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;transition:all .2s;}
.main-share-btn:hover{background:#2d2d4e;transform:translateY(-1px);}
.main-share-btn svg{width:16px;height:16px;}

/* 설명 + 사용방법 */
.main-desc{font-size:14px;color:#556;margin-bottom:14px;line-height:1.6;}
.main-desc b{color:#3b82f6;}
.accordion{background:#fff;border:1px solid #e2e8f0;border-radius:12px;margin-bottom:14px;overflow:hidden;box-shadow:0 1px 4px #0001;}
.accordion-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;cursor:pointer;font-size:14px;font-weight:700;color:#1a1a2e;}
.accordion-head:hover{background:#f8fafc;}
.accordion-arrow{font-size:12px;color:#aab;transition:transform .2s;}
.accordion-arrow.open{transform:rotate(180deg);}
.accordion-body{display:none;padding:0 16px 14px;font-size:13px;color:#556;line-height:1.9;border-top:1px solid #f0f2f5;}
.accordion-body.open{display:block;}
.accordion-body b{color:#3b82f6;}
.accordion-body .step{display:flex;gap:10px;margin-bottom:8px;align-items:flex-start;}
.accordion-body .step-num{width:22px;height:22px;background:#3b82f6;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;flex-shrink:0;margin-top:1px;}

/* 미리보기 */
.preview-wrap{background:#fff;border:1px solid #e2e8f0;border-radius:14px;overflow:hidden;margin-bottom:16px;box-shadow:0 2px 12px #0002;}
.preview-head{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:#1a1a2e;}
.preview-head-title{font-size:13px;font-weight:700;color:rgba(255,255,255,0.7);}
.preview-tabs{display:flex;gap:4px;}
.preview-tab{padding:4px 10px;background:rgba(255,255,255,0.08);border:none;border-radius:6px;color:rgba(255,255,255,0.45);font-size:11px;font-weight:600;cursor:pointer;font-family:inherit;transition:all .15s;}
.preview-tab.on{background:rgba(96,165,250,0.25);color:#60a5fa;}
.preview-body{height:220px;background:#1a1a2e;display:flex;align-items:center;justify-content:center;flex-direction:column;position:relative;overflow:hidden;}
.preview-clock{text-align:center;}
.preview-clock .p-hm{font-size:64px;font-weight:200;color:#fff;letter-spacing:4px;line-height:1;}
.preview-clock .p-sec{font-size:22px;color:rgba(255,255,255,0.5);margin-top:4px;}
.preview-clock .p-date{font-size:13px;color:rgba(255,255,255,0.4);margin-top:6px;}
.preview-timer{text-align:center;}
.preview-timer .p-tmr{font-size:64px;font-weight:100;color:#fff;letter-spacing:6px;line-height:1;}
.preview-timer .p-tmr-st{font-size:13px;color:rgba(255,255,255,0.4);margin-top:8px;}
.preview-timer .p-tmr-btns{display:flex;gap:8px;margin-top:14px;justify-content:center;}
.preview-timer .p-btn{padding:8px 18px;border:none;border-radius:8px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;}
.preview-sw{text-align:center;}
.preview-sw .p-sw{font-size:56px;font-weight:200;color:#fff;letter-spacing:4px;}
.preview-sw .p-sw-ms{font-size:28px;color:rgba(255,255,255,0.4);}
.preview-sw .p-sw-btns{display:flex;gap:8px;margin-top:14px;justify-content:center;}
.preview-footer{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:#111827;border-top:1px solid rgba(255,255,255,0.06);}
.preview-footer-btns{display:flex;gap:6px;}
.pf-btn{padding:5px 10px;background:rgba(255,255,255,0.07);border:1px solid rgba(255,255,255,0.12);color:rgba(255,255,255,0.4);border-radius:6px;font-size:11px;cursor:pointer;font-family:inherit;}
.pf-btn.on{color:#60a5fa;background:rgba(96,165,250,0.12);border-color:rgba(96,165,250,0.3);}
.preview-wm{font-size:10px;color:rgba(255,255,255,0.15);}

/* 버튼 */
.main-btns{display:flex;gap:12px;margin:16px 0;}
.main-btn{flex:1;padding:18px 8px;border:none;border-radius:14px;font-size:16px;font-weight:800;cursor:pointer;transition:all .2s;font-family:inherit;}
.main-btn-full{background:linear-gradient(135deg,#3b82f6,#1d4ed8);color:#fff;box-shadow:0 6px 24px #3b82f640;}
.main-btn-full:hover{transform:translateY(-2px);box-shadow:0 8px 32px #3b82f660;}
.main-btn-popup{background:linear-gradient(135deg,#10b981,#059669);color:#fff;box-shadow:0 6px 24px #10b98140;}
.main-btn-popup:hover{transform:translateY(-2px);box-shadow:0 8px 32px #10b98160;}

/* 기능카드 */
.feat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0;}
.feat-card{background:#fff;border:1px solid #e8ecf0;border-radius:14px;padding:14px 13px;box-shadow:0 1px 4px #0001;}
.feat-icon{font-size:24px;margin-bottom:7px;}
.feat-title{font-size:13px;font-weight:700;color:#1a1a2e;margin-bottom:3px;}
.feat-desc{font-size:12px;color:#778;line-height:1.6;}
.key-box{background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:12px 16px;margin:14px 0;box-shadow:0 1px 4px #0001;}
.key-box-title{font-size:11px;font-weight:700;color:#aab;letter-spacing:1px;text-transform:uppercase;margin-bottom:8px;}
.key-list{display:flex;gap:6px;flex-wrap:wrap;}
.key-badge{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:6px;padding:4px 10px;font-size:12px;color:#556;}
.ad-wrap{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:10px;padding:12px;text-align:center;margin:14px 0;min-height:60px;display:flex;align-items:center;justify-content:center;}
.ad-label{font-size:11px;color:#bbb;}

/* 하단 푸터 */
.main-footer{text-align:center;margin-top:32px;padding:24px 0;border-top:2px solid #e2e8f0;}
.main-footer-brand{font-size:18px;font-weight:900;color:#1a1a2e;letter-spacing:-0.5px;}
.main-footer-brand span{color:#3b82f6;}
.main-footer-sub{font-size:12px;color:#aab;margin-top:4px;}
.main-footer-sub a{color:#3b82f6;text-decoration:none;}

/* QR 모달 */
#qr-modal{display:none;position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,0.55);align-items:center;justify-content:center;}
#qr-modal.on{display:flex;}
.qr-box{background:#fff;border-radius:20px;padding:28px 24px;max-width:340px;width:90%;text-align:center;box-shadow:0 20px 60px #0003;}
.qr-title{font-size:17px;font-weight:800;color:#1a1a2e;margin-bottom:4px;}
.qr-sub{font-size:12px;color:#778;margin-bottom:16px;}
#qr-canvas{margin:0 auto 16px;display:block;}
.qr-url{font-size:11px;color:#556;word-break:break-all;background:#f8fafc;border-radius:8px;padding:8px;margin-bottom:14px;font-family:monospace;}
.qr-btns{display:flex;gap:8px;}
.qr-btn{flex:1;padding:10px;border:none;border-radius:10px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit;}
.qr-btn-copy{background:#1a1a2e;color:#fff;}
.qr-btn-close{background:#f0f2f5;color:#556;}

/* ===== 앱 화면 — 티스토리 스킨 완전 차단 ===== */
#page-app{
  display:none;
  position:fixed!important;
  top:0!important;left:0!important;right:0!important;bottom:0!important;
  width:100vw!important;height:100vh!important;
  z-index:2147483647!important;
  flex-direction:column;
  background:#1a1a2e;
  overflow:hidden;
}
/* 배경 */
#app-bg{position:absolute;inset:0;background-size:cover;background-position:center;z-index:0;transition:filter .3s;}
#app-bg-overlay{position:absolute;inset:0;z-index:1;transition:background .3s;}

/* 탭바 */
#tab-bar{position:relative;z-index:2;display:flex;background:rgba(255,255,255,0.07);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,0.1);flex-shrink:0;height:44px;transition:height .2s,opacity .2s;}
#tab-bar.hidden{height:0!important;opacity:0;overflow:hidden;pointer-events:none;}
#tab-bar button{flex:1;background:none;border:none;border-bottom:2px solid transparent;color:rgba(255,255,255,0.4);font-size:12px;font-weight:700;cursor:pointer;transition:all .18s;font-family:inherit;}
#tab-bar button.on{color:#fff;border-bottom-color:#60a5fa;}
#tab-bar button:hover{color:rgba(255,255,255,0.8);background:rgba(255,255,255,0.05);}
/* 메뉴 숨김 토글 버튼 */
#menu-toggle{position:absolute;top:50%;right:10px;transform:translateY(-50%);z-index:200;width:28px;height:28px;background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.2);border-radius:50%;color:rgba(255,255,255,0.5);font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;}
#menu-toggle:hover{background:rgba(255,255,255,0.2);color:#fff;}
/* 메뉴 숨겼을때 복원 버튼 */
#menu-restore{position:absolute;bottom:50px;right:10px;z-index:200;padding:6px 12px;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.2);border-radius:20px;color:rgba(255,255,255,0.6);font-size:11px;cursor:pointer;display:none;backdrop-filter:blur(8px);}
#menu-restore:hover{background:rgba(0,0,0,0.7);color:#fff;}

#main-area{flex:1;position:relative;overflow:hidden;z-index:2;min-height:0;}
.tab-panel{display:none;position:absolute;inset:0;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;padding:8px 12px;}
.tab-panel.on{display:flex;}

/* ===== 시계 — 3단 레이아웃 ===== */
#tab-clock{justify-content:center;gap:0;padding:4px 8px;overflow:hidden;}
#clk-info{text-align:center;margin-bottom:6px;flex-shrink:0;}
#clk-info-row1{font-size:13px;color:rgba(255,255,255,0.5);letter-spacing:0.5px;font-weight:400;line-height:1.8;}
#clk-info-row2{font-size:11px;color:rgba(255,255,255,0.28);margin-top:1px;letter-spacing:0.5px;}
#clk-date{font-size:18px;color:rgba(255,255,255,0.7);margin-top:4px;font-weight:600;letter-spacing:0.5px;}
/* 시:분 — fit-content로 가로폭 최대 활용 */
#clk-hm{text-align:center;line-height:1;text-shadow:0 2px 24px rgba(0,0,0,0.5);
  transition:color .4s;letter-spacing:2px;font-weight:200;
  width:100%;white-space:nowrap;flex-shrink:0;
  /* 가로폭 꽉차게: viewport 너비 기준 font-size 자동계산 */
}
#clk-sec{text-align:center;margin-top:4px;letter-spacing:3px;font-weight:300;
  text-shadow:0 1px 12px rgba(0,0,0,0.5);flex-shrink:0;}
#clk-bottom{position:absolute;bottom:0;left:0;right:0;padding:8px 14px;pointer-events:none;}
#clk-fixed{text-align:center;min-height:20px;margin-bottom:4px;text-shadow:0 1px 8px #0006;font-weight:500;}
#clk-ticker-wrap{overflow:hidden;white-space:nowrap;display:none;background:rgba(0,0,0,0.25);border-radius:6px;padding:4px 0;pointer-events:auto;}
#clk-ticker-inner{display:inline-block;animation:marquee 16s linear infinite;color:#60a5fa;padding:0 12px;}
@keyframes marquee{0%{transform:translateX(100vw);}100%{transform:translateX(-100%);}}

/* ===== 타이머 ===== */
#tab-timer{justify-content:center;gap:0;padding:6px 12px;}
#tmr-display{text-align:center;line-height:1;text-shadow:0 2px 24px rgba(0,0,0,0.6);transition:color .3s,font-size .3s;font-weight:100;letter-spacing:6px;max-width:100%;overflow:hidden;flex-shrink:0;}
#tmr-display.w1{color:#fbbf24;}
#tmr-display.w2{color:#f97316;}
#tmr-display.w3{color:#ef4444;animation:blink .7s infinite;}
@keyframes blink{0%,100%{opacity:1;}50%{opacity:.15};}
#tmr-state{font-size:13px;color:rgba(255,255,255,0.35);margin-top:6px;text-align:center;letter-spacing:2px;font-weight:500;flex-shrink:0;}
/* 스핀 UI */
#tmr-spin-wrap{display:flex;align-items:center;justify-content:center;gap:6px;margin-bottom:10px;flex-shrink:0;}
.tmr-spin-group{display:flex;flex-direction:column;align-items:center;gap:2px;}
.tmr-spin-up,.tmr-spin-dn{width:36px;height:26px;background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.15);color:rgba(255,255,255,0.5);border-radius:7px;cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center;transition:all .12s;font-family:inherit;}
.tmr-spin-up:hover,.tmr-spin-dn:hover{background:rgba(96,165,250,0.25);border-color:#60a5fa;color:#fff;}
.tmr-spin-val{font-size:28px;font-weight:300;color:#fff;line-height:1;min-width:52px;text-align:center;letter-spacing:2px;}
.tmr-spin-lbl{font-size:10px;color:rgba(255,255,255,0.28);margin-top:1px;letter-spacing:1px;}
.tmr-spin-colon{font-size:28px;color:rgba(255,255,255,0.3);margin-bottom:16px;font-weight:200;}

/* ===== 스톱워치 — 2열 레이아웃 ===== */
#sw-left{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px;}
#sw-display{text-align:center;text-shadow:0 2px 20px rgba(0,0,0,0.5);font-weight:200;letter-spacing:4px;transition:font-size .3s;overflow:hidden;flex-shrink:0;line-height:1;}
#sw-ms{color:rgba(255,255,255,0.35);}
#sw-btns{display:flex;gap:8px;margin-top:14px;flex-shrink:0;justify-content:center;flex-wrap:wrap;}
#sw-right{width:200px;flex-shrink:0;display:flex;flex-direction:column;height:100%;padding:8px 8px 8px 0;}
#lap-header{font-size:11px;font-weight:700;color:rgba(255,255,255,0.25);letter-spacing:1.5px;text-transform:uppercase;margin-bottom:6px;text-align:center;}
#lap-list{flex:1;overflow-y:auto;border-radius:10px;background:rgba(255,255,255,0.03);}
#lap-list::-webkit-scrollbar{width:3px;}
#lap-list::-webkit-scrollbar-thumb{background:rgba(255,255,255,0.15);border-radius:2px;}
.lap-row{display:flex;justify-content:space-between;padding:6px 10px;font-size:12px;border-bottom:1px solid rgba(255,255,255,0.04);}
.lap-row span:first-child{color:rgba(255,255,255,0.3);font-size:11px;}
.lap-row span:last-child{color:#e2e8f0;font-variant-numeric:tabular-nums;font-weight:500;}
.lap-latest{background:rgba(96,165,250,0.15)!important;}
.lap-latest span:last-child{color:#60a5fa!important;font-weight:700;}

/* ===== 미디어 ===== */
#media-wrap{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;overflow:hidden;}
#media-img{max-width:100%;max-height:100%;object-fit:contain;transition:object-fit .2s;}
#media-img.fit-fill{object-fit:cover;width:100%;height:100%;}
#media-img.fit-origin{max-width:none;max-height:none;object-fit:none;}
#media-banner{width:100%;height:100%;display:none;align-items:center;justify-content:center;padding:20px;}
#media-banner-txt{font-size:52px;font-weight:800;text-align:center;line-height:1.25;word-break:keep-all;text-shadow:0 2px 20px rgba(0,0,0,0.5);transition:font-size .3s;}
#media-drop{color:rgba(255,255,255,0.25);font-size:14px;text-align:center;line-height:2.6;}
#media-drop label{color:#60a5fa;cursor:pointer;display:block;}
#media-nav{position:absolute;bottom:12px;left:50%;transform:translateX(-50%);display:flex;gap:8px;z-index:5;}
#media-cnt{position:absolute;top:10px;right:12px;font-size:12px;color:rgba(255,255,255,0.3);z-index:5;}

/* ===== 버튼 ===== */
.btn{padding:0 24px;height:44px;border:none;border-radius:12px;cursor:pointer;font-size:15px;font-weight:700;font-family:inherit;transition:all .15s;letter-spacing:-0.3px;display:inline-flex;align-items:center;justify-content:center;line-height:1;}
.btn-blue{background:#3b82f6;color:#fff;box-shadow:0 2px 12px #3b82f640;}.btn-blue:hover{background:#2563eb;transform:translateY(-1px);}
.btn-green{background:#10b981;color:#fff;box-shadow:0 2px 12px #10b98140;}.btn-green:hover{background:#059669;transform:translateY(-1px);}
.btn-red{background:#ef4444;color:#fff;box-shadow:0 2px 12px #ef444440;}.btn-red:hover{background:#dc2626;transform:translateY(-1px);}
.btn-gray{background:rgba(255,255,255,0.13);color:#ddd;border:1px solid rgba(255,255,255,0.18);}.btn-gray:hover{background:rgba(255,255,255,0.22);}
.btn-sm{height:38px;padding:0 16px;font-size:13px;}
.btn-nav{padding:8px 20px;background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.2);color:#ddd;border-radius:10px;cursor:pointer;font-size:14px;font-family:inherit;font-weight:600;}
.btn-nav:hover{background:rgba(255,255,255,0.2);}
/* 타이머/스톱워치 버튼 그룹 정렬 */
#tmr-btns,#sw-btns{display:flex;gap:10px;margin-top:12px;justify-content:center;align-items:center;flex-wrap:wrap;flex-shrink:0;}
#media-nav{gap:12px;}

/* ===== 하단 툴바 ===== */
#tool-bar{position:relative;z-index:2;background:rgba(0,0,0,0.4);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid rgba(255,255,255,0.08);display:flex;align-items:center;padding:5px 10px;gap:4px;flex-shrink:0;transition:height .2s,opacity .2s;}
#tool-bar.hidden{height:0!important;opacity:0;overflow:hidden;pointer-events:none;}
.tool-btn{height:32px;min-width:32px;padding:0 6px;background:none;border:none;color:rgba(255,255,255,0.4);cursor:pointer;font-size:15px;border-radius:8px;display:flex;align-items:center;justify-content:center;gap:4px;transition:all .15s;white-space:nowrap;}
.tool-btn:hover{background:rgba(255,255,255,0.1);color:rgba(255,255,255,0.9);}
.tool-btn.on{color:#60a5fa;background:rgba(96,165,250,0.14);}
.tool-sep{width:1px;height:22px;background:rgba(255,255,255,0.1);margin:0 2px;flex-shrink:0;}
#tool-label{flex:1;font-size:10px;color:rgba(255,255,255,0.1);text-align:right;padding-right:4px;}
#ad-bar{position:relative;z-index:2;background:rgba(0,0,0,0.3);border-top:1px solid rgba(255,255,255,0.06);text-align:center;padding:5px;display:none;}
/* 꽉차게 버튼 */
#tb-fit{font-size:12px;font-weight:700;padding:0 10px;height:28px;border-radius:14px;background:rgba(96,165,250,0.15);border:1px solid rgba(96,165,250,0.3);color:#60a5fa;}
#tb-fit:hover{background:rgba(96,165,250,0.28);color:#93c5fd;}

/* ===== 설정 패널 ===== */
#set-panel{position:absolute;top:0;right:0;bottom:0;width:252px;background:rgba(12,12,24,0.95);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-left:1px solid rgba(255,255,255,0.1);overflow-y:auto;padding:14px 16px;z-index:50;transform:translateX(100%);transition:transform .22s;}
#set-panel.on{transform:translateX(0);}
.set-close{float:right;background:none;border:none;color:rgba(255,255,255,0.35);font-size:18px;cursor:pointer;margin-top:-2px;}
.set-close:hover{color:#fff;}
.set-title{font-size:13px;font-weight:700;color:#e2e8f0;margin-bottom:6px;}
.set-h{font-size:10px;font-weight:700;color:rgba(255,255,255,0.22);letter-spacing:1.5px;text-transform:uppercase;margin:14px 0 7px;padding-bottom:4px;border-bottom:1px solid rgba(255,255,255,0.07);}
.set-h:first-of-type{margin-top:4px;}
.set-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:12px;}
.set-row label{color:rgba(255,255,255,0.45);}
.set-row input[type=color]{width:32px;height:24px;border:none;background:none;cursor:pointer;border-radius:4px;}
.set-row input[type=number]{width:56px;background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.14);color:#fff;border-radius:6px;padding:3px 6px;font-size:12px;text-align:center;}
.set-row input[type=range]{width:80px;accent-color:#60a5fa;}
.set-row input[type=checkbox]{cursor:pointer;accent-color:#60a5fa;width:15px;height:15px;}
.set-row select{background:rgba(255,255,255,0.08);border:1px solid rgba(255,255,255,0.14);color:#ccc;border-radius:6px;padding:3px 6px;font-size:12px;cursor:pointer;}
.set-full{width:100%;background:rgba(255,255,255,0.07);border:1px solid rgba(255,255,255,0.13);color:#ccc;border-radius:6px;padding:5px 8px;font-size:12px;margin-bottom:8px;font-family:inherit;}
.set-full::placeholder{color:rgba(255,255,255,0.18);}
textarea.set-full{resize:vertical;}
.msg-row{display:flex;gap:4px;margin-bottom:5px;}
.msg-row input[type=time]{width:72px;background:rgba(255,255,255,0.07);border:1px solid rgba(255,255,255,0.13);color:#ccc;border-radius:5px;padding:3px 4px;font-size:11px;}
.msg-row input[type=text]{flex:1;background:rgba(255,255,255,0.07);border:1px solid rgba(255,255,255,0.13);color:#ccc;border-radius:5px;padding:3px 6px;font-size:11px;}
.msg-row button{background:rgba(255,255,255,0.06);border:none;color:rgba(255,255,255,0.28);border-radius:5px;padding:3px 7px;cursor:pointer;font-size:11px;}
.set-save-btn{width:100%;padding:9px;background:#3b82f6;border:none;border-radius:8px;color:#fff;font-size:12px;font-weight:700;cursor:pointer;margin-top:8px;}
.set-save-btn:hover{background:#2563eb;}
.set-hint{font-size:10px;color:rgba(255,255,255,0.18);margin-bottom:6px;line-height:1.6;}
.set-hint b{color:rgba(255,255,255,0.35);}
.bg-upload-btn{width:100%;padding:8px;background:rgba(255,255,255,0.06);border:1px dashed rgba(255,255,255,0.18);border-radius:8px;color:rgba(255,255,255,0.45);font-size:12px;cursor:pointer;margin-bottom:6px;text-align:center;display:block;}
.bg-upload-btn:hover{background:rgba(255,255,255,0.1);color:#ccc;}
.fit-btns{display:flex;gap:5px;margin-bottom:8px;}
.fit-btn{flex:1;padding:5px 2px;background:rgba(255,255,255,0.07);border:1px solid rgba(255,255,255,0.13);color:rgba(255,255,255,0.45);border-radius:6px;cursor:pointer;font-size:11px;text-align:center;font-family:inherit;transition:all .15s;}
.fit-btn.on,.fit-btn:hover{background:rgba(96,165,250,0.18);border-color:#60a5fa;color:#60a5fa;}

/* ===== 레이저 ===== */
#laser{position:fixed;pointer-events:none;z-index:2147483647;display:none;top:0;left:0;}
#laser-dot{position:absolute;border-radius:50%;transform:translate(-50%,-50%);}

/* ===== 닫기 버튼 ===== */
#app-close{position:absolute;top:50px;left:10px;z-index:100;background:rgba(255,255,255,0.1);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,0.15);color:rgba(255,255,255,0.6);font-size:12px;border-radius:8px;padding:4px 12px;cursor:pointer;display:none;font-family:inherit;}
#app-close:hover{color:#fff;background:rgba(255,255,255,0.18);}

/* ===== 스킨 강제 숨김 JS로 처리 ===== */
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div id=&quot;laser&quot;&gt;&lt;div id=&quot;laser-dot&quot;&gt;&lt;/div&gt;&lt;/div&gt;

&lt;!-- QR 모달 --&gt;
&lt;div id=&quot;qr-modal&quot;&gt;
  &lt;div class=&quot;qr-box&quot;&gt;
    &lt;div class=&quot;qr-title&quot;&gt;  공유 QR / URL&lt;/div&gt;
    &lt;div class=&quot;qr-sub&quot;&gt;현재 설정값을 URL로 공유합니다&lt;/div&gt;
    &lt;canvas id=&quot;qr-canvas&quot; width=&quot;180&quot; height=&quot;180&quot;&gt;&lt;/canvas&gt;
    &lt;div class=&quot;qr-url&quot; id=&quot;qr-url-text&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;qr-btns&quot;&gt;
      &lt;button class=&quot;qr-btn qr-btn-copy&quot; onclick=&quot;TIMER.copyShareUrl()&quot;&gt;  URL 복사&lt;/button&gt;
      &lt;button class=&quot;qr-btn qr-btn-close&quot; onclick=&quot;TIMER.closeQr()&quot;&gt;닫기&lt;/button&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ======================== 메인 페이지 ======================== --&gt;
&lt;div id=&quot;page-main&quot;&gt;
&lt;div class=&quot;main-wrap&quot;&gt;

  &lt;!-- 상단 헤더: 타이틀 좌 / 공유버튼 우 --&gt;
  &lt;div class=&quot;main-top&quot;&gt;
    &lt;div class=&quot;main-top-left&quot;&gt;
      &lt;div class=&quot;main-title&quot;&gt;  모두의 팝업타이머&lt;/div&gt;
      &lt;div class=&quot;main-version&quot;&gt;v9 · 스타트업EX&lt;/div&gt;
    &lt;/div&gt;
    &lt;button class=&quot;main-share-btn&quot; onclick=&quot;TIMER.openQr()&quot;&gt;
      &lt;svg viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;rect x=&quot;3&quot; y=&quot;3&quot; width=&quot;7&quot; height=&quot;7&quot; rx=&quot;1&quot;/&gt;&lt;rect x=&quot;14&quot; y=&quot;3&quot; width=&quot;7&quot; height=&quot;7&quot; rx=&quot;1&quot;/&gt;&lt;rect x=&quot;3&quot; y=&quot;14&quot; width=&quot;7&quot; height=&quot;7&quot; rx=&quot;1&quot;/&gt;&lt;path d=&quot;M14 14h2v2h-2zM18 14h3M14 18v3M18 18h3v3h-3z&quot;/&gt;&lt;/svg&gt;
      QR / URL 공유
    &lt;/button&gt;
  &lt;/div&gt;

  &lt;!-- 간단 설명 --&gt;
  &lt;div class=&quot;main-desc&quot;&gt;
    &lt;b&gt;모두의 팝업타이머&lt;/b&gt;는 전체보기 또는 팝업타이머로 사용가능합니다.&lt;br&gt;
    발표·강의·행사 현장에서 항상 화면 위에 떠있는 타이머를 경험해보세요.
  &lt;/div&gt;

  &lt;!-- 광고 상단 --&gt;
  &lt;div class=&quot;ad-wrap&quot;&gt;&lt;span class=&quot;ad-label&quot;&gt;광고 영역 (상단)&lt;/span&gt;&lt;/div&gt;

  &lt;!-- 실행 버튼 --&gt;
  &lt;div class=&quot;main-btns&quot;&gt;
    &lt;button class=&quot;main-btn main-btn-full&quot; onclick=&quot;TIMER.openFull()&quot;&gt;⛶ 전체보기&lt;/button&gt;
    &lt;button class=&quot;main-btn main-btn-popup&quot; onclick=&quot;TIMER.openPopup()&quot;&gt;  팝업보기&lt;/button&gt;
  &lt;/div&gt;

  &lt;!-- 미리보기 --&gt;
  &lt;div class=&quot;preview-wrap&quot;&gt;
    &lt;div class=&quot;preview-head&quot;&gt;
      &lt;div class=&quot;preview-head-title&quot;&gt;  미리보기 — 직접 조작해보세요&lt;/div&gt;
      &lt;div class=&quot;preview-tabs&quot;&gt;
        &lt;button class=&quot;preview-tab on&quot; onclick=&quot;PV.tab('clock')&quot;&gt;시계&lt;/button&gt;
        &lt;button class=&quot;preview-tab&quot; onclick=&quot;PV.tab('timer')&quot;&gt;타이머&lt;/button&gt;
        &lt;button class=&quot;preview-tab&quot; onclick=&quot;PV.tab('sw')&quot;&gt;스톱워치&lt;/button&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;preview-body&quot;&gt;
      &lt;!-- 미리보기 시계 --&gt;
      &lt;div id=&quot;pv-clock&quot; class=&quot;preview-clock&quot;&gt;
        &lt;div class=&quot;p-date&quot; id=&quot;pv-date&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;p-hm&quot; id=&quot;pv-hm&quot;&gt;00:00&lt;/div&gt;
        &lt;div class=&quot;p-sec&quot; id=&quot;pv-sec&quot;&gt;00초&lt;/div&gt;
      &lt;/div&gt;
      &lt;!-- 미리보기 타이머 --&gt;
      &lt;div id=&quot;pv-timer&quot; class=&quot;preview-timer&quot; style=&quot;display:none;&quot;&gt;
        &lt;div class=&quot;p-tmr&quot; id=&quot;pv-tmr-disp&quot;&gt;10:00&lt;/div&gt;
        &lt;div class=&quot;p-tmr-st&quot; id=&quot;pv-tmr-st&quot;&gt;대기중&lt;/div&gt;
        &lt;div class=&quot;p-tmr-btns&quot;&gt;
          &lt;button class=&quot;p-btn&quot; style=&quot;background:#10b981;color:#fff;&quot; id=&quot;pv-start&quot; onclick=&quot;PV.startTmr()&quot;&gt;▶ 시작&lt;/button&gt;
          &lt;button class=&quot;p-btn&quot; style=&quot;background:rgba(255,255,255,0.15);color:#ddd;&quot; onclick=&quot;PV.resetTmr()&quot;&gt;↺ 초기화&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;!-- 미리보기 스톱워치 --&gt;
      &lt;div id=&quot;pv-sw&quot; class=&quot;preview-sw&quot; style=&quot;display:none;&quot;&gt;
        &lt;div class=&quot;p-sw&quot; id=&quot;pv-sw-disp&quot;&gt;00:00&lt;span class=&quot;p-sw-ms&quot;&gt;.00&lt;/span&gt;&lt;/div&gt;
        &lt;div class=&quot;p-sw-btns&quot;&gt;
          &lt;button class=&quot;p-btn&quot; style=&quot;background:#10b981;color:#fff;&quot; id=&quot;pv-sw-btn&quot; onclick=&quot;PV.startSw()&quot;&gt;▶ 시작&lt;/button&gt;
          &lt;button class=&quot;p-btn&quot; style=&quot;background:rgba(255,255,255,0.15);color:#ddd;&quot; onclick=&quot;PV.resetSw()&quot;&gt;↺ 초기화&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;preview-footer&quot;&gt;
      &lt;div class=&quot;preview-footer-btns&quot;&gt;
        &lt;button class=&quot;pf-btn on&quot; id=&quot;pf-laser&quot;&gt;  레이저&lt;/button&gt;
        &lt;button class=&quot;pf-btn&quot; id=&quot;pf-full&quot;&gt;⛶ 전체화면&lt;/button&gt;
        &lt;button class=&quot;pf-btn&quot; id=&quot;pf-set&quot;&gt;⚙️ 설정&lt;/button&gt;
      &lt;/div&gt;
      &lt;div class=&quot;preview-wm&quot;&gt;0-1.kr/22 · 스타트업EX&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 사용방법 아코디언 --&gt;
  &lt;div class=&quot;accordion&quot;&gt;
    &lt;div class=&quot;accordion-head&quot; onclick=&quot;TIMER.toggleAccordion('usage')&quot;&gt;
        사용방법 &lt;span class=&quot;accordion-arrow&quot; id=&quot;arr-usage&quot;&gt;▼&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&quot;accordion-body&quot; id=&quot;acc-usage&quot;&gt;
      &lt;div class=&quot;step&quot;&gt;&lt;div class=&quot;step-num&quot;&gt;1&lt;/div&gt;&lt;div&gt;&lt;b&gt;전체보기&lt;/b&gt; — 현재 창 위에 타이머가 최상위 레이어로 실행됩니다. 티스토리 스킨보다 위에 표시됩니다.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;step&quot;&gt;&lt;div class=&quot;step-num&quot;&gt;2&lt;/div&gt;&lt;div&gt;&lt;b&gt;팝업보기&lt;/b&gt; — 별도 작은 창이 열립니다. PPT 전체화면 위에 올려두고 사용 가능합니다.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;step&quot;&gt;&lt;div class=&quot;step-num&quot;&gt;3&lt;/div&gt;&lt;div&gt;팝업 차단 시 &lt;b&gt;주소창 우측 허용 버튼&lt;/b&gt;을 클릭하세요. 한번만 허용하면 이후 자동으로 열립니다.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;step&quot;&gt;&lt;div class=&quot;step-num&quot;&gt;4&lt;/div&gt;&lt;div&gt;하단 &lt;b&gt;⚙️ 설정&lt;/b&gt; 버튼으로 색상·크기·자막·배경 등을 조절하고 &lt;b&gt;  저장&lt;/b&gt;하세요.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;step&quot;&gt;&lt;div class=&quot;step-num&quot;&gt;5&lt;/div&gt;&lt;div&gt;&lt;b&gt;  꽉차게&lt;/b&gt; 버튼으로 글자를 화면에 꽉 차게 키울 수 있습니다.&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;accordion&quot;&gt;
    &lt;div class=&quot;accordion-head&quot; onclick=&quot;TIMER.toggleAccordion('setting')&quot;&gt;
      ⚙️ 설정 방법 &lt;span class=&quot;accordion-arrow&quot; id=&quot;arr-setting&quot;&gt;▼&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&quot;accordion-body&quot; id=&quot;acc-setting&quot;&gt;
      &lt;div class=&quot;step&quot;&gt;&lt;div class=&quot;step-num&quot;&gt;1&lt;/div&gt;&lt;div&gt;전체보기 또는 팝업보기 실행 후 하단 &lt;b&gt;⚙️ 설정&lt;/b&gt; 버튼을 누르세요.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;step&quot;&gt;&lt;div class=&quot;step-num&quot;&gt;2&lt;/div&gt;&lt;div&gt;&lt;b&gt;시계 색상&lt;/b&gt;: 원하는 색상 선택 → 즉시 반영됩니다.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;step&quot;&gt;&lt;div class=&quot;step-num&quot;&gt;3&lt;/div&gt;&lt;div&gt;&lt;b&gt;자막&lt;/b&gt;: 흐르는 자막 체크 후 내용 입력 → 시계 하단에 흐르는 자막이 표시됩니다.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;step&quot;&gt;&lt;div class=&quot;step-num&quot;&gt;4&lt;/div&gt;&lt;div&gt;&lt;b&gt;시간별 멘트&lt;/b&gt;: 시각과 멘트를 입력하면 해당 시각에 자동으로 표시됩니다.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;step&quot;&gt;&lt;div class=&quot;step-num&quot;&gt;5&lt;/div&gt;&lt;div&gt;&lt;b&gt;배경 이미지&lt;/b&gt;: 사진 업로드 후 블러·어둡기를 조절하세요.&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;step&quot;&gt;&lt;div class=&quot;step-num&quot;&gt;6&lt;/div&gt;&lt;div&gt;설정 완료 후 &lt;b&gt;  설정 저장&lt;/b&gt;을 눌러야 다음 실행 시에도 유지됩니다.&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 기능 카드 --&gt;
  &lt;div class=&quot;feat-grid&quot;&gt;
    &lt;div class=&quot;feat-card&quot;&gt;&lt;div class=&quot;feat-icon&quot;&gt; &lt;/div&gt;&lt;div class=&quot;feat-title&quot;&gt;디지털 시계&lt;/div&gt;&lt;div class=&quot;feat-desc&quot;&gt;년도·띠·날짜 상단 표시&lt;br&gt;시분/초 분리 레이아웃&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-card&quot;&gt;&lt;div class=&quot;feat-icon&quot;&gt;⏱&lt;/div&gt;&lt;div class=&quot;feat-title&quot;&gt;카운트다운 타이머&lt;/div&gt;&lt;div class=&quot;feat-desc&quot;&gt;경고 3단계 색상&lt;br&gt;종료 알림음&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-card&quot;&gt;&lt;div class=&quot;feat-icon&quot;&gt; &lt;/div&gt;&lt;div class=&quot;feat-title&quot;&gt;스톱워치&lt;/div&gt;&lt;div class=&quot;feat-desc&quot;&gt;랩 타임 기록&lt;br&gt;분할 시간 저장&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-card&quot;&gt;&lt;div class=&quot;feat-icon&quot;&gt; &lt;/div&gt;&lt;div class=&quot;feat-title&quot;&gt;미디어 뷰어&lt;/div&gt;&lt;div class=&quot;feat-desc&quot;&gt;슬라이드쇼·현수막&lt;br&gt;맞춤/채우기/원본 보기&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-card&quot;&gt;&lt;div class=&quot;feat-icon&quot;&gt; &lt;/div&gt;&lt;div class=&quot;feat-title&quot;&gt;레이저포인터&lt;/div&gt;&lt;div class=&quot;feat-desc&quot;&gt;색상·크기 선택&lt;br&gt;단축키 L&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-card&quot;&gt;&lt;div class=&quot;feat-icon&quot;&gt; &lt;/div&gt;&lt;div class=&quot;feat-title&quot;&gt;자막 기능&lt;/div&gt;&lt;div class=&quot;feat-desc&quot;&gt;흐르는 자막·크기조절&lt;br&gt;시간별 자동 멘트&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-card&quot;&gt;&lt;div class=&quot;feat-icon&quot;&gt; &lt;/div&gt;&lt;div class=&quot;feat-title&quot;&gt;배경 이미지&lt;/div&gt;&lt;div class=&quot;feat-desc&quot;&gt;사진 업로드&lt;br&gt;블러·어둡기 조절&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;feat-card&quot;&gt;&lt;div class=&quot;feat-icon&quot;&gt; &lt;/div&gt;&lt;div class=&quot;feat-title&quot;&gt;글자 크기 조절&lt;/div&gt;&lt;div class=&quot;feat-desc&quot;&gt;꽉차게·중간·작게&lt;br&gt;화면 크기 자동 계산&lt;/div&gt;&lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;key-box&quot;&gt;
    &lt;div class=&quot;key-box-title&quot;&gt;⌨️ 단축키&lt;/div&gt;
    &lt;div class=&quot;key-list&quot;&gt;
      &lt;span class=&quot;key-badge&quot;&gt;Space = 시작/정지&lt;/span&gt;
      &lt;span class=&quot;key-badge&quot;&gt;← → = 슬라이드&lt;/span&gt;
      &lt;span class=&quot;key-badge&quot;&gt;L = 레이저&lt;/span&gt;
      &lt;span class=&quot;key-badge&quot;&gt;F = 전체화면&lt;/span&gt;
      &lt;span class=&quot;key-badge&quot;&gt;Esc = 닫기&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;ad-wrap&quot;&gt;&lt;span class=&quot;ad-label&quot;&gt;광고 영역 (하단)&lt;/span&gt;&lt;/div&gt;

  &lt;!-- 하단 푸터 --&gt;
  &lt;div class=&quot;main-footer&quot;&gt;
    &lt;div class=&quot;main-footer-brand&quot;&gt;스타트업EX &lt;span&gt;·&lt;/span&gt; 0-1.kr/22&lt;/div&gt;
    &lt;div class=&quot;main-footer-sub&quot;&gt;모두의 팝업타이머 v9 · &lt;a href=&quot;https://0-1.kr&quot; target=&quot;_blank&quot;&gt;0-1.kr&lt;/a&gt;&lt;/div&gt;
  &lt;/div&gt;

&lt;/div&gt;
&lt;/div&gt;

&lt;!-- ======================== 앱 화면 ======================== --&gt;
&lt;div id=&quot;page-app&quot;&gt;
  &lt;div id=&quot;app-bg&quot;&gt;&lt;/div&gt;
  &lt;div id=&quot;app-bg-overlay&quot;&gt;&lt;/div&gt;
  &lt;button id=&quot;app-close&quot; onclick=&quot;TIMER.closeApp()&quot;&gt;✕ 닫기&lt;/button&gt;
  &lt;button id=&quot;menu-restore&quot; onclick=&quot;TIMER.toggleMenus()&quot;&gt;메뉴 보기 ▲&lt;/button&gt;

  &lt;div id=&quot;tab-bar&quot;&gt;
    &lt;button class=&quot;on&quot; onclick=&quot;TIMER.tab('clock')&quot;&gt;  시계&lt;/button&gt;
    &lt;button onclick=&quot;TIMER.tab('timer')&quot;&gt;⏱ 타이머&lt;/button&gt;
    &lt;button onclick=&quot;TIMER.tab('sw')&quot;&gt;  스톱워치&lt;/button&gt;
    &lt;button onclick=&quot;TIMER.tab('media')&quot;&gt;  미디어&lt;/button&gt;
  &lt;/div&gt;

  &lt;div id=&quot;main-area&quot;&gt;

    &lt;!-- 시계: 상세 정보 + 3단 구성 --&gt;
    &lt;div id=&quot;tab-clock&quot; class=&quot;tab-panel on&quot;&gt;
      &lt;div id=&quot;clk-info&quot;&gt;
        &lt;div id=&quot;clk-info-row1&quot;&gt;&lt;/div&gt;
        &lt;div id=&quot;clk-info-row2&quot;&gt;&lt;/div&gt;
        &lt;div id=&quot;clk-date&quot;&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&quot;clk-hm&quot;&gt;00:00&lt;/div&gt;
      &lt;div id=&quot;clk-sec&quot;&gt;00초&lt;/div&gt;
      &lt;div id=&quot;clk-bottom&quot;&gt;
        &lt;div id=&quot;clk-fixed&quot;&gt;&lt;/div&gt;
        &lt;div id=&quot;clk-ticker-wrap&quot;&gt;&lt;span id=&quot;clk-ticker-inner&quot;&gt;&lt;/span&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 타이머 --&gt;
    &lt;div id=&quot;tab-timer&quot; class=&quot;tab-panel&quot;&gt;
      &lt;!-- 숫자 직접 조작 UI --&gt;
      &lt;div id=&quot;tmr-spin-wrap&quot;&gt;
        &lt;div class=&quot;tmr-spin-group&quot;&gt;
          &lt;button class=&quot;tmr-spin-up&quot; onclick=&quot;TIMER.adjustTmr('h',1)&quot;&gt;▲&lt;/button&gt;
          &lt;div class=&quot;tmr-spin-val&quot; id=&quot;ts-h&quot;&gt;00&lt;/div&gt;
          &lt;button class=&quot;tmr-spin-dn&quot; onclick=&quot;TIMER.adjustTmr('h',-1)&quot;&gt;▼&lt;/button&gt;
          &lt;div class=&quot;tmr-spin-lbl&quot;&gt;시간&lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;tmr-spin-colon&quot;&gt;:&lt;/div&gt;
        &lt;div class=&quot;tmr-spin-group&quot;&gt;
          &lt;button class=&quot;tmr-spin-up&quot; onclick=&quot;TIMER.adjustTmr('m',1)&quot;&gt;▲&lt;/button&gt;
          &lt;div class=&quot;tmr-spin-val&quot; id=&quot;ts-m&quot;&gt;10&lt;/div&gt;
          &lt;button class=&quot;tmr-spin-dn&quot; onclick=&quot;TIMER.adjustTmr('m',-1)&quot;&gt;▼&lt;/button&gt;
          &lt;div class=&quot;tmr-spin-lbl&quot;&gt;분&lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;tmr-spin-colon&quot;&gt;:&lt;/div&gt;
        &lt;div class=&quot;tmr-spin-group&quot;&gt;
          &lt;button class=&quot;tmr-spin-up&quot; onclick=&quot;TIMER.adjustTmr('s',1)&quot;&gt;▲&lt;/button&gt;
          &lt;div class=&quot;tmr-spin-val&quot; id=&quot;ts-s&quot;&gt;00&lt;/div&gt;
          &lt;button class=&quot;tmr-spin-dn&quot; onclick=&quot;TIMER.adjustTmr('s',-1)&quot;&gt;▼&lt;/button&gt;
          &lt;div class=&quot;tmr-spin-lbl&quot;&gt;초&lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;!-- 숨겨진 실제 입력값 (기존 JS 호환) --&gt;
      &lt;input type=&quot;hidden&quot; id=&quot;t-h&quot; value=&quot;0&quot;&gt;
      &lt;input type=&quot;hidden&quot; id=&quot;t-m&quot; value=&quot;10&quot;&gt;
      &lt;input type=&quot;hidden&quot; id=&quot;t-s&quot; value=&quot;0&quot;&gt;
      &lt;div id=&quot;tmr-display&quot;&gt;10:00&lt;/div&gt;
      &lt;div id=&quot;tmr-state&quot;&gt;대기중&lt;/div&gt;
      &lt;div id=&quot;tmr-btns&quot;&gt;
        &lt;button class=&quot;btn btn-green&quot; id=&quot;bt-start&quot;&gt;▶ 시작&lt;/button&gt;
        &lt;button class=&quot;btn btn-gray&quot; id=&quot;bt-pause&quot;&gt;⏸ 정지&lt;/button&gt;
        &lt;button class=&quot;btn btn-red btn-sm&quot; id=&quot;bt-reset&quot;&gt;↺ 초기화&lt;/button&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 스톱워치 --&gt;
    &lt;div id=&quot;tab-sw&quot; class=&quot;tab-panel&quot; style=&quot;flex-direction:row;align-items:center;justify-content:center;gap:0;padding:8px;&quot;&gt;
      &lt;!-- 좌: 숫자 + 버튼 --&gt;
      &lt;div id=&quot;sw-left&quot;&gt;
        &lt;div id=&quot;sw-display&quot;&gt;00:00&lt;span id=&quot;sw-ms&quot;&gt;.00&lt;/span&gt;&lt;/div&gt;
        &lt;div id=&quot;sw-btns&quot;&gt;
          &lt;button class=&quot;btn btn-green&quot; id=&quot;sw-start&quot;&gt;▶ 시작&lt;/button&gt;
          &lt;button class=&quot;btn btn-gray&quot; id=&quot;sw-lap&quot;&gt;  랩&lt;/button&gt;
          &lt;button class=&quot;btn btn-red btn-sm&quot; id=&quot;sw-reset&quot;&gt;↺&lt;/button&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;!-- 우: 랩 리스트 --&gt;
      &lt;div id=&quot;sw-right&quot;&gt;
        &lt;div id=&quot;lap-header&quot;&gt;랩 기록&lt;/div&gt;
        &lt;div id=&quot;lap-list&quot;&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 미디어 --&gt;
    &lt;div id=&quot;tab-media&quot; class=&quot;tab-panel&quot; style=&quot;padding:0;&quot;&gt;
      &lt;div id=&quot;media-wrap&quot;&gt;
        &lt;div id=&quot;media-drop&quot;&gt;
          이미지를 드래그하거나&lt;br&gt;
          &lt;label&gt;  클릭하여 선택&lt;input type=&quot;file&quot; id=&quot;media-input&quot; multiple accept=&quot;image/*&quot; style=&quot;display:none;&quot;&gt;&lt;/label&gt;
        &lt;/div&gt;
        &lt;img id=&quot;media-img&quot; style=&quot;display:none;&quot; alt=&quot;&quot;&gt;
        &lt;div id=&quot;media-banner&quot;&gt;&lt;div id=&quot;media-banner-txt&quot;&gt;&lt;/div&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&quot;media-cnt&quot;&gt;&lt;/div&gt;
      &lt;div id=&quot;media-nav&quot; style=&quot;display:none;&quot;&gt;
        &lt;button class=&quot;btn-nav&quot; onclick=&quot;TIMER.mediaPrev()&quot;&gt;◀ 이전&lt;/button&gt;
        &lt;button class=&quot;btn-nav&quot; onclick=&quot;TIMER.mediaNext()&quot;&gt;다음 ▶&lt;/button&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 설정 패널 --&gt;
    &lt;div id=&quot;set-panel&quot;&gt;
      &lt;button class=&quot;set-close&quot; onclick=&quot;TIMER.toggleSet()&quot;&gt;✕&lt;/button&gt;
      &lt;div class=&quot;set-title&quot;&gt;⚙️ 설정&lt;/div&gt;

      &lt;div class=&quot;set-h&quot;&gt;배경 이미지&lt;/div&gt;
      &lt;label class=&quot;bg-upload-btn&quot;&gt;  배경 사진 업로드&lt;input type=&quot;file&quot; id=&quot;s-bg-file&quot; accept=&quot;image/*&quot; style=&quot;display:none;&quot;&gt;&lt;/label&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;블러&lt;/label&gt;&lt;input type=&quot;range&quot; id=&quot;s-bg-blur&quot; min=&quot;0&quot; max=&quot;30&quot; value=&quot;0&quot;&gt;&lt;span id=&quot;s-bg-blur-val&quot; style=&quot;color:rgba(255,255,255,0.28);font-size:11px;width:28px;text-align:right;&quot;&gt;0px&lt;/span&gt;&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;어둡기&lt;/label&gt;&lt;input type=&quot;range&quot; id=&quot;s-bg-dark&quot; min=&quot;0&quot; max=&quot;90&quot; value=&quot;55&quot;&gt;&lt;span id=&quot;s-bg-dark-val&quot; style=&quot;color:rgba(255,255,255,0.28);font-size:11px;width:28px;text-align:right;&quot;&gt;55%&lt;/span&gt;&lt;/div&gt;
      &lt;button class=&quot;set-save-btn&quot; style=&quot;background:rgba(255,255,255,0.07);color:rgba(255,255,255,0.35);margin-bottom:4px;&quot; onclick=&quot;TIMER.clearBg()&quot;&gt;✕ 배경 제거&lt;/button&gt;

      &lt;div class=&quot;set-h&quot;&gt;시계 글자 크기&lt;/div&gt;
      &lt;div class=&quot;set-hint&quot;&gt;
        &lt;b&gt;시·분 크기:&lt;/b&gt; 소형60 / 중형90 / 대형140 / 최대180px&lt;br&gt;
        &lt;b&gt;초 크기:&lt;/b&gt; 소형24 / 중형36 / 대형50px
      &lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;시·분 크기 &lt;span id=&quot;s-clk-sz-val&quot; style=&quot;color:rgba(255,255,255,0.28);&quot;&gt;90px&lt;/span&gt;&lt;/label&gt;&lt;input type=&quot;range&quot; id=&quot;s-clk-sz&quot; min=&quot;40&quot; max=&quot;200&quot; value=&quot;90&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;초 크기 &lt;span id=&quot;s-clk-sec-val&quot; style=&quot;color:rgba(255,255,255,0.28);&quot;&gt;32px&lt;/span&gt;&lt;/label&gt;&lt;input type=&quot;range&quot; id=&quot;s-clk-sec-sz&quot; min=&quot;14&quot; max=&quot;80&quot; value=&quot;32&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;색상&lt;/label&gt;&lt;input type=&quot;color&quot; id=&quot;s-clk-color&quot; value=&quot;#ffffff&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;24시간&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;s-24h&quot; checked&gt;&lt;/div&gt;

      &lt;div class=&quot;set-h&quot;&gt;타이머 글자 크기&lt;/div&gt;
      &lt;div class=&quot;set-hint&quot;&gt;&lt;b&gt;추천:&lt;/b&gt; 소형60 / 중형96 / 대형140 / 최대180px&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;크기 &lt;span id=&quot;s-tmr-sz-val&quot; style=&quot;color:rgba(255,255,255,0.28);&quot;&gt;96px&lt;/span&gt;&lt;/label&gt;&lt;input type=&quot;range&quot; id=&quot;s-tmr-sz&quot; min=&quot;36&quot; max=&quot;200&quot; value=&quot;96&quot;&gt;&lt;/div&gt;

      &lt;div class=&quot;set-h&quot;&gt;스톱워치 글자 크기&lt;/div&gt;
      &lt;div class=&quot;set-hint&quot;&gt;&lt;b&gt;추천:&lt;/b&gt; 소형48 / 중형72 / 대형110px&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;크기 &lt;span id=&quot;s-sw-sz-val&quot; style=&quot;color:rgba(255,255,255,0.28);&quot;&gt;72px&lt;/span&gt;&lt;/label&gt;&lt;input type=&quot;range&quot; id=&quot;s-sw-sz&quot; min=&quot;28&quot; max=&quot;160&quot; value=&quot;72&quot;&gt;&lt;/div&gt;

      &lt;div class=&quot;set-h&quot;&gt;자막&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;흐르는 자막&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;s-ticker&quot;&gt;&lt;/div&gt;
      &lt;input type=&quot;text&quot; class=&quot;set-full&quot; id=&quot;s-ticker-txt&quot; placeholder=&quot;흐르는 자막 내용...&quot;&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;자막 크기 &lt;span id=&quot;s-ticker-sz-val&quot; style=&quot;color:rgba(255,255,255,0.28);&quot;&gt;14px&lt;/span&gt;&lt;/label&gt;&lt;input type=&quot;range&quot; id=&quot;s-ticker-sz&quot; min=&quot;10&quot; max=&quot;48&quot; value=&quot;14&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;고정멘트 크기 &lt;span id=&quot;s-fixed-sz-val&quot; style=&quot;color:rgba(255,255,255,0.28);&quot;&gt;16px&lt;/span&gt;&lt;/label&gt;&lt;input type=&quot;range&quot; id=&quot;s-fixed-sz&quot; min=&quot;10&quot; max=&quot;60&quot; value=&quot;16&quot;&gt;&lt;/div&gt;

      &lt;div class=&quot;set-h&quot;&gt;시간별 자동 멘트&lt;/div&gt;
      &lt;div id=&quot;msg-list&quot;&gt;&lt;/div&gt;
      &lt;button class=&quot;set-save-btn&quot; style=&quot;margin-top:2px;&quot; onclick=&quot;TIMER.addMsg()&quot;&gt;+ 멘트 추가&lt;/button&gt;

      &lt;div class=&quot;set-h&quot;&gt;타이머 경고&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;경고1 남은&lt;/label&gt;&lt;input type=&quot;number&quot; id=&quot;s-w1&quot; value=&quot;10&quot; min=&quot;0&quot;&gt; 분&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;경고1 색&lt;/label&gt;&lt;input type=&quot;color&quot; id=&quot;s-wc1&quot; value=&quot;#fbbf24&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;경고2 남은&lt;/label&gt;&lt;input type=&quot;number&quot; id=&quot;s-w2&quot; value=&quot;5&quot; min=&quot;0&quot;&gt; 분&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;경고2 색&lt;/label&gt;&lt;input type=&quot;color&quot; id=&quot;s-wc2&quot; value=&quot;#f97316&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;경고3 남은&lt;/label&gt;&lt;input type=&quot;number&quot; id=&quot;s-w3&quot; value=&quot;1&quot; min=&quot;0&quot;&gt; 분&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;경고3 색(점멸)&lt;/label&gt;&lt;input type=&quot;color&quot; id=&quot;s-wc3&quot; value=&quot;#ef4444&quot;&gt;&lt;/div&gt;

      &lt;div class=&quot;set-h&quot;&gt;미디어 / 현수막&lt;/div&gt;
      &lt;div class=&quot;fit-btns&quot;&gt;
        &lt;button class=&quot;fit-btn on&quot; id=&quot;fit-contain&quot; onclick=&quot;TIMER.setFit('contain')&quot;&gt;맞춤&lt;/button&gt;
        &lt;button class=&quot;fit-btn&quot; id=&quot;fit-fill&quot; onclick=&quot;TIMER.setFit('fill')&quot;&gt;채우기&lt;/button&gt;
        &lt;button class=&quot;fit-btn&quot; id=&quot;fit-origin&quot; onclick=&quot;TIMER.setFit('origin')&quot;&gt;원본&lt;/button&gt;
      &lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;현수막 크기 &lt;span id=&quot;s-banner-sz-val&quot; style=&quot;color:rgba(255,255,255,0.28);&quot;&gt;52px&lt;/span&gt;&lt;/label&gt;&lt;input type=&quot;range&quot; id=&quot;s-banner-sz&quot; min=&quot;16&quot; max=&quot;160&quot; value=&quot;52&quot;&gt;&lt;/div&gt;
      &lt;textarea class=&quot;set-full&quot; id=&quot;s-banner-txt&quot; rows=&quot;3&quot; placeholder=&quot;현수막 텍스트...&quot;&gt;&lt;/textarea&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;배경색&lt;/label&gt;&lt;input type=&quot;color&quot; id=&quot;s-banner-bg&quot; value=&quot;#000000&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;글자색&lt;/label&gt;&lt;input type=&quot;color&quot; id=&quot;s-banner-fg&quot; value=&quot;#ffffff&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;자동전환(초)&lt;/label&gt;&lt;input type=&quot;number&quot; id=&quot;s-slide-sec&quot; value=&quot;0&quot; min=&quot;0&quot; max=&quot;60&quot;&gt;&lt;/div&gt;

      &lt;div class=&quot;set-h&quot;&gt;레이저포인터&lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;색상&lt;/label&gt;
        &lt;select id=&quot;s-laser-c&quot;&gt;
          &lt;option value=&quot;#ff0000&quot;&gt;  빨강&lt;/option&gt;
          &lt;option value=&quot;#00ff00&quot;&gt;  초록&lt;/option&gt;
          &lt;option value=&quot;#0088ff&quot;&gt;  파랑&lt;/option&gt;
          &lt;option value=&quot;#ffff00&quot;&gt;  노랑&lt;/option&gt;
          &lt;option value=&quot;#ffffff&quot;&gt;⚪ 흰색&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
      &lt;div class=&quot;set-row&quot;&gt;&lt;label&gt;크기 &lt;span id=&quot;s-laser-sz-val&quot; style=&quot;color:rgba(255,255,255,0.28);&quot;&gt;16px&lt;/span&gt;&lt;/label&gt;&lt;input type=&quot;range&quot; id=&quot;s-laser-sz&quot; min=&quot;6&quot; max=&quot;48&quot; value=&quot;16&quot;&gt;&lt;/div&gt;

      &lt;button class=&quot;set-save-btn&quot; onclick=&quot;TIMER.saveSet()&quot;&gt;  설정 저장&lt;/button&gt;
    &lt;/div&gt;

  &lt;/div&gt;

  &lt;div id=&quot;tool-bar&quot;&gt;
    &lt;button class=&quot;tool-btn&quot; id=&quot;tb-laser&quot; title=&quot;레이저포인터 (L)&quot; onclick=&quot;TIMER.toggleLaser()&quot;&gt;  &lt;span&gt;레이저&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tool-btn&quot; id=&quot;tb-banner&quot; title=&quot;현수막 모드&quot; onclick=&quot;TIMER.toggleBanner()&quot;&gt;  &lt;span&gt;현수막&lt;/span&gt;&lt;/button&gt;
    &lt;div class=&quot;tool-sep&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;tool-btn&quot; id=&quot;tb-fit&quot; title=&quot;글자 크기 순환&quot; onclick=&quot;TIMER.cycleFit()&quot;&gt;  꽉차게&lt;/button&gt;
    &lt;div class=&quot;tool-sep&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;tool-btn&quot; title=&quot;설정&quot; onclick=&quot;TIMER.toggleSet()&quot;&gt;⚙️ &lt;span&gt;설정&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tool-btn&quot; title=&quot;전체화면 (F)&quot; onclick=&quot;TIMER.toggleFS()&quot;&gt;⛶ &lt;span&gt;전체화면&lt;/span&gt;&lt;/button&gt;
    &lt;button class=&quot;tool-btn&quot; id=&quot;tb-ad&quot; title=&quot;광고&quot; onclick=&quot;TIMER.toggleAd()&quot;&gt; &lt;/button&gt;
    &lt;span id=&quot;tool-label&quot;&gt;발표장타이머 · 0-1.kr&lt;/span&gt;
    &lt;button class=&quot;tool-btn&quot; id=&quot;tb-hide&quot; title=&quot;메뉴 숨기기&quot; onclick=&quot;TIMER.toggleMenus()&quot; style=&quot;margin-left:4px;opacity:0.5;&quot;&gt;⊙&lt;/button&gt;
  &lt;/div&gt;
  &lt;div id=&quot;ad-bar&quot;&gt;&lt;/div&gt;
  &lt;!-- 워터마크 --&gt;
  &lt;div id=&quot;watermark&quot; style=&quot;position:absolute;bottom:48px;right:10px;text-align:right;pointer-events:none;z-index:10;opacity:0.18;line-height:1.5;&quot;&gt;
    &lt;div style=&quot;font-size:11px;color:#fff;font-weight:600;letter-spacing:0.5px;&quot;&gt;0-1.kr/22&lt;/div&gt;
    &lt;div style=&quot;font-size:10px;color:#fff;letter-spacing:0.5px;&quot;&gt;스타트업EX&lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
(function(){
'use strict';

var S={
  tab:'clock',mode:'main',
  clkColor:'#ffffff',clkSz:90,clkSecSz:32,h24:true,
  tickerOn:false,tickerTxt:'',tickerSz:14,fixedSz:16,
  msgs:[],lastMsgMin:-1,
  tmrTotal:600,tmrRemain:600,tmrRun:false,tmrItv:null,tmrSz:96,
  swRun:false,swStart:0,swElapsed:0,swItv:null,lapN:0,laps:[],swSz:72,
  files:[],fileIdx:0,slideItv:null,slideSec:0,imgFit:'contain',
  bannerOn:false,bannerTxt:'',bannerBg:'#000000',bannerFg:'#ffffff',bannerSz:52,
  laserOn:false,laserColor:'#ff0000',laserSz:16,
  w1:10,wc1:'#fbbf24',w2:5,wc2:'#f97316',w3:1,wc3:'#ef4444',
  setOpen:false,adOn:false,sizeStep:0,
  bgUrl:'',bgBlur:0,bgDark:55,
};
var STORE='presTimer_v5';

/* 시계 상세 정보 계산 */
var ZODIAC12=['원숭이','닭','개','돼지','쥐','소','호랑이','토끼','용','뱀','말','양'];
var CHEONGAN=['경','신','임','계','갑','을','병','정','무','기'];
var JIJI=['신','유','술','해','자','축','인','묘','진','사','오','미'];
var SEASON=['봄','여름','가을','겨울'];
function getZodiac(y){return ZODIAC12[y%12]+'띠';}
function getDangi(y){return (y+2333)+'년';}
function getSexagenary(y){return CHEONGAN[y%10]+JIJI[y%12]+'년';}
function getSeason(m){return SEASON[Math.floor(((m-1)+11)%12/3)];}
var SIJIN=['자시(子)','축시(丑)','인시(寅)','묘시(卯)','진시(辰)','사시(巳)','오시(午)','미시(未)','신시(申)','유시(酉)','술시(戌)','해시(亥)'];
function getSijin(h){return SIJIN[Math.floor(((h+1)%24)/2)];}
var GANZHI_YEAR_NAMES=['경자','신축','임인','계묘','갑진','을사','병오','정미','무신','기유','경술','신해','임자','계축','갑인','을묘','병진','정사','무오','기미','경신','신유','임술','계해','갑자','을축','병인','정묘','무진','기사','경오','신미','임신','계유','갑술','을해','병자','정축','무인','기묘','경진','신사','임오','계미','갑신','을유','병술','정해','무자','기축','경인','신묘','임진','계사','갑오','을미','병신','정유','무술','기해'];
function getGanzhi(y){return GANZHI_YEAR_NAMES[(y-4)%60]+'년';}

function el(id){return document.getElementById(id);}
function p2(n){return ('0'+n).slice(-2);}
function sec2str(s){var h=Math.floor(s/3600),m=Math.floor((s%3600)/60),ss=s%60;return h&gt;0?p2(h)+':'+p2(m)+':'+p2(ss):p2(m)+':'+p2(ss);}

/* ===== 저장/불러오기 ===== */
function save(){
  try{
    var d={
      clkColor:S.clkColor,clkSz:S.clkSz,clkSecSz:S.clkSecSz,h24:S.h24,
      tickerOn:S.tickerOn,tickerTxt:S.tickerTxt,tickerSz:S.tickerSz,fixedSz:S.fixedSz,
      msgs:S.msgs,
      tmrSz:S.tmrSz,swSz:S.swSz,
      w1:S.w1,wc1:S.wc1,w2:S.w2,wc2:S.wc2,w3:S.w3,wc3:S.wc3,
      bannerTxt:S.bannerTxt,bannerBg:S.bannerBg,bannerFg:S.bannerFg,bannerSz:S.bannerSz,
      slideSec:S.slideSec,imgFit:S.imgFit,
      laserColor:S.laserColor,laserSz:S.laserSz,
      adOn:S.adOn,bgBlur:S.bgBlur,bgDark:S.bgDark,
      tmrH:el('t-h').value,tmrM:el('t-m').value,tmrS:el('t-s').value
    };
    localStorage.setItem(STORE,JSON.stringify(d));
  }catch(e){}
}
function load(){
  try{
    var d=JSON.parse(localStorage.getItem(STORE)||'{}');
    var keys=['clkColor','clkSz','clkSecSz','h24','tickerOn','tickerTxt','tickerSz','fixedSz',
      'msgs','tmrSz','swSz','w1','wc1','w2','wc2','w3','wc3',
      'bannerTxt','bannerBg','bannerFg','bannerSz','slideSec','imgFit',
      'laserColor','laserSz','adOn','bgBlur','bgDark'];
    for(var i=0;i&lt;keys.length;i++){if(d[keys[i]]!==undefined)S[keys[i]]=d[keys[i]];}
    if(d.tmrH)el('t-h').value=d.tmrH;
    if(d.tmrM)el('t-m').value=d.tmrM;
    if(d.tmrS)el('t-s').value=d.tmrS;
    resetTmr();
  }catch(e){}
}

/* ===== 스킨 강제 숨김 ===== */
function hideSkинElements(){
  /* 티스토리 고정 스킨 요소들 강제 숨김 */
  var selectors=[
    '#tistory-layer','#kakaoIndex','.kakao_layer',
    '#floating-layer','.tistory_floating',
    'header','#header','.header','.blog-header',
    '#nav','.nav','.gnb','#gnb',
    '.sidebar','#sidebar',
    '.layer_wrap','.dimmed',
    '[id*=&quot;tistory&quot;]:not(#page-app):not(#page-main)',
    '[class*=&quot;tistory&quot;]'
  ];
  var style=document.createElement('style');
  style.id='pt-skin-hide';
  style.textContent='';
  /* body의 스크롤 막기 */
  document.body.style.overflow='hidden';
  document.documentElement.style.overflow='hidden';
}
function restoreSkinElements(){
  document.body.style.overflow='';
  document.documentElement.style.overflow='';
}

/* ===== 모드 전환 ===== */
function showMode(mode){
  S.mode=mode;
  el('page-main').style.display=(mode==='main')?'block':'none';
  el('page-app').style.display=(mode==='main')?'none':'flex';
  el('app-close').style.display=(mode==='full')?'block':'none';
  if(mode!=='main'){
    hideSkинElements();
    /* 강제로 page-app 를 body 직계 자식 맨 위로 이동 */
    document.body.appendChild(el('page-app'));
    el('page-app').style.cssText='display:flex!important;position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:100vh!important;z-index:2147483647!important;flex-direction:column;background:#1a1a2e;overflow:hidden;';
    syncSetUI();updateLaserStyle();updateTmrDisplay();updateSwDisplay();updateTickerUI();renderMsgs();startClock();applyBg();applyFit();applyFitStep();
  } else {
    restoreSkinElements();
  }
}
function openFull(){
  showMode('full');
  try{document.documentElement.requestFullscreen&amp;&amp;document.documentElement.requestFullscreen();}catch(e){}
}
function openPopup(){
  var w=460,h=360;
  var left=Math.round((screen.width-w)/2);
  var top=Math.round((screen.height-h)/2);
  var feat='width='+w+',height='+h+',left='+left+',top='+top+',resizable=yes,scrollbars=no,toolbar=no,menubar=no,location=no,status=no';
  /* 고정 URL 사용 (리다이렉트/파라미터 중복 방지) */
  var base=location.origin+location.pathname;
  /* 이미 ?가 있으면 &amp; 아니면 ? */
  var sep=base.indexOf('?')&gt;-1?'&amp;':'?';
  var url=base+sep+'mode=popup#popup';
  var win=window.open(url,'presTimer'+Date.now(),feat);
  if(!win||win.closed)alert('팝업이 차단되었습니다.\n주소창 우측의 팝업 허용 버튼을 클릭해주세요.');
}
function closeApp(){
  try{if(document.fullscreenElement)document.exitFullscreen();}catch(e){}
  showMode('main');
}

/* ===== 탭 ===== */
function tab(name){
  S.tab=name;
  var ps=document.querySelectorAll('.tab-panel');
  for(var i=0;i&lt;ps.length;i++){ps[i].classList.remove('on');ps[i].style.display='none';}
  var ts=document.querySelectorAll('#tab-bar button');
  for(var i=0;i&lt;ts.length;i++)ts[i].classList.remove('on');
  var p=el('tab-'+name);p.classList.add('on');p.style.display='flex';
  var ord=['clock','timer','sw','media'];
  var idx=ord.indexOf(name);if(idx&gt;=0)ts[idx].classList.add('on');
}

/* ===== 시계 ===== */
var clkItv=null;
function startClock(){if(clkItv)return;clkItv=setInterval(tickClock,500);tickClock();}
function tickClock(){
  var now=new Date(),h=now.getHours(),m=now.getMinutes(),s=now.getSeconds();
  var dispH=S.h24?h:(h%12||12);
  el('clk-hm').textContent=p2(dispH)+':'+p2(m);
  el('clk-sec').textContent=p2(s)+'초';
  /* 가로폭 꽉차게: clkSz를 기본으로 하되 가로폭 초과시 자동 축소 */
  var W=el('main-area').offsetWidth||window.innerWidth;
  var maxSz=Math.floor(W*0.85/2.2); /* HH:MM = 약 5자 너비 기준 */
  var actualSz=Math.min(S.clkSz,maxSz);
  el('clk-hm').style.color=S.clkColor;el('clk-hm').style.fontSize=actualSz+'px';
  el('clk-sec').style.color=S.clkColor;el('clk-sec').style.fontSize=Math.max(14,Math.round(actualSz*0.28))+'px';
  var days=['일요일','월요일','화요일','수요일','목요일','금요일','토요일'];
  var y=now.getFullYear(),mo=now.getMonth()+1,d=now.getDate();
  /* 상세 정보 row1: 서기 · 단기 · 간지 */
  el('clk-info-row1').textContent='서기 '+y+'년  ·  단기 '+getDangi(y)+'  ·  '+getGanzhi(y);
  /* 상세 정보 row2: 띠 · 시진 · 계절 */
  el('clk-info-row2').textContent=getZodiac(y)+'  ·  '+getSijin(h)+'  ·  '+getSeason(mo);
  /* 날짜 */
  el('clk-date').textContent=mo+'월 '+d+'일 '+days[now.getDay()];
  var curMin=now.getHours()*60+m;
  if(curMin!==S.lastMsgMin){S.lastMsgMin=curMin;checkMsgs(now.getHours(),m);}
}
function checkMsgs(h,m){
  var t=p2(h)+':'+p2(m);
  for(var i=0;i&lt;S.msgs.length;i++){if(S.msgs[i].time===t){el('clk-fixed').textContent=S.msgs[i].text;return;}}
}
function updateTickerUI(){
  var w=el('clk-ticker-wrap'),sp=el('clk-ticker-inner');
  if(S.tickerOn&amp;&amp;S.tickerTxt){w.style.display='block';sp.textContent=S.tickerTxt;sp.style.fontSize=S.tickerSz+'px';}
  else{w.style.display='none';}
  el('clk-fixed').style.color='#fbbf24';el('clk-fixed').style.fontSize=S.fixedSz+'px';
}

/* ===== 타이머 ===== */
function updateTmrDisplay(){
  var d=el('tmr-display');d.textContent=sec2str(S.tmrRemain);d.className='';d.style.fontSize=S.tmrSz+'px';
  var rm=S.tmrRemain/60;
  if(rm&lt;=S.w3){d.classList.add('w3');d.style.color=S.wc3;}
  else if(rm&lt;=S.w2){d.classList.add('w2');d.style.color=S.wc2;}
  else if(rm&lt;=S.w1){d.classList.add('w1');d.style.color=S.wc1;}
  else{d.style.color='#fff';}
}
function startTmr(){
  if(S.tmrRun)return;
  if(S.tmrRemain&lt;=0){var h=parseInt(el('t-h').value)||0,m=parseInt(el('t-m').value)||0,s=parseInt(el('t-s').value)||0;S.tmrTotal=h*3600+m*60+s;S.tmrRemain=S.tmrTotal;}
  S.tmrRun=true;el('tmr-state').textContent='진행중 ▶';
  S.tmrItv=setInterval(function(){
    if(S.tmrRemain&gt;0){S.tmrRemain--;updateTmrDisplay();}
    else{clearInterval(S.tmrItv);S.tmrRun=false;el('tmr-state').textContent='종료 ✓';beep();}
  },1000);
}
function pauseTmr(){if(!S.tmrRun)return;S.tmrRun=false;clearInterval(S.tmrItv);el('tmr-state').textContent='일시정지 ⏸';}
function resetTmr(){
  clearInterval(S.tmrItv);S.tmrRun=false;
  var h=parseInt(el('t-h').value)||0,m=parseInt(el('t-m').value)||0,s=parseInt(el('t-s').value)||0;
  S.tmrTotal=h*3600+m*60+s;S.tmrRemain=S.tmrTotal;updateTmrDisplay();el('tmr-state').textContent='대기중';
}
function adjustTmr(unit,delta){
  if(S.tmrRun)return;
  var h=parseInt(el('t-h').value)||0,m=parseInt(el('t-m').value)||0,s=parseInt(el('t-s').value)||0;
  if(unit==='h'){h=Math.max(0,Math.min(23,h+delta));}
  else if(unit==='m'){m+=delta;if(m&lt;0){m=59;h=Math.max(0,h-1);}if(m&gt;59){m=0;h=Math.min(23,h+1);}}
  else if(unit==='s'){s+=delta;if(s&lt;0){s=59;m=Math.max(0,m-1);}if(s&gt;59){s=0;m=Math.min(59,m+1);}}
  el('t-h').value=h;el('t-m').value=m;el('t-s').value=s;
  el('ts-h').textContent=p2(h);el('ts-m').textContent=p2(m);el('ts-s').textContent=p2(s);
  resetTmr();
}
function syncTmrSpinUI(){
  var h=parseInt(el('t-h').value)||0,m=parseInt(el('t-m').value)||0,s=parseInt(el('t-s').value)||0;
  if(el('ts-h'))el('ts-h').textContent=p2(h);
  if(el('ts-m'))el('ts-m').textContent=p2(m);
  if(el('ts-s'))el('ts-s').textContent=p2(s);
}
function beep(){try{var ctx=new(window.AudioContext||window.webkitAudioContext)();var o=ctx.createOscillator();var g=ctx.createGain();o.connect(g);g.connect(ctx.destination);o.frequency.value=880;g.gain.setValueAtTime(0.4,ctx.currentTime);g.gain.exponentialRampToValueAtTime(0.001,ctx.currentTime+1.5);o.start();o.stop(ctx.currentTime+1.5);}catch(e){}}

/* ===== 스톱워치 ===== */
function updateSwDisplay(){
  var ms=S.swElapsed,m=Math.floor(ms/60000),s=Math.floor((ms%60000)/1000),cs=Math.floor((ms%1000)/10);
  el('sw-display').innerHTML=p2(m)+':'+p2(s)+'&lt;span id=&quot;sw-ms&quot; style=&quot;font-size:'+Math.round(S.swSz*0.42)+'px;color:rgba(255,255,255,0.35);&quot;&gt;.' +p2(cs)+'&lt;/span&gt;';
  el('sw-display').style.fontSize=S.swSz+'px';
}
function startSw(){
  if(S.swRun){stopSw();return;}
  S.swRun=true;S.swStart=Date.now()-S.swElapsed;
  S.swItv=setInterval(function(){S.swElapsed=Date.now()-S.swStart;updateSwDisplay();},30);
  el('sw-start').textContent='⏸ 정지';el('sw-start').className='btn btn-red';
}
function stopSw(){S.swRun=false;clearInterval(S.swItv);el('sw-start').textContent='▶ 시작';el('sw-start').className='btn btn-green';}
function lapSw(){
  if(!S.swRun)return;S.lapN++;
  var ms=S.swElapsed,m=Math.floor(ms/60000),s=Math.floor((ms%60000)/1000),cs=Math.floor((ms%1000)/10);
  S.laps.push({n:S.lapN,t:p2(m)+':'+p2(s)+'.'+p2(cs)});renderLaps();
}
function resetSw(){stopSw();S.swElapsed=0;S.lapN=0;S.laps=[];updateSwDisplay();el('lap-list').innerHTML='';}
function renderLaps(){
  var html='';
  for(var i=S.laps.length-1;i&gt;=0;i--){
    var isLast=(i===S.laps.length-1);
    html+='&lt;div class=&quot;lap-row'+(isLast?' lap-latest':'')+'&quot;&gt;&lt;span&gt;  랩 '+S.laps[i].n+'&lt;/span&gt;&lt;span&gt;'+S.laps[i].t+'&lt;/span&gt;&lt;/div&gt;';
  }
  el('lap-list').innerHTML=html;
  /* 자동 스크롤 최상단 (최신 랩 보이게) */
  el('lap-list').scrollTop=0;
}

/* ===== 미디어 ===== */
function loadFiles(files){S.files=[];for(var i=0;i&lt;files.length;i++)S.files.push(files[i]);S.fileIdx=0;showMedia();el('media-nav').style.display=S.files.length&gt;1?'flex':'none';setupSlide();}
function showMedia(){
  if(!S.files.length)return;
  el('media-drop').style.display='none';el('media-banner').style.display='none';
  el('media-img').style.display='block';el('media-img').src=URL.createObjectURL(S.files[S.fileIdx]);
  el('media-cnt').textContent=(S.fileIdx+1)+'/'+S.files.length;
  applyFit();
}
function mediaNext(){if(!S.files.length)return;S.fileIdx=(S.fileIdx+1)%S.files.length;showMedia();}
function mediaPrev(){if(!S.files.length)return;S.fileIdx=(S.fileIdx-1+S.files.length)%S.files.length;showMedia();}
function setupSlide(){if(S.slideItv)clearInterval(S.slideItv);if(S.slideSec&gt;0&amp;&amp;S.files.length&gt;1)S.slideItv=setInterval(mediaNext,S.slideSec*1000);}
function setFit(fit){
  S.imgFit=fit;applyFit();
  var btns=document.querySelectorAll('.fit-btn');
  for(var i=0;i&lt;btns.length;i++)btns[i].classList.remove('on');
  el('fit-'+fit).classList.add('on');
}
function applyFit(){
  var img=el('media-img');
  img.className='';
  if(S.imgFit==='fill'){img.classList.add('fit-fill');}
  else if(S.imgFit==='origin'){img.classList.add('fit-origin');}
  else{img.style.maxWidth='100%';img.style.maxHeight='100%';}
}
function toggleBanner(){
  S.bannerOn=!S.bannerOn;
  var img=el('media-img'),ban=el('media-banner'),drop=el('media-drop');
  if(S.bannerOn){
    img.style.display='none';drop.style.display='none';ban.style.display='flex';
    ban.style.background=S.bannerBg;
    el('media-banner-txt').textContent=S.bannerTxt||el('s-banner-txt').value;
    el('media-banner-txt').style.color=S.bannerFg;
    el('media-banner-txt').style.fontSize=S.bannerSz+'px';
    tab('media');el('tb-banner').classList.add('on');
  }else{
    ban.style.display='none';if(S.files.length)img.style.display='block';else drop.style.display='block';el('tb-banner').classList.remove('on');
  }
}

/* ===== 배경 ===== */
function applyBg(){
  var bg=el('app-bg'),ov=el('app-bg-overlay');
  if(S.bgUrl){bg.style.backgroundImage='url('+S.bgUrl+')';bg.style.filter='blur('+S.bgBlur+'px)';bg.style.transform='scale(1.06)';}
  else{bg.style.backgroundImage='none';bg.style.filter='';bg.style.transform='';}
  ov.style.background='rgba(0,0,0,'+(S.bgDark/100)+')';
}
function clearBg(){S.bgUrl='';applyBg();}

/* ===== 레이저 ===== */
function toggleLaser(){
  S.laserOn=!S.laserOn;el('laser').style.display=S.laserOn?'block':'none';
  document.body.style.cursor=S.laserOn?'none':'';el('tb-laser').classList[S.laserOn?'add':'remove']('on');
}
function updateLaserStyle(){
  var dot=el('laser-dot');dot.style.width=S.laserSz+'px';dot.style.height=S.laserSz+'px';
  dot.style.background='radial-gradient(circle,'+S.laserColor+' 30%,'+S.laserColor+'44 100%)';
  dot.style.boxShadow='0 0 10px '+S.laserColor;
}
function toggleFS(){try{if(!document.fullscreenElement)document.documentElement.requestFullscreen&amp;&amp;document.documentElement.requestFullscreen();else document.exitFullscreen&amp;&amp;document.exitFullscreen();}catch(e){}}

/* ===== 설정 ===== */
function toggleSet(){S.setOpen=!S.setOpen;el('set-panel').classList[S.setOpen?'add':'remove']('on');}
function syncSetUI(){
  el('s-clk-color').value=S.clkColor;
  el('s-clk-sz').value=S.clkSz;el('s-clk-sz-val').textContent=S.clkSz+'px';
  el('s-clk-sec-sz').value=S.clkSecSz;el('s-clk-sec-val').textContent=S.clkSecSz+'px';
  el('s-24h').checked=S.h24;
  el('s-ticker').checked=S.tickerOn;el('s-ticker-txt').value=S.tickerTxt;
  el('s-ticker-sz').value=S.tickerSz;el('s-ticker-sz-val').textContent=S.tickerSz+'px';
  el('s-fixed-sz').value=S.fixedSz;el('s-fixed-sz-val').textContent=S.fixedSz+'px';
  el('s-tmr-sz').value=S.tmrSz;el('s-tmr-sz-val').textContent=S.tmrSz+'px';
  el('s-sw-sz').value=S.swSz;el('s-sw-sz-val').textContent=S.swSz+'px';
  el('s-w1').value=S.w1;el('s-wc1').value=S.wc1;el('s-w2').value=S.w2;el('s-wc2').value=S.wc2;el('s-w3').value=S.w3;el('s-wc3').value=S.wc3;
  el('s-banner-txt').value=S.bannerTxt;el('s-banner-bg').value=S.bannerBg;el('s-banner-fg').value=S.bannerFg;
  el('s-banner-sz').value=S.bannerSz;el('s-banner-sz-val').textContent=S.bannerSz+'px';
  el('s-slide-sec').value=S.slideSec;
  el('s-laser-c').value=S.laserColor;el('s-laser-sz').value=S.laserSz;el('s-laser-sz-val').textContent=S.laserSz+'px';
  el('s-bg-blur').value=S.bgBlur;el('s-bg-blur-val').textContent=S.bgBlur+'px';
  el('s-bg-dark').value=S.bgDark;el('s-bg-dark-val').textContent=S.bgDark+'%';
  /* 이미지 핏 버튼 */
  var btns=document.querySelectorAll('.fit-btn');for(var i=0;i&lt;btns.length;i++)btns[i].classList.remove('on');
  var fb=el('fit-'+S.imgFit);if(fb)fb.classList.add('on');
  renderMsgs();
}
function applySet(){
  S.clkColor=el('s-clk-color').value;
  S.clkSz=parseInt(el('s-clk-sz').value);el('s-clk-sz-val').textContent=S.clkSz+'px';
  S.clkSecSz=parseInt(el('s-clk-sec-sz').value);el('s-clk-sec-val').textContent=S.clkSecSz+'px';
  S.h24=el('s-24h').checked;
  S.tickerOn=el('s-ticker').checked;S.tickerTxt=el('s-ticker-txt').value;
  S.tickerSz=parseInt(el('s-ticker-sz').value);el('s-ticker-sz-val').textContent=S.tickerSz+'px';
  S.fixedSz=parseInt(el('s-fixed-sz').value);el('s-fixed-sz-val').textContent=S.fixedSz+'px';
  S.tmrSz=parseInt(el('s-tmr-sz').value);el('s-tmr-sz-val').textContent=S.tmrSz+'px';
  S.swSz=parseInt(el('s-sw-sz').value);el('s-sw-sz-val').textContent=S.swSz+'px';
  S.w1=parseInt(el('s-w1').value)||10;S.wc1=el('s-wc1').value;
  S.w2=parseInt(el('s-w2').value)||5;S.wc2=el('s-wc2').value;
  S.w3=parseInt(el('s-w3').value)||1;S.wc3=el('s-wc3').value;
  S.bannerTxt=el('s-banner-txt').value;S.bannerBg=el('s-banner-bg').value;S.bannerFg=el('s-banner-fg').value;
  S.bannerSz=parseInt(el('s-banner-sz').value);el('s-banner-sz-val').textContent=S.bannerSz+'px';
  S.slideSec=parseInt(el('s-slide-sec').value)||0;
  S.laserColor=el('s-laser-c').value;S.laserSz=parseInt(el('s-laser-sz').value)||16;el('s-laser-sz-val').textContent=S.laserSz+'px';
  S.bgBlur=parseInt(el('s-bg-blur').value)||0;el('s-bg-blur-val').textContent=S.bgBlur+'px';
  S.bgDark=parseInt(el('s-bg-dark').value)||55;el('s-bg-dark-val').textContent=S.bgDark+'%';
  S.msgs=[];var rows=document.querySelectorAll('.msg-row');
  for(var i=0;i&lt;rows.length;i++){var t=rows[i].querySelector('input[type=time]').value;var tx=rows[i].querySelector('input[type=text]').value;if(t&amp;&amp;tx)S.msgs.push({time:t,text:tx});}
  updateTickerUI();updateLaserStyle();setupSlide();applyBg();updateTmrDisplay();updateSwDisplay();
}
function saveSet(){applySet();save();toggleSet();}
function addMsg(){addMsgRow('','');}
function addMsgRow(t,tx){
  var list=el('msg-list');var row=document.createElement('div');row.className='msg-row';
  row.innerHTML='&lt;input type=&quot;time&quot; value=&quot;'+t+'&quot;&gt;&lt;input type=&quot;text&quot; placeholder=&quot;멘트&quot; value=&quot;'+tx+'&quot;&gt;&lt;button onclick=&quot;this.parentNode.remove()&quot;&gt;✕&lt;/button&gt;';list.appendChild(row);
}
function renderMsgs(){el('msg-list').innerHTML='';for(var i=0;i&lt;S.msgs.length;i++)addMsgRow(S.msgs[i].time,S.msgs[i].text);}

/* ===== 꽉차게 순환 (화면 크기 동적 계산) ===== */
var FIT_LABELS=['  꽉차게','⬜ 중간','▪️ 작게'];
function calcFitSizes(step){
  var W=window.innerWidth||screen.width;
  /* 사용가능 높이: 탭바44 + 툴바44 + 버튼영역80 + 타이머입력60 = 228px 제외 */
  var H=(window.innerHeight||screen.height)-228;
  if(step===0){
    /* 꽉차게: 높이 기준으로 숫자 크기 계산 (버튼이 항상 보이게) */
    var clkSz=Math.min(Math.floor(H*0.55),Math.floor(W*0.38));
    var tmrSz=Math.min(Math.floor(H*0.65),Math.floor(W*0.4));
    var swSz=Math.min(Math.floor(H*0.55),Math.floor(W*0.35));
    return{clkSz:Math.max(clkSz,60),clkSecSz:Math.floor(clkSz*0.28),
           tmrSz:Math.max(tmrSz,60),swSz:Math.max(swSz,52),
           bannerSz:Math.min(Math.floor(H*0.18),80),tickerSz:Math.max(Math.floor(H*0.04),16),fixedSz:Math.max(Math.floor(H*0.04),16)};
  }else if(step===1){
    var clkSz=Math.max(Math.floor(W*0.16),60);
    return{clkSz:clkSz,clkSecSz:Math.floor(clkSz*0.35),
           tmrSz:Math.max(Math.floor(W*0.14),56),swSz:Math.max(Math.floor(W*0.12),48),
           bannerSz:52,tickerSz:14,fixedSz:16};
  }else{
    var clkSz=Math.max(Math.floor(W*0.09),36);
    return{clkSz:clkSz,clkSecSz:Math.floor(clkSz*0.4),
           tmrSz:Math.max(Math.floor(W*0.08),32),swSz:Math.max(Math.floor(W*0.07),28),
           bannerSz:28,tickerSz:11,fixedSz:12};
  }
}
function cycleFit(){
  S.sizeStep=(S.sizeStep+1)%3;
  applyFitStep();
}
function applyFitStep(){
  var sz=calcFitSizes(S.sizeStep);
  S.clkSz=sz.clkSz;S.clkSecSz=sz.clkSecSz;
  S.tmrSz=sz.tmrSz;S.swSz=sz.swSz;
  S.bannerSz=sz.bannerSz;S.tickerSz=sz.tickerSz;S.fixedSz=sz.fixedSz;
  el('tb-fit').textContent=FIT_LABELS[S.sizeStep];
  /* 즉시 반영 */
  tickClock();updateTmrDisplay();updateSwDisplay();updateTickerUI();
  if(S.bannerOn)el('media-banner-txt').style.fontSize=S.bannerSz+'px';
  syncSetUI();
}

/* ===== 메뉴 숨김/보이기 ===== */
var menusVisible=true;
function toggleMenus(){
  menusVisible=!menusVisible;
  var tb=el('tab-bar'),tl=el('tool-bar'),mr=el('menu-restore'),btn=el('tb-hide');
  if(menusVisible){
    tb.classList.remove('hidden');tl.classList.remove('hidden');
    if(mr)mr.style.display='none';
    if(btn)btn.textContent='⊙';
  }else{
    tb.classList.add('hidden');tl.classList.add('hidden');
    if(mr)mr.style.display='block';
    if(btn)btn.textContent='⊙';
  }
}

/* ===== 광고 ===== */
function toggleAd(){
  S.adOn=!S.adOn;el('ad-bar').style.display=S.adOn?'block':'none';
  if(S.adOn)el('ad-bar').innerHTML='&lt;span style=&quot;font-size:11px;color:rgba(255,255,255,0.2);&quot;&gt;광고 영역 — AdSense 코드 삽입&lt;/span&gt;';
  el('tb-ad').classList[S.adOn?'add':'remove']('on');
}

/* ===== 키보드 ===== */
function handleKey(e){
  var tag=(document.activeElement||{}).tagName||'';
  if(tag==='INPUT'||tag==='TEXTAREA')return;
  if(S.mode==='main')return;
  if(e.key===' '||e.code==='Space'){e.preventDefault();if(S.tab==='timer')S.tmrRun?pauseTmr():startTmr();if(S.tab==='sw')startSw();}
  if(e.key==='ArrowRight'||e.key==='PageDown'){e.preventDefault();if(S.tab==='media')mediaNext();}
  if(e.key==='ArrowLeft'||e.key==='PageUp'){e.preventDefault();if(S.tab==='media')mediaPrev();}
  if(e.key==='l'||e.key==='L')toggleLaser();
  if(e.key==='f'||e.key==='F')toggleFS();
  if(e.key==='Escape'){if(S.setOpen)toggleSet();else if(S.mode==='full')closeApp();}
}

/* ===== 바인딩 ===== */
function bind(){
  document.addEventListener('mousemove',function(e){if(S.laserOn){var d=el('laser-dot');d.style.left=e.clientX+'px';d.style.top=e.clientY+'px';}});
  document.addEventListener('keydown',handleKey);
  el('bt-start').addEventListener('click',startTmr);
  el('bt-pause').addEventListener('click',pauseTmr);
  el('bt-reset').addEventListener('click',resetTmr);
  ['t-h','t-m','t-s'].forEach(function(id){el(id).addEventListener('input',function(){if(!S.tmrRun)resetTmr();});});
  el('sw-start').addEventListener('click',startSw);
  el('sw-lap').addEventListener('click',lapSw);
  el('sw-reset').addEventListener('click',resetSw);
  el('media-input').addEventListener('change',function(e){loadFiles(e.target.files);});
  var mw=el('media-wrap');
  mw.addEventListener('dragover',function(e){e.preventDefault();});
  mw.addEventListener('drop',function(e){e.preventDefault();loadFiles(e.dataTransfer.files);});
  el('set-panel').addEventListener('input',applySet);
  el('set-panel').addEventListener('change',applySet);
  el('s-bg-file').addEventListener('change',function(e){
    var f=e.target.files[0];if(!f)return;
    var r=new FileReader();r.onload=function(ev){S.bgUrl=ev.target.result;applyBg();};r.readAsDataURL(f);
  });

  /* ===== 핀치줌: 시계·타이머·스톱워치 숫자 확대/축소 ===== */
  var pinchStartDist=0,pinchStartSz=0;
  function getPinchTarget(){
    if(S.tab==='clock')return 'clkSz';
    if(S.tab==='timer')return 'tmrSz';
    if(S.tab==='sw')return 'swSz';
    return null;
  }
  el('main-area').addEventListener('touchstart',function(e){
    if(e.touches.length===2){
      var dx=e.touches[0].clientX-e.touches[1].clientX;
      var dy=e.touches[0].clientY-e.touches[1].clientY;
      pinchStartDist=Math.sqrt(dx*dx+dy*dy);
      var key=getPinchTarget();
      pinchStartSz=key?S[key]:90;
    }
  },{passive:true});
  el('main-area').addEventListener('touchmove',function(e){
    if(e.touches.length===2){
      var dx=e.touches[0].clientX-e.touches[1].clientX;
      var dy=e.touches[0].clientY-e.touches[1].clientY;
      var dist=Math.sqrt(dx*dx+dy*dy);
      var ratio=dist/pinchStartDist;
      var key=getPinchTarget();
      if(!key)return;
      var newSz=Math.round(Math.max(24,Math.min(280,pinchStartSz*ratio)));
      S[key]=newSz;
      if(key==='clkSz'){S.clkSecSz=Math.round(newSz*0.3);tickClock();}
      else if(key==='tmrSz')updateTmrDisplay();
      else if(key==='swSz')updateSwDisplay();
      syncSetUI();
    }
  },{passive:true});

  /* ===== 드래그로 화면 이동 (팝업모드에서 window 이동) ===== */
  var dragStartX=0,dragStartY=0,isDragging=false;
  el('tab-bar').addEventListener('mousedown',function(e){
    if(S.mode!=='popup')return;
    isDragging=true;dragStartX=e.screenX;dragStartY=e.screenY;
  });
  document.addEventListener('mousemove',function(e){
    if(!isDragging)return;
    try{window.moveBy(e.screenX-dragStartX,e.screenY-dragStartY);}catch(ex){}
    dragStartX=e.screenX;dragStartY=e.screenY;
  });
  document.addEventListener('mouseup',function(){isDragging=false;});
}

/* ===== URL 파라미터 ===== */
function getMode(){
  var qs=location.search+location.hash;
  if(qs.indexOf('mode=popup')&gt;-1||qs.indexOf('popup')&gt;-1)return 'popup';
  if(qs.indexOf('mode=full')&gt;-1||qs.indexOf('full')&gt;-1)return 'full';
  /* window.opener 체크: 팝업으로 열렸으면 무조건 popup 모드 */
  try{if(window.opener&amp;&amp;window.opener!==window)return 'popup';}catch(e){}
  return 'main';
}

/* ===== 초기화 ===== */
function init(){
  load();bind();syncTmrSpinUI();
  var mode=getMode();showMode(mode);
  if(mode==='full'){try{document.documentElement.requestFullscreen&amp;&amp;document.documentElement.requestFullscreen();}catch(e){}}
}

window.TIMER={
  tab:tab,openFull:openFull,openPopup:openPopup,closeApp:closeApp,
  toggleLaser:toggleLaser,toggleSet:toggleSet,toggleFS:toggleFS,
  toggleBanner:toggleBanner,toggleAd:toggleAd,
  mediaPrev:mediaPrev,mediaNext:mediaNext,
  addMsg:addMsg,saveSet:saveSet,clearBg:clearBg,setFit:setFit,cycleFit:cycleFit,adjustTmr:adjustTmr,toggleMenus:toggleMenus,
  openQr:openQr,closeQr:closeQr,copyShareUrl:copyShareUrl,
  toggleAccordion:toggleAccordion,
};
init();
})();

/* ============================================================
   미리보기 (PV) - IIFE 분리
============================================================ */
var PV=(function(){
  var pvTab='clock';
  var pvTmrRem=600,pvTmrRun=false,pvTmrItv=null;
  var pvSwRun=false,pvSwStart=0,pvSwElap=0,pvSwItv=null;
  var pvClkItv=null;
  function p2(n){return('0'+n).slice(-2);}

  function tab(name){
    pvTab=name;
    var ids=['clock','timer','sw'];
    for(var i=0;i&lt;ids.length;i++){
      var el=document.getElementById('pv-'+ids[i]);
      if(el)el.style.display=(ids[i]===name)?'flex':'none';
    }
    var tabs=document.querySelectorAll('.preview-tab');
    for(var i=0;i&lt;tabs.length;i++)tabs[i].classList.remove('on');
    var order=['clock','timer','sw'];
    var idx=order.indexOf(name);if(idx&gt;=0)tabs[idx].classList.add('on');
    if(name==='clock'&amp;&amp;!pvClkItv){pvClkItv=setInterval(tickClock,500);tickClock();}
  }
  function tickClock(){
    var now=new Date(),h=now.getHours(),m=now.getMinutes(),s=now.getSeconds();
    var hm=document.getElementById('pv-hm');var sec=document.getElementById('pv-sec');var dt=document.getElementById('pv-date');
    if(hm)hm.textContent=p2(h)+':'+p2(m);
    if(sec)sec.textContent=p2(s)+'초';
    var days=['일','월','화','수','목','금','토'];
    if(dt)dt.textContent=(now.getMonth()+1)+'월 '+now.getDate()+'일 ('+days[now.getDay()]+')';
  }
  function startTmr(){
    if(pvTmrRun){pvTmrRun=false;clearInterval(pvTmrItv);var b=document.getElementById('pv-start');if(b){b.textContent='▶ 시작';b.style.background='#10b981';}return;}
    if(pvTmrRem&lt;=0)pvTmrRem=600;
    pvTmrRun=true;
    var b=document.getElementById('pv-start');if(b){b.textContent='⏸ 정지';b.style.background='#ef4444';}
    pvTmrItv=setInterval(function(){
      if(pvTmrRem&gt;0){pvTmrRem--;var h=Math.floor(pvTmrRem/3600),m=Math.floor((pvTmrRem%3600)/60),s=pvTmrRem%60;var d=document.getElementById('pv-tmr-disp');if(d)d.textContent=(h&gt;0?p2(h)+':':'')+p2(m)+':'+p2(s);}
      else{clearInterval(pvTmrItv);pvTmrRun=false;var b=document.getElementById('pv-start');if(b){b.textContent='▶ 시작';b.style.background='#10b981';}var st=document.getElementById('pv-tmr-st');if(st)st.textContent='종료 ✓';}
    },1000);
  }
  function resetTmr(){clearInterval(pvTmrItv);pvTmrRun=false;pvTmrRem=600;var d=document.getElementById('pv-tmr-disp');if(d)d.textContent='10:00';var b=document.getElementById('pv-start');if(b){b.textContent='▶ 시작';b.style.background='#10b981';}var st=document.getElementById('pv-tmr-st');if(st)st.textContent='대기중';}
  function startSw(){
    if(pvSwRun){pvSwRun=false;clearInterval(pvSwItv);var b=document.getElementById('pv-sw-btn');if(b){b.textContent='▶ 시작';b.style.background='#10b981';}return;}
    pvSwRun=true;pvSwStart=Date.now()-pvSwElap;
    var b=document.getElementById('pv-sw-btn');if(b){b.textContent='⏸ 정지';b.style.background='#ef4444';}
    pvSwItv=setInterval(function(){
      pvSwElap=Date.now()-pvSwStart;
      var ms=pvSwElap,m=Math.floor(ms/60000),s=Math.floor((ms%60000)/1000),cs=Math.floor((ms%1000)/10);
      var d=document.getElementById('pv-sw-disp');if(d)d.innerHTML=p2(m)+':'+p2(s)+'&lt;span class=&quot;p-sw-ms&quot;&gt;.'+p2(cs)+'&lt;/span&gt;';
    },30);
  }
  function resetSw(){clearInterval(pvSwItv);pvSwRun=false;pvSwElap=0;var d=document.getElementById('pv-sw-disp');if(d)d.innerHTML='00:00&lt;span class=&quot;p-sw-ms&quot;&gt;.00&lt;/span&gt;';var b=document.getElementById('pv-sw-btn');if(b){b.textContent='▶ 시작';b.style.background='#10b981';}}
  /* 시작 */
  if(document.getElementById('pv-hm')){pvClkItv=setInterval(tickClock,500);tickClock();}
  return{tab:tab,startTmr:startTmr,resetTmr:resetTmr,startSw:startSw,resetSw:resetSw};
})();

/* ============================================================
   QR 생성 (경량 내장)
============================================================ */
function openQr(){
  /* 설정값을 URL 파라미터로 직렬화 */
  try{
    var S2=JSON.parse(localStorage.getItem('presTimer_v5')||'{}');
    var params=[];
    if(S2.clkColor&amp;&amp;S2.clkColor!=='#ffffff')params.push('cc='+encodeURIComponent(S2.clkColor));
    if(S2.clkSz&amp;&amp;S2.clkSz!==90)params.push('cs='+S2.clkSz);
    if(S2.tickerTxt)params.push('tt='+encodeURIComponent(S2.tickerTxt));
    if(S2.bannerTxt)params.push('bt='+encodeURIComponent(S2.bannerTxt));
    var base=location.origin+location.pathname;
    var shareUrl=params.length&gt;0?base+'?'+params.join('&amp;'):base;
    document.getElementById('qr-url-text').textContent=shareUrl;
    /* QR 간단 생성 (QR API) */
    var canvas=document.getElementById('qr-canvas');
    var img=new Image();
    img.onload=function(){var ctx=canvas.getContext('2d');ctx.drawImage(img,0,0,180,180);};
    img.src='https://api.qrserver.com/v1/create-qr-code/?size=180x180&amp;data='+encodeURIComponent(shareUrl);
    document.getElementById('qr-modal').classList.add('on');
  }catch(e){alert('공유 URL: '+location.href);}
}
function closeQr(){document.getElementById('qr-modal').classList.remove('on');}
function copyShareUrl(){
  var txt=document.getElementById('qr-url-text').textContent;
  if(navigator.clipboard){navigator.clipboard.writeText(txt).then(function(){alert('URL이 복사되었습니다!');});}
  else{var ta=document.createElement('textarea');ta.value=txt;document.body.appendChild(ta);ta.select();document.execCommand('copy');document.body.removeChild(ta);alert('URL이 복사되었습니다!');}
}

/* 아코디언 */
function toggleAccordion(id){
  var body=document.getElementById('acc-'+id);
  var arr=document.getElementById('arr-'+id);
  if(!body)return;
  var isOpen=body.classList.contains('open');
  body.classList[isOpen?'remove':'add']('open');
  if(arr)arr.classList[isOpen?'remove':'add']('open');
}
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>모두의계산기/행사공지계산기_16</category>
      <category>발표</category>
      <category>발표장</category>
      <category>타이머</category>
      <category>팝업타이머</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/22</guid>
      <comments>https://0-1.kr/22#entry22comment</comments>
      <pubDate>Thu, 12 Nov 2020 20:56:22 +0900</pubDate>
    </item>
    <item>
      <title>모두의 행사전 게시판_V12(현수막&amp;amp;발표자료)(0-1.kr/21)</title>
      <link>https://0-1.kr/21</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
&lt;title&gt;행사전게시판2&lt;/title&gt;
&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.min.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;if(typeof pdfjsLib!=='undefined') pdfjsLib.GlobalWorkerOptions.workerSrc='https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js';&lt;/script&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Nanum+Pen+Script&amp;family=Black+Han+Sans&amp;family=Jua&amp;family=Gaegu&amp;family=Do+Hyeon&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'Noto Sans KR',sans-serif;background:#f0f2f5;color:#222;min-height:100vh;}
#eb2-root{max-width:900px;margin:0 auto;padding:16px;}
.eb2-section{background:#fff;border:1px solid #dde1e7;border-radius:10px;margin-bottom:14px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,0.06);}
.eb2-section-header{background:#f7f8fa;padding:10px 16px;font-size:14px;font-weight:700;color:#333;display:flex;align-items:center;gap:8px;cursor:pointer;user-select:none;border-bottom:1px solid #dde1e7;}
.eb2-section-header .eb2-toggle{margin-left:auto;font-size:16px;color:#999;}
.eb2-section-body{padding:14px 16px;}
.eb2-row{display:flex;gap:10px;align-items:center;margin-bottom:10px;flex-wrap:wrap;}
.eb2-label{font-size:12px;color:#555;min-width:80px;flex-shrink:0;}
.eb2-input{background:#f7f8fa;border:1px solid #dde1e7;border-radius:6px;color:#222;padding:7px 10px;font-size:13px;flex:1;min-width:120px;}
.eb2-input:focus{outline:none;border-color:#4a90e2;}
.eb2-btn{background:#fff;border:1px solid #4a90e2;border-radius:6px;color:#4a90e2;padding:7px 14px;font-size:12px;cursor:pointer;white-space:nowrap;}
.eb2-btn:hover{background:#4a90e2;color:#fff;}
.eb2-btn-sm{padding:4px 10px;font-size:11px;}
.eb2-img-preview{width:90px;height:56px;object-fit:contain;border:1px solid #dde1e7;border-radius:6px;background:#f7f8fa;}
.eb2-img-placeholder{width:90px;height:56px;border:1px dashed #bbb;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:10px;color:#aaa;background:#f7f8fa;}
.eb2-radio-group{display:flex;gap:8px;flex-wrap:wrap;}
.eb2-radio-label{display:flex;align-items:center;gap:5px;font-size:12px;color:#555;cursor:pointer;background:#f7f8fa;border:1px solid #dde1e7;border-radius:6px;padding:5px 10px;transition:all 0.15s;}
.eb2-radio-label input{cursor:pointer;}
.eb2-radio-label:hover{border-color:#4a90e2;color:#4a90e2;}
.eb2-radio-label.selected{background:#e8f0fc;border-color:#4a90e2;color:#4a90e2;font-weight:700;}
.eb2-check-label{display:flex;align-items:center;gap:6px;font-size:13px;color:#444;cursor:pointer;}
.eb2-check-label input{cursor:pointer;width:15px;height:15px;}
.eb2-file-list{display:flex;flex-direction:column;gap:6px;}
.eb2-file-item{background:#f7f8fa;border:1px solid #dde1e7;border-radius:6px;padding:8px 12px;display:flex;align-items:center;gap:8px;}
.eb2-file-item .eb2-file-name{font-size:12px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#333;}
.eb2-file-item .eb2-file-type{font-size:10px;color:#fff;background:#4a90e2;padding:2px 7px;border-radius:4px;white-space:nowrap;}
.eb2-file-move{background:none;border:1px solid #dde1e7;border-radius:4px;color:#888;cursor:pointer;font-size:12px;padding:2px 6px;}
.eb2-file-move:hover{border-color:#4a90e2;color:#4a90e2;}
.eb2-file-del{background:none;border:none;color:#ccc;cursor:pointer;font-size:15px;padding:2px 4px;}
.eb2-file-del:hover{color:#e94560;}
.eb2-add-row{display:flex;gap:8px;margin-top:8px;}
.eb2-opt-row{display:flex;gap:14px;flex-wrap:wrap;align-items:center;}
.eb2-opt-item{display:flex;align-items:center;gap:7px;}
.eb2-opt-item label{font-size:12px;color:#555;}
.eb2-opt-item select{background:#f7f8fa;border:1px solid #dde1e7;border-radius:6px;color:#333;padding:5px 8px;font-size:13px;}
.eb2-opt-item input[type=color]{padding:2px;width:38px;height:30px;cursor:pointer;border:1px solid #dde1e7;border-radius:4px;}
.eb2-opt-item input[type=range]{width:80px;}
.eb2-hint{font-size:11px;color:#999;margin-top:5px;line-height:1.5;}
.eb2-hint span{color:#4a90e2;}
.eb2-divider{border:none;border-top:1px solid #eee;margin:10px 0;}
.eb2-sub-box{background:#f0f6ff;border:1px solid #c3d9f7;border-radius:7px;padding:12px;margin-top:8px;}
.eb2-sub-box .eb2-row{margin-bottom:8px;}
.eb2-sub-box .eb2-row:last-child{margin-bottom:0;}
.eb2-banner-design-box{background:#fff8f0;border:1px solid #f5c97a;border-radius:7px;padding:12px;margin-top:8px;}
.eb2-banner-zone{background:#fff;border:1px dashed #ddd;border-radius:6px;padding:10px 12px;margin-bottom:8px;}
.eb2-banner-zone:last-child{margin-bottom:0;}
.eb2-banner-zone-title{font-size:11px;color:#888;margin-bottom:7px;font-weight:700;letter-spacing:0.5px;}
.eb2-preview-wrap{position:relative;border-radius:8px;overflow:hidden;background:#000;min-height:300px;}
.eb2-preview-inner{width:100%;min-height:300px;display:flex;flex-direction:column;}
.eb2-slide-arrow{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,0.4);border:none;color:#fff;font-size:24px;cursor:pointer;padding:8px 12px;border-radius:6px;z-index:10;}
.eb2-slide-arrow.left{left:8px;}
.eb2-slide-arrow.right{right:8px;}
.eb2-main-btns{display:flex;gap:10px;justify-content:center;margin:10px 0 20px;}
.eb2-btn-fullscreen{background:#4a90e2;border:none;border-radius:8px;color:#fff;font-size:15px;font-weight:700;padding:12px 36px;cursor:pointer;}
.eb2-btn-fullscreen:hover{background:#2a70c2;}
/* 전체화면 */
#eb2-fullscreen{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:2147483647;flex-direction:column;}
#eb2-fullscreen.active{display:flex;}
#eb2-fs-close{position:fixed;top:10px;right:14px;background:rgba(0,0,0,0.45);border:1px solid rgba(255,255,255,0.3);border-radius:6px;color:#fff;font-size:18px;cursor:pointer;padding:4px 10px;z-index:2147483647;}
#eb2-fs-nav-wrap{position:fixed;bottom:0;left:0;width:100%;z-index:2147483646;transition:transform 0.3s ease;}
#eb2-fs-nav-wrap.hidden-nav{transform:translateY(100%);}
#eb2-laser-dot{display:none;position:fixed;width:18px;height:18px;border-radius:50%;background:rgba(255,30,30,0.92);box-shadow:0 0 10px 5px rgba(255,60,60,0.65),0 0 28px 10px rgba(255,0,0,0.35);transform:translate(-50%,-50%);pointer-events:none;z-index:2147483647;}#eb2-fs-nav{display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;background:rgba(0,0,0,0.55);flex-wrap:wrap;}
.eb2-nav-btn{position:relative;background:rgba(255,255,255,0.15);border:1px solid rgba(255,255,255,0.35);border-radius:5px;color:#fff;font-size:11px;padding:4px 10px;cursor:pointer;transition:background 0.15s;}
.eb2-nav-btn:hover{background:rgba(255,255,255,0.3);}
.eb2-nav-btn.active{background:#e94560;border-color:#e94560;}
.eb2-nav-tooltip{position:absolute;bottom:calc(100%+6px);left:50%;transform:translateX(-50%);background:#222;color:#fff;font-size:10px;padding:4px 8px;border-radius:4px;white-space:nowrap;pointer-events:none;display:none;z-index:20;}
.eb2-nav-btn:hover .eb2-nav-tooltip{display:block;}
.eb2-nav-tooltip::after{content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);border:4px solid transparent;border-top-color:#222;}
.eb2-nav-autohide-btn{background:rgba(255,255,255,0.1);border:1px solid rgba(255,255,255,0.25);border-radius:5px;color:rgba(255,255,255,0.5);font-size:10px;padding:4px 10px;cursor:pointer;margin-left:8px;transition:all 0.2s;}
.eb2-nav-autohide-btn.off{background:rgba(74,144,226,0.3);border-color:#4a90e2;color:#7ab8f5;}
.eb2-fs-arr{position:absolute;top:50%;transform:translateY(-50%);background:rgba(0,0,0,0.35);border:none;color:#fff;font-size:40px;cursor:pointer;padding:14px 18px;border-radius:8px;z-index:10;}
.eb2-fs-arr.left{left:12px;}
.eb2-fs-arr.right{right:12px;}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;eb2-root&quot;&gt;
  &lt;div style=&quot;text-align:center;padding:16px 0 8px;&quot;&gt;
    &lt;h1 style=&quot;font-size:22px;font-weight:700;color:#4a90e2;letter-spacing:1px;&quot;&gt;행사전게시판2&lt;/h1&gt;
    &lt;p style=&quot;font-size:12px;color:#aaa;margin-top:4px;&quot;&gt;설정 후 전체화면으로 운영하세요&lt;/p&gt;
  &lt;/div&gt;

  &lt;!-- 미리보기 --&gt;
  &lt;div class=&quot;eb2-section&quot;&gt;
    &lt;div class=&quot;eb2-section-header&quot; onclick=&quot;eb2Toggle('preview')&quot;&gt;  미리보기&lt;span class=&quot;eb2-toggle&quot; id=&quot;eb2-tog-preview&quot;&gt;▲&lt;/span&gt;&lt;/div&gt;
    &lt;div class=&quot;eb2-section-body&quot; id=&quot;eb2-body-preview&quot; style=&quot;padding:0;&quot;&gt;
      &lt;div class=&quot;eb2-preview-wrap&quot;&gt;
        &lt;div class=&quot;eb2-preview-inner&quot; id=&quot;eb2-pv-main&quot;&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&quot;eb2-pv-indicator&quot; style=&quot;text-align:center;font-size:11px;color:#999;padding:5px;background:#f7f8fa;border-top:1px solid #eee;&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 현수막/로고 --&gt;
  &lt;div class=&quot;eb2-section&quot;&gt;
    &lt;div class=&quot;eb2-section-header&quot; onclick=&quot;eb2Toggle('banner')&quot;&gt;  현수막 / 로고 이미지&lt;span class=&quot;eb2-toggle&quot; id=&quot;eb2-tog-banner&quot;&gt;▲&lt;/span&gt;&lt;/div&gt;
    &lt;div class=&quot;eb2-section-body&quot; id=&quot;eb2-body-banner&quot;&gt;
      &lt;div class=&quot;eb2-row&quot;&gt;
        &lt;span class=&quot;eb2-label&quot;&gt;배치 방식&lt;/span&gt;
        &lt;div class=&quot;eb2-radio-group&quot; id=&quot;eb2-layout-group&quot;&gt;
          &lt;label class=&quot;eb2-radio-label selected&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;eb2-layout&quot; value=&quot;text&quot; checked onchange=&quot;eb2LayoutChange()&quot;&gt; 직접입력(임시현수막)&lt;/label&gt;
          &lt;label class=&quot;eb2-radio-label&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;eb2-layout&quot; value=&quot;top-fit&quot; onchange=&quot;eb2LayoutChange()&quot;&gt; 상단고정배너(꽉찬화면)&lt;/label&gt;
          &lt;label class=&quot;eb2-radio-label&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;eb2-layout&quot; value=&quot;top-ori&quot; onchange=&quot;eb2LayoutChange()&quot;&gt; 상단고정배너(원본)&lt;/label&gt;
          &lt;label class=&quot;eb2-radio-label&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;eb2-layout&quot; value=&quot;side&quot; onchange=&quot;eb2LayoutChange()&quot;&gt; 양옆배너&lt;/label&gt;
          &lt;label class=&quot;eb2-radio-label&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;eb2-layout&quot; value=&quot;logo&quot; onchange=&quot;eb2LayoutChange()&quot;&gt; 로고(배너내)&lt;/label&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&quot;eb2-img-upload-area&quot;&gt;
        &lt;div class=&quot;eb2-row&quot;&gt;
          &lt;span class=&quot;eb2-label&quot; id=&quot;eb2-img-label&quot;&gt;현수막 이미지&lt;/span&gt;
          &lt;div id=&quot;eb2-img-preview-wrap&quot;&gt;&lt;div class=&quot;eb2-img-placeholder&quot;&gt;없음&lt;/div&gt;&lt;/div&gt;
          &lt;input type=&quot;file&quot; id=&quot;eb2-main-img-file&quot; accept=&quot;image/*&quot; style=&quot;display:none&quot; onchange=&quot;eb2LoadMainImg(this)&quot;&gt;
          &lt;button class=&quot;eb2-btn eb2-btn-sm&quot; onclick=&quot;document.getElementById('eb2-main-img-file').click()&quot;&gt;업로드&lt;/button&gt;
          &lt;button class=&quot;eb2-btn eb2-btn-sm&quot; onclick=&quot;eb2ClearMainImg()&quot;&gt;삭제&lt;/button&gt;
        &lt;/div&gt;
        &lt;p class=&quot;eb2-hint&quot; id=&quot;eb2-img-hint&quot;&gt;추천 사이즈: &lt;span&gt;1920×200px&lt;/span&gt; 권장 — 가로 꽉차게 표시 · 배너 높이 조절로 크기 조정&lt;/p&gt;
      &lt;/div&gt;
      &lt;div id=&quot;eb2-banner-style-row&quot; style=&quot;margin-top:6px;&quot;&gt;
        &lt;div class=&quot;eb2-row&quot; style=&quot;margin-bottom:0;&quot;&gt;
          &lt;span class=&quot;eb2-label&quot;&gt;배너 배경&lt;/span&gt;&lt;input type=&quot;color&quot; id=&quot;eb2-banner-bg&quot; value=&quot;#1a2a4a&quot; oninput=&quot;eb2Render()&quot;&gt;
          &lt;span class=&quot;eb2-label&quot; style=&quot;margin-left:10px;&quot;&gt;글자색&lt;/span&gt;&lt;input type=&quot;color&quot; id=&quot;eb2-banner-fg&quot; value=&quot;#ffffff&quot; oninput=&quot;eb2Render()&quot;&gt;
          &lt;span class=&quot;eb2-label&quot; style=&quot;margin-left:10px;&quot;&gt;배너높이&lt;/span&gt;
          &lt;input class=&quot;eb2-input&quot; type=&quot;number&quot; id=&quot;eb2-banner-h&quot; value=&quot;170&quot; min=&quot;40&quot; max=&quot;500&quot; style=&quot;max-width:65px&quot; oninput=&quot;eb2Render()&quot;&gt;
          &lt;span style=&quot;font-size:12px;color:#888;&quot;&gt;px&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&quot;eb2-side-row&quot; style=&quot;display:none;margin-top:6px;&quot;&gt;
        &lt;div class=&quot;eb2-row&quot; style=&quot;margin-bottom:0;&quot;&gt;
          &lt;span class=&quot;eb2-label&quot;&gt;배너 배경&lt;/span&gt;&lt;input type=&quot;color&quot; id=&quot;eb2-side-bg&quot; value=&quot;#1a2a4a&quot; oninput=&quot;eb2Render()&quot;&gt;
          &lt;span class=&quot;eb2-label&quot; style=&quot;margin-left:10px;&quot;&gt;배너 너비&lt;/span&gt;
          &lt;input class=&quot;eb2-input&quot; type=&quot;number&quot; id=&quot;eb2-side-w&quot; value=&quot;160&quot; min=&quot;60&quot; max=&quot;400&quot; style=&quot;max-width:65px&quot; oninput=&quot;eb2Render()&quot;&gt;
          &lt;span style=&quot;font-size:12px;color:#888;&quot;&gt;px&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;hr class=&quot;eb2-divider&quot;&gt;
      &lt;div class=&quot;eb2-row&quot; id=&quot;eb2-title-check-row&quot;&gt;
        &lt;label class=&quot;eb2-check-label&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;eb2-show-title&quot; onchange=&quot;eb2Render()&quot;&gt; 전체화면에 행사명/부제목 텍스트 표기&lt;/label&gt;
        &lt;span style=&quot;font-size:11px;color:#aaa;margin-left:6px;&quot;&gt;(기본: 비활성)&lt;/span&gt;
      &lt;/div&gt;
      &lt;div id=&quot;eb2-title-box&quot; class=&quot;eb2-sub-box&quot; style=&quot;display:none;&quot;&gt;
        &lt;div class=&quot;eb2-row&quot;&gt;&lt;span class=&quot;eb2-label&quot;&gt;행사명&lt;/span&gt;&lt;input class=&quot;eb2-input&quot; id=&quot;eb2-ev-title&quot; placeholder=&quot;행사 제목&quot; oninput=&quot;eb2Render()&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;eb2-row&quot;&gt;&lt;span class=&quot;eb2-label&quot;&gt;부제목&lt;/span&gt;&lt;input class=&quot;eb2-input&quot; id=&quot;eb2-ev-sub&quot; placeholder=&quot;부제목 (선택)&quot; oninput=&quot;eb2Render()&quot;&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;!-- 임시현수막 --&gt;
      &lt;div id=&quot;eb2-text-banner-box&quot; class=&quot;eb2-banner-design-box&quot; style=&quot;display:none;&quot;&gt;
        &lt;div style=&quot;font-size:12px;font-weight:700;color:#c17f00;margin-bottom:10px;&quot;&gt;  임시현수막 디자인 설정 &lt;span style=&quot;font-weight:400;color:#aaa;&quot;&gt;— 배너 높이(px)로 전체 크기 조절&lt;/span&gt;&lt;/div&gt;
        &lt;div class=&quot;eb2-opt-row&quot; style=&quot;margin-bottom:10px;&quot;&gt;
          &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;배경색&lt;/label&gt;&lt;input type=&quot;color&quot; id=&quot;tb-bg-color&quot; value=&quot;#1a2a4a&quot; oninput=&quot;eb2Render()&quot;&gt;&lt;/div&gt;
          &lt;div class=&quot;eb2-opt-item&quot;&gt;
            &lt;label&gt;배경 투명도&lt;/label&gt;
            &lt;input type=&quot;range&quot; id=&quot;tb-bg-opacity&quot; min=&quot;0&quot; max=&quot;100&quot; value=&quot;100&quot; oninput=&quot;document.getElementById('tb-bg-opacity-val').textContent=this.value+'%';eb2Render()&quot;&gt;
            &lt;span id=&quot;tb-bg-opacity-val&quot; style=&quot;font-size:11px;color:#888;min-width:32px;&quot;&gt;100%&lt;/span&gt;
          &lt;/div&gt;
          &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;폰트&lt;/label&gt;
            &lt;select id=&quot;tb-font&quot; onchange=&quot;eb2Render()&quot;&gt;
              &lt;option value=&quot;'Noto Sans KR',sans-serif&quot;&gt;Noto Sans (기본)&lt;/option&gt;
              &lt;option value=&quot;'Nanum Gothic',sans-serif&quot;&gt;나눔고딕&lt;/option&gt;
              &lt;option value=&quot;'Nanum Myeongjo',serif&quot;&gt;나눔명조&lt;/option&gt;
              &lt;option value=&quot;'Malgun Gothic',sans-serif&quot;&gt;맑은고딕&lt;/option&gt;
              &lt;option value=&quot;Georgia,serif&quot;&gt;Georgia&lt;/option&gt;
              &lt;option value=&quot;'Nanum Pen Script',cursive&quot;&gt;나눔펜글씨 (손글씨)&lt;/option&gt;
              &lt;option value=&quot;'Black Han Sans',sans-serif&quot;&gt;블랙한산스 (굵고 임팩트)&lt;/option&gt;
              &lt;option value=&quot;'Jua',sans-serif&quot;&gt;주아체 (둥글둥글)&lt;/option&gt;
              &lt;option value=&quot;'Gaegu',cursive&quot;&gt;개구체 (캐주얼)&lt;/option&gt;
              &lt;option value=&quot;'Do Hyeon',sans-serif&quot;&gt;도현체 (모던 슬림)&lt;/option&gt;
            &lt;/select&gt;
          &lt;/div&gt;
          &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;정렬&lt;/label&gt;
            &lt;select id=&quot;tb-align&quot; onchange=&quot;eb2Render()&quot;&gt;
              &lt;option value=&quot;center&quot; selected&gt;가운데&lt;/option&gt;
              &lt;option value=&quot;left&quot;&gt;왼쪽&lt;/option&gt;
              &lt;option value=&quot;right&quot;&gt;오른쪽&lt;/option&gt;
            &lt;/select&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;eb2-opt-row&quot; style=&quot;margin-bottom:10px;&quot;&gt;
          &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;로고 배치&lt;/label&gt;
            &lt;select id=&quot;tb-logo-mode&quot; onchange=&quot;eb2Render()&quot;&gt;
              &lt;option value=&quot;none&quot;&gt;없음&lt;/option&gt;
              &lt;option value=&quot;left&quot; selected&gt;텍스트 왼쪽&lt;/option&gt;
              &lt;option value=&quot;right&quot;&gt;텍스트 오른쪽&lt;/option&gt;
              &lt;option value=&quot;behind&quot;&gt;글자 뒤(워터마크)&lt;/option&gt;
            &lt;/select&gt;
          &lt;/div&gt;
          &lt;div class=&quot;eb2-opt-item&quot;&gt;
            &lt;label&gt;로고 이미지&lt;/label&gt;
            &lt;input type=&quot;file&quot; id=&quot;tb-logo-file&quot; accept=&quot;image/*&quot; style=&quot;display:none&quot; onchange=&quot;eb2LoadTbLogo(this)&quot;&gt;
            &lt;button class=&quot;eb2-btn eb2-btn-sm&quot; onclick=&quot;document.getElementById('tb-logo-file').click()&quot;&gt;업로드&lt;/button&gt;
            &lt;span id=&quot;tb-logo-name&quot; style=&quot;font-size:11px;color:#888;&quot;&gt;&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;p class=&quot;eb2-hint&quot; style=&quot;margin-top:-4px;margin-bottom:8px;&quot;&gt;로고 추천 사이즈: &lt;span&gt;정방형 200×200px&lt;/span&gt; 이상 · 배너높이에 비례해 자동 조절&lt;/p&gt;
        &lt;div class=&quot;eb2-opt-row&quot; style=&quot;margin-bottom:10px;&quot;&gt;
          &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;배경 이미지&lt;/label&gt;
            &lt;select id=&quot;tb-bg-img-mode&quot; onchange=&quot;eb2Render()&quot;&gt;
              &lt;option value=&quot;none&quot;&gt;없음&lt;/option&gt;
              &lt;option value=&quot;cover&quot;&gt;꽉찬 흐린 배경&lt;/option&gt;
              &lt;option value=&quot;contain&quot;&gt;원본 흐리게&lt;/option&gt;
              &lt;option value=&quot;gradient&quot; selected&gt;그라데이션✨추천&lt;/option&gt;
            &lt;/select&gt;
          &lt;/div&gt;
          &lt;div class=&quot;eb2-opt-item&quot;&gt;
            &lt;label&gt;흐림강도&lt;/label&gt;
            &lt;input type=&quot;range&quot; id=&quot;tb-bg-blur&quot; min=&quot;0&quot; max=&quot;20&quot; value=&quot;8&quot; oninput=&quot;document.getElementById('tb-bg-blur-val').textContent=this.value;eb2Render()&quot;&gt;
            &lt;span id=&quot;tb-bg-blur-val&quot; style=&quot;font-size:11px;color:#888;min-width:20px;&quot;&gt;8&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;eb2-opt-row&quot; style=&quot;margin-bottom:4px;&quot;&gt;
          &lt;div class=&quot;eb2-opt-item&quot;&gt;
            &lt;label&gt;배경 이미지&lt;br&gt;&lt;span style=&quot;font-size:10px;color:#aaa;&quot;&gt;별도파일&lt;/span&gt;&lt;/label&gt;
            &lt;input type=&quot;file&quot; id=&quot;tb-bgimg-file&quot; accept=&quot;image/*&quot; style=&quot;display:none&quot; onchange=&quot;eb2LoadTbBgImg(this)&quot;&gt;
            &lt;button class=&quot;eb2-btn eb2-btn-sm&quot; onclick=&quot;document.getElementById('tb-bgimg-file').click()&quot;&gt;업로드&lt;/button&gt;
            &lt;button class=&quot;eb2-btn eb2-btn-sm&quot; onclick=&quot;eb2ClearTbBgImg()&quot;&gt;삭제&lt;/button&gt;
            &lt;span id=&quot;tb-bgimg-name&quot; style=&quot;font-size:11px;color:#888;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;&quot;&gt;&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;p class=&quot;eb2-hint&quot; style=&quot;margin-bottom:10px;&quot;&gt;배경 이미지 미업로드 시 로고 이미지가 배경으로 사용됩니다 · 추천 사이즈: &lt;span&gt;1920×200px&lt;/span&gt; 이상 (가로형)&lt;/p&gt;
        &lt;div class=&quot;eb2-banner-zone&quot;&gt;
          &lt;div class=&quot;eb2-banner-zone-title&quot;&gt;▲ 상단 텍스트&lt;/div&gt;
          &lt;div class=&quot;eb2-opt-row&quot;&gt;
            &lt;div class=&quot;eb2-opt-item&quot; style=&quot;flex:1;min-width:180px;&quot;&gt;&lt;input class=&quot;eb2-input&quot; id=&quot;tb-top-text&quot; placeholder=&quot;예) 2025 경남 청년창업 경진대회&quot; oninput=&quot;eb2Render()&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;색&lt;/label&gt;&lt;input type=&quot;color&quot; id=&quot;tb-top-color&quot; value=&quot;#aaccff&quot; oninput=&quot;eb2Render()&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;비율&lt;/label&gt;
              &lt;select id=&quot;tb-top-size&quot; onchange=&quot;eb2Render()&quot;&gt;
                &lt;option value=&quot;0&quot;&gt;없음&lt;/option&gt;
                &lt;option value=&quot;0.12&quot; selected&gt;소&lt;/option&gt;&lt;option value=&quot;0.18&quot;&gt;중&lt;/option&gt;&lt;option value=&quot;0.25&quot;&gt;대&lt;/option&gt;
              &lt;/select&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;eb2-banner-zone&quot;&gt;
          &lt;div class=&quot;eb2-banner-zone-title&quot;&gt;★ 중간 텍스트 (메인)&lt;/div&gt;
          &lt;div class=&quot;eb2-opt-row&quot;&gt;
            &lt;div class=&quot;eb2-opt-item&quot; style=&quot;flex:1;min-width:180px;&quot;&gt;&lt;input class=&quot;eb2-input&quot; id=&quot;tb-mid-text&quot; placeholder=&quot;예) 개회식&quot; oninput=&quot;eb2Render()&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;색&lt;/label&gt;&lt;input type=&quot;color&quot; id=&quot;tb-mid-color&quot; value=&quot;#ffffff&quot; oninput=&quot;eb2Render()&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;비율&lt;/label&gt;
              &lt;select id=&quot;tb-mid-size&quot; onchange=&quot;eb2Render()&quot;&gt;
                &lt;option value=&quot;0&quot;&gt;없음&lt;/option&gt;
                &lt;option value=&quot;0.30&quot;&gt;소&lt;/option&gt;&lt;option value=&quot;0.45&quot; selected&gt;중&lt;/option&gt;&lt;option value=&quot;0.60&quot;&gt;대&lt;/option&gt;&lt;option value=&quot;0.75&quot;&gt;특대&lt;/option&gt;
              &lt;/select&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;eb2-banner-zone&quot;&gt;
          &lt;div class=&quot;eb2-banner-zone-title&quot;&gt;▼ 하단 텍스트&lt;/div&gt;
          &lt;div class=&quot;eb2-opt-row&quot;&gt;
            &lt;div class=&quot;eb2-opt-item&quot; style=&quot;flex:1;min-width:180px;&quot;&gt;&lt;input class=&quot;eb2-input&quot; id=&quot;tb-bot-text&quot; placeholder=&quot;예) 2025. 11. 15(금)&quot; oninput=&quot;eb2Render()&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;색&lt;/label&gt;&lt;input type=&quot;color&quot; id=&quot;tb-bot-color&quot; value=&quot;#aaccff&quot; oninput=&quot;eb2Render()&quot;&gt;&lt;/div&gt;
            &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;비율&lt;/label&gt;
              &lt;select id=&quot;tb-bot-size&quot; onchange=&quot;eb2Render()&quot;&gt;
                &lt;option value=&quot;0&quot; selected&gt;없음&lt;/option&gt;
                &lt;option value=&quot;0.12&quot;&gt;소&lt;/option&gt;&lt;option value=&quot;0.18&quot;&gt;중&lt;/option&gt;&lt;option value=&quot;0.25&quot;&gt;대&lt;/option&gt;
              &lt;/select&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;eb2-opt-row&quot; style=&quot;margin-top:8px;&quot;&gt;
          &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;장식선&lt;/label&gt;
            &lt;select id=&quot;tb-deco&quot; onchange=&quot;eb2Render()&quot;&gt;
              &lt;option value=&quot;none&quot;&gt;없음&lt;/option&gt;&lt;option value=&quot;line&quot; selected&gt;라인&lt;/option&gt;&lt;option value=&quot;double&quot;&gt;이중라인&lt;/option&gt;&lt;option value=&quot;glow&quot;&gt;빛나는선&lt;/option&gt;
            &lt;/select&gt;
          &lt;/div&gt;
          &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;장식선 색&lt;/label&gt;&lt;input type=&quot;color&quot; id=&quot;tb-deco-color&quot; value=&quot;#4a90e2&quot; oninput=&quot;eb2Render()&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 발표자료 --&gt;
  &lt;div class=&quot;eb2-section&quot;&gt;
    &lt;div class=&quot;eb2-section-header&quot; onclick=&quot;eb2Toggle('files')&quot;&gt;  발표자료 (PDF / 이미지)&lt;span class=&quot;eb2-toggle&quot; id=&quot;eb2-tog-files&quot;&gt;▲&lt;/span&gt;&lt;/div&gt;
    &lt;div class=&quot;eb2-section-body&quot; id=&quot;eb2-body-files&quot;&gt;
      &lt;div id=&quot;eb2-file-list&quot; class=&quot;eb2-file-list&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;eb2-add-row&quot;&gt;
        &lt;input type=&quot;file&quot; id=&quot;eb2-add-pdf&quot; accept=&quot;.pdf&quot; style=&quot;display:none&quot; onchange=&quot;eb2AddFiles(this,'pdf')&quot;&gt;
        &lt;input type=&quot;file&quot; id=&quot;eb2-add-img&quot; accept=&quot;image/*&quot; multiple style=&quot;display:none&quot; onchange=&quot;eb2AddFiles(this,'img')&quot;&gt;
        &lt;button class=&quot;eb2-btn&quot; onclick=&quot;document.getElementById('eb2-add-pdf').click()&quot;&gt;+ PDF 추가&lt;/button&gt;
        &lt;button class=&quot;eb2-btn&quot; onclick=&quot;document.getElementById('eb2-add-img').click()&quot;&gt;+ 이미지 추가&lt;/button&gt;
      &lt;/div&gt;
      &lt;p class=&quot;eb2-hint&quot; style=&quot;margin-top:6px;&quot;&gt;순서 ▲▼ 변경 / 전체화면 하단 네비 클릭으로 즉시 전환&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 공지멘트 --&gt;
  &lt;div class=&quot;eb2-section&quot;&gt;
    &lt;div class=&quot;eb2-section-header&quot; onclick=&quot;eb2Toggle('notice')&quot;&gt;  공지멘트 슬라이드&lt;span class=&quot;eb2-toggle&quot; id=&quot;eb2-tog-notice&quot;&gt;▲&lt;/span&gt;&lt;/div&gt;
    &lt;div class=&quot;eb2-section-body&quot; id=&quot;eb2-body-notice&quot;&gt;
      &lt;div style=&quot;margin-bottom:10px;&quot;&gt;
        &lt;div style=&quot;font-size:11px;font-weight:700;color:#4a90e2;margin-bottom:5px;&quot;&gt;  첫화면 공지 &lt;span style=&quot;color:#aaa;font-weight:400;&quot;&gt;(main 다음에 표시 — 내용 없으면 스킵)&lt;/span&gt;&lt;/div&gt;
        &lt;textarea id=&quot;eb2-first-notice&quot; placeholder=&quot;첫화면 공지 내용 입력&quot; style=&quot;width:100%;background:#f0f6ff;border:1px solid #c3d9f7;border-radius:6px;color:#222;padding:8px 10px;font-size:13px;resize:vertical;min-height:56px;font-family:inherit;&quot; oninput=&quot;eb2BuildNav()&quot;&gt;&lt;/textarea&gt;
      &lt;/div&gt;
      &lt;hr style=&quot;border:none;border-top:1px solid #eee;margin:8px 0;&quot;&gt;
      &lt;div style=&quot;font-size:11px;font-weight:700;color:#888;margin-bottom:8px;&quot;&gt;  발표자료별 공지 &lt;span style=&quot;font-weight:400;&quot;&gt;(각 발표 후 표시 — 내용 없으면 스킵)&lt;/span&gt;&lt;/div&gt;
      &lt;div id=&quot;eb2-file-notice-list&quot;&gt;&lt;/div&gt;
      &lt;div id=&quot;eb2-no-files-hint&quot; style=&quot;font-size:12px;color:#bbb;padding:4px 0;&quot;&gt;← 발표자료를 추가하면 여기에 공지 입력란이 생깁니다&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 스타일 옵션 --&gt;
  &lt;div class=&quot;eb2-section&quot;&gt;
    &lt;div class=&quot;eb2-section-header&quot; onclick=&quot;eb2Toggle('style')&quot;&gt;  스타일 옵션&lt;span class=&quot;eb2-toggle&quot; id=&quot;eb2-tog-style&quot;&gt;▲&lt;/span&gt;&lt;/div&gt;
    &lt;div class=&quot;eb2-section-body&quot; id=&quot;eb2-body-style&quot;&gt;
      &lt;div class=&quot;eb2-opt-row&quot;&gt;
        &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;콘텐츠 배경&lt;/label&gt;&lt;input type=&quot;color&quot; id=&quot;eb2-content-bg&quot; value=&quot;#1a1a2e&quot; oninput=&quot;eb2Render()&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;글자색&lt;/label&gt;&lt;input type=&quot;color&quot; id=&quot;eb2-content-fg&quot; value=&quot;#ffffff&quot; oninput=&quot;eb2Render()&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;시계&lt;/label&gt;
          &lt;select id=&quot;eb2-clock-size&quot; onchange=&quot;eb2Render()&quot;&gt;
            &lt;option value=&quot;0&quot; selected&gt;없음&lt;/option&gt;
            &lt;option value=&quot;2&quot;&gt;소(우하단)&lt;/option&gt;&lt;option value=&quot;3.5&quot;&gt;중(우하단)&lt;/option&gt;&lt;option value=&quot;8&quot;&gt;대(중앙)&lt;/option&gt;
          &lt;/select&gt;
        &lt;/div&gt;
        &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label&gt;공지크기&lt;/label&gt;
          &lt;select id=&quot;eb2-notice-size&quot; onchange=&quot;eb2Render()&quot;&gt;
            &lt;option value=&quot;3&quot;&gt;소&lt;/option&gt;&lt;option value=&quot;4&quot; selected&gt;중&lt;/option&gt;&lt;option value=&quot;6&quot;&gt;대&lt;/option&gt;
          &lt;/select&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 사진촬영 옵션 --&gt;
  &lt;div class=&quot;eb2-section&quot;&gt;
    &lt;div class=&quot;eb2-section-header&quot; onclick=&quot;eb2Toggle('photo')&quot;&gt;  사진촬영 옵션&lt;span class=&quot;eb2-toggle&quot; id=&quot;eb2-tog-photo&quot;&gt;▼&lt;/span&gt;&lt;/div&gt;
    &lt;div class=&quot;eb2-section-body&quot; id=&quot;eb2-body-photo&quot; style=&quot;display:none;&quot;&gt;
      &lt;div style=&quot;font-size:12px;color:#666;margin-bottom:10px;&quot;&gt;
        마지막 슬라이드에서 현수막만 단독 표시합니다.&lt;br&gt;
        &lt;span style=&quot;color:#4a90e2;&quot;&gt;위치(%)를 조절해 사진 구도를 맞추세요 — 10%=상단, 50%=중간, 90%=하단&lt;/span&gt;
      &lt;/div&gt;
      &lt;div class=&quot;eb2-opt-row&quot;&gt;
        &lt;div class=&quot;eb2-opt-item&quot;&gt;&lt;label class=&quot;eb2-check-label&quot;&gt;&lt;input type=&quot;checkbox&quot; id=&quot;eb2-photo-enabled&quot; onchange=&quot;eb2PhotoToggle()&quot;&gt; 사진촬영 슬라이드 활성화&lt;/label&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div id=&quot;eb2-photo-opts&quot; style=&quot;display:none;margin-top:12px;&quot;&gt;
        &lt;div class=&quot;eb2-row&quot; style=&quot;align-items:center;gap:14px;&quot;&gt;
          &lt;span class=&quot;eb2-label&quot;&gt;현수막 위치&lt;/span&gt;
          &lt;input type=&quot;range&quot; id=&quot;eb2-photo-pos&quot; min=&quot;0&quot; max=&quot;90&quot; value=&quot;10&quot; style=&quot;flex:1;max-width:200px;&quot; oninput=&quot;eb2PhotoSlider()&quot;&gt;
          &lt;span id=&quot;eb2-photo-pos-val&quot; style=&quot;font-size:13px;font-weight:700;color:#4a90e2;min-width:36px;&quot;&gt;10%&lt;/span&gt;
          &lt;span style=&quot;font-size:11px;color:#aaa;&quot;&gt;(0%=최상단 / 90%=최하단)&lt;/span&gt;
        &lt;/div&gt;
        &lt;p class=&quot;eb2-hint&quot; style=&quot;margin-top:4px;&quot;&gt;전체화면  슬라이드에서 슬라이더 또는 ▲▼ 키로 조정 가능&lt;/p&gt;
      &lt;/div&gt;

      &lt;hr class=&quot;eb2-divider&quot; style=&quot;margin-top:14px;&quot;&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 전체보기 하단 메뉴바 --&gt;
  &lt;div class=&quot;eb2-section&quot;&gt;
    &lt;div class=&quot;eb2-section-header&quot; onclick=&quot;eb2Toggle('navmode')&quot;&gt;  전체보기 하단 메뉴바&lt;span class=&quot;eb2-toggle&quot; id=&quot;eb2-tog-navmode&quot;&gt;▲&lt;/span&gt;&lt;/div&gt;
    &lt;div class=&quot;eb2-section-body&quot; id=&quot;eb2-body-navmode&quot;&gt;
      &lt;div class=&quot;eb2-radio-group&quot; id=&quot;eb2-nav-mode-group&quot;&gt;
        &lt;label class=&quot;eb2-radio-label&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;eb2-nav-mode&quot; value=&quot;none&quot; onchange=&quot;eb2NavModeChange()&quot;&gt; 없음&lt;/label&gt;
        &lt;label class=&quot;eb2-radio-label selected&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;eb2-nav-mode&quot; value=&quot;auto&quot; checked onchange=&quot;eb2NavModeChange()&quot;&gt; 생성(자동숨김)&lt;/label&gt;
        &lt;label class=&quot;eb2-radio-label&quot;&gt;&lt;input type=&quot;radio&quot; name=&quot;eb2-nav-mode&quot; value=&quot;fixed&quot; onchange=&quot;eb2NavModeChange()&quot;&gt; 고정배치&lt;/label&gt;
      &lt;/div&gt;
      &lt;p class=&quot;eb2-hint&quot; style=&quot;margin-top:8px;&quot;&gt;없음: 하단 메뉴 미표시 / 자동숨김: 마우스 하단 이동 시 나타남 / 고정: 항상 표시&lt;/p&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;eb2-main-btns&quot;&gt;
    &lt;button class=&quot;eb2-btn-fullscreen&quot; onclick=&quot;eb2OpenFS()&quot;&gt;⛶ 전체화면으로 시작&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- 전체화면 --&gt;
&lt;div id=&quot;eb2-fullscreen&quot; tabindex=&quot;-1&quot; style=&quot;outline:none;&quot;&gt;
  &lt;button id=&quot;eb2-fs-close&quot; onclick=&quot;eb2CloseFS()&quot;&gt;✕&lt;/button&gt;
  &lt;div id=&quot;eb2-fs-inner&quot; style=&quot;flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0;&quot;&gt;&lt;/div&gt;
  &lt;div id=&quot;eb2-laser-dot&quot;&gt;&lt;/div&gt;
  &lt;div id=&quot;eb2-fs-nav-wrap&quot; class=&quot;hidden-nav&quot;&gt;&lt;div id=&quot;eb2-fs-nav&quot;&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
(function(){
'use strict';

var S = {
  mainImgSrc: null,
  tbLogoSrc: null,
  tbBgImgSrc: null,
  files: [],
  fileNotices: [],
  pvIdx: 0,
  fsIdx: 0,
  autoHide: true,
  pdfCache: {},
  photoPercent: 10
};

/* ── 유틸 ── */
function pad(n){ return n&lt;10?'0'+n:String(n); }
function nowStr(){ var d=new Date(); return pad(d.getHours())+':'+pad(d.getMinutes())+':'+pad(d.getSeconds()); }
function hexToRgba(hex, a){
  var h=hex.replace('#','');
  var r=parseInt(h.substring(0,2),16)||0;
  var g=parseInt(h.substring(2,4),16)||0;
  var b=parseInt(h.substring(4,6),16)||0;
  return 'rgba('+r+','+g+','+b+','+a+')';
}

/* ── 섹션 토글 ── */
window.eb2Toggle = function(key){
  var body=document.getElementById('eb2-body-'+key);
  var tog=document.getElementById('eb2-tog-'+key);
  if(!body) return;
  var hidden=body.style.display==='none';
  body.style.display=hidden?'':'none';
  tog.textContent=hidden?'▲':'▼';
};

/* ── 라디오 스타일 ── */
function syncRadio(){
  var labels=document.querySelectorAll('#eb2-layout-group .eb2-radio-label');
  for(var i=0;i&lt;labels.length;i++){
    labels[i].classList.toggle('selected', labels[i].querySelector('input').checked);
  }
}

/* ── 배치 변경 ── */
window.eb2LayoutChange = function(){
  var val=document.querySelector('input[name=&quot;eb2-layout&quot;]:checked').value;
  syncRadio();
  var isText=(val==='text'), isSide=(val==='side');
  document.getElementById('eb2-img-upload-area').style.display=isText?'none':'';
  document.getElementById('eb2-banner-style-row').style.display=isSide?'none':'';
  document.getElementById('eb2-side-row').style.display=isSide?'':'none';
  document.getElementById('eb2-text-banner-box').style.display=isText?'':'none';
  var chk=document.getElementById('eb2-show-title');
  var row=document.getElementById('eb2-title-check-row');
  if(isText){
    chk.checked=false;
    row.style.display='none';
    document.getElementById('eb2-title-box').style.display='none';
  } else { row.style.display=''; document.getElementById('eb2-title-box').style.display=chk.checked?'':'none'; }
  var hints={'top-fit':'추천: &lt;span&gt;1920×200px&lt;/span&gt; — 가로 꽉차게','top-ori':'원본 비율 그대로 표시','side':'추천: &lt;span&gt;200×1080px&lt;/span&gt; — 세로 배너','logo':'추천: &lt;span&gt;200×200px&lt;/span&gt; — 로고'};
  var hintEl=document.getElementById('eb2-img-hint');
  if(hints[val]) hintEl.innerHTML=hints[val];
  var lbMap={'top-fit':'현수막 이미지','top-ori':'현수막 이미지','side':'배너 이미지','logo':'로고 이미지'};
  if(lbMap[val]) document.getElementById('eb2-img-label').textContent=lbMap[val];
  eb2Render();
};

document.getElementById('eb2-show-title').addEventListener('change',function(){
  document.getElementById('eb2-title-box').style.display=this.checked?'':'none';
  eb2Render();
});

/* ── 이미지 로드 ── */
window.eb2LoadMainImg=function(input){
  if(!input.files||!input.files[0]) return;
  var r=new FileReader();
  r.onload=function(e){ S.mainImgSrc=e.target.result; var w=document.getElementById('eb2-img-preview-wrap'); w.innerHTML=''; var img=document.createElement('img'); img.src=S.mainImgSrc; img.className='eb2-img-preview'; w.appendChild(img); eb2Render(); };
  r.readAsDataURL(input.files[0]);
};
window.eb2ClearMainImg=function(){ S.mainImgSrc=null; document.getElementById('eb2-img-preview-wrap').innerHTML='&lt;div class=&quot;eb2-img-placeholder&quot;&gt;없음&lt;/div&gt;'; eb2Render(); };
window.eb2LoadTbLogo=function(input){
  if(!input.files||!input.files[0]) return;
  var r=new FileReader();
  r.onload=function(e){ S.tbLogoSrc=e.target.result; document.getElementById('tb-logo-name').textContent=input.files[0].name; eb2Render(); };
  r.readAsDataURL(input.files[0]);
};
window.eb2LoadTbBgImg=function(input){
  if(!input.files||!input.files[0]) return;
  var r=new FileReader();
  r.onload=function(e){ S.tbBgImgSrc=e.target.result; document.getElementById('tb-bgimg-name').textContent=input.files[0].name; eb2Render(); };
  r.readAsDataURL(input.files[0]);
};
window.eb2ClearTbBgImg=function(){
  S.tbBgImgSrc=null;
  document.getElementById('tb-bgimg-name').textContent='';
  document.getElementById('tb-bgimg-file').value='';
  eb2Render();
};

/* ── 파일 추가 ── */
window.eb2AddFiles=function(input,type){
  if(!input.files) return;
  var files=Array.prototype.slice.call(input.files);
  var done=0, firstIdx=S.files.length;
  files.forEach(function(f){
    var r=new FileReader();
    r.onload=function(e){
      S.files.push({type:type,name:f.name,src:e.target.result});
      S.fileNotices.push('');
      done++;
      if(done===files.length){ S.pvIdx=firstIdx+1; eb2RenderFileList(); eb2RenderFileNotices(); eb2BuildNav(); eb2Render(); }
    };
    r.readAsDataURL(f);
  });
  input.value='';
};
function eb2RenderFileList(){
  var list=document.getElementById('eb2-file-list');
  list.innerHTML='';
  S.files.forEach(function(f,i){
    var item=document.createElement('div'); item.className='eb2-file-item';
    item.innerHTML='&lt;span style=&quot;font-size:16px;&quot;&gt;'+(f.type==='pdf'?' ':' ')+'&lt;/span&gt;'
      +'&lt;span class=&quot;eb2-file-name&quot;&gt;'+f.name+'&lt;/span&gt;'
      +'&lt;span class=&quot;eb2-file-type&quot;&gt;'+getFileLabel(i)+'&lt;/span&gt;'
      +'&lt;button class=&quot;eb2-file-move&quot; onclick=&quot;eb2MoveFile('+i+',-1)&quot;&gt;▲&lt;/button&gt;'
      +'&lt;button class=&quot;eb2-file-move&quot; onclick=&quot;eb2MoveFile('+i+',1)&quot;&gt;▼&lt;/button&gt;'
      +'&lt;button class=&quot;eb2-file-del&quot; onclick=&quot;eb2DelFile('+i+')&quot;&gt;✕&lt;/button&gt;';
    list.appendChild(item);
  });
}
function getFileLabel(i){
  var pn=0,im=0;
  for(var j=0;j&lt;=i;j++){ if(S.files[j].type==='pdf') pn++; else im++; }
  return S.files[i].type==='pdf'?'pdf'+pn:'img'+im;
}
window.eb2MoveFile=function(i,dir){
  var j=i+dir; if(j&lt;0||j&gt;=S.files.length) return;
  var t=S.files[i]; S.files[i]=S.files[j]; S.files[j]=t;
  var tn=S.fileNotices[i]; S.fileNotices[i]=S.fileNotices[j]; S.fileNotices[j]=tn;
  eb2RenderFileList(); eb2RenderFileNotices(); eb2BuildNav(); eb2Render();
};
window.eb2DelFile=function(i){
  S.files.splice(i,1); S.fileNotices.splice(i,1);
  S.pvIdx=Math.max(0,S.pvIdx-1);
  eb2RenderFileList(); eb2RenderFileNotices(); eb2BuildNav(); eb2Render();
};

/* ── 파일별 공지 UI ── */
function eb2RenderFileNotices(){
  var wrap=document.getElementById('eb2-file-notice-list');
  var hint=document.getElementById('eb2-no-files-hint');
  wrap.innerHTML='';
  if(S.files.length===0){ hint.style.display=''; eb2BuildNav(); return; }
  hint.style.display='none';
  S.files.forEach(function(f,i){
    var row=document.createElement('div'); row.style.cssText='margin-bottom:8px;';
    var lbl=document.createElement('div'); lbl.style.cssText='font-size:11px;color:#888;margin-bottom:4px;';
    lbl.innerHTML='&lt;span style=&quot;color:#4a90e2;font-weight:700;&quot;&gt;['+getFileLabel(i)+']&lt;/span&gt; '+f.name+' 다음 공지';
    var ta=document.createElement('textarea');
    ta.placeholder='내용 없으면 스킵됩니다';
    ta.value=S.fileNotices[i]||'';
    ta.style.cssText='width:100%;background:#f7f8fa;border:1px solid #dde1e7;border-radius:6px;color:#222;padding:8px 10px;font-size:13px;resize:vertical;min-height:48px;font-family:inherit;';
    (function(idx){ ta.addEventListener('input',function(){ S.fileNotices[idx]=ta.value; eb2BuildNav(); }); })(i);
    row.appendChild(lbl); row.appendChild(ta); wrap.appendChild(row);
  });
  eb2BuildNav();
}

/* ── 슬라이드 목록 ── */
// main → [첫공지?] → file0 → [file0공지?] → file1 → ... → [ ?]
function getSlides(){
  var slides=[{type:'main'}];
  var fn=document.getElementById('eb2-first-notice');
  if(fn&amp;&amp;fn.value.trim()) slides.push({type:'notice',text:fn.value,nLabel:'첫공지'});
  S.files.forEach(function(f,i){
    slides.push({type:f.type,file:f,fileIdx:i});
    if((S.fileNotices[i]||'').trim()) slides.push({type:'notice',text:S.fileNotices[i],nLabel:'공지'+(i+1)});
  });
  var pc=document.getElementById('eb2-photo-enabled');
  if(pc&amp;&amp;pc.checked) slides.push({type:'photo'});
  return slides;
}
function getSlideLabel(slides,idx){
  var s=slides[idx];
  if(s.type==='main') return 'main';
  if(s.type==='photo') return ' ';
  if(s.type==='notice') return s.nLabel;
  var pn=0,im=0;
  for(var i=0;i&lt;=idx;i++){
    if(!slides[i]||slides[i].type==='notice'||slides[i].type==='main'||slides[i].type==='photo') continue;
    if(slides[i].type==='pdf') pn++; else im++;
  }
  if(s.type==='pdf') return 'pdf'+pn;
  if(s.type==='img') return 'img'+im;
  return '';
}

/* ── 옵션 읽기 ── */
function opts(){
  return {
    layout: document.querySelector('input[name=&quot;eb2-layout&quot;]:checked').value,
    bannerBg: document.getElementById('eb2-banner-bg').value,
    bannerFg: document.getElementById('eb2-banner-fg').value,
    bannerH: parseInt(document.getElementById('eb2-banner-h').value)||170,
    sideBg: document.getElementById('eb2-side-bg').value,
    sideW: parseInt(document.getElementById('eb2-side-w').value)||160,
    contentBg: document.getElementById('eb2-content-bg').value,
    contentFg: document.getElementById('eb2-content-fg').value,
    clockSize: parseFloat(document.getElementById('eb2-clock-size').value),
    noticeSize: document.getElementById('eb2-notice-size').value,
    showTitle: document.getElementById('eb2-show-title').checked,
    title: document.getElementById('eb2-ev-title').value||'',
    sub: document.getElementById('eb2-ev-sub').value||'',
    tbBg: document.getElementById('tb-bg-color').value,
    tbBgOpacity: parseInt(document.getElementById('tb-bg-opacity').value)/100,
    tbFont: document.getElementById('tb-font').value,
    tbAlign: document.getElementById('tb-align').value,
    tbLogoMode: document.getElementById('tb-logo-mode').value,
    tbBgImgMode: document.getElementById('tb-bg-img-mode').value,
    tbBgBlur: parseInt(document.getElementById('tb-bg-blur').value),
    tbTopText: document.getElementById('tb-top-text').value,
    tbTopColor: document.getElementById('tb-top-color').value,
    tbTopRatio: parseFloat(document.getElementById('tb-top-size').value),
    tbMidText: document.getElementById('tb-mid-text').value,
    tbMidColor: document.getElementById('tb-mid-color').value,
    tbMidRatio: parseFloat(document.getElementById('tb-mid-size').value),
    tbBotText: document.getElementById('tb-bot-text').value,
    tbBotColor: document.getElementById('tb-bot-color').value,
    tbBotRatio: parseFloat(document.getElementById('tb-bot-size').value),
    tbDeco: document.getElementById('tb-deco').value,
    tbDecoColor: document.getElementById('tb-deco-color').value
  };
}

/* ── 임시현수막 배너 생성 ── */
function makeTextBanner(o, h){
  var wrap=document.createElement('div');
  wrap.style.cssText='position:relative;width:100%;height:'+h+'px;overflow:hidden;display:flex;flex-direction:row;align-items:stretch;background:'+hexToRgba(o.tbBg,o.tbBgOpacity)+';font-family:'+o.tbFont+';flex-shrink:0;';

  // 배경이미지 레이어 (별도 배경이미지 우선, 없으면 로고 이미지 사용)
  var bgSrc = S.tbBgImgSrc || S.tbLogoSrc;
  if(o.tbBgImgMode!=='none' &amp;&amp; bgSrc){
    var bgL=document.createElement('div');
    bgL.style.cssText='position:absolute;top:0;left:0;width:100%;height:100%;z-index:0;overflow:hidden;';
    var bgI=document.createElement('img'); bgI.src=bgSrc;
    if(o.tbBgImgMode==='cover') bgI.style.cssText='width:100%;height:100%;object-fit:cover;filter:blur('+o.tbBgBlur+'px);opacity:0.35;transform:scale(1.05);';
    else if(o.tbBgImgMode==='contain') bgI.style.cssText='position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);max-height:100%;max-width:100%;filter:blur('+o.tbBgBlur+'px);opacity:0.25;';
    else if(o.tbBgImgMode==='gradient'){ bgI.style.cssText='width:100%;height:100%;object-fit:cover;filter:blur('+o.tbBgBlur+'px);opacity:0.4;transform:scale(1.05);'; var grd=document.createElement('div'); grd.style.cssText='position:absolute;inset:0;background:linear-gradient(135deg,rgba(0,0,0,0.55),rgba(0,40,80,0.45));z-index:1;'; bgL.appendChild(grd); }
    bgL.appendChild(bgI); wrap.appendChild(bgL);
  }

  // 로고 왼쪽
  if(o.tbLogoMode==='left'&amp;&amp;S.tbLogoSrc){
    var ll=document.createElement('div'); ll.style.cssText='flex-shrink:0;display:flex;align-items:center;padding:6px 12px;z-index:2;';
    var li=document.createElement('img'); li.src=S.tbLogoSrc; li.style.cssText='height:'+(h-16)+'px;object-fit:contain;';
    ll.appendChild(li); wrap.appendChild(ll);
  }

  // 텍스트 영역
  var ta=document.createElement('div');
  var align=o.tbAlign==='center'?'center':o.tbAlign==='right'?'flex-end':'flex-start';
  ta.style.cssText='flex:1;display:flex;flex-direction:column;align-items:'+align+';justify-content:center;text-align:'+o.tbAlign+';padding:6px 24px;z-index:2;overflow:hidden;position:relative;gap:4px;';

  // 워터마크
  if(o.tbLogoMode==='behind'&amp;&amp;S.tbLogoSrc){
    var wm=document.createElement('img'); wm.src=S.tbLogoSrc;
    wm.style.cssText='position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);height:'+(h*0.85)+'px;object-fit:contain;opacity:0.1;pointer-events:none;';
    ta.appendChild(wm);
  }

  // 장식선 상단 (flex item)
  if(o.tbDeco!=='none') ta.appendChild(makeDecoLine(o,true));

  if(o.tbTopText &amp;&amp; o.tbTopRatio&gt;0){ var tel=document.createElement('div'); tel.style.cssText='font-size:'+(h*o.tbTopRatio)+'px;color:'+o.tbTopColor+';line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;flex-shrink:0;'; tel.textContent=o.tbTopText; ta.appendChild(tel); }
  if(o.tbMidText &amp;&amp; o.tbMidRatio&gt;0){ var mel=document.createElement('div'); mel.style.cssText='font-size:'+(h*o.tbMidRatio)+'px;color:'+o.tbMidColor+';font-weight:700;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;flex-shrink:0;'; mel.textContent=o.tbMidText; ta.appendChild(mel); }
  if(o.tbBotText &amp;&amp; o.tbBotRatio&gt;0){ var bel=document.createElement('div'); bel.style.cssText='font-size:'+(h*o.tbBotRatio)+'px;color:'+o.tbBotColor+';line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%;flex-shrink:0;'; bel.textContent=o.tbBotText; ta.appendChild(bel); }

  if(o.tbDeco!=='none') ta.appendChild(makeDecoLine(o,false));
  wrap.appendChild(ta);

  // 로고 오른쪽
  if(o.tbLogoMode==='right'&amp;&amp;S.tbLogoSrc){
    var rl=document.createElement('div'); rl.style.cssText='flex-shrink:0;display:flex;align-items:center;padding:6px 12px;z-index:2;';
    var ri=document.createElement('img'); ri.src=S.tbLogoSrc; ri.style.cssText='height:'+(h-16)+'px;object-fit:contain;';
    rl.appendChild(ri); wrap.appendChild(rl);
  }
  return wrap;
}
function makeDecoLine(o,isTop){
  var d=document.createElement('div');
  var base='width:100%;flex-shrink:0;'+(isTop?'margin-bottom:4px;':'margin-top:4px;');
  if(o.tbDeco==='line') d.style.cssText=base+'height:2px;background:'+o.tbDecoColor+';border-radius:1px;';
  else if(o.tbDeco==='double') d.style.cssText=base+'height:6px;border-top:2px solid '+o.tbDecoColor+';border-bottom:2px solid '+o.tbDecoColor+';';
  else if(o.tbDeco==='glow') d.style.cssText=base+'height:2px;background:'+o.tbDecoColor+';box-shadow:0 0 8px '+o.tbDecoColor+',0 0 20px '+o.tbDecoColor+'66;border-radius:1px;';
  return d;
}

/* ── 일반 배너 생성 ── */
function makeBannerTop(o, small){
  var div=document.createElement('div');
  div.style.cssText='display:flex;align-items:center;gap:14px;overflow:hidden;flex-shrink:0;background:'+o.bannerBg+';color:'+o.bannerFg+';height:'+o.bannerH+'px;padding:0 16px;position:relative;';
  if(S.mainImgSrc){
    var img=document.createElement('img'); img.src=S.mainImgSrc;
    if(o.layout==='top-fit') img.style.cssText='position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;z-index:0;';
    else if(o.layout==='top-ori') img.style.cssText='height:'+(o.bannerH-8)+'px;object-fit:contain;flex-shrink:0;position:relative;z-index:1;';
    else img.style.cssText='height:'+(o.bannerH-16)+'px;object-fit:contain;flex-shrink:0;position:relative;z-index:1;';
    div.appendChild(img);
  }
  if(o.showTitle){
    var tw=document.createElement('div'); tw.style.cssText='position:relative;z-index:1;overflow:hidden;';
    var t=document.createElement('div'); t.style.cssText='font-size:'+(small?14:20)+'px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:'+o.bannerFg+';'; t.textContent=o.title||'(행사명)'; tw.appendChild(t);
    if(o.sub){ var ss=document.createElement('div'); ss.style.cssText='font-size:'+(small?11:14)+'px;opacity:0.7;margin-top:2px;color:'+o.bannerFg+';'; ss.textContent=o.sub; tw.appendChild(ss); }
    div.appendChild(tw);
  }
  return div;
}

/* ── 슬라이드 콘텐츠 생성 ── */
function makeSlideContent(slide, o, forFS){
  var wrap=document.createElement('div');
  wrap.style.cssText='position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;overflow:hidden;';

  if(slide.type==='main'){
    wrap.style.background=o.contentBg;
    wrap.style.color=o.contentFg;
    if(o.clockSize&gt;=8){
      var clk=document.createElement('div');
      clk.style.cssText='font-size:'+o.clockSize+'vw;font-weight:700;font-variant-numeric:tabular-nums;';
      clk.className=forFS?'eb2-fs-clk-main':'eb2-pv-clk-main';
      wrap.appendChild(clk);
    } else if(o.clockSize&gt;0){
      var corner=document.createElement('div');
      corner.style.cssText='position:absolute;right:14px;bottom:10px;font-size:'+o.clockSize+'vw;font-variant-numeric:tabular-nums;opacity:0.8;';
      corner.className=forFS?'eb2-fs-clk-corner':'eb2-pv-clk-corner';
      wrap.appendChild(corner);
    }
  } else if(slide.type==='img'){
    wrap.style.background='#000';
    var img=document.createElement('img'); img.src=slide.file.src;
    img.style.cssText='width:100%;height:100%;object-fit:contain;display:block;';
    wrap.appendChild(img);
    if(o.clockSize&gt;0&amp;&amp;o.clockSize&lt;8){ var c2=document.createElement('div'); c2.style.cssText='position:absolute;right:14px;bottom:10px;font-size:'+o.clockSize+'vw;font-variant-numeric:tabular-nums;opacity:0.7;color:'+o.contentFg+';'; c2.className=forFS?'eb2-fs-clk-corner':'eb2-pv-clk-corner'; wrap.appendChild(c2); }
  } else if(slide.type==='pdf'){
    wrap.style.background='#404040';
    var canvas=document.createElement('canvas');
    canvas.style.cssText='display:block;max-width:100%;max-height:100%;pointer-events:none;';
    wrap.appendChild(canvas);
    // DOM에 붙은 뒤 렌더 (setTimeout 0으로 다음 틱에)
    (function(cv, sl){ setTimeout(function(){ renderPdf(sl, cv, forFS); }, 0); })(canvas, slide);
  } else if(slide.type==='notice'){
    wrap.style.background=o.contentBg;
    wrap.style.color=o.contentFg;
    var nt=document.createElement('div');
    nt.style.cssText='font-size:'+o.noticeSize+'vw;text-align:center;padding:40px;line-height:1.7;white-space:pre-wrap;';
    nt.textContent=slide.text; wrap.appendChild(nt);
    if(o.clockSize&gt;0&amp;&amp;o.clockSize&lt;8){ var c3=document.createElement('div'); c3.style.cssText='position:absolute;right:14px;bottom:10px;font-size:'+o.clockSize+'vw;font-variant-numeric:tabular-nums;opacity:0.7;'; c3.className=forFS?'eb2-fs-clk-corner':'eb2-pv-clk-corner'; wrap.appendChild(c3); }
  } else if(slide.type==='photo'){
    wrap.style.background=o.contentBg;
    var pct = S.photoPercent||10;
    var pw=document.createElement('div');
    pw.style.cssText='position:absolute;left:0;top:'+pct+'%;width:100%;';
    var pb;
    if(o.layout==='text') pb=makeTextBanner(o,o.bannerH);
    else { pb=makeBannerTop(o,false); }
    pb.style.width='100%';
    pw.appendChild(pb); wrap.appendChild(pw);
  }
  return wrap;
}

/* ── PDF.js 렌더 ── */
function renderPdf(slide, canvas, forFS){
  if(typeof pdfjsLib==='undefined'){
    if(canvas.parentElement) canvas.parentElement.innerHTML='&lt;div style=&quot;color:#fff;padding:20px;text-align:center;&quot;&gt;PDF.js 로드 실패&lt;br&gt;인터넷 연결을 확인하세요&lt;/div&gt;';
    return;
  }
  var key=slide.fileIdx+'_'+slide.file.name;
  var state=S.pdfCache[key];
  var doRender=function(pdf, page){
    pdf.getPage(page).then(function(pg){
      var par=canvas.parentElement;
      var pw=par?par.offsetWidth:800;
      var ph=par?par.offsetHeight:600;
      if(!pw||!ph){ pw=800; ph=600; }
      var vp0=pg.getViewport({scale:1});
      var scale=Math.min(pw/vp0.width, ph/vp0.height)*0.98;
      var vp=pg.getViewport({scale:scale});
      canvas.width=vp.width; canvas.height=vp.height;
      pg.render({canvasContext:canvas.getContext('2d'), viewport:vp});
      // 페이지 수 표시 (버튼 없이, 우하단 작게)
      if(par &amp;&amp; pdf.numPages&gt;1){
        var old=par.querySelector('.eb2-pdf-info'); if(old) old.remove();
        var info=document.createElement('div');
        info.className='eb2-pdf-info';
        info.style.cssText='position:absolute;bottom:8px;right:12px;background:rgba(0,0,0,0.5);color:#fff;font-size:12px;padding:3px 10px;border-radius:12px;pointer-events:none;z-index:5;';
        info.textContent=page+' / '+pdf.numPages;
        par.appendChild(info);
      }
    });
  };
  if(state){ doRender(state.pdf, state.curPage); return; }
  try{
    var b64=slide.file.src.split(',')[1];
    var bc=atob(b64), ba=new Uint8Array(bc.length);
    for(var i=0;i&lt;bc.length;i++) ba[i]=bc.charCodeAt(i);
    pdfjsLib.getDocument({data:ba}).promise.then(function(pdf){
      S.pdfCache[key]={pdf:pdf, curPage:1, totalPages:pdf.numPages};
      doRender(pdf,1);
    }).catch(function(){
      if(canvas.parentElement) canvas.parentElement.innerHTML='&lt;div style=&quot;color:#fff;padding:20px;text-align:center;&quot;&gt;PDF 로드 실패&lt;/div&gt;';
    });
  }catch(e){
    if(canvas.parentElement) canvas.parentElement.innerHTML='&lt;div style=&quot;color:#fff;padding:20px;text-align:center;&quot;&gt;PDF 처리 오류&lt;/div&gt;';
  }
}

/* ── 화살표 ── */
function appendArrows(container, isPv){
  var aL=document.createElement('button');
  aL.className='eb2-slide-arrow left'; aL.innerHTML='&amp;#8249;';
  aL.style.zIndex='50';
  aL.addEventListener('click',function(e){ e.stopPropagation(); isPv?eb2PvSlide(-1):eb2FSSlide(-1); });
  container.appendChild(aL);
  var aR=document.createElement('button');
  aR.className='eb2-slide-arrow right'; aR.innerHTML='&amp;#8250;';
  aR.style.zIndex='50';
  aR.addEventListener('click',function(e){ e.stopPropagation(); isPv?eb2PvSlide(1):eb2FSSlide(1); });
  container.appendChild(aR);
}
function makeFSArrows(){
  var f=document.createDocumentFragment();
  var aL=document.createElement('button'); aL.className='eb2-fs-arr left'; aL.innerHTML='&amp;#8249;'; aL.style.zIndex='50';
  aL.addEventListener('click',function(e){ e.stopPropagation(); eb2FSSlide(-1); }); f.appendChild(aL);
  var aR=document.createElement('button'); aR.className='eb2-fs-arr right'; aR.innerHTML='&amp;#8250;'; aR.style.zIndex='50';
  aR.addEventListener('click',function(e){ e.stopPropagation(); eb2FSSlide(1); }); f.appendChild(aR);
  return f;
}

/* ── 공통 렌더 핵심: 배너+콘텐츠 조립 ── */
function buildScreen(container, slide, o, forFS){
  // 사진촬영 슬라이드: 배너 없이 전체 화면 = 배경 + 배너를 % 위치에 배치
  if(slide.type==='photo'){
    var ca2=document.createElement('div'); ca2.style.cssText='flex:1;position:relative;min-height:0;overflow:hidden;background:'+o.contentBg+';';
    ca2.appendChild(makeSlideContent(slide,o,forFS));
    if(forFS) ca2.appendChild(makeFSArrows()); else appendArrows(ca2,true);
    container.appendChild(ca2); return;
  }

  // 배너
  var banner;
  if(o.layout==='text') banner=makeTextBanner(o,o.bannerH);
  else if(o.layout==='side'){
    var row=document.createElement('div'); row.style.cssText='display:flex;flex:1;min-height:0;overflow:hidden;';
    var mkS=function(){ var d=document.createElement('div'); d.style.cssText='width:'+o.sideW+'px;background:'+o.sideBg+';flex-shrink:0;overflow:hidden;'; if(S.mainImgSrc){ var img=document.createElement('img'); img.src=S.mainImgSrc; img.style.cssText='width:100%;height:100%;object-fit:cover;'; d.appendChild(img); } return d; };
    var center=document.createElement('div'); center.style.cssText='flex:1;position:relative;min-height:0;overflow:hidden;';
    center.appendChild(makeSlideContent(slide,o,forFS));
    if(forFS) center.appendChild(makeFSArrows()); else appendArrows(center,true);
    row.appendChild(mkS()); row.appendChild(center); row.appendChild(mkS());
    container.appendChild(row); return;
  }
  else banner=makeBannerTop(o,!forFS);
  container.appendChild(banner);

  // 콘텐츠 영역
  var ca=document.createElement('div'); ca.style.cssText='flex:1;position:relative;min-height:0;overflow:hidden;background:'+o.contentBg+';';
  ca.appendChild(makeSlideContent(slide,o,forFS));
  if(forFS) ca.appendChild(makeFSArrows()); else appendArrows(ca,true);
  container.appendChild(ca);
}

/* ── 미리보기 렌더 ── */
window.eb2Render=function(){
  var o=opts(), slides=getSlides();
  if(S.pvIdx&gt;=slides.length) S.pvIdx=0;
  var pv=document.getElementById('eb2-pv-main');
  pv.innerHTML='';
  pv.style.cssText='display:flex;flex-direction:column;min-height:300px;background:'+o.contentBg+';overflow:hidden;';
  buildScreen(pv, slides[S.pvIdx], o, false);
  document.getElementById('eb2-pv-indicator').textContent=(S.pvIdx+1)+' / '+slides.length+' — '+getSlideLabel(slides,S.pvIdx);
};
window.eb2PvSlide=function(dir){ var sl=getSlides(); S.pvIdx=(S.pvIdx+dir+sl.length)%sl.length; eb2Render(); };

/* ── 전체화면 ── */
/* ── Tistory 메뉴 차단 ── */
// Tistory 스킨의 고정 헤더/메뉴 요소들을 전체화면 진입 시 숨김
var TISTORY_SELECTORS = [
  '#header', '.header', '#tistory-header', '.tistory-header',
  '#nav', '.nav', '#gnb', '.gnb', '#lnb', '.lnb',
  '.tistory-layer-popup', '#tistory_layer',
  '[id*=&quot;tistory&quot;][class*=&quot;header&quot;]', '[id*=&quot;tistory&quot;][class*=&quot;nav&quot;]',
  '.aside', '#aside', '.sidebar', '#sidebar'
];
var _hiddenEls = [];

function tistoryHide(){
  _hiddenEls = [];
  TISTORY_SELECTORS.forEach(function(sel){
    try{
      var els = document.querySelectorAll(sel);
      for(var i=0;i&lt;els.length;i++){
        // 전체화면 div 안쪽 요소는 건드리지 않음
        if(!document.getElementById('eb2-fullscreen').contains(els[i]) &amp;&amp; !document.getElementById('eb2-root').contains(els[i])){
          _hiddenEls.push({el:els[i], z:els[i].style.zIndex, vis:els[i].style.visibility});
          els[i].style.setProperty('z-index','-1','important');
          els[i].style.setProperty('visibility','hidden','important');
        }
      }
    }catch(e){}
  });
  // 추가로 body의 직계 자식 중 높은 z-index 요소도 강제 하강
  var bodyChildren = document.body.children;
  for(var j=0;j&lt;bodyChildren.length;j++){
    var ch = bodyChildren[j];
    if(ch.id==='eb2-fullscreen'||ch.id==='eb2-root') continue;
    var cs = window.getComputedStyle(ch);
    var zi = parseInt(cs.zIndex);
    if(!isNaN(zi) &amp;&amp; zi &gt; 9000){
      _hiddenEls.push({el:ch, z:ch.style.zIndex, vis:ch.style.visibility});
      ch.style.setProperty('z-index','-1','important');
    }
  }
}

function tistoryRestore(){
  _hiddenEls.forEach(function(item){
    item.el.style.zIndex = item.z;
    item.el.style.visibility = item.vis;
  });
  _hiddenEls = [];
}

window.eb2OpenFS=function(){
  var fs=document.getElementById('eb2-fullscreen');
  fs.classList.add('active'); 
  var fn=document.getElementById('eb2-first-notice');
  var hasFirstNotice = fn &amp;&amp; fn.value.trim().length &gt; 0;
  S.fsIdx = (hasFirstNotice || S.files.length &gt; 0) ? 1 : 0;
  document.body.style.overflow='hidden';
  tistoryHide(); // Tistory 메뉴 숨김
  setTimeout(function(){ fs.focus(); }, 100);
  var o=opts(); fs.style.background=o.contentBg; fs.style.color=o.contentFg;
  eb2BuildNav(); applyNavMode(); eb2RenderFS();
  if(document.documentElement.requestFullscreen){
    document.documentElement.requestFullscreen().catch(function(){});
  }
};
window.eb2CloseFS=function(){
  document.getElementById('eb2-fullscreen').classList.remove('active');
  document.body.style.overflow='';
  tistoryRestore(); // Tistory 메뉴 복원
  if(document.exitFullscreen) document.exitFullscreen().catch(function(){});
};
function eb2RenderFS(){
  var o=opts(), slides=getSlides();
  if(S.fsIdx&gt;=slides.length) S.fsIdx=0;
  var inner=document.getElementById('eb2-fs-inner');
  inner.innerHTML='';
  inner.style.cssText='flex:1;display:flex;flex-direction:column;overflow:hidden;min-height:0;background:'+o.contentBg+';color:'+o.contentFg+';';
  buildScreen(inner, slides[S.fsIdx], o, true);
  updateNavActive();
}
/* ── 전체화면 슬라이드 전환 (PDF 페이지 인식) ── */
window.eb2FSSlide=function(dir){
  var slides=getSlides();
  var cur=slides[S.fsIdx];
  // 현재 슬라이드가 PDF이면 페이지 먼저 넘김
  if(cur &amp;&amp; cur.type==='pdf'){
    var key=cur.fileIdx+'_'+cur.file.name;
    var state=S.pdfCache[key];
    if(state){
      if(dir&gt;0 &amp;&amp; state.curPage &lt; state.totalPages){
        // 다음 페이지
        state.curPage++;
        eb2RenderFS();
        return;
      } else if(dir&lt;0 &amp;&amp; state.curPage &gt; 1){
        // 이전 페이지
        state.curPage--;
        eb2RenderFS();
        return;
      }
      // 첫/마지막 페이지 → 슬라이드 전환
    }
  }
  S.fsIdx=(S.fsIdx+dir+slides.length)%slides.length;
  // 새 슬라이드가 PDF이고 뒤로 이동한 경우 → 마지막 페이지부터 시작
  if(dir&lt;0){
    var newSlide=slides[S.fsIdx];
    if(newSlide &amp;&amp; newSlide.type==='pdf'){
      var k2=newSlide.fileIdx+'_'+newSlide.file.name;
      if(S.pdfCache[k2]) S.pdfCache[k2].curPage=S.pdfCache[k2].totalPages;
    }
  }
  eb2RenderFS();
};

/* ── 네비 ── */
function eb2BuildNav(){
  var slides=getSlides(), nav=document.getElementById('eb2-fs-nav');
  nav.innerHTML='';
  slides.forEach(function(s,i){
    var label=getSlideLabel(slides,i);
    var tip=s.type==='main'?'메인 대기화면':s.type==='photo'?'사진촬영':s.type==='notice'?s.text.slice(0,20)+'…':s.file.name;
    var btn=document.createElement('button');
    btn.className='eb2-nav-btn'+(i===S.fsIdx?' active':'');
    btn.innerHTML=label+'&lt;span class=&quot;eb2-nav-tooltip&quot;&gt;'+tip+'&lt;/span&gt;';
    btn.addEventListener('click',function(){ S.fsIdx=i; eb2RenderFS(); updateNavActive(); });
    nav.appendChild(btn);
  });
}
window.eb2BuildNav=eb2BuildNav;
function updateNavActive(){ var btns=document.querySelectorAll('#eb2-fs-nav .eb2-nav-btn'); for(var i=0;i&lt;btns.length;i++) btns[i].classList.toggle('active',i===S.fsIdx); }

/* ── 자동숨김 트리거 ── */
var navTimer=null;
document.addEventListener('mousemove',function(e){
  var fs=document.getElementById('eb2-fullscreen');
  // 레이저포인터 (전체화면)
  var dot=document.getElementById('eb2-laser-dot');
  if(dot&amp;&amp;fs&amp;&amp;fs.classList.contains('active')){ dot.style.display='block'; dot.style.left=e.clientX+'px'; dot.style.top=e.clientY+'px'; }
  else if(dot) dot.style.display='none';
  // 자동숨김
  if(!fs||!fs.classList.contains('active')||!S.autoHide) return;
  if(e.clientY&gt;=window.innerHeight-80){
    var w=document.getElementById('eb2-fs-nav-wrap');
    if(w){ w.classList.remove('hidden-nav'); if(navTimer) clearTimeout(navTimer); navTimer=setTimeout(function(){ if(S.autoHide){ var w2=document.getElementById('eb2-fs-nav-wrap'); if(w2) w2.classList.add('hidden-nav'); } },2500); }
  }
});

/* ── 시계 ── */
setInterval(function(){
  var t=nowStr();
  var els=document.querySelectorAll('.eb2-pv-clk-corner,.eb2-pv-clk-main,.eb2-fs-clk-corner,.eb2-fs-clk-main');
  for(var i=0;i&lt;els.length;i++) els[i].textContent=t;
},1000);

/* ── 키보드 (레이저포인터 포함) ── */
function handleKey(e){
  var fs=document.getElementById('eb2-fullscreen');
  if(!fs||!fs.classList.contains('active')) return;
  // 전진: ArrowRight, ArrowDown, PageDown, Space, Enter
  if(e.key==='ArrowRight'||e.key==='ArrowDown'||e.key==='PageDown'||e.key===' '||e.key==='Enter'){
    e.preventDefault(); eb2FSSlide(1);
  }
  // 후진: ArrowLeft, ArrowUp, PageUp
  if(e.key==='ArrowLeft'||e.key==='ArrowUp'||e.key==='PageUp'){
    e.preventDefault(); eb2FSSlide(-1);
  }
  if(e.key==='Escape') eb2CloseFS();
}
document.addEventListener('keydown', handleKey);
// 전체화면 div에도 직접 이벤트 (포커스 확보용)
var fsDiv=document.getElementById('eb2-fullscreen');
if(fsDiv) fsDiv.addEventListener('keydown', handleKey);

/* ── 네비 모드 ── */
function getNavMode(){
  var r=document.querySelector('input[name=&quot;eb2-nav-mode&quot;]:checked');
  return r?r.value:'auto';
}
window.eb2NavModeChange=function(){
  var labels=document.querySelectorAll('#eb2-nav-mode-group .eb2-radio-label');
  var val=getNavMode();
  for(var i=0;i&lt;labels.length;i++) labels[i].classList.toggle('selected', labels[i].querySelector('input').value===val);
  applyNavMode();
};
function applyNavMode(){
  var mode=getNavMode();
  var wrap=document.getElementById('eb2-fs-nav-wrap');
  if(!wrap) return;
  if(mode==='none'){ wrap.style.display='none'; }
  else if(mode==='fixed'){ wrap.style.display=''; wrap.classList.remove('hidden-nav'); S.autoHide=false; }
  else { wrap.style.display=''; S.autoHide=true; wrap.classList.add('hidden-nav'); }
}

/* ── 사진촬영 ── */
window.eb2PhotoToggle=function(){
  document.getElementById('eb2-photo-opts').style.display=document.getElementById('eb2-photo-enabled').checked?'':'none';
  eb2BuildNav(); eb2Render();
};
window.eb2PhotoSlider=function(){
  var val=parseInt(document.getElementById('eb2-photo-pos').value)||0;
  document.getElementById('eb2-photo-pos-val').textContent=val+'%';
  S.photoPercent=val;
  // 전체화면 열려있으면 실시간 반영
  if(document.getElementById('eb2-fullscreen').classList.contains('active')) eb2RenderFS();
};
window.eb2PhotoReset=function(){ document.getElementById('eb2-photo-pos').value=10; eb2PhotoSlider(); };

/* ── 초기화 ── */
eb2LayoutChange(); // 기본값 text 모드 UI 상태 동기화
eb2Render();
eb2RenderFileNotices();

})();
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>모두의계산기/행사공지계산기_16</category>
      <category>공지</category>
      <category>모두</category>
      <category>발표자료를 넘겨도 현수막이 고정됩니다</category>
      <category>행사전</category>
      <category>현수막&amp;amp;발표자료</category>
      <category>현수막과발표자료가 공존</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/21</guid>
      <comments>https://0-1.kr/21#entry21comment</comments>
      <pubDate>Thu, 12 Nov 2020 16:07:50 +0900</pubDate>
    </item>
    <item>
      <title>모두의 프롬포터(0-1.kr/19)</title>
      <link>https://0-1.kr/19</link>
      <description>&lt;!-- 모두의 프롬프터 v5.0 | 티스토리 HTML 위젯 --&gt;
&lt;link rel=&quot;preconnect&quot; href=&quot;https://fonts.googleapis.com&quot;&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700;900&amp;family=Nanum+Gothic:wght@400;700&amp;family=Nanum+Myeongjo:wght@400;700&amp;family=Black+Han+Sans&amp;family=IBM+Plex+Sans+KR:wght@400;500&amp;family=Gowun+Dodum&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
/* ★ 페이지 전체 스크롤바 완전 제거 */
html,body{overflow-x:hidden;overflow-y:auto;scrollbar-width:none;-ms-overflow-style:none}
html::-webkit-scrollbar,body::-webkit-scrollbar{display:none;width:0;height:0}
#mpt-root,#mpt-root *{box-sizing:border-box;margin:0;padding:0}
#mpt-root{font-family:'Noto Sans KR',sans-serif;background:#f0f4fa;border-radius:16px;border:1px solid #cbd5e1;overflow:hidden;width:100%;max-width:100%;margin:0;color:#1e293b;box-shadow:0 4px 24px rgba(0,0,0,.10)}

/* ══ 헤더 ══ */
#mpt-header{
  padding:20px 22px 18px;
  background:linear-gradient(135deg,#1e3a5f 0%,#1e40af 60%,#2563eb 100%);
  border-bottom:2px solid #1d4ed8;
  display:flex;align-items:flex-start;justify-content:space-between;gap:16px;
  flex-wrap:wrap;
}
#mpt-header-left{display:flex;flex-direction:column;flex:1;min-width:180px}
#mpt-title{font-size:30px;font-weight:900;letter-spacing:-1px;line-height:1.15;background:linear-gradient(90deg,#bfdbfe 0%,#93c5fd 50%,#a5f3fc 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:4px}
#mpt-subtitle{font-size:12px;color:#93c5fd;opacity:.8;margin-bottom:14px;letter-spacing:.03em}
/* 좌측 보조버튼들 */
#mpt-header-btns{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
/* 우측 주요버튼 패널 */
#mpt-header-right{
  display:flex;flex-direction:column;gap:8px;align-items:stretch;
  min-width:155px;flex-shrink:0;
}

.mpt-btn{
  background:rgba(255,255,255,.12);border:1.5px solid rgba(255,255,255,.25);
  color:#dbeafe;font-size:13px;font-weight:600;
  padding:9px 16px;border-radius:6px;/* ★ 사각형 */
  cursor:pointer;font-family:'Noto Sans KR',sans-serif;
  transition:all .18s;white-space:nowrap;
  display:inline-flex;align-items:center;gap:5px;line-height:1;position:relative;
}
.mpt-btn:hover{background:rgba(255,255,255,.22);color:#fff}

/* 공유 버튼 — 우측 사각형 */
.mpt-btn.share{
  background:rgba(99,102,241,.3);border-color:rgba(165,180,252,.6);
  color:#c7d2fe;font-weight:700;font-size:14px;
  padding:13px 16px;border-radius:6px;
  justify-content:center;width:100%;
}
.mpt-btn.share:hover{background:rgba(99,102,241,.5);color:#e0e7ff}

/* 프롬프터 보기 버튼 — 공유하기(40px)의 3배 = 120px */
.mpt-btn.accent{
  background:linear-gradient(135deg,#f59e0b,#ef4444);
  border-color:transparent;color:#fff;font-weight:800;
  padding:0 16px;border-radius:6px;
  box-shadow:0 4px 18px rgba(245,158,11,.5);
  justify-content:center;width:100%;
  flex-direction:column;gap:4px;
  height:120px;
  font-size:16px;
}
.mpt-btn.accent .btn-shortcut{
  font-size:10px;font-weight:500;opacity:.75;letter-spacing:.03em;
}
.mpt-btn.accent:hover{
  background:linear-gradient(135deg,#d97706,#dc2626);
  box-shadow:0 4px 26px rgba(245,158,11,.7);transform:translateY(-1px);
}

/* 말풍선 툴팁 */
.mpt-tooltip{position:relative;display:inline-flex}
.mpt-tooltip .tip{
  position:absolute;bottom:calc(100% + 9px);left:50%;transform:translateX(-50%);
  background:#1e293b;color:#f1f5f9;font-size:11px;font-weight:600;
  white-space:nowrap;padding:5px 10px;border-radius:7px;
  pointer-events:none;opacity:0;transition:opacity .2s;z-index:100;
  box-shadow:0 2px 8px rgba(0,0,0,.3);
}
.mpt-tooltip .tip::after{content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:#1e293b}
.mpt-tooltip:hover .tip{opacity:1}

/* ══ 공유 모달 ══ */
#mpt-share-modal{
  display:none;position:fixed;inset:0;z-index:99999;
  background:rgba(0,0,0,.55);align-items:center;justify-content:center;
  backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);
}
#mpt-share-modal.show{display:flex}
#mpt-share-box{
  background:#fff;border-radius:18px;padding:24px;
  width:min(440px,94vw);
  box-shadow:0 8px 40px rgba(0,0,0,.25);
  display:flex;flex-direction:column;gap:16px;
  max-height:90vh;overflow-y:auto;
}
#mpt-share-box h3{font-size:17px;font-weight:800;color:#1e293b;display:flex;align-items:center;gap:8px}
.share-section{display:flex;flex-direction:column;gap:7px}
.share-label{font-size:12px;font-weight:700;color:#475569;text-transform:uppercase;letter-spacing:.06em}
.share-url-row{display:flex;gap:6px}
.share-url-row input{flex:1;background:#f1f5f9;border:1.5px solid #e2e8f0;color:#334155;font-size:12px;padding:8px 10px;border-radius:8px;outline:none;font-family:'Noto Sans KR',sans-serif}
.share-copy-btn{background:#1e40af;border:none;color:#fff;font-size:12px;font-weight:700;padding:8px 14px;border-radius:8px;cursor:pointer;white-space:nowrap;font-family:'Noto Sans KR',sans-serif;transition:background .15s}
.share-copy-btn:hover{background:#1d4ed8}
.share-copy-btn.ok{background:#22c55e}
#mpt-qr-wrap{display:flex;justify-content:center;padding:8px;background:#f8fafc;border-radius:10px;border:1px solid #e2e8f0}
#mpt-qr-img{max-width:180px;max-height:180px}
.share-close-btn{background:#f1f5f9;border:1.5px solid #e2e8f0;color:#475569;font-size:13px;font-weight:700;padding:10px;border-radius:9px;cursor:pointer;font-family:'Noto Sans KR',sans-serif;transition:all .15s}
.share-close-btn:hover{background:#e2e8f0}
.share-tinyurl-row{display:flex;gap:6px;align-items:center}
.share-tinyurl-btn{background:#7c3aed;border:none;color:#fff;font-size:12px;font-weight:700;padding:8px 12px;border-radius:8px;cursor:pointer;white-space:nowrap;font-family:'Noto Sans KR',sans-serif;transition:background .15s}
.share-tinyurl-btn:hover{background:#6d28d9}
.share-warn{font-size:11px;color:#94a3b8;padding:6px 8px;background:#f8fafc;border-radius:6px;border:1px solid #e2e8f0}

/* ══ 탭 ══ */
#mpt-tabs{display:flex;background:#e8eef8;border-bottom:2px solid #cbd5e1}
.mpt-tab{padding:12px 22px;font-size:13px;font-weight:600;color:#64748b;cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;transition:all .18s;font-family:'Noto Sans KR',sans-serif}
.mpt-tab:hover{color:#1e40af;background:#dde8f8}
.mpt-tab.active{color:#1e40af;border-bottom-color:#1e40af;background:#f0f6ff}

/* ══ 에디터 ══ */
#mpt-editor-zone{background:#fff}
#mpt-textarea{width:100%;min-height:260px;resize:vertical;background:#fff;color:#1e293b;border:none;outline:none;padding:20px 22px;font-size:15px;line-height:1.85;font-family:'Noto Sans KR',sans-serif}
#mpt-textarea::placeholder{color:#94a3b8;font-size:14px}
#mpt-pdf-zone{display:none;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;min-height:260px;background:#fff}
#mpt-pdf-zone.show{display:flex}
#mpt-pdf-drop{width:100%;border:2px dashed #94a3b8;border-radius:12px;padding:36px 20px;text-align:center;color:#64748b;cursor:pointer;transition:all .2s;font-size:14px;background:#f8fafc}
#mpt-pdf-drop:hover{border-color:#1e40af;color:#1e40af;background:#eff6ff}
#mpt-pdf-preview-wrap{width:100%;overflow-y:auto;max-height:240px;background:#f1f5f9;border-radius:10px;display:none}
#mpt-pdf-preview-wrap canvas{display:block;margin:0 auto;max-width:100%}
#mpt-pdf-pageinfo{font-size:12px;color:#64748b;display:none;text-align:center}

/* ══ 상태바 ══ */
#mpt-statusbar{display:flex;gap:14px;flex-wrap:wrap;padding:8px 22px;background:#f1f5f9;border-top:1px solid #e2e8f0;font-size:11px;color:#94a3b8}
#mpt-shortcut-hint{margin-left:auto;color:#cbd5e1;font-size:10px}
.mpt-sdot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#22c55e;vertical-align:middle;margin-right:3px}

/* ══ 옵션 구분 ══ */
#mpt-opts-divider{height:5px;background:linear-gradient(90deg,#1e3a5f,#2563eb,#1e3a5f);opacity:.18}
#mpt-opts-toggle-bar{display:flex;align-items:center;gap:10px;padding:13px 22px;background:#1e3a5f;cursor:pointer;user-select:none;transition:background .15s}
#mpt-opts-toggle-bar:hover{background:#1e40af}
#mpt-opts-toggle-icon{font-size:16px;background:rgba(255,255,255,.15);border-radius:8px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
#mpt-opts-toggle-text{flex:1}
#mpt-opts-toggle-title{font-size:14px;font-weight:700;color:#bfdbfe}
#mpt-opts-toggle-sub{font-size:11px;color:#60a5fa;opacity:.7;margin-top:2px}
#mpt-opts-arrow{font-size:11px;color:#93c5fd;transition:transform .25s;display:inline-block}
#mpt-opts-arrow.open{transform:rotate(180deg)}

/* ══ 옵션 바디 ══ */
#mpt-opts-body{background:#f8fafc;border-top:1px solid #e2e8f0;overflow:hidden;max-height:0;transition:max-height .35s ease}
#mpt-opts-body.open{max-height:2400px}
.opts-section{padding:6px 0 12px;border-bottom:3px solid #cbd5e1}
.opts-section:last-child{border-bottom:none}
.opts-section-title{font-size:11px;font-weight:700;color:#64748b;text-transform:uppercase;letter-spacing:.1em;margin:14px 24px 4px;display:flex;align-items:center;gap:8px}
.opts-section-title::after{content:'';flex:1;height:1px;background:#e2e8f0}

/* ★ 핵심: 한 줄 배치 + 번호 + 충분한 여백 */
.opts-grid{display:flex;flex-direction:column;gap:0;counter-reset:opt-counter}
.opt-group{
  display:flex;align-items:center;gap:0;
  padding:15px 24px 15px 20px;
  border-bottom:1.5px solid #e9eef5;
  min-height:64px;
  counter-increment:opt-counter;
}
.opt-group:last-child{border-bottom:none}
.opt-num{
  content:counter(opt-counter);
  font-size:11px;font-weight:800;color:#fff;
  background:#1e40af;min-width:22px;height:22px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  margin-right:14px;
}
.opt-label{font-size:13px;font-weight:700;color:#334155;min-width:155px;flex-shrink:0;padding-right:16px}
.opt-control{flex:1;display:flex;align-items:center}

.mpt-range-row{display:flex;align-items:center;gap:10px;width:100%}
.mpt-range{flex:1;height:5px;accent-color:#1e40af;cursor:pointer}
.mpt-val{font-size:12px;font-weight:700;color:#1e40af;min-width:46px;text-align:right;background:#eff6ff;border-radius:5px;padding:3px 8px;border:1px solid #bfdbfe}
.mpt-select{width:100%;background:#fff;border:1.5px solid #cbd5e1;color:#1e293b;font-size:13px;padding:8px 10px;border-radius:8px;outline:none;cursor:pointer;font-family:'Noto Sans KR',sans-serif;transition:border-color .15s}
.mpt-select:focus{border-color:#1e40af}
.mpt-tags{display:flex;gap:6px;flex-wrap:wrap}
.mpt-tag{padding:6px 14px;border-radius:7px;font-size:12px;font-weight:600;cursor:pointer;background:#f1f5f9;border:1.5px solid #cbd5e1;color:#475569;transition:all .15s;font-family:'Noto Sans KR',sans-serif}
.mpt-tag:hover{border-color:#1e40af;color:#1e40af}
.mpt-tag.active{background:#1e40af;border-color:#1e40af;color:#fff}
.mpt-swatches{display:flex;gap:7px;flex-wrap:wrap;align-items:center}
.mpt-swatch{width:28px;height:28px;border-radius:6px;cursor:pointer;border:2.5px solid transparent;transition:all .15s;flex-shrink:0;box-shadow:0 1px 4px rgba(0,0,0,.2)}
.mpt-swatch:hover{transform:scale(1.15)}
.mpt-swatch.active{border-color:#1e40af!important;transform:scale(1.18);box-shadow:0 0 0 2px rgba(30,64,175,.35)}
.mpt-swatch-plus{width:28px;height:28px;border-radius:6px;cursor:pointer;border:1.5px dashed #94a3b8;display:flex;align-items:center;justify-content:center;font-size:14px;color:#94a3b8;position:relative;flex-shrink:0;overflow:hidden;transition:all .15s}
.mpt-swatch-plus:hover{border-color:#1e40af;color:#1e40af}
.mpt-swatch-plus input[type=color]{opacity:0;position:absolute;inset:0;width:100%;height:100%;cursor:pointer}

/* 레이저 섹션 */
.laser-grid{display:flex;flex-direction:column;gap:0;counter-reset:laser-counter}
.laser-row{
  display:flex;align-items:center;gap:0;
  padding:15px 24px 15px 20px;
  border-bottom:1.5px solid #e9eef5;
  min-height:64px;
  counter-increment:laser-counter;
}
.laser-row:last-child{border-bottom:none}
.laser-num{font-size:11px;font-weight:800;color:#fff;background:#ef4444;min-width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;margin-right:14px}
.laser-lbl{font-size:13px;color:#334155;min-width:155px;white-space:nowrap;font-weight:700;flex-shrink:0;padding-right:16px}
.laser-sel{flex:1;background:#fff;border:1.5px solid #cbd5e1;color:#1e293b;font-size:13px;padding:8px 10px;border-radius:8px;outline:none;font-family:'Noto Sans KR',sans-serif}

/* ══ 전체화면 ══ */
#mpt-fs{display:none;position:fixed;top:0;left:0;width:100vw;height:100vh;z-index:2147483647;flex-direction:column;overflow:hidden;touch-action:none;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}
#mpt-fs.show{display:flex}
/* ★ 스크롤바 완전 제거 */
#mpt-fs *::-webkit-scrollbar{display:none !important;width:0 !important}
#mpt-fs *{scrollbar-width:none !important;-ms-overflow-style:none !important}
#mpt-fs-viewport{flex:1;overflow:hidden;position:relative;cursor:none}
#mpt-fs-content{position:absolute;top:0;left:0;width:100%;will-change:transform;padding:6vh 8vw 50vh;line-height:1.8;word-break:keep-all;word-wrap:break-word;overflow-wrap:break-word;white-space:pre-wrap}
#mpt-fs-content.horiz{display:flex;flex-direction:row;align-items:center;padding:5vh 8vw;white-space:pre;height:100%;width:max-content}
#mpt-fs-content p{width:100%;word-break:keep-all;word-wrap:break-word;overflow-wrap:break-word;margin-bottom:.45em}
#mpt-fs-content p:last-child{margin-bottom:0}
#mpt-fs-pdf{display:none;flex:1;overflow:hidden;position:relative;background:#111}
#mpt-fs-pdf.show{display:block}
#mpt-fs-pdf canvas{position:absolute;left:50%;transform:translateX(-50%);width:100%;height:auto}
/* ★ 레이저 커서 — pointer-events:none 필수 */
#mpt-laser-cursor{
  position:fixed;pointer-events:none !important;
  z-index:2147483647;
  width:22px;height:22px;border-radius:50%;
  background:radial-gradient(circle,#ff2222 20%,rgba(255,50,50,.5) 60%,transparent 100%);
  box-shadow:0 0 0 2px rgba(255,60,60,.4),0 0 18px 6px rgba(255,40,40,.5);
  transform:translate(-50%,-50%);display:none;
  transition:width .08s,height .08s;
}
/* 레이저 클릭 시 커지는 효과 */
#mpt-laser-cursor.clicked{width:32px;height:32px}
#mpt-laser-hint{position:absolute;top:14px;left:14px;background:rgba(5,10,22,.88);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:10px 14px;font-size:11px;color:#4a6080;line-height:2;pointer-events:none;transition:opacity .4s;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:10}
.lh-row{display:flex;align-items:center;gap:7px}
.lh-dot{width:7px;height:7px;border-radius:50%;background:#ef4444;box-shadow:0 0 5px #ef4444;flex-shrink:0}
.lh-act{color:#8aaccc;font-weight:600}
.lh-sep{color:#1e3050}
#mpt-pause-overlay{position:absolute;inset:0;display:none;align-items:center;justify-content:center;pointer-events:none;z-index:5}
#mpt-pause-overlay.show{display:flex}
#mpt-pause-icon{width:88px;height:88px;border-radius:50%;background:rgba(0,0,0,.6);border:2px solid rgba(255,255,255,.15);display:flex;align-items:center;justify-content:center;font-size:34px;color:#fff;animation:mpt-pop .2s ease;backdrop-filter:blur(6px)}
@keyframes mpt-pop{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}
/* 워터마크 */
#mpt-watermark{position:fixed;right:44px;bottom:52px;font-size:10px;color:rgba(255,255,255,.12);pointer-events:none;z-index:2147483646;letter-spacing:.04em;font-family:monospace;user-select:none}
/* ══ 하단 진행바 (업그레이드) ══ */
#mpt-fs-prog-wrap{
  flex-shrink:0;
  background:rgba(0,0,0,.3);
  position:relative;
  height:22px;
  display:flex;align-items:center;
}
#mpt-fs-prog{
  height:4px;
  background:linear-gradient(90deg,#3b82f6,#818cf8,#7dd3fc);
  width:0%;
  transition:width .4s linear;
  flex-shrink:0;
}
#mpt-fs-prog-pct{
  position:absolute;
  right:10px;top:50%;transform:translateY(-50%);
  font-size:11px;font-weight:700;
  color:rgba(255,255,255,.45);
  font-variant-numeric:tabular-nums;
  pointer-events:none;
  letter-spacing:.04em;
}
#mpt-fs-prog-remain{
  position:absolute;
  left:10px;top:50%;transform:translateY(-50%);
  font-size:11px;color:rgba(255,255,255,.3);
  pointer-events:none;
}

/* ══ 전체화면 컨트롤바 ══ */
#mpt-fs-bar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;background:rgba(8,14,28,.93);border-top:1px solid rgba(255,255,255,.07);padding:8px 12px;padding-bottom:calc(8px + env(safe-area-inset-bottom));z-index:2147483647;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.fs-btn{background:rgba(255,255,255,.09);border:1.5px solid rgba(255,255,255,.14);color:#8aaccc;font-size:13px;font-weight:600;padding:8px 14px;border-radius:8px;cursor:pointer;white-space:nowrap;transition:all .15s;font-family:'Noto Sans KR',sans-serif;-webkit-tap-highlight-color:transparent;touch-action:manipulation;display:inline-flex;align-items:center;gap:4px}
.fs-btn:hover,.fs-btn:active{background:rgba(255,255,255,.18);color:#e2e8f0}
.fs-btn.playing{background:#1e1b4b;border-color:#4f46e5;color:#a5b4fc}
.fs-btn.exit-btn{background:#3b0f0f;border-color:#7f1d1d;color:#fca5a5}
.fs-btn.exit-btn:hover,.fs-btn.exit-btn:active{background:#7f1d1d}
.fs-sg{display:flex;align-items:center;gap:6px;background:rgba(255,255,255,.06);border:1.5px solid rgba(255,255,255,.1);border-radius:8px;padding:6px 11px}
.fs-sg label{font-size:11px;color:#475569;font-weight:600;white-space:nowrap}
.fs-sl{height:4px;accent-color:#818cf8;cursor:pointer}
#fs-speed-sl{width:100px}
#fs-size-sl{width:70px}
.fs-sv{font-size:12px;color:#6080a0;min-width:36px;font-weight:600}
#fs-timer-block{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:1px}
#fs-timer{font-size:15px;color:#3d5470;font-variant-numeric:tabular-nums;letter-spacing:.07em;font-weight:700}
#fs-goal-lbl{font-size:10px;color:#243040}
/* 타이틀 옆 태그 */
#mpt-title-tag{
  font-size:13px;font-weight:600;
  color:rgba(147,197,253,.7);
  vertical-align:middle;
  margin-left:8px;
  letter-spacing:.02em;
  -webkit-text-fill-color:rgba(147,197,253,.7);
}
/* 전체화면 브랜드 표기 */
#fs-brand{
  display:flex;flex-direction:column;gap:1px;
  padding:4px 10px;
  border-left:1px solid rgba(255,255,255,.1);
  margin-left:4px;
}
#fs-brand-url{
  font-size:12px;font-weight:800;
  color:#60a5fa;letter-spacing:.04em;
}
#fs-brand-name{
  font-size:10px;font-weight:700;
  color:#475569;letter-spacing:.08em;
}

/* ══ 반응형 ══ */
@media(max-width:680px){
  #mpt-root{border-radius:8px}
  #mpt-title{font-size:22px}
  #mpt-header{padding:14px 14px 12px}
  .mpt-btn{font-size:12px;padding:8px 12px}
  .mpt-btn.accent{font-size:13px;padding:10px 16px}
  #mpt-textarea{font-size:14px;padding:14px 14px;min-height:200px}
  .opt-group,.laser-row{padding:13px 14px 13px 12px;min-height:56px}
  .opt-label,.laser-lbl{min-width:110px;font-size:12px;padding-right:10px}
  .opts-section-title{margin:12px 14px 4px}
  #mpt-fs-bar{gap:5px;padding:6px 8px}
  .fs-btn{font-size:11px;padding:7px 10px}
  #fs-speed-sl{width:70px}
  #fs-size-sl{width:50px}
}
@media(max-width:400px){
  #mpt-title{font-size:18px}
  #mpt-header{flex-direction:column;gap:12px}
  #mpt-header-right{flex-direction:row;width:100%}
  #mpt-header-right .mpt-btn{flex:1}
  .opt-group,.laser-row{padding:11px 10px;min-height:52px}
  .opt-label,.laser-lbl{min-width:85px;font-size:11px;padding-right:8px}
  #mpt-header-btns .mpt-btn{font-size:11px;padding:7px 10px}
  #mpt-statusbar{padding:6px 12px}
}
@media(max-height:480px) and (orientation:landscape){
  #mpt-textarea{min-height:100px}
  #mpt-fs-bar{padding:4px 8px;gap:4px}
  .fs-btn{padding:5px 8px;font-size:10px}
}
&lt;/style&gt;

&lt;div id=&quot;mpt-root&quot;&gt;
  &lt;!-- 헤더 --&gt;
  &lt;div id=&quot;mpt-header&quot;&gt;
    &lt;!-- 좌측: 타이틀 + 보조버튼 --&gt;
    &lt;div id=&quot;mpt-header-left&quot;&gt;
      &lt;div id=&quot;mpt-title&quot;&gt;  모두의 프롬프터 &lt;span id=&quot;mpt-title-tag&quot;&gt;0-1.kr/19&lt;/span&gt;&lt;/div&gt;
      &lt;div id=&quot;mpt-subtitle&quot;&gt;발표 · 뉴스 · 강의를 위한 스마트 프롬프터 &amp;nbsp;|&amp;nbsp; v5.0&lt;/div&gt;
      &lt;div id=&quot;mpt-header-btns&quot;&gt;
        &lt;button class=&quot;mpt-btn&quot; id=&quot;btn-pdf&quot;&gt;  PDF&lt;/button&gt;
        &lt;button class=&quot;mpt-btn&quot; id=&quot;btn-save&quot;&gt;  저장&lt;/button&gt;
        &lt;button class=&quot;mpt-btn&quot; id=&quot;btn-load&quot;&gt;  불러오기&lt;/button&gt;
        &lt;button class=&quot;mpt-btn&quot; id=&quot;btn-reset&quot; style=&quot;background:rgba(239,68,68,.2);border-color:rgba(252,165,165,.4);color:#fca5a5&quot;&gt;  초기화&lt;/button&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;!-- 우측: 공유 + 프롬프터 보기 (사각형, 세로 배치) --&gt;
    &lt;div id=&quot;mpt-header-right&quot;&gt;
      &lt;div class=&quot;mpt-tooltip&quot;&gt;
        &lt;button class=&quot;mpt-btn share&quot; id=&quot;btn-share&quot;&gt;  공유하기&lt;/button&gt;
        &lt;span class=&quot;tip&quot;&gt;스크립트·설정을 URL/QR/단축URL로 공유&lt;/span&gt;
      &lt;/div&gt;
      &lt;div class=&quot;mpt-tooltip&quot;&gt;
        &lt;button class=&quot;mpt-btn accent&quot; id=&quot;btn-fs&quot;&gt;
          &lt;span&gt;▶ 프롬프터 보기&lt;/span&gt;
          &lt;span class=&quot;btn-shortcut&quot;&gt;Ctrl + Enter&lt;/span&gt;
        &lt;/button&gt;
        &lt;span class=&quot;tip&quot;&gt;전체화면 발표 모드 시작&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 탭 --&gt;
  &lt;div id=&quot;mpt-tabs&quot;&gt;
    &lt;div class=&quot;mpt-tab active&quot; data-tab=&quot;text&quot;&gt;✏️ 텍스트 편집&lt;/div&gt;
    &lt;div class=&quot;mpt-tab&quot; data-tab=&quot;pdf&quot;&gt;  PDF 모드&lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 에디터 --&gt;
  &lt;div id=&quot;mpt-editor-zone&quot;&gt;
    &lt;textarea id=&quot;mpt-textarea&quot;&gt;&lt;/textarea&gt;
    &lt;div id=&quot;mpt-pdf-zone&quot;&gt;
      &lt;div id=&quot;mpt-pdf-drop&quot; onclick=&quot;document.getElementById('inp-pdf').click()&quot;&gt;  PDF 파일을 클릭하거나 드래그하여 불러오세요&lt;/div&gt;
      &lt;div id=&quot;mpt-pdf-preview-wrap&quot;&gt;&lt;canvas id=&quot;mpt-pdf-canvas&quot;&gt;&lt;/canvas&gt;&lt;/div&gt;
      &lt;div id=&quot;mpt-pdf-pageinfo&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 상태바 --&gt;
  &lt;div id=&quot;mpt-statusbar&quot;&gt;
    &lt;span&gt;&lt;span class=&quot;mpt-sdot&quot; id=&quot;sdot&quot;&gt;&lt;/span&gt;자동저장&lt;/span&gt;
    &lt;span id=&quot;sb-chars&quot;&gt;글자 0&lt;/span&gt;
    &lt;span id=&quot;sb-lines&quot;&gt;줄 0&lt;/span&gt;
    &lt;span id=&quot;sb-est&quot;&gt;낭독 ~0분&lt;/span&gt;
    &lt;span id=&quot;mpt-shortcut-hint&quot;&gt;Ctrl+Enter: 프롬프터 보기&lt;/span&gt;
  &lt;/div&gt;

  &lt;div id=&quot;mpt-opts-divider&quot;&gt;&lt;/div&gt;

  &lt;!-- 옵션 토글 --&gt;
  &lt;div id=&quot;mpt-opts-toggle-bar&quot; onclick=&quot;mptToggleOpts()&quot;&gt;
    &lt;div id=&quot;mpt-opts-toggle-icon&quot;&gt;⚙&lt;/div&gt;
    &lt;div id=&quot;mpt-opts-toggle-text&quot;&gt;
      &lt;div id=&quot;mpt-opts-toggle-title&quot;&gt;⚙ 옵션 설정&lt;/div&gt;
      &lt;div id=&quot;mpt-opts-toggle-sub&quot;&gt;폰트 · 크기 · 배경색 · 글자색 · 스크롤 · 레이저&lt;/div&gt;
    &lt;/div&gt;
    &lt;span id=&quot;mpt-opts-arrow&quot; class=&quot;open&quot;&gt;▾&lt;/span&gt;
  &lt;/div&gt;

  &lt;!-- 옵션 바디 --&gt;
  &lt;div id=&quot;mpt-opts-body&quot; class=&quot;open&quot;&gt;

    &lt;!-- 섹션A: 텍스트 --&gt;
    &lt;div class=&quot;opts-section&quot;&gt;
      &lt;div class=&quot;opts-section-title&quot;&gt;  텍스트 스타일&lt;/div&gt;
      &lt;div class=&quot;opts-grid&quot;&gt;
        &lt;div class=&quot;opt-group&quot;&gt;
          &lt;div class=&quot;opt-num&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;opt-label&quot;&gt;폰트&lt;/div&gt;
          &lt;div class=&quot;opt-control&quot;&gt;
            &lt;select class=&quot;mpt-select&quot; id=&quot;opt-font&quot;&gt;
              &lt;option value=&quot;'Noto Sans KR',sans-serif&quot;&gt;Noto Sans KR (기본)&lt;/option&gt;
              &lt;option value=&quot;'Nanum Gothic',sans-serif&quot;&gt;나눔고딕&lt;/option&gt;
              &lt;option value=&quot;'Nanum Myeongjo',serif&quot;&gt;나눔명조&lt;/option&gt;
              &lt;option value=&quot;'Black Han Sans',sans-serif&quot;&gt;블랙한산스&lt;/option&gt;
              &lt;option value=&quot;'IBM Plex Sans KR',sans-serif&quot;&gt;IBM Plex KR&lt;/option&gt;
              &lt;option value=&quot;'Gowun Dodum',sans-serif&quot;&gt;고운돋움&lt;/option&gt;
            &lt;/select&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;opt-group&quot;&gt;
          &lt;div class=&quot;opt-num&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;opt-label&quot;&gt;글자 크기&lt;/div&gt;
          &lt;div class=&quot;opt-control&quot;&gt;
            &lt;div class=&quot;mpt-range-row&quot;&gt;
              &lt;input type=&quot;range&quot; class=&quot;mpt-range&quot; id=&quot;opt-size&quot; min=&quot;20&quot; max=&quot;120&quot; value=&quot;52&quot;&gt;
              &lt;span class=&quot;mpt-val&quot; id=&quot;opt-size-v&quot;&gt;52px&lt;/span&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;opt-group&quot;&gt;
          &lt;div class=&quot;opt-num&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;opt-label&quot;&gt;줄 간격&lt;/div&gt;
          &lt;div class=&quot;opt-control&quot;&gt;
            &lt;div class=&quot;mpt-range-row&quot;&gt;
              &lt;input type=&quot;range&quot; class=&quot;mpt-range&quot; id=&quot;opt-lh&quot; min=&quot;10&quot; max=&quot;30&quot; value=&quot;18&quot;&gt;
              &lt;span class=&quot;mpt-val&quot; id=&quot;opt-lh-v&quot;&gt;1.8×&lt;/span&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;opt-group&quot;&gt;
          &lt;div class=&quot;opt-num&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;opt-label&quot;&gt;텍스트 정렬&lt;/div&gt;
          &lt;div class=&quot;opt-control&quot;&gt;
            &lt;div class=&quot;mpt-tags&quot; id=&quot;opt-align&quot;&gt;
              &lt;div class=&quot;mpt-tag active&quot; data-v=&quot;left&quot;&gt;좌측&lt;/div&gt;
              &lt;div class=&quot;mpt-tag&quot; data-v=&quot;center&quot;&gt;중앙&lt;/div&gt;
              &lt;div class=&quot;mpt-tag&quot; data-v=&quot;right&quot;&gt;우측&lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 섹션B: 색상 --&gt;
    &lt;div class=&quot;opts-section&quot;&gt;
      &lt;div class=&quot;opts-section-title&quot;&gt;  색상&lt;/div&gt;
      &lt;div class=&quot;opts-grid&quot;&gt;
        &lt;div class=&quot;opt-group&quot;&gt;
          &lt;div class=&quot;opt-num&quot;&gt;1&lt;/div&gt;&lt;div class=&quot;opt-label&quot;&gt;배경색&lt;/div&gt;
          &lt;div class=&quot;opt-control&quot;&gt;
            &lt;div class=&quot;mpt-swatches&quot; id=&quot;opt-bg&quot;&gt;
              &lt;div class=&quot;mpt-swatch active&quot; data-v=&quot;#0d0d1a&quot; style=&quot;background:#0d0d1a;border-color:#333&quot; title=&quot;다크 네이비&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#000000&quot; style=&quot;background:#000;border-color:#333&quot; title=&quot;블랙&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#0a1628&quot; style=&quot;background:#0a1628;border-color:#1a2a3a&quot; title=&quot;딥 블루&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#1a0a2e&quot; style=&quot;background:#1a0a2e;border-color:#333&quot; title=&quot;딥 퍼플&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#0a1f0a&quot; style=&quot;background:#0a1f0a;border-color:#333&quot; title=&quot;딥 그린&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#1a0808&quot; style=&quot;background:#1a0808;border-color:#333&quot; title=&quot;딥 레드&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#1a1000&quot; style=&quot;background:#1a1000;border-color:#333&quot; title=&quot;딥 브라운&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#2a2a2a&quot; style=&quot;background:#2a2a2a;border-color:#444&quot; title=&quot;다크 그레이&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#ffffff&quot; style=&quot;background:#fff;border-color:#ccc&quot; title=&quot;화이트&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#f5f0e8&quot; style=&quot;background:#f5f0e8;border-color:#ccc&quot; title=&quot;크림&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#e8f0f8&quot; style=&quot;background:#e8f0f8;border-color:#bbb&quot; title=&quot;라이트 블루&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#f0f8e8&quot; style=&quot;background:#f0f8e8;border-color:#bbb&quot; title=&quot;라이트 그린&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch-plus&quot; title=&quot;직접 선택&quot;&gt;+&lt;input type=&quot;color&quot; id=&quot;opt-bg-custom&quot; value=&quot;#0d0d1a&quot;&gt;&lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;opt-group&quot;&gt;
          &lt;div class=&quot;opt-num&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;opt-label&quot;&gt;글자색&lt;/div&gt;
          &lt;div class=&quot;opt-control&quot;&gt;
            &lt;div class=&quot;mpt-swatches&quot; id=&quot;opt-fg&quot;&gt;
              &lt;div class=&quot;mpt-swatch active&quot; data-v=&quot;#ffffff&quot; style=&quot;background:#fff;border-color:#aaa&quot; title=&quot;화이트&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#f0f0b0&quot; style=&quot;background:#f0f0b0;border-color:#aaa&quot; title=&quot;옐로우 크림&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#b0e0ff&quot; style=&quot;background:#b0e0ff;border-color:#aaa&quot; title=&quot;스카이 블루&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#90ee90&quot; style=&quot;background:#90ee90;border-color:#aaa&quot; title=&quot;라이트 그린&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#ffcc80&quot; style=&quot;background:#ffcc80;border-color:#aaa&quot; title=&quot;오렌지&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#ffa0a0&quot; style=&quot;background:#ffa0a0;border-color:#aaa&quot; title=&quot;핑크 레드&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#d0b0ff&quot; style=&quot;background:#d0b0ff;border-color:#aaa&quot; title=&quot;라벤더&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#80ffee&quot; style=&quot;background:#80ffee;border-color:#aaa&quot; title=&quot;시안&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#ffe566&quot; style=&quot;background:#ffe566;border-color:#aaa&quot; title=&quot;골드&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#222222&quot; style=&quot;background:#222;border-color:#888&quot; title=&quot;다크 (밝은 배경용)&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch&quot; data-v=&quot;#1a3a6a&quot; style=&quot;background:#1a3a6a;border-color:#888&quot; title=&quot;네이비 (밝은 배경용)&quot;&gt;&lt;/div&gt;
              &lt;div class=&quot;mpt-swatch-plus&quot; title=&quot;직접 선택&quot;&gt;+&lt;input type=&quot;color&quot; id=&quot;opt-fg-custom&quot; value=&quot;#ffffff&quot;&gt;&lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 섹션C: 스크롤 --&gt;
    &lt;div class=&quot;opts-section&quot;&gt;
      &lt;div class=&quot;opts-section-title&quot;&gt;⚡ 스크롤 &amp;amp; 발표&lt;/div&gt;
      &lt;div class=&quot;opts-grid&quot;&gt;
        &lt;div class=&quot;opt-group&quot; style=&quot;flex-direction:column;align-items:flex-start;gap:8px;padding:16px 24px 16px 20px&quot;&gt;
          &lt;div style=&quot;display:flex;align-items:center;gap:0;width:100%&quot;&gt;
            &lt;div class=&quot;opt-num&quot;&gt;1&lt;/div&gt;
            &lt;div class=&quot;opt-label&quot; style=&quot;min-width:155px&quot;&gt;발표 목표 시간&lt;/div&gt;
            &lt;div class=&quot;opt-control&quot; style=&quot;gap:8px;flex-wrap:wrap&quot;&gt;
              &lt;div style=&quot;display:flex;align-items:center;gap:6px&quot;&gt;
                &lt;input type=&quot;number&quot; id=&quot;goal-h&quot; min=&quot;0&quot; max=&quot;5&quot; value=&quot;0&quot; style=&quot;width:52px;background:#fff;border:1.5px solid #cbd5e1;border-radius:7px;padding:7px 8px;font-size:14px;font-weight:700;text-align:center;color:#1e293b;outline:none&quot;&gt;
                &lt;span style=&quot;font-size:12px;color:#64748b;font-weight:600&quot;&gt;시&lt;/span&gt;
                &lt;input type=&quot;number&quot; id=&quot;goal-m&quot; min=&quot;0&quot; max=&quot;59&quot; value=&quot;0&quot; style=&quot;width:52px;background:#fff;border:1.5px solid #cbd5e1;border-radius:7px;padding:7px 8px;font-size:14px;font-weight:700;text-align:center;color:#1e293b;outline:none&quot;&gt;
                &lt;span style=&quot;font-size:12px;color:#64748b;font-weight:600&quot;&gt;분&lt;/span&gt;
                &lt;input type=&quot;number&quot; id=&quot;goal-s&quot; min=&quot;0&quot; max=&quot;59&quot; value=&quot;0&quot; style=&quot;width:52px;background:#fff;border:1.5px solid #cbd5e1;border-radius:7px;padding:7px 8px;font-size:14px;font-weight:700;text-align:center;color:#1e293b;outline:none&quot;&gt;
                &lt;span style=&quot;font-size:12px;color:#64748b;font-weight:600&quot;&gt;초&lt;/span&gt;
                &lt;button id=&quot;goal-clear-btn&quot; style=&quot;background:#f1f5f9;border:1.5px solid #cbd5e1;color:#64748b;font-size:11px;padding:6px 10px;border-radius:6px;cursor:pointer;font-family:'Noto Sans KR',sans-serif;white-space:nowrap&quot;&gt;해제&lt;/button&gt;
              &lt;/div&gt;
              &lt;div id=&quot;goal-desc&quot; style=&quot;font-size:11px;color:#94a3b8;width:100%&quot;&gt;목표 시간 미설정&lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
          &lt;div style=&quot;padding-left:36px;font-size:11px;color:#64748b;line-height:1.6;background:#eff6ff;border-radius:8px;padding:8px 12px;width:100%;border:1px solid #bfdbfe&quot;&gt;
            ⏱ 지정한 시간에 스크롤이 마무리되도록 자동으로 속도가 세팅됩니다.&lt;br&gt;
            발표 1분 30초에 맞춰 놓으면 그 시간 안에 정확히 끝납니다.
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;opt-group&quot;&gt;
          &lt;div class=&quot;opt-num&quot;&gt;2&lt;/div&gt;&lt;div class=&quot;opt-label&quot;&gt;스크롤 방향&lt;/div&gt;
          &lt;div class=&quot;opt-control&quot;&gt;
            &lt;div class=&quot;mpt-tags&quot; id=&quot;opt-dir&quot;&gt;
              &lt;div class=&quot;mpt-tag active&quot; data-v=&quot;vertical&quot;&gt;세로 ↕&lt;/div&gt;
              &lt;div class=&quot;mpt-tag&quot; data-v=&quot;horizontal&quot;&gt;가로 ↔&lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;opt-group&quot;&gt;
          &lt;div class=&quot;opt-num&quot;&gt;3&lt;/div&gt;&lt;div class=&quot;opt-label&quot;&gt;기본 속도&lt;/div&gt;
          &lt;div class=&quot;opt-control&quot;&gt;
            &lt;div class=&quot;mpt-range-row&quot;&gt;
              &lt;input type=&quot;range&quot; class=&quot;mpt-range&quot; id=&quot;opt-speed&quot; min=&quot;1&quot; max=&quot;20&quot; value=&quot;6&quot; step=&quot;1&quot;&gt;
              &lt;span class=&quot;mpt-val&quot; id=&quot;opt-speed-v&quot;&gt;3.0&lt;/span&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div class=&quot;opt-group&quot;&gt;
          &lt;div class=&quot;opt-num&quot;&gt;4&lt;/div&gt;&lt;div class=&quot;opt-label&quot;&gt;거울 모드&lt;/div&gt;
          &lt;div class=&quot;opt-control&quot;&gt;
            &lt;div class=&quot;mpt-tags&quot; id=&quot;opt-mirror&quot;&gt;
              &lt;div class=&quot;mpt-tag active&quot; data-v=&quot;off&quot;&gt;OFF&lt;/div&gt;
              &lt;div class=&quot;mpt-tag&quot; data-v=&quot;h&quot;&gt;좌우반전&lt;/div&gt;
              &lt;div class=&quot;mpt-tag&quot; data-v=&quot;v&quot;&gt;상하반전&lt;/div&gt;
            &lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;!-- 섹션D: 레이저 --&gt;
    &lt;div class=&quot;opts-section&quot;&gt;
      &lt;div class=&quot;opts-section-title&quot;&gt;  레이저 포인터 동작&lt;/div&gt;
      &lt;div class=&quot;laser-grid&quot;&gt;
        &lt;div class=&quot;laser-row&quot;&gt;
          &lt;div class=&quot;laser-num&quot;&gt;1&lt;/div&gt;&lt;span class=&quot;laser-lbl&quot;&gt;⬆ 상단 클릭&lt;/span&gt;
          &lt;select class=&quot;laser-sel&quot; id=&quot;lz-click&quot;&gt;
            &lt;option value=&quot;scrollup&quot;&gt;위로 1/3 이동&lt;/option&gt;
            &lt;option value=&quot;pause&quot;&gt;일시정지/재개&lt;/option&gt;
            &lt;option value=&quot;speedup&quot;&gt;속도 빠르게&lt;/option&gt;
            &lt;option value=&quot;fromhere&quot;&gt;현재위치 시작&lt;/option&gt;
            &lt;option value=&quot;none&quot;&gt;없음&lt;/option&gt;
          &lt;/select&gt;
        &lt;/div&gt;
        &lt;div class=&quot;laser-row&quot;&gt;
          &lt;div class=&quot;laser-num&quot;&gt;2&lt;/div&gt;&lt;span class=&quot;laser-lbl&quot;&gt;⬆⬆ 상단 더블클릭&lt;/span&gt;
          &lt;select class=&quot;laser-sel&quot; id=&quot;lz-dbl&quot;&gt;
            &lt;option value=&quot;speedup&quot;&gt;속도 빠르게&lt;/option&gt;
            &lt;option value=&quot;scrollup&quot;&gt;위로 1/3 이동&lt;/option&gt;
            &lt;option value=&quot;exit&quot;&gt;전체화면 종료&lt;/option&gt;
            &lt;option value=&quot;none&quot;&gt;없음&lt;/option&gt;
          &lt;/select&gt;
        &lt;/div&gt;
        &lt;div class=&quot;laser-row&quot;&gt;
          &lt;div class=&quot;laser-num&quot;&gt;3&lt;/div&gt;&lt;span class=&quot;laser-lbl&quot;&gt;⬛ 가운데 클릭&lt;/span&gt;
          &lt;select class=&quot;laser-sel&quot; id=&quot;lz-mid&quot;&gt;
            &lt;option value=&quot;togglepause&quot;&gt;일시정지/재개&lt;/option&gt;
            &lt;option value=&quot;fromhere&quot;&gt;현재위치 시작&lt;/option&gt;
            &lt;option value=&quot;restart&quot;&gt;처음으로&lt;/option&gt;
            &lt;option value=&quot;none&quot;&gt;없음&lt;/option&gt;
          &lt;/select&gt;
        &lt;/div&gt;
        &lt;div class=&quot;laser-row&quot;&gt;
          &lt;div class=&quot;laser-num&quot;&gt;4&lt;/div&gt;&lt;span class=&quot;laser-lbl&quot;&gt;⬇ 하단 클릭&lt;/span&gt;
          &lt;select class=&quot;laser-sel&quot; id=&quot;lz-bot-click&quot;&gt;
            &lt;option value=&quot;scrolldown&quot;&gt;아래로 1/3 이동&lt;/option&gt;
            &lt;option value=&quot;pause&quot;&gt;일시정지/재개&lt;/option&gt;
            &lt;option value=&quot;speeddown&quot;&gt;속도 느리게&lt;/option&gt;
            &lt;option value=&quot;none&quot;&gt;없음&lt;/option&gt;
          &lt;/select&gt;
        &lt;/div&gt;
        &lt;div class=&quot;laser-row&quot;&gt;
          &lt;div class=&quot;laser-num&quot;&gt;5&lt;/div&gt;&lt;span class=&quot;laser-lbl&quot;&gt;⬇⬇ 하단 더블클릭&lt;/span&gt;
          &lt;select class=&quot;laser-sel&quot; id=&quot;lz-bot-dbl&quot;&gt;
            &lt;option value=&quot;speeddown&quot;&gt;속도 느리게&lt;/option&gt;
            &lt;option value=&quot;scrolldown&quot;&gt;아래로 1/3 이동&lt;/option&gt;
            &lt;option value=&quot;exit&quot;&gt;전체화면 종료&lt;/option&gt;
            &lt;option value=&quot;none&quot;&gt;없음&lt;/option&gt;
          &lt;/select&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;!-- 레이저 테스트 패널 --&gt;
      &lt;div id=&quot;laser-test-wrap&quot; style=&quot;margin:12px 20px 4px;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;padding:14px 16px&quot;&gt;
        &lt;div style=&quot;font-size:12px;font-weight:700;color:#475569;margin-bottom:10px&quot;&gt;  레이저 포인터 테스트&lt;/div&gt;
        &lt;div style=&quot;font-size:11px;color:#64748b;margin-bottom:10px;line-height:1.6&quot;&gt;
          아래 박스를 클릭해서 내 기기가 어떤 방식으로 인식되는지 확인하세요.&lt;br&gt;
          &lt;b&gt;프레젠터 리모컨&lt;/b&gt;은 키보드로 인식 (PageUp/Down) | &lt;b&gt;마우스형&lt;/b&gt;은 클릭 위치로 인식
        &lt;/div&gt;
        &lt;div id=&quot;laser-test-box&quot; style=&quot;
          width:100%;height:80px;background:#1e293b;border-radius:8px;
          display:flex;align-items:center;justify-content:center;
          color:#64748b;font-size:13px;cursor:pointer;
          border:2px solid #334155;transition:all .2s;user-select:none;
          position:relative;overflow:hidden;
        &quot;&gt;
          &lt;span id=&quot;laser-test-msg&quot;&gt;여기를 클릭하거나 프레젠터 버튼을 눌러보세요&lt;/span&gt;
          &lt;div id=&quot;laser-test-zone&quot; style=&quot;position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column&quot;&gt;
            &lt;div style=&quot;flex:1;border-bottom:1px dashed #334155;display:flex;align-items:center;justify-content:center;font-size:11px;color:#334155&quot;&gt;상단 1/3&lt;/div&gt;
            &lt;div style=&quot;flex:1;border-bottom:1px dashed #334155;display:flex;align-items:center;justify-content:center;font-size:11px;color:#334155&quot;&gt;가운데 1/3&lt;/div&gt;
            &lt;div style=&quot;flex:1;display:flex;align-items:center;justify-content:center;font-size:11px;color:#334155&quot;&gt;하단 1/3&lt;/div&gt;
          &lt;/div&gt;
        &lt;/div&gt;
        &lt;div id=&quot;laser-test-result&quot; style=&quot;margin-top:8px;font-size:12px;color:#22c55e;font-weight:600;min-height:18px;text-align:center&quot;&gt;&lt;/div&gt;
        &lt;div style=&quot;margin-top:6px;font-size:11px;color:#94a3b8;text-align:center&quot;&gt;
          ⌨️ 키보드: PageUp=위 | PageDown=아래 | Space/F5/B=정지
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;

  &lt;/div&gt;&lt;!-- /opts-body --&gt;

  &lt;input type=&quot;file&quot; id=&quot;inp-pdf&quot; accept=&quot;.pdf&quot; style=&quot;display:none&quot;&gt;
  &lt;input type=&quot;file&quot; id=&quot;inp-txt&quot; accept=&quot;.txt&quot; style=&quot;display:none&quot;&gt;
&lt;/div&gt;&lt;!-- /mpt-root --&gt;

&lt;!-- 공유 모달 --&gt;
&lt;div id=&quot;mpt-share-modal&quot;&gt;
  &lt;div id=&quot;mpt-share-box&quot;&gt;
    &lt;h3&gt;  공유하기&lt;/h3&gt;
    &lt;div class=&quot;share-section&quot;&gt;
      &lt;div class=&quot;share-label&quot;&gt;  전체 URL (스크립트+설정 포함)&lt;/div&gt;
      &lt;div class=&quot;share-url-row&quot;&gt;
        &lt;input type=&quot;text&quot; id=&quot;share-full-url&quot; readonly placeholder=&quot;URL 생성 중...&quot;&gt;
        &lt;button class=&quot;share-copy-btn&quot; id=&quot;share-copy-full&quot;&gt;복사&lt;/button&gt;
      &lt;/div&gt;
      &lt;div class=&quot;share-warn&quot;&gt;⚠ URL이 길면 일부 환경에서 열리지 않을 수 있어요.&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;share-section&quot;&gt;
      &lt;div class=&quot;share-label&quot;&gt;✂ 단축 URL (TinyURL)&lt;/div&gt;
      &lt;div class=&quot;share-tinyurl-row&quot;&gt;
        &lt;input type=&quot;text&quot; id=&quot;share-tiny-url&quot; readonly placeholder=&quot;단축 버튼을 누르세요&quot;&gt;
        &lt;button class=&quot;share-tinyurl-btn&quot; id=&quot;share-tiny-btn&quot;&gt;단축하기&lt;/button&gt;
        &lt;button class=&quot;share-copy-btn&quot; id=&quot;share-copy-tiny&quot; style=&quot;display:none&quot;&gt;복사&lt;/button&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;share-section&quot;&gt;
      &lt;div class=&quot;share-label&quot;&gt;  QR 코드&lt;/div&gt;
      &lt;div id=&quot;mpt-qr-wrap&quot;&gt;&lt;img id=&quot;mpt-qr-img&quot; src=&quot;&quot; alt=&quot;QR 코드 생성 중...&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;button class=&quot;share-close-btn&quot; id=&quot;share-close&quot;&gt;✕ 닫기&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- 전체화면 오버레이 --&gt;
&lt;div id=&quot;mpt-fs&quot;&gt;
  &lt;div id=&quot;mpt-laser-cursor&quot;&gt;&lt;/div&gt;
  &lt;div id=&quot;mpt-fs-viewport&quot;&gt;
    &lt;div id=&quot;mpt-fs-content&quot;&gt;&lt;/div&gt;
    &lt;div id=&quot;mpt-pause-overlay&quot;&gt;&lt;div id=&quot;mpt-pause-icon&quot;&gt;⏸&lt;/div&gt;&lt;/div&gt;
    &lt;div id=&quot;mpt-laser-hint&quot;&gt;
      &lt;div class=&quot;lh-row&quot;&gt;&lt;span class=&quot;lh-dot&quot;&gt;&lt;/span&gt;&lt;span class=&quot;lh-act&quot;&gt;상단 클릭 / PageUp 1번&lt;/span&gt;&lt;span class=&quot;lh-sep&quot;&gt; → 위로 1/3&lt;/span&gt;&lt;/div&gt;
      &lt;div class=&quot;lh-row&quot;&gt;&lt;span class=&quot;lh-dot&quot;&gt;&lt;/span&gt;&lt;span class=&quot;lh-act&quot;&gt;상단 더블 / PageUp 연속&lt;/span&gt;&lt;span class=&quot;lh-sep&quot;&gt; → 속도↑&lt;/span&gt;&lt;/div&gt;
      &lt;div class=&quot;lh-row&quot;&gt;&lt;span class=&quot;lh-dot&quot;&gt;&lt;/span&gt;&lt;span class=&quot;lh-act&quot;&gt;가운데 / Space / F5 / B&lt;/span&gt;&lt;span class=&quot;lh-sep&quot;&gt; → 정지/재개&lt;/span&gt;&lt;/div&gt;
      &lt;div class=&quot;lh-row&quot;&gt;&lt;span class=&quot;lh-dot&quot;&gt;&lt;/span&gt;&lt;span class=&quot;lh-act&quot;&gt;하단 클릭 / PageDown 1번&lt;/span&gt;&lt;span class=&quot;lh-sep&quot;&gt; → 아래로 1/3&lt;/span&gt;&lt;/div&gt;
      &lt;div class=&quot;lh-row&quot;&gt;&lt;span class=&quot;lh-dot&quot;&gt;&lt;/span&gt;&lt;span class=&quot;lh-act&quot;&gt;하단 더블 / PageDown 연속&lt;/span&gt;&lt;span class=&quot;lh-sep&quot;&gt; → 속도↓&lt;/span&gt;&lt;/div&gt;
      &lt;div style=&quot;margin-top:5px;color:#1e3050;font-size:10px&quot;&gt;ESC: 나가기 | R: 처음 | +/-: 속도 | ↑↓: 수동이동&lt;/div&gt;
    &lt;/div&gt;
    &lt;!-- 전체화면 버튼 안내 패널 --&gt;
    &lt;div id=&quot;mpt-key-guide&quot; style=&quot;
      position:absolute;bottom:70px;left:14px;
      background:rgba(5,10,22,.88);border:1px solid rgba(255,255,255,.1);
      border-radius:10px;padding:10px 14px;font-size:11px;
      color:#4a6080;line-height:1.9;pointer-events:none;
      backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:10;
      transition:opacity .4s;opacity:0;
    &quot;&gt;
      &lt;div style=&quot;font-size:10px;font-weight:700;color:#60a5fa;margin-bottom:4px;letter-spacing:.06em&quot;&gt;⌨ 컨트롤바 버튼 안내&lt;/div&gt;
      &lt;div&gt;▶ 재개 / ⏸ 정지 — 재생 토글&lt;/div&gt;
      &lt;div&gt;  현재위치 — 지금 위치부터 시작&lt;/div&gt;
      &lt;div&gt;↺ 처음 — 맨 위로 돌아가 재시작&lt;/div&gt;
      &lt;div&gt;⇔ 미러 — 좌우/상하 반전 전환&lt;/div&gt;
      &lt;div&gt;속도 슬라이더 — 0.5 단위 세밀 조정&lt;/div&gt;
      &lt;div&gt;크기 슬라이더 — 글자 크기 즉시 변경&lt;/div&gt;
      &lt;div style=&quot;margin-top:4px;color:#1e3050;font-size:10px&quot;&gt;H키: 이 안내 토글 | 우측 바: 드래그로 위치이동&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div id=&quot;mpt-fs-pdf&quot;&gt;&lt;canvas id=&quot;mpt-fs-pdf-cv&quot;&gt;&lt;/canvas&gt;&lt;/div&gt;
  &lt;div id=&quot;mpt-fs-prog-wrap&quot;&gt;
    &lt;div id=&quot;mpt-fs-prog-remain&quot;&gt;&lt;/div&gt;
    &lt;div id=&quot;mpt-fs-prog&quot;&gt;&lt;/div&gt;
    &lt;div id=&quot;mpt-fs-prog-pct&quot;&gt;0%&lt;/div&gt;
  &lt;/div&gt;
  &lt;!-- 워터마크 --&gt;
  &lt;div id=&quot;mpt-watermark&quot;&gt;0-1.kr/19_startupEX&lt;/div&gt;
  &lt;div id=&quot;mpt-fs-bar&quot;&gt;
    &lt;button class=&quot;fs-btn playing&quot; id=&quot;fsb-play&quot;&gt;▶ 시작&lt;/button&gt;
    &lt;button class=&quot;fs-btn&quot; id=&quot;fsb-fromhere&quot;&gt;  현재위치 시작&lt;/button&gt;
    &lt;button class=&quot;fs-btn&quot; id=&quot;fsb-restart&quot;&gt;↺ 처음&lt;/button&gt;
    &lt;button class=&quot;fs-btn&quot; id=&quot;fsb-mirror&quot;&gt;⇔ 미러&lt;/button&gt;
    &lt;div class=&quot;fs-sg&quot;&gt;
      &lt;label&gt;속도&lt;/label&gt;
      &lt;input type=&quot;range&quot; class=&quot;fs-sl&quot; id=&quot;fs-speed-sl&quot; min=&quot;1&quot; max=&quot;20&quot; value=&quot;6&quot; step=&quot;1&quot;&gt;
      &lt;span class=&quot;fs-sv&quot; id=&quot;fs-speed-v&quot;&gt;3.0&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&quot;fs-sg&quot;&gt;
      &lt;label&gt;크기&lt;/label&gt;
      &lt;input type=&quot;range&quot; class=&quot;fs-sl&quot; id=&quot;fs-size-sl&quot; min=&quot;20&quot; max=&quot;120&quot; value=&quot;52&quot;&gt;
      &lt;span class=&quot;fs-sv&quot; id=&quot;fs-size-v&quot;&gt;52px&lt;/span&gt;
    &lt;/div&gt;
    &lt;!-- 브랜드 표기 --&gt;
    &lt;div id=&quot;fs-brand&quot;&gt;
      &lt;span id=&quot;fs-brand-url&quot;&gt;0-1.kr/19&lt;/span&gt;
      &lt;span id=&quot;fs-brand-name&quot;&gt;STARTUP_EX&lt;/span&gt;
    &lt;/div&gt;
    &lt;div id=&quot;fs-timer-block&quot;&gt;
      &lt;span id=&quot;fs-timer&quot;&gt;00:00&lt;/span&gt;
      &lt;span id=&quot;fs-goal-lbl&quot;&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;button class=&quot;fs-btn exit-btn&quot; id=&quot;fsb-exit&quot;&gt;✕ 나가기&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;script&gt;
(function(){
'use strict';

/* ── 속도값: 슬라이더 1~20 → 실제 0.5~10.0 (0.5 단위) ── */
function rawToSpeed(v){return v*0.5}
function speedToRaw(s){return Math.round(s*2)}
function speedLabel(v){return rawToSpeed(v).toFixed(1)}

var C={
  font:&quot;'Noto Sans KR',sans-serif&quot;,
  size:52,lh:18,align:'left',
  bg:'#0d0d1a',fg:'#ffffff',
  dir:'vertical',speedRaw:6,goal:0,mirror:'off',
  lzClick:'scrollup',      /* 1. 상단클릭 = 위로 1/3 */
  lzDbl:'speedup',         /* 2. 상단더블 = 속도 빠르게 */
  lzMid:'togglepause',     /* 3. 가운데 = 일시정지/현재위치시작 */
  lzBotClick:'scrolldown', /* 4. 하단클릭 = 아래로 1/3 */
  lzBotDbl:'speeddown',    /* 5. 하단더블 = 속도 느리게 */
  mode:'text'
};
var pdfDoc=null,pdfPage=1,pdfTotal=0,pdfJsOk=false;
var scrolling=false,paused=false,scrollPos=0,animId=null,lastTs=0;
var fsPdfY=0,hoverZone='mid';
var timerSec=0,timerInt=null,hintVisible=true;

var $=function(id){return document.getElementById(id)};
var fsEl=$('mpt-fs'),vp=$('mpt-fs-viewport'),fc=$('mpt-fs-content');
var fsPdf=$('mpt-fs-pdf'),fsPdfCv=$('mpt-fs-pdf-cv');
var lCur=$('mpt-laser-cursor'),pauseOv=$('mpt-pause-overlay'),lHint=$('mpt-laser-hint');
var ta=$('mpt-textarea');
var pdfZone=$('mpt-pdf-zone'),pdfPrevW=$('mpt-pdf-preview-wrap'),pdfCv=$('mpt-pdf-canvas'),pdfPI=$('mpt-pdf-pageinfo');

/* body에 마운트 — 티스토리 스킨 위 최상단 */
document.body.appendChild(fsEl);
document.body.appendChild(lCur);

/* ── 옵션 토글 ── */
var optsOpen=true;
window.mptToggleOpts=function(){
  optsOpen=!optsOpen;
  $('mpt-opts-body').classList.toggle('open',optsOpen);
  $('mpt-opts-arrow').classList.toggle('open',optsOpen);
};

/* ── 탭 ── */
document.querySelectorAll('.mpt-tab').forEach(function(t){
  t.onclick=function(){
    document.querySelectorAll('.mpt-tab').forEach(function(x){x.classList.remove('active')});
    t.classList.add('active'); C.mode=t.dataset.tab;
    ta.style.display=C.mode==='text'?'':'none';
    pdfZone.classList.toggle('show',C.mode==='pdf');
  };
});

/* ── 옵션 바인딩 ── */
function rng(id,vId,key,fmt){
  var el=$(id),vEl=$(vId); el.value=C[key]; vEl.textContent=fmt(C[key]);
  el.oninput=function(){
    C[key]=+this.value; vEl.textContent=fmt(C[key]);
    if(key==='size'){applyStyle();syncSl();}
    if(key==='speedRaw'){syncSl();}
    save();
  };
}
function tags(wId,key,cb){
  var w=$(wId);
  w.querySelectorAll('.mpt-tag').forEach(function(t){
    t.classList.toggle('active',t.dataset.v===String(C[key]));
    t.onclick=function(){
      w.querySelectorAll('.mpt-tag').forEach(function(x){x.classList.remove('active')});
      t.classList.add('active'); C[key]=t.dataset.v; if(cb)cb(); save();
    };
  });
}
function swatches(wId,key){
  var w=$(wId);
  w.querySelectorAll('.mpt-swatch').forEach(function(s){
    s.classList.toggle('active',s.dataset.v===C[key]);
    s.onclick=function(){
      w.querySelectorAll('.mpt-swatch').forEach(function(x){x.classList.remove('active')});
      s.classList.add('active'); C[key]=s.dataset.v; save();
    };
  });
}
function sel(id,key,cb){
  var el=$(id); el.value=C[key];
  el.onchange=function(){C[key]=this.value;if(cb)cb();save();};
}
function initOpts(){
  rng('opt-size','opt-size-v','size',function(v){return v+'px'});
  rng('opt-lh','opt-lh-v','lh',function(v){return (v/10).toFixed(1)+'×'});
  /* 속도: raw 값으로 바인딩 */
  var spEl=$('opt-speed'),spVEl=$('opt-speed-v');
  spEl.value=C.speedRaw; spVEl.textContent=speedLabel(C.speedRaw);
  spEl.oninput=function(){C.speedRaw=+this.value;spVEl.textContent=speedLabel(C.speedRaw);syncSl();save();};

  tags('opt-align','align'); tags('opt-dir','dir'); tags('opt-mirror','mirror');
  swatches('opt-bg','bg'); swatches('opt-fg','fg');
  sel('opt-font','font');
  sel('lz-click','lzClick',updateHint);
  sel('lz-dbl','lzDbl',updateHint);
  sel('lz-mid','lzMid',updateHint);
  sel('lz-bot-click','lzBotClick',updateHint);
  sel('lz-bot-dbl','lzBotDbl',updateHint);
  $('opt-bg-custom').oninput=function(){
    $('opt-bg').querySelectorAll('.mpt-swatch').forEach(function(x){x.classList.remove('active')});
    C.bg=this.value; save();
  };
  $('opt-fg-custom').oninput=function(){
    $('opt-fg').querySelectorAll('.mpt-swatch').forEach(function(x){x.classList.remove('active')});
    C.fg=this.value; save();
  };
  /* 전체화면 속도 슬라이더 */
  $('fs-speed-sl').oninput=function(){
    C.speedRaw=+this.value; $('fs-speed-v').textContent=speedLabel(C.speedRaw);
    $('opt-speed').value=C.speedRaw; $('opt-speed-v').textContent=speedLabel(C.speedRaw); save();
  };
  $('fs-size-sl').oninput=function(){
    C.size=+this.value; $('fs-size-v').textContent=C.size+'px';
    $('opt-size').value=C.size; $('opt-size-v').textContent=C.size+'px';
    applyStyle(); save();
  };

  /* ── 목표시간 시분초 입력 ── */
  function updateGoalFromInputs(){
    var h=parseInt($('goal-h').value)||0;
    var m=parseInt($('goal-m').value)||0;
    var s=parseInt($('goal-s').value)||0;
    C.goal=h*3600+m*60+s;
    var desc=$('goal-desc');
    if(C.goal&gt;0){
      var hh=Math.floor(C.goal/3600),mm=Math.floor((C.goal%3600)/60),ss=C.goal%60;
      desc.textContent='✅ '+(hh&gt;0?hh+'시 ':'')+mm+'분 '+ss+'초 → 자동 속도 적용됨';
      desc.style.color='#16a34a';
    } else {
      desc.textContent='목표 시간 미설정 (기본 속도 사용)';
      desc.style.color='#94a3b8';
    }
    save();
  }
  /* 저장된 goal 복원 */
  if(C.goal&gt;0){
    $('goal-h').value=Math.floor(C.goal/3600);
    $('goal-m').value=Math.floor((C.goal%3600)/60);
    $('goal-s').value=C.goal%60;
    updateGoalFromInputs();
  }
  $('goal-h').oninput=updateGoalFromInputs;
  $('goal-m').oninput=updateGoalFromInputs;
  $('goal-s').oninput=updateGoalFromInputs;
  $('goal-clear-btn').onclick=function(){
    $('goal-h').value=0;$('goal-m').value=0;$('goal-s').value=0;
    updateGoalFromInputs();
  };

  /* ── 레이저 테스트 박스 ── */
  var testBox=$('laser-test-box');
  var testResult=$('laser-test-result');
  if(testBox){
    testBox.addEventListener('click',function(e){
      var rect=testBox.getBoundingClientRect();
      var ry=(e.clientY-rect.top)/rect.height;
      var zone;
      if(ry&lt;0.33) zone='상단 1/3 영역 클릭됨 → 마우스형 호환 ✅';
      else if(ry&gt;0.67) zone='하단 1/3 영역 클릭됨 → 마우스형 호환 ✅';
      else zone='가운데 영역 클릭됨 → 마우스형 호환 ✅';
      testBox.style.borderColor='#22c55e';
      testResult.textContent=zone;
      setTimeout(function(){testBox.style.borderColor='#334155';},1200);
    });
    var kbTestHandler=function(e2){
      if(!$('mpt-opts-body').classList.contains('open'))return;
      var msg='';
      if(e2.key==='PageUp'){msg='⬆ PageUp 감지! → 프레젠터 리모컨 호환 ✅';}
      else if(e2.key==='PageDown'){msg='⬇ PageDown 감지! → 프레젠터 리모컨 호환 ✅';}
      else if(e2.key===' '){msg='⏸ Space 감지! → 정지/재개 동작 ✅';}
      else if(e2.key==='F5'){msg='⏸ F5 감지! → 정지/재개 동작 ✅';}
      else if(e2.key==='b'||e2.key==='B'){msg='⏸ B키 감지! → 블랙아웃/정지 동작 ✅';}
      if(msg){
        testBox.style.borderColor='#3b82f6';
        testResult.textContent=msg;
        setTimeout(function(){testBox.style.borderColor='#334155';},1200);
      }
    };
    document.addEventListener('keydown',kbTestHandler);
  }
}

/* ── 상태바 ── */
function updateStatus(){
  var txt=ta.value;
  $('sb-chars').textContent='글자 '+txt.replace(/\s/g,'').length;
  $('sb-lines').textContent='줄 '+txt.split('\n').length;
  var w=txt.trim().split(/\s+/).filter(Boolean).length;
  $('sb-est').textContent='낭독 ~'+Math.max(1,Math.round(w/280))+'분';
}
ta.oninput=function(){updateStatus();save();};

var DEFAULT_SCRIPT = '여기에 발표 스크립트를 입력하세요.\n\n안녕하세요 스타트업EX입니다.\n전세계 어디서든 0-1.kr/19만 누르시면\n프롬프터를 활용하실 수 있습니다.\n\n━━━━━━━━━━━━━━━━━━━━━━━━\n  모두의 프롬프터 주요 기능\n━━━━━━━━━━━━━━━━━━━━━━━━\n\n▶ 프롬프터 보기\n우측 상단 버튼 또는 Ctrl+Enter를 누르면\n전체화면 발표 모드가 시작됩니다.\n\n  현재위치 시작\n스크롤을 원하는 위치로 이동 후\n[현재위치 시작] 버튼을 누르면\n그 위치부터 자동 스크롤이 시작됩니다.\n\n  레이저 포인터 조작\n화면 상단 1/3 클릭 → 위로 스크롤\n화면 상단 1/3 더블클릭 → 속도 증가\n화면 하단 1/3 클릭 → 아래로 스크롤\n화면 하단 1/3 더블클릭 → 속도 감소\n화면 가운데 클릭 → 일시정지/재개\n\n  진행 내비게이터\n오른쪽 파란 바를 드래그하면\n원하는 위치로 바로 이동할 수 있습니다.\n\n⚙ 옵션 설정\n폰트·글자크기·배경색·글자색·속도 등\n다양한 설정을 하단 옵션 패널에서 조정하세요.\n\n  공유하기\nURL·QR코드·단축URL로\n스크립트와 설정을 함께 공유할 수 있습니다.\n\n━━━━━━━━━━━━━━━━━━━━━━━━\n위 내용을 지우고 발표 스크립트를 입력하거나\n[불러오기]로 텍스트 파일을 열어 사용하세요.\n━━━━━━━━━━━━━━━━━━━━━━━━';

/* ── 저장/로드 ── */
var saveT;
function save(){
  clearTimeout(saveT);
  saveT=setTimeout(function(){
    try{
      localStorage.setItem('mpt5_s',ta.value);
      localStorage.setItem('mpt5_c',JSON.stringify(C));
    }catch(e){}
  },600);
}
function loadData(){
  try{
    var s=localStorage.getItem('mpt5_s');
    if(s!=null) ta.value=s;
    else ta.value=DEFAULT_SCRIPT;
    var c=localStorage.getItem('mpt5_c');
    if(c){var p=JSON.parse(c);for(var k in p)if(Object.prototype.hasOwnProperty.call(p,k))C[k]=p[k];}
  }catch(e){ta.value=DEFAULT_SCRIPT;}
}

/* ── 초기화 ── */
$('btn-reset').onclick=function(){
  if(confirm('스크립트를 전부 지울까요?')){
    ta.value='';
    updateStatus(); save();
    ta.focus();
  }
};

/* ── 파일 저장/불러오기 ── */
$('btn-save').onclick=function(){
  var a=document.createElement('a');
  a.href=URL.createObjectURL(new Blob([ta.value],{type:'text/plain;charset=utf-8'}));
  a.download='prompter_script.txt'; a.click();
};
$('btn-load').onclick=function(){$('inp-txt').click();};
$('inp-txt').onchange=function(){
  var f=this.files[0]; if(!f)return;
  var r=new FileReader();
  r.onload=function(e){ta.value=e.target.result; updateStatus(); save();};
  r.readAsText(f);
};

/* ── PDF ── */
function loadPdfJs(cb){
  if(pdfJsOk){cb();return;}
  var s=document.createElement('script');
  s.src='https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.min.js';
  s.onload=function(){
    pdfjsLib.GlobalWorkerOptions.workerSrc='https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js';
    pdfJsOk=true; cb();
  };
  document.head.appendChild(s);
}
function loadPdfFile(file){
  loadPdfJs(function(){
    var r=new FileReader();
    r.onload=function(e){
      pdfjsLib.getDocument({data:e.target.result}).promise.then(function(doc){
        pdfDoc=doc; pdfPage=1; pdfTotal=doc.numPages;
        $('mpt-pdf-drop').style.display='none';
        pdfPrevW.style.display='block'; pdfPI.style.display='block';
        renderPrev(1);
      });
    };
    r.readAsArrayBuffer(file);
  });
}
function renderPrev(n){
  pdfDoc.getPage(n).then(function(page){
    var vp2=page.getViewport({scale:1.0});
    pdfCv.width=vp2.width; pdfCv.height=vp2.height;
    page.render({canvasContext:pdfCv.getContext('2d'),viewport:vp2}).promise.then(function(){
      pdfPI.textContent=n+' / '+pdfTotal+' 페이지';
    });
  });
}
$('btn-pdf').onclick=function(){$('inp-pdf').click();document.querySelector('[data-tab=&quot;pdf&quot;]').click();};
$('inp-pdf').onchange=function(){if(this.files[0])loadPdfFile(this.files[0]);};
var drop=$('mpt-pdf-drop');
drop.ondragover=function(e){e.preventDefault();this.style.borderColor='#1e40af';};
drop.ondragleave=function(){this.style.borderColor='';};
drop.ondrop=function(e){
  e.preventDefault(); this.style.borderColor='';
  var f=e.dataTransfer.files[0]; if(f&amp;&amp;f.type==='application/pdf')loadPdfFile(f);
};

/* ════════════════════════════
   공유 기능
════════════════════════════ */
function buildSharePayload(){
  /* 스크립트 + 설정 모두 포함 */
  var payload={
    s: ta.value,
    c: C
  };
  return encodeURIComponent(JSON.stringify(payload));
}
function buildShareUrl(){
  var base=window.location.href.split('?')[0].split('#')[0];
  return base+'?mpt='+buildSharePayload();
}

$('btn-share').onclick=function(){
  var modal=$('mpt-share-modal');
  modal.classList.add('show');
  /* URL 생성 */
  var url=buildShareUrl();
  $('share-full-url').value=url;
  /* QR */
  var qrUrl='https://api.qrserver.com/v1/create-qr-code/?size=180x180&amp;data='+encodeURIComponent(url);
  $('mpt-qr-img').src=qrUrl;
  /* TinyURL 초기화 */
  $('share-tiny-url').value='';
  $('share-copy-tiny').style.display='none';
};
$('share-close').onclick=function(){$('mpt-share-modal').classList.remove('show');};
$('mpt-share-modal').onclick=function(e){if(e.target===this)this.classList.remove('show');};

function copyText(text,btn){
  if(navigator.clipboard&amp;&amp;navigator.clipboard.writeText){
    navigator.clipboard.writeText(text).then(function(){
      btn.textContent='✔ 완료'; btn.classList.add('ok');
      setTimeout(function(){btn.textContent='복사';btn.classList.remove('ok');},2500);
    });
  } else {
    var ta2=document.createElement('textarea');
    ta2.value=text; ta2.style.cssText='position:fixed;opacity:0';
    document.body.appendChild(ta2); ta2.select();
    document.execCommand('copy'); document.body.removeChild(ta2);
    btn.textContent='✔ 완료'; btn.classList.add('ok');
    setTimeout(function(){btn.textContent='복사';btn.classList.remove('ok');},2500);
  }
}
$('share-copy-full').onclick=function(){copyText($('share-full-url').value,this);};
$('share-copy-tiny').onclick=function(){copyText($('share-tiny-url').value,this);};

$('share-tiny-btn').onclick=function(){
  var self=this;
  self.textContent='생성 중...'; self.disabled=true;
  var longUrl=buildShareUrl();
  /* TinyURL API (CORS 지원) */
  fetch('https://tinyurl.com/api-create.php?url='+encodeURIComponent(longUrl))
    .then(function(r){return r.text();})
    .then(function(t){
      $('share-tiny-url').value=t;
      $('share-copy-tiny').style.display='';
      /* QR도 단축URL로 갱신 */
      $('mpt-qr-img').src='https://api.qrserver.com/v1/create-qr-code/?size=180x180&amp;data='+encodeURIComponent(t);
      self.textContent='단축하기'; self.disabled=false;
    })
    .catch(function(){
      $('share-tiny-url').value='오류 — 잠시 후 다시 시도해 주세요';
      self.textContent='단축하기'; self.disabled=false;
    });
};

/* 페이지 로드 시 URL 파라미터로 공유 데이터 복원 */
function loadFromUrl(){
  try{
    var params=new URLSearchParams(window.location.search);
    var mpt=params.get('mpt');
    if(!mpt)return;
    var payload=JSON.parse(decodeURIComponent(mpt));
    if(payload.s) ta.value=payload.s;
    if(payload.c){var p=payload.c;for(var k in p)if(Object.prototype.hasOwnProperty.call(p,k))C[k]=p[k];}
  }catch(e){}
}

/* ════════════════════════════
   전체화면
════════════════════════════ */
function enterFs(){
  buildContent(); applyBg(); applyStyle();
  autoSpeedPending = C.goal &gt; 0;
  fsEl.classList.add('show');
  lCur.style.display='block';
  scrollPos=0; fsPdfY=0; lastHoverZone='mid'; hoverZone='mid';
  applyScroll();
  timerSec=0; $('fs-timer').textContent='00:00'; $('fs-timer').style.color='';
  clearInterval(timerInt); timerInt=setInterval(tick,1000);
  /* 2프레임 후 자동속도 계산 (maxScroll 확정 후) */
  requestAnimationFrame(function(){
    requestAnimationFrame(function(){
      if(autoSpeedPending &amp;&amp; C.goal &gt; 0){
        var mx2 = maxScroll();
        if(mx2 &gt; 0){
          var autoSpd = mx2 / (C.goal * 0.55 * 60);
          C.speedRaw = Math.max(1, Math.min(20, Math.round(autoSpd / 0.5)));
          syncSl();
          autoSpeedPending = false;
        }
      }
    });
  });
  startScroll();
  hintVisible=false; lHint.style.opacity='0';
  updateHint(); syncSl(); goalLabel(); requestFs();
}
function exitFs(){
  fsEl.classList.remove('show'); lCur.style.display='none';
  stopScroll(); clearInterval(timerInt); exitFsApi();
}
function requestFs(){
  var el=document.documentElement;
  try{
    if(el.requestFullscreen)el.requestFullscreen();
    else if(el.webkitRequestFullscreen)el.webkitRequestFullscreen();
    else if(el.mozRequestFullScreen)el.mozRequestFullScreen();
    else if(el.msRequestFullscreen)el.msRequestFullscreen();
  }catch(e){}
}
function exitFsApi(){
  try{
    if(document.exitFullscreen)document.exitFullscreen();
    else if(document.webkitExitFullscreen)document.webkitExitFullscreen();
    else if(document.mozCancelFullScreen)document.mozCancelFullScreen();
    else if(document.msExitFullscreen)document.msExitFullscreen();
  }catch(e){}
}

function buildContent(){
  if(C.mode==='pdf'&amp;&amp;pdfDoc){
    fc.style.display='none'; vp.style.display='none';
    fsPdf.classList.add('show'); renderFsPdf(pdfPage); return;
  }
  fsPdf.classList.remove('show');
  fc.style.display=''; vp.style.display='';
  fc.innerHTML=''; fc.className=C.dir==='horizontal'?'horiz':'';
  ta.value.split('\n').forEach(function(line){
    var p=document.createElement('p');
    p.textContent=line||'\u00a0'; fc.appendChild(p);
  });
}
function applyBg(){fsEl.style.background=C.bg;}
function applyStyle(){
  var sx=C.mirror==='h'?-1:1, sy=C.mirror==='v'?-1:1;
  fc.style.color=C.fg; fc.style.fontSize=C.size+'px';
  fc.style.lineHeight=(C.lh/10).toFixed(1);
  fc.style.fontFamily=C.font; fc.style.textAlign=C.align;
  fc.style.transformOrigin='50% 0';
  if(!scrolling) fc.style.transform='scale('+sx+','+sy+')';
}

/* ── 스크롤 엔진 ── */
var autoSpeedPending=false;

function getSpd(){
  return rawToSpeed(C.speedRaw);
}
function maxScroll(){
  if(C.dir==='horizontal') return Math.max(0,fc.scrollWidth-vp.clientWidth);
  return Math.max(0,fc.scrollHeight-vp.clientHeight);
}
function applyScroll(){
  var sx=C.mirror==='h'?-1:1, sy=C.mirror==='v'?-1:1;
  var m='scale('+sx+','+sy+')';
  if(C.dir==='horizontal') fc.style.transform=m+' translateX(-'+scrollPos+'px)';
  else fc.style.transform=m+' translateY(-'+scrollPos+'px)';
  var mx=maxScroll();
  var pct=mx&gt;0?Math.min(100,Math.round(scrollPos/mx*100)):0;
  /* 하단 진행바 업데이트 */
  var progEl=$('mpt-fs-prog');
  var pctEl=$('mpt-fs-prog-pct');
  var remEl=$('mpt-fs-prog-remain');
  if(progEl) progEl.style.width=pct+'%';
  if(pctEl){
    pctEl.textContent=pct+'%';
    if(pct&gt;=95) pctEl.style.color='rgba(239,68,68,.7)';
    else if(pct&gt;=80) pctEl.style.color='rgba(245,158,11,.7)';
    else pctEl.style.color='rgba(255,255,255,.45)';
  }
  if(remEl){
    if(C.goal&gt;0){
      var remSec=Math.max(0,C.goal-timerSec);
      var rm=Math.floor(remSec/60),rs=remSec%60;
      remEl.textContent='남은 '+(rm&gt;0?rm+'분 ':'')+rs+'초';
    } else {
      var remPct2=100-pct;
      var tw=ta.value.trim().split(/\s+/).filter(Boolean).length;
      var ts2=Math.round(tw/280*60);
      var re=Math.round(ts2*remPct2/100);
      var rm2=Math.floor(re/60);
      remEl.textContent=re&gt;0?'약 '+(rm2&gt;0?rm2+'분':'잠시')+'후 끝':'완료!';
    }
  }
}
function manualScroll(delta){
  scrollPos=Math.max(0,Math.min(maxScroll(),scrollPos+delta));
  applyScroll();
}
function scrollLoop(ts){
  if(!scrolling||paused){animId=null;return;}
  var dt=ts-lastTs; lastTs=ts; if(dt&gt;200)dt=16;
  var spd=getSpd();
  scrollPos+=spd*0.55*(dt/16);
  var mx=maxScroll();
  if(scrollPos&gt;=mx){scrollPos=mx;applyScroll();setPlay(false);animId=null;return;}
  applyScroll();
  animId=requestAnimationFrame(scrollLoop);
}
function pdfLoop(ts){
  if(!scrolling||paused){animId=null;return;}
  var dt=ts-lastTs; lastTs=ts; if(dt&gt;200)dt=16;
  fsPdfY+=getSpd()*0.35*(dt/16);
  var barH=$('mpt-fs-bar').offsetHeight+3;
  var viewH=window.innerHeight-barH;
  var maxH=Math.max(0,fsPdfCv.height-viewH);
  if(fsPdfY&gt;=maxH){
    fsPdfY=maxH; fsPdfCv.style.top=(-fsPdfY)+'px';
    if(pdfPage&lt;pdfTotal){
      stopScroll();
      setTimeout(function(){pdfPage++;fsPdfY=0;renderFsPdf(pdfPage,function(){startScroll();});},600);
    } else {setPlay(false);animId=null;}
    return;
  }
  fsPdfCv.style.top=(-fsPdfY)+'px';
  animId=requestAnimationFrame(pdfLoop);
}
function renderFsPdf(n,cb){
  pdfDoc.getPage(n).then(function(page){
    var barH=$('mpt-fs-bar').offsetHeight+3;
    var nat=page.getViewport({scale:1});
    var scale=window.innerWidth/nat.width;
    var vp2=page.getViewport({scale:scale});
    fsPdfCv.width=vp2.width; fsPdfCv.height=vp2.height;
    fsPdfCv.style.top='0px'; fsPdfCv.style.left='0'; fsPdfCv.style.transform='none';
    fsPdfCv.style.width='100%'; fsPdfCv.style.height='auto';
    page.render({canvasContext:fsPdfCv.getContext('2d'),viewport:vp2}).promise.then(function(){
      fsPdfY=0; if(cb)cb();
    });
  });
}
function startScroll(){
  if(scrolling)return;
  scrolling=true; paused=false; setPlay(true);
  lastTs=performance.now();
  animId=requestAnimationFrame(C.mode==='pdf'&amp;&amp;pdfDoc?pdfLoop:scrollLoop);
}
function pauseScroll(){
  paused=true; scrolling=false;
  if(animId){cancelAnimationFrame(animId);animId=null;}
  setPlay(false);
}
function stopScroll(){
  scrolling=false; paused=false;
  if(animId){cancelAnimationFrame(animId);animId=null;}
  setPlay(false);
}
function togglePause(){if(scrolling)pauseScroll();else startScroll();}
function setPlay(v){
  scrolling=v;
  pauseOv.classList.toggle('show',!v&amp;&amp;fsEl.classList.contains('show'));
  var btn=$('fsb-play');
  if(v){btn.textContent='⏸ 일시정지';btn.classList.add('playing');}
  else{btn.textContent='▶ 재개';btn.classList.remove('playing');}
}

function tick(){
  timerSec++;
  var m=Math.floor(timerSec/60),s=timerSec%60;
  $('fs-timer').textContent=(m&lt;10?'0':'')+m+':'+(s&lt;10?'0':'')+s;
  if(C.goal&gt;0){
    $('fs-timer').style.color=timerSec&gt;=C.goal?'#ef4444':timerSec&gt;=C.goal*.8?'#f59e0b':'';
  }
}
function goalLabel(){
  if(C.goal&gt;0){
    var hh=Math.floor(C.goal/3600),mm=Math.floor((C.goal%3600)/60),ss=C.goal%60;
    $('fs-goal-lbl').textContent='목표 '+(hh&gt;0?hh+'h ':'')+mm+'m '+ss+'s';
  } else {
    $('fs-goal-lbl').textContent='';
  }
}function syncSl(){
  $('fs-speed-sl').value=C.speedRaw; $('fs-speed-v').textContent=speedLabel(C.speedRaw);
  $('fs-size-sl').value=C.size; $('fs-size-v').textContent=C.size+'px';
}
var AL={
  pause:'일시정지/재개',togglepause:'일시정지/재개',
  speedup:'속도 빠르게',speeddown:'속도 느리게',
  scrollup:'위로 1/3',scrolldown:'아래로 1/3',
  exit:'종료',none:'없음',fromhere:'현재위치 시작',restart:'처음으로'
};
function updateHint(){
  $('lh-click-t').textContent=AL[C.lzClick]||C.lzClick;
  $('lh-dbl-t').textContent=AL[C.lzDbl]||C.lzDbl;
  $('lh-top-t').textContent=AL[C.lzMid]||C.lzMid;
  $('lh-bot-t').textContent=AL[C.lzBotClick]||C.lzBotClick;
  /* select 기본값 맞추기 */
  if($('lz-click')) $('lz-click').value=C.lzClick;
  if($('lz-dbl')) $('lz-dbl').value=C.lzDbl;
  if($('lz-mid')) $('lz-mid').value=C.lzMid;
  if($('lz-bot-click')) $('lz-bot-click').value=C.lzBotClick;
  if($('lz-bot-dbl')) $('lz-bot-dbl').value=C.lzBotDbl;
}

/* 하단 영역 클릭 카운터 (1번=빠르게, 2번=느리게) */
var botClickCount=0, botClickTimer=null;
function doAct(a){
  if(a==='pause') togglePause();
  else if(a==='speedup'){C.speedRaw=Math.min(20,C.speedRaw+2);syncSl();}
  else if(a==='speeddown'){C.speedRaw=Math.max(1,C.speedRaw-2);syncSl();}
  else if(a==='exit') exitFs();
  else if(a==='fromhere'){if(!scrolling)startScroll();}
  else if(a==='restart'){stopScroll();scrollPos=0;fsPdfY=0;applyScroll();startScroll();}
}

/* 레이저 커서 클릭 효과 */
function laserClick(){
  lCur.classList.add('clicked');
  setTimeout(function(){lCur.classList.remove('clicked');},200);
}

/* ── 버튼 이벤트 ── */
$('btn-fs').onclick=enterFs;
$('fsb-exit').onclick=exitFs;
$('fsb-play').onclick=togglePause;
$('fsb-restart').onclick=function(){stopScroll();scrollPos=0;fsPdfY=0;applyScroll();startScroll();};
$('fsb-fromhere').onclick=function(){if(!scrolling)startScroll();};
$('fsb-mirror').onclick=function(){
  var a=['off','h','v']; C.mirror=a[(a.indexOf(C.mirror)+1)%a.length];
  applyStyle(); save();
};

/* ════════════════════════════
   레이저 포인터 — 클릭 위치 기반
   상단1/3: 클릭=위로, 더블=속도↑
   하단1/3: 클릭=아래로, 더블=속도↓
   가운데:  클릭/더블=정지/시작
════════════════════════════ */
var dblT=null;
var lastHoverZone='mid';

/* doAct 확장 */
function doAct(a){
  if(a==='pause'||a==='togglepause') togglePause();
  else if(a==='speedup'){C.speedRaw=Math.min(20,C.speedRaw+2);syncSl();}
  else if(a==='speeddown'){C.speedRaw=Math.max(1,C.speedRaw-2);syncSl();}
  else if(a==='exit') exitFs();
  else if(a==='fromhere'){if(!scrolling)startScroll();}
  else if(a==='restart'){stopScroll();scrollPos=0;fsPdfY=0;applyScroll();startScroll();}
  else if(a==='scrollup'){
    /* 위로 1/3 이동 */
    var jump=Math.max(100,maxScroll()/3);
    scrollPos=Math.max(0,scrollPos-jump);
    applyScroll();
  }
  else if(a==='scrolldown'){
    /* 아래로 1/3 이동 */
    var jump2=Math.max(100,maxScroll()/3);
    scrollPos=Math.min(maxScroll(),scrollPos+jump2);
    applyScroll();
  }
}

/* 레이저 커서 클릭 효과 */
function laserClick(){
  lCur.classList.add('clicked');
  setTimeout(function(){lCur.classList.remove('clicked');},200);
}

/* mousemove — 커서만 추적 (zone 진입 액션 없음) */
document.addEventListener('mousemove',function(e){
  if(!fsEl.classList.contains('show'))return;
  lCur.style.left=e.clientX+'px';
  lCur.style.top=e.clientY+'px';
  var ry=e.clientY/window.innerHeight;
  hoverZone=ry&lt;0.33?'top':ry&gt;0.67?'bot':'mid';
},{passive:true});

/* click — 클릭 위치로 zone 판단 */
fsEl.addEventListener('click',function(e){
  if(e.target.closest('#mpt-fs-bar'))return;
  if(e.target.closest('#mpt-nav'))return;
  laserClick();

  var ry=e.clientY/window.innerHeight;
  var zone=ry&lt;0.33?'top':ry&gt;0.67?'bot':'mid';

  if(dblT){
    /* 더블클릭 */
    clearTimeout(dblT); dblT=null;
    if(zone==='top') doAct(C.lzDbl);         /* 상단 더블 = 속도증가 */
    else if(zone==='bot') doAct(C.lzBotDbl); /* 하단 더블 = 속도감소 */
    else doAct(C.lzMid);                     /* 가운데 더블 = 정지/시작 */
    return;
  }
  dblT=setTimeout(function(){
    dblT=null;
    if(zone==='top') doAct(C.lzClick);       /* 상단 클릭 = 위로 */
    else if(zone==='bot') doAct(C.lzBotClick); /* 하단 클릭 = 아래로 */
    else doAct(C.lzMid);                     /* 가운데 클릭 = 정지/시작 */
  },260);
});

/* ── 마우스 휠 — 위↑아래↓ 수동 스크롤 ── */
fsEl.addEventListener('wheel',function(e){
  e.preventDefault();
  e.stopPropagation();
  var delta=C.dir==='horizontal'?(e.deltaX||e.deltaY):e.deltaY;
  /* 휠 위 = deltaY 음수 = 위로 스크롤(역방향) */
  manualScroll(delta);
  /* 재생 중이면 일시정지 후 수동조작 허용 */
  if(scrolling) pauseScroll();
},{passive:false,capture:true});

/* ── 터치 드래그 + 핀치 줌 ── */
var pinchD=0,pinchS=0;
var dragY=0,dragX=0,dragging=false,dragStartPos=0;
fsEl.addEventListener('touchstart',function(e){
  if(e.target.closest('#mpt-fs-bar'))return;
  if(e.touches.length===2){
    pinchD=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);
    pinchS=C.size; dragging=false; return;
  }
  dragging=true;
  dragY=e.touches[0].clientY; dragX=e.touches[0].clientX;
  dragStartPos=scrollPos;
  var ry=e.touches[0].clientY/window.innerHeight;
  hoverZone=ry&lt;.33?'top':ry&gt;.67?'bot':'mid';
},{passive:true});
fsEl.addEventListener('touchmove',function(e){
  if(e.target.closest('#mpt-fs-bar'))return;
  if(e.touches.length===2){
    dragging=false;
    var d=Math.hypot(e.touches[0].clientX-e.touches[1].clientX,e.touches[0].clientY-e.touches[1].clientY);
    C.size=Math.max(20,Math.min(120,Math.round(pinchS*(d/pinchD))));
    applyStyle(); syncSl(); return;
  }
  if(!dragging)return;
  var dy=dragY-e.touches[0].clientY;
  var dx=dragX-e.touches[0].clientX;
  var delta=C.dir==='horizontal'?dx:dy;
  scrollPos=Math.max(0,Math.min(maxScroll(),dragStartPos+delta));
  applyScroll();
  if(scrolling) pauseScroll();
},{passive:true});
fsEl.addEventListener('touchend',function(e){
  if(e.target.closest('#mpt-fs-bar'))return;
  if(!dragging)return;
  dragging=false;
  var dy=Math.abs(dragY-(e.changedTouches[0]?e.changedTouches[0].clientY:dragY));
  var dx=Math.abs(dragX-(e.changedTouches[0]?e.changedTouches[0].clientX:dragX));
  if(dy&lt;10&amp;&amp;dx&lt;10){
    if(dblT){clearTimeout(dblT);dblT=null;doAct(C.lzDbl);}
    else{dblT=setTimeout(function(){dblT=null;doAct(C.lzClick);},280);}
  }
},{passive:true});

/* ── 키보드 ── */
var laserPageUpTimer=null, laserPageDownTimer=null;
document.addEventListener('keydown',function(e){
  if(!fsEl.classList.contains('show')){
    if((e.ctrlKey||e.metaKey)&amp;&amp;e.key==='Enter'){e.preventDefault();enterFs();}
    return;
  }
  switch(e.key){
    case 'Escape': exitFs(); break;
    case ' ': case 'k': case 'K': e.preventDefault(); togglePause(); break;
    case 'ArrowUp':   case 'ArrowLeft':  e.preventDefault(); manualScroll(-150); break;
    case 'ArrowDown': case 'ArrowRight': e.preventDefault(); manualScroll(150);  break;
    case '+': case '=': C.speedRaw=Math.min(20,C.speedRaw+1); syncSl(); break;
    case '-': case '_': C.speedRaw=Math.max(1,C.speedRaw-1);  syncSl(); break;
    case 'r': case 'R': stopScroll();scrollPos=0;fsPdfY=0;applyScroll();startScroll(); break;
    case 'h': case 'H':
      hintVisible=!hintVisible;
      lHint.style.opacity=hintVisible?'1':'0';
      var kg=$('mpt-key-guide');
      if(kg) kg.style.opacity=hintVisible?'1':'0';
      break;
    case 'Enter': if(!scrolling)startScroll(); break;
    /* ★ 레이저 포인터(프레젠터 리모컨) PageUp/Down 전용 지원 */
    case 'PageUp':
      e.preventDefault();
      if(laserPageUpTimer){
        /* 400ms 내 두 번 = 더블 → 속도 증가 */
        clearTimeout(laserPageUpTimer); laserPageUpTimer=null;
        doAct('speedup');
      } else {
        /* 단일 → 위로 1/3 이동 */
        doAct('scrollup');
        laserPageUpTimer=setTimeout(function(){laserPageUpTimer=null;},400);
      }
      break;
    case 'PageDown':
      e.preventDefault();
      if(laserPageDownTimer){
        /* 400ms 내 두 번 = 더블 → 속도 감소 */
        clearTimeout(laserPageDownTimer); laserPageDownTimer=null;
        doAct('speeddown');
      } else {
        /* 단일 → 아래로 1/3 이동 */
        doAct('scrolldown');
        laserPageDownTimer=setTimeout(function(){laserPageDownTimer=null;},400);
      }
      break;
    /* F5: 일부 프레젠터 리모컨 전송 → 일시정지/재개 */
    case 'F5': e.preventDefault(); togglePause(); break;
    /* b/B: 블랙아웃 버튼 (로지텍 등) → 일시정지 */
    case 'b': case 'B': togglePause(); break;
    case 'n': case 'N':
      if(C.mode==='pdf'&amp;&amp;pdfDoc&amp;&amp;pdfPage&lt;pdfTotal){pdfPage++;fsPdfY=0;renderFsPdf(pdfPage,null);} break;
    case 'p': case 'P':
      if(C.mode==='pdf'&amp;&amp;pdfDoc&amp;&amp;pdfPage&gt;1){pdfPage--;fsPdfY=0;renderFsPdf(pdfPage,null);} break;
  }
});

/* ── 초기화 ── */
loadFromUrl();
loadData();
initOpts();
updateStatus();
updateHint();

})();
&lt;/script&gt;</description>
      <category>모두의계산기/프롬포터_19</category>
      <category>0-1.kr/19</category>
      <category>계산기</category>
      <category>모두</category>
      <category>발표</category>
      <category>웹앱</category>
      <category>프롬프터</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/19</guid>
      <comments>https://0-1.kr/19#entry19comment</comments>
      <pubDate>Thu, 12 Nov 2020 15:26:48 +0900</pubDate>
    </item>
    <item>
      <title>모두의 행사공지 계산기_V1_(0-1.kr/16)</title>
      <link>https://0-1.kr/16</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width,initial-scale=1,maximum-scale=1&quot;&gt;
&lt;meta name=&quot;theme-color&quot; content=&quot;#1a5cff&quot;&gt;
&lt;meta name=&quot;apple-mobile-web-app-capable&quot; content=&quot;yes&quot;&gt;
&lt;meta name=&quot;apple-mobile-web-app-title&quot; content=&quot;행사알림게시판&quot;&gt;
&lt;link rel=&quot;manifest&quot; id=&quot;pwaManifest&quot;&gt;
&lt;title&gt;모두의 행사전알림게시판&lt;/title&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@300;400;500;700&amp;family=DM+Mono:wght@400;500&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;style&gt;
:root{
  --ff:'Noto Sans KR',sans-serif;--fm:'DM Mono',monospace;
  --acc:#1a5cff;--bg:#f0f2fa;--card:#fff;--card2:#e6e9f5;
  --txt:#080b1e;--txt2:#2a2e4a;--txt3:#6a6e90;--brd:rgba(8,11,30,.1);--r:14px;
}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{min-height:100%;font-family:var(--ff);background:var(--bg);color:var(--txt);}

/* ── 타이틀 ── */
.title-header{background:var(--acc);}
.title-inner{max-width:880px;margin:0 auto;display:flex;align-items:stretch;}
.title-main{flex:1;padding:1rem 1.3rem;border-right:1px solid rgba(255,255,255,.15);}
.title-ko{font-size:21px;font-weight:700;color:#fff;letter-spacing:-.01em;line-height:1.2;}
.title-en{font-size:11px;color:rgba(255,255,255,.6);margin-top:3px;letter-spacing:.08em;}
.title-side{padding:.7rem 1rem;display:flex;flex-direction:column;align-items:flex-end;justify-content:center;gap:5px;}
.title-pills{display:flex;gap:5px;}
.cpill{width:20px;height:20px;border-radius:50%;cursor:pointer;border:2.5px solid transparent;transition:.15s;}
.cpill.on{border-color:#fff;}
.hdr-btns{display:flex;gap:5px;}
.hdr-btn{font-size:11px;padding:3px 9px;border-radius:7px;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.12);color:#fff;cursor:pointer;font-family:var(--ff);transition:.15s;white-space:nowrap;}
.hdr-btn:hover{background:rgba(255,255,255,.25);}

/* ── 공유바 ── */
.share-bar{background:#fff;border-bottom:1px solid var(--brd);padding:.6rem 1.1rem;display:flex;align-items:center;gap:7px;flex-wrap:wrap;}
.share-label{font-size:12px;font-weight:600;color:var(--txt2);white-space:nowrap;}
.share-url{font-size:11px;color:var(--txt3);background:var(--bg);border:1px solid var(--brd);border-radius:7px;padding:4px 9px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;}
.share-btn{font-size:11px;padding:5px 11px;border-radius:7px;border:1.5px solid var(--brd);background:var(--card);color:var(--txt2);cursor:pointer;font-family:var(--ff);transition:.15s;white-space:nowrap;}
.share-btn:hover,.share-btn.primary{background:var(--acc);color:#fff;border-color:var(--acc);}
#qrBox{display:none;padding:.5rem 1.1rem 1rem;background:#fff;border-bottom:1px solid var(--brd);}

/* ── 앱 ── */
.app{max-width:880px;margin:0 auto;padding:1rem 1rem 5rem;}
.notice-bar{background:linear-gradient(135deg,var(--acc),#6a3aff);color:#fff;border-radius:var(--r);padding:.8rem 1.1rem;margin-bottom:.8rem;font-size:13px;display:flex;align-items:flex-start;gap:.65rem;line-height:1.6;}
.notice-close{margin-left:auto;flex-shrink:0;background:rgba(255,255,255,.2);border:none;border-radius:7px;color:#fff;padding:3px 9px;cursor:pointer;font-size:12px;font-family:var(--ff);}

/* ── 섹션 ── */
.sec{background:var(--card);border-radius:var(--r);margin-bottom:.75rem;overflow:hidden;border:1px solid var(--brd);}
.sec-head{display:flex;align-items:center;justify-content:space-between;padding:.8rem 1.1rem;cursor:pointer;user-select:none;transition:.15s;}
.sec-head:hover{background:var(--bg);}
.sec-head.open{border-bottom:1px solid var(--brd);}
.sec-head-left{display:flex;align-items:center;gap:9px;flex:1;min-width:0;}
.sec-icon{font-size:18px;flex-shrink:0;}
.sec-title{font-size:14px;font-weight:700;color:var(--txt);}
.sec-desc{font-size:11px;color:var(--txt3);margin-top:1px;}
.sec-head-right{display:flex;align-items:center;gap:7px;flex-shrink:0;}
.sec-chev{font-size:14px;color:var(--txt3);transition:.25s;}
.sec-body{padding:.95rem 1.1rem;display:none;}
.sec-body.open{display:block;}

/* 슬라이드 포함 체크 */
.slide-check{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--txt3);cursor:pointer;user-select:none;padding:3px 8px;border-radius:8px;border:1px solid var(--brd);background:var(--bg);transition:.15s;white-space:nowrap;}
.slide-check:hover{border-color:var(--acc);color:var(--acc);}
.slide-check.active{background:rgba(26,92,255,.1);border-color:var(--acc);color:var(--acc);font-weight:600;}

/* ── 미리보기 박스 ── */
.csp-box{background:#0d1020;border-radius:14px;padding:1.3rem 3rem 1rem;min-height:160px;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;transition:background .3s;position:relative;}
.csp-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:2;width:32px;height:52px;background:rgba(255,255,255,.1);border:1.5px solid rgba(255,255,255,.28);border-radius:9px;cursor:pointer;color:#fff;font-size:17px;font-weight:700;display:flex;align-items:center;justify-content:center;transition:.15s;}
.csp-arrow:hover{background:rgba(255,255,255,.22);}
.csp-arrow.left{left:6px;}.csp-arrow.right{right:6px;}

/* ── 슬라이드 탐색 버튼 ── */
.snav-row{display:flex;justify-content:center;gap:6px;flex-wrap:wrap;margin-top:.65rem;}
.snav-item{display:inline-flex;flex-direction:column;align-items:center;gap:3px;}
.snav-btn{font-size:11px;padding:5px 11px;border-radius:16px;border:1px solid var(--brd);background:var(--card2);color:var(--txt2);cursor:pointer;transition:.15s;font-family:var(--ff);white-space:nowrap;}
.snav-btn:hover{background:var(--acc);color:#fff;border-color:var(--acc);}
.snav-btn.active{background:var(--acc);color:#fff;border-color:var(--acc);}
.snav-chk{font-size:10px;padding:2px 7px;border-radius:10px;cursor:pointer;border:1px solid var(--brd);background:var(--bg);color:var(--txt3);transition:.12s;white-space:nowrap;}
.snav-chk.on{background:rgba(26,92,255,.1);border-color:var(--acc);color:var(--acc);font-weight:600;}

/* 전체화면 버튼 */
.fs-launch-btn{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;margin-top:.85rem;padding:12px;font-size:16px;font-weight:700;background:var(--acc);color:#fff;border:none;border-radius:var(--r);cursor:pointer;font-family:var(--ff);box-shadow:0 4px 16px rgba(26,92,255,.26);transition:.2s;}
.fs-launch-btn:hover{opacity:.9;transform:translateY(-1px);}

/* ── 폼 ── */
.brow{display:flex;gap:7px;align-items:flex-start;margin-bottom:.7rem;flex-wrap:wrap;}
.blabel{font-size:12px;font-weight:600;color:var(--txt2);min-width:85px;padding-top:9px;flex-shrink:0;}
.binput{font-size:13px;padding:7px 11px;border:1.5px solid var(--brd);border-radius:9px;background:var(--bg);color:var(--txt);font-family:var(--ff);flex:1;min-width:140px;outline:none;transition:border-color .15s;}
.binput:focus{border-color:var(--acc);}
.binfo{font-size:10px;color:var(--txt3);margin-top:3px;line-height:1.6;}
.bsep{height:1px;background:var(--brd);margin:.75rem 0;}
.abtn{font-size:12px;padding:6px 12px;border:1.5px solid var(--brd);border-radius:9px;background:var(--card);cursor:pointer;color:var(--txt2);transition:.15s;font-family:var(--ff);}
.abtn:hover,.abtn.primary{background:var(--acc);color:#fff;border-color:var(--acc);}
.abtn-row{display:flex;gap:7px;flex-wrap:wrap;margin-top:.85rem;}

/* ── 멘트 ── */
.ment-list{display:flex;flex-direction:column;gap:6px;margin-bottom:.6rem;}
.ment-row{display:flex;gap:5px;align-items:center;background:var(--bg);border-radius:9px;padding:5px 7px;border:1px solid var(--brd);cursor:grab;}
.ment-row.dragging{opacity:.5;background:var(--card2);}
.ment-handle{font-size:14px;color:var(--txt3);cursor:grab;flex-shrink:0;padding:0 3px;}
.ment-num{font-size:11px;color:var(--txt3);min-width:20px;text-align:center;flex-shrink:0;}
.ment-inp{font-size:13px;padding:5px 9px;border:1.5px solid var(--brd);border-radius:8px;background:var(--card);color:var(--txt);font-family:var(--ff);flex:1;min-width:0;outline:none;transition:border-color .15s;}
.ment-inp:focus{border-color:var(--acc);}
.ment-del{width:26px;height:26px;border-radius:7px;border:1.5px solid var(--brd);background:var(--card);cursor:pointer;color:var(--txt3);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:14px;transition:.15s;}
.ment-del:hover{background:#ffeaea;border-color:#ffaaaa;color:#cc3300;}

/* 커스터마이징 */
.custom-zones{display:grid;grid-template-rows:1fr 1fr 1fr;gap:7px;margin-top:.65rem;}
.custom-zone{background:var(--card2);border-radius:10px;padding:.65rem .9rem;border:1.5px solid var(--brd);}
.custom-zone-title{font-size:11px;font-weight:700;color:var(--txt3);margin-bottom:.45rem;letter-spacing:.04em;}
.custom-zone-opts{display:flex;gap:5px;flex-wrap:wrap;}
.czopt{font-size:11px;padding:4px 9px;border-radius:14px;border:1px solid var(--brd);background:var(--card);color:var(--txt2);cursor:pointer;transition:.15s;}
.czopt.on{background:var(--acc);color:#fff;border-color:var(--acc);}

/* ── 스톱워치 랩 레이아웃 ── */
.sw-layout{display:flex;gap:1.5rem;align-items:flex-start;width:100%;}
.sw-left{display:flex;flex-direction:column;align-items:center;flex-shrink:0;}
.sw-right{flex:1;min-width:0;max-height:220px;overflow-y:auto;}
.sw-laps{display:flex;flex-direction:column;gap:0;}
.sw-laprow{display:flex;align-items:center;padding:4px 0;border-top:1px solid rgba(255,255,255,.07);color:rgba(255,255,255,.5);font-family:var(--fm);font-size:12px;gap:5px;}
.sw-laprow.best{color:#4adf8a;}.sw-laprow.worst{color:#ff7b5a;}
.sw-laprow input{flex:1;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:6px;color:#ddd;padding:2px 7px;font-size:11px;font-family:var(--ff);outline:none;min-width:0;}

/* ── 전체화면 팝업 ── */
#fsOv{
  display:none !important;
  position:fixed !important;
  top:0 !important;left:0 !important;right:0 !important;bottom:0 !important;
  width:100% !important;height:100% !important;
  max-width:none !important;max-height:none !important;
  margin:0 !important;padding:0 !important;
  transform:none !important;
  z-index:2147483647 !important;
  background:#0d1020;flex-direction:column !important;overflow:hidden !important;
}
#fsOv.show{display:flex !important;}
#fsBgLayer{position:absolute;inset:0;z-index:0;background-size:cover;background-position:center;opacity:.2;display:none;pointer-events:none;}
#fsBannerFixed{display:none;flex-shrink:0;text-align:center;padding:.45rem;background:rgba(0,0,0,.18);position:relative;z-index:2;}

/* 툴바 */
.fstb-wrap{position:relative;z-index:10;flex-shrink:0;}
.fstb{display:flex;align-items:center;gap:4px;padding:.5rem .85rem;background:rgba(0,0,0,.72);border-bottom:1px solid rgba(255,255,255,.1);overflow-x:auto;white-space:nowrap;transition:transform .3s,opacity .3s;}
.fstb::-webkit-scrollbar{height:2px;}
.fstb::-webkit-scrollbar-thumb{background:rgba(255,255,255,.2);}
.fstb.hidden{transform:translateY(-100%);opacity:0;pointer-events:none;}
.fstb-trigger{position:absolute;top:0;left:0;right:0;height:18px;z-index:11;cursor:pointer;}
.fstb-hint{position:absolute;top:0;left:50%;transform:translateX(-50%);z-index:12;pointer-events:none;font-size:10px;color:rgba(255,255,255,.4);padding:2px 10px;background:rgba(0,0,0,.5);border-radius:0 0 8px 8px;transition:opacity .3s;opacity:0;}
.fstb.hidden~.fstb-hint{opacity:1;}
.ftsep{width:1px;height:14px;background:rgba(255,255,255,.2);margin:0 3px;flex-shrink:0;display:inline-block;}
.flabel{font-size:10px;color:rgba(255,255,255,.75);flex-shrink:0;font-weight:500;}
.fpill{width:16px;height:16px;border-radius:50%;cursor:pointer;border:2px solid transparent;display:inline-block;vertical-align:middle;transition:.15s;flex-shrink:0;}
.fpill.on{border-color:#fff;transform:scale(1.2);}
.fsel{font-size:11px;padding:3px 6px;border-radius:7px;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.16);color:#fff;font-family:var(--ff);cursor:pointer;flex-shrink:0;}
.fsel option{background:#1a1d2e;color:#ddd;}
.ftog{font-size:11px;padding:3px 9px;border-radius:14px;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.13);color:#eee;cursor:pointer;font-family:var(--ff);transition:.15s;flex-shrink:0;white-space:nowrap;}
.ftog:hover,.ftog.on{background:var(--acc);border-color:var(--acc);color:#fff;}
.fclose{margin-left:5px;width:27px;height:27px;border-radius:7px;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.14);cursor:pointer;color:#fff;display:flex;align-items:center;justify-content:center;transition:.15s;flex-shrink:0;padding:0;}
.fclose:hover{background:rgba(255,255,255,.3);}
.fclose svg,.ibtn svg{pointer-events:none;}

/* 슬라이드 */
.fs-slide-wrap{flex:1;position:relative;overflow:hidden;z-index:1;}
.fs-slides{display:flex;height:100%;transition:transform .38s cubic-bezier(.4,0,.2,1);}
.fs-slide{min-width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:1.2rem 4.2rem 3.5rem;overflow-y:auto;}

/* 화살표 */
.fs-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:10;width:44px;height:78px;background:rgba(255,255,255,.13);border:2px solid rgba(255,255,255,.38);border-radius:12px;cursor:pointer;color:#fff;display:flex;align-items:center;justify-content:center;transition:.2s;font-size:23px;font-weight:700;-webkit-tap-highlight-color:transparent;}
.fs-arrow:hover{background:rgba(255,255,255,.28);border-color:#fff;}
.fs-arrow.left{left:7px;}.fs-arrow.right{right:7px;}
.fs-dots{position:absolute;bottom:13px;left:50%;transform:translateX(-50%);display:flex;gap:6px;z-index:5;}
.fs-dot{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.28);cursor:pointer;transition:.25s;}
.fs-dot.on{background:#fff;width:18px;border-radius:4px;}
.fs-pgnum{position:absolute;top:7px;right:50px;font-size:10px;color:rgba(255,255,255,.35);z-index:5;}

/* 슬라이드 내 공통 */
.fs-lbl{font-size:10px;letter-spacing:.12em;text-transform:uppercase;opacity:.3;margin-bottom:.4rem;text-align:center;}
.fs-time{font-family:var(--fm);font-variant-numeric:tabular-nums;line-height:1;letter-spacing:-.04em;text-align:center;word-break:break-all;overflow-wrap:break-word;max-width:100%;}
.fs-dateline{text-align:center;margin-top:.5rem;font-size:clamp(14px,2.4vw,23px);opacity:.5;word-break:keep-all;}
.fs-extra{text-align:center;margin-top:.28rem;font-size:clamp(11px,1.7vw,16px);opacity:.34;}
.fs-pills{display:flex;justify-content:center;gap:6px;flex-wrap:wrap;margin-top:.65rem;}
.fs-pill{font-size:clamp(10px,1.3vw,13px);padding:3px 11px;border-radius:20px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.11);}
.fs-weather{display:flex;justify-content:center;gap:9px;flex-wrap:wrap;margin-top:.4rem;font-size:clamp(10px,1.3vw,13px);opacity:.42;}
.fs-banner-wrap{width:100%;max-width:800px;border-radius:10px;overflow:hidden;}
.fs-banner-wrap img{width:100%;display:block;object-fit:contain;}
.fs-yt-wrap{width:100%;max-width:480px;margin-top:.6rem;border-radius:8px;overflow:hidden;}
.fs-yt-wrap iframe{width:100%;aspect-ratio:16/9;border:none;display:block;}
/* 유튜브 미니 컨트롤 */
.fs-yt-mini{width:100%;max-width:520px;margin-top:.6rem;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.fs-yt-mini iframe{border:none;border-radius:7px;flex:1;min-width:200px;height:40px;}
.fs-ment-text{font-size:clamp(24px,5vw,72px);font-weight:400;line-height:1.35;text-align:center;letter-spacing:-.01em;word-break:keep-all;overflow-wrap:break-word;max-width:100%;white-space:pre-wrap;}
.fs-ment-clock{font-size:clamp(12px,2vw,20px);opacity:.36;margin-top:.7rem;text-align:center;font-family:var(--fm);}
.fs-memo-box{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:.8rem 1rem;margin-top:.75rem;width:100%;max-width:660px;}
.fs-memo-t{font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.28);margin-bottom:.4rem;}
.fs-memo{width:100%;min-height:55px;resize:vertical;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:.5rem .8rem;color:#ddd;font-family:var(--ff);font-size:14px;line-height:1.6;outline:none;}
.fs-memo::placeholder{color:rgba(255,255,255,.18);}
/* 좌우 배너 */
.fs-lr-wrap{display:flex;align-items:center;gap:.9rem;width:100%;justify-content:center;}
.fs-lr-banner img{max-height:170px;max-width:95px;object-fit:contain;border-radius:7px;}
.fs-center-content{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;}
/* 타이머 */
.timer-big{font-family:var(--fm);font-size:80px;font-weight:400;letter-spacing:-.04em;color:#fff;font-variant-numeric:tabular-nums;text-align:center;line-height:1;cursor:ns-resize;}
.timer-big.warn1{animation:blink1 1s infinite;}
.timer-big.warn2{animation:blink2 .5s infinite;}
@keyframes blink1{0%,100%{opacity:1}50%{opacity:.25}}
@keyframes blink2{0%,100%{opacity:1}50%{opacity:.08}}
.timer-presets{display:flex;justify-content:center;gap:5px;flex-wrap:wrap;margin:.65rem 0;}
.t-preset{font-size:12px;padding:4px 10px;border-radius:15px;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.15);color:#ccc;cursor:pointer;font-family:var(--ff);transition:.15s;}
.t-preset:hover{background:var(--acc);border-color:var(--acc);color:#fff;}
.timer-bar{height:5px;background:rgba(255,255,255,.1);border-radius:3px;margin:.5rem auto;max-width:460px;overflow:hidden;width:100%;}
.timer-barf{height:5px;border-radius:3px;background:var(--acc);transition:width .9s linear;}
/* 스톱워치 */
.sw-big{font-family:var(--fm);font-size:80px;font-weight:400;letter-spacing:-.04em;color:#fff;font-variant-numeric:tabular-nums;text-align:center;line-height:1;}
.sw-ms{font-size:36px;color:rgba(255,255,255,.38);}
/* PDF/이미지 */
.pdf-slide{display:flex;flex-direction:column;align-items:center;justify-content:center;}
.pdf-canvas-wrap{max-width:100%;max-height:72vh;overflow:hidden;border-radius:8px;box-shadow:0 4px 24px rgba(0,0,0,.5);}
.pdf-canvas-wrap canvas{display:block;max-width:100%;height:auto;}
.media-img-wrap{max-width:100%;max-height:72vh;text-align:center;}
.media-img-wrap img{max-width:100%;max-height:72vh;border-radius:8px;object-fit:contain;}
.pdf-nav{display:flex;align-items:center;gap:10px;margin-top:.7rem;color:rgba(255,255,255,.55);font-size:13px;}
/* 커스텀 */
.fs-custom{width:100%;height:100%;display:grid;grid-template-rows:1fr 1fr 1fr;gap:0;}
.fsc-zone{display:flex;align-items:center;justify-content:center;padding:.5rem;}
.fsc-zone.top{border-bottom:1px solid rgba(255,255,255,.06);}
.fsc-zone.bottom{border-top:1px solid rgba(255,255,255,.06);}
/* 자막 */
.fs-ticker-area{position:absolute;left:0;right:0;z-index:6;overflow:hidden;pointer-events:none;}
.fs-ticker-area.pos-bottom{bottom:36px;}
.fs-ticker-area.pos-top-under{top:48px;}
.fs-ticker-area.pos-middle{top:50%;transform:translateY(-50%);}
.fs-ticker-bar{padding:.42rem 0;}
.fs-ticker{display:inline-flex;white-space:nowrap;}
.fs-ticker span{padding:0 2.5rem;}
@keyframes fstick{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}
/* 버튼 */
.fs-btn{padding:7px 17px;border-radius:20px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.1);color:#eee;font-size:13px;cursor:pointer;font-family:var(--ff);transition:.15s;}
.fs-btn:hover{background:rgba(255,255,255,.22);color:#fff;}
.fs-btn.primary{background:var(--acc);border-color:var(--acc);color:#fff;}
.fs-row{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:center;margin-top:.75rem;}

@media(max-width:600px){
  .fs-slide{padding:1rem 2.8rem 3.5rem;}
  .fs-arrow{width:32px;height:62px;font-size:18px;}
  .timer-big,.sw-big{font-size:52px;}
}
@media(max-width:380px){.fs-slide{padding:.8rem 2.4rem 3.5rem;}}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;!-- 타이틀 헤더 --&gt;
&lt;div class=&quot;title-header&quot;&gt;
  &lt;div class=&quot;title-inner&quot;&gt;
    &lt;div class=&quot;title-main&quot;&gt;
      &lt;div class=&quot;title-ko&quot;&gt;  모두의 행사전알림게시판&lt;/div&gt;
      &lt;div class=&quot;title-en&quot;&gt;EVENT NOTICE BOARD &amp;amp; PROMPTER&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;title-side&quot;&gt;
      &lt;div class=&quot;title-pills&quot; id=&quot;cpills&quot;&gt;
        &lt;div class=&quot;cpill on&quot; style=&quot;background:#4a80ff&quot; data-i=&quot;0&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;cpill&quot; style=&quot;background:#ff6a2a&quot; data-i=&quot;1&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;cpill&quot; style=&quot;background:#2aaa5a&quot; data-i=&quot;2&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;cpill&quot; style=&quot;background:#aa30dd&quot; data-i=&quot;3&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;cpill&quot; style=&quot;background:#cc8a00&quot; data-i=&quot;4&quot;&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;hdr-btns&quot;&gt;
        &lt;button class=&quot;hdr-btn&quot; onclick=&quot;saveToUrl()&quot;&gt;  저장&lt;/button&gt;
        &lt;button class=&quot;hdr-btn&quot; onclick=&quot;toggleQr()&quot;&gt;  QR&lt;/button&gt;
        &lt;button class=&quot;hdr-btn&quot; onclick=&quot;installPwa()&quot;&gt;  설치&lt;/button&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- QR --&gt;
&lt;div id=&quot;qrBox&quot;&gt;
  &lt;div style=&quot;font-size:11px;color:var(--txt3);margin-bottom:.4rem&quot;&gt;QR 코드 | ⚠️ 직접 업로드 이미지·PDF는 URL에 저장되지 않습니다.&lt;/div&gt;
  &lt;img id=&quot;qrImg&quot; src=&quot;&quot; alt=&quot;QR&quot; style=&quot;width:148px;height:148px;border-radius:8px;display:block;&quot;&gt;
&lt;/div&gt;

&lt;!-- 공유바 --&gt;
&lt;div class=&quot;share-bar&quot;&gt;
  &lt;span class=&quot;share-label&quot;&gt;  설정저장&amp;amp;공유&lt;/span&gt;
  &lt;div class=&quot;share-url&quot; id=&quot;shareUrlBox&quot; onclick=&quot;copyUrl()&quot;&gt;설정 입력 시 자동 갱신&lt;/div&gt;
  &lt;button class=&quot;share-btn primary&quot; onclick=&quot;saveToUrl()&quot;&gt;복사&lt;/button&gt;
  &lt;button class=&quot;share-btn&quot; onclick=&quot;toggleQr()&quot;&gt;QR&lt;/button&gt;
&lt;/div&gt;

&lt;div class=&quot;app&quot;&gt;

&lt;!-- 알림바 --&gt;
&lt;div class=&quot;notice-bar&quot; id=&quot;noticeBar&quot;&gt;
  &lt;span style=&quot;font-size:18px;flex-shrink:0&quot;&gt; &lt;/span&gt;
  &lt;span&gt;각 버튼의 &lt;strong&gt;✓포함&lt;/strong&gt;을 체크해 전체화면 슬라이드를 선택하세요. &lt;strong&gt;전체화면 보기&lt;/strong&gt;로 시작!&lt;/span&gt;
  &lt;button class=&quot;notice-close&quot; onclick=&quot;this.parentElement.style.display='none'&quot;&gt;닫기&lt;/button&gt;
&lt;/div&gt;

&lt;!-- ══ 현재시각 + 미리보기 ══ --&gt;
&lt;div class=&quot;sec&quot;&gt;
  &lt;div class=&quot;sec-head open&quot; id=&quot;sh-clock&quot; onclick=&quot;toggleSec('clock')&quot;&gt;
    &lt;div class=&quot;sec-head-left&quot;&gt;
      &lt;span class=&quot;sec-icon&quot;&gt; &lt;/span&gt;
      &lt;div&gt;&lt;div class=&quot;sec-title&quot;&gt;현재 시각 &amp;amp; 미리보기&lt;/div&gt;&lt;div class=&quot;sec-desc&quot;&gt;슬라이드 미리보기 + 전체화면&lt;/div&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;sec-head-right&quot;&gt;&lt;span class=&quot;sec-chev&quot; id=&quot;sc-clock&quot; style=&quot;transform:rotate(180deg)&quot;&gt;▼&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sec-body open&quot; id=&quot;sb-clock&quot;&gt;
    &lt;div id=&quot;mainTopInfo&quot; style=&quot;text-align:center;margin-bottom:.4rem;&quot;&gt;
      &lt;span id=&quot;mainDate&quot; style=&quot;font-size:12px;color:var(--txt3)&quot;&gt;&lt;/span&gt;
    &lt;/div&gt;
    &lt;div id=&quot;weatherRow&quot; style=&quot;display:flex;justify-content:center;gap:7px;flex-wrap:wrap;margin-bottom:.5rem;&quot;&gt;&lt;/div&gt;
    &lt;!-- 미리보기 박스 --&gt;
    &lt;div style=&quot;position:relative;&quot;&gt;
      &lt;button class=&quot;csp-arrow left&quot; onclick=&quot;cspMove(-1)&quot;&gt;&amp;lt;&lt;/button&gt;
      &lt;button class=&quot;csp-arrow right&quot; onclick=&quot;cspMove(1)&quot;&gt;&amp;gt;&lt;/button&gt;
      &lt;div class=&quot;csp-box&quot; id=&quot;cspBox&quot;&gt;
        &lt;div id=&quot;cspContent&quot; style=&quot;text-align:center;width:100%;&quot;&gt;&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;!-- 슬라이드 선택 버튼 --&gt;
    &lt;div class=&quot;snav-row&quot; id=&quot;slideNavBar&quot;&gt;&lt;/div&gt;
    &lt;div style=&quot;text-align:center;margin-top:.3rem;&quot;&gt;
      &lt;span style=&quot;font-size:11px;color:var(--txt3)&quot; id=&quot;cspPageNum&quot;&gt;1 / 1&lt;/span&gt;
    &lt;/div&gt;
    &lt;button class=&quot;fs-launch-btn&quot; onclick=&quot;launchFs()&quot;&gt;
      &lt;svg width=&quot;16&quot; height=&quot;16&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.2&quot;&gt;&lt;path d=&quot;M8 3H5a2 2 0 00-2 2v3m18 0V5a2 2 0 00-2-2h-3m0 18h3a2 2 0 002-2v-3M3 16v3a2 2 0 002 2h3&quot;/&gt;&lt;/svg&gt;
      전체화면 보기
    &lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ══ 배너 ══ --&gt;
&lt;div class=&quot;sec&quot;&gt;
  &lt;div class=&quot;sec-head open&quot; id=&quot;sh-banner&quot; onclick=&quot;toggleSec('banner')&quot;&gt;
    &lt;div class=&quot;sec-head-left&quot;&gt;&lt;span class=&quot;sec-icon&quot;&gt; ️&lt;/span&gt;&lt;div&gt;&lt;div class=&quot;sec-title&quot;&gt;배너 / 로고 이미지&lt;/div&gt;&lt;div class=&quot;sec-desc&quot;&gt;전체화면 고정 표시&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;sec-head-right&quot;&gt;&lt;span class=&quot;sec-chev&quot; id=&quot;sc-banner&quot; style=&quot;transform:rotate(180deg)&quot;&gt;▼&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sec-body open&quot; id=&quot;sb-banner&quot;&gt;

    &lt;div class=&quot;brow&quot;&gt;
      &lt;span class=&quot;blabel&quot;&gt;직접 업로드&lt;/span&gt;
      &lt;div style=&quot;flex:1;min-width:140px&quot;&gt;
        &lt;div style=&quot;display:flex;gap:6px;align-items:center;flex-wrap:wrap&quot;&gt;
          &lt;input type=&quot;file&quot; id=&quot;bannerFile&quot; accept=&quot;image/*&quot; onchange=&quot;onBannerFileChange()&quot; style=&quot;font-size:12px;color:var(--txt2);&quot;&gt;
          &lt;button class=&quot;abtn&quot; id=&quot;bannerClear&quot; onclick=&quot;clearBannerFile()&quot; style=&quot;display:none&quot;&gt;  삭제&lt;/button&gt;
        &lt;/div&gt;
        &lt;div class=&quot;binfo&quot;&gt;권장: 로고 512×512 / 배너 1200×300 / 배경 1920×1080&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div style=&quot;display:flex;gap:7px;flex-wrap:wrap&quot;&gt;
      &lt;div class=&quot;brow&quot; style=&quot;flex:1;min-width:130px;margin-bottom:0&quot;&gt;
        &lt;span class=&quot;blabel&quot;&gt;높이&lt;/span&gt;
        &lt;select class=&quot;binput&quot; id=&quot;bannerHeight&quot; style=&quot;max-width:170px;min-width:0&quot; onchange=&quot;autoSave()&quot;&gt;
          &lt;option value=&quot;70px&quot;&gt;소 (QR·로고)&lt;/option&gt;
          &lt;option value=&quot;110px&quot; selected&gt;중 (배너)&lt;/option&gt;
          &lt;option value=&quot;180px&quot;&gt;대 (배너)&lt;/option&gt;
          &lt;option value=&quot;40vh&quot;&gt;반화면&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
      &lt;div class=&quot;brow&quot; style=&quot;flex:1;min-width:130px;margin-bottom:0&quot;&gt;
        &lt;span class=&quot;blabel&quot;&gt;위치&lt;/span&gt;
        &lt;select class=&quot;binput&quot; id=&quot;bannerPos&quot; style=&quot;max-width:180px;min-width:0&quot; onchange=&quot;autoSave()&quot;&gt;
          &lt;option value=&quot;fixed-top&quot; selected&gt;상단 고정 (모든 슬라이드)&lt;/option&gt;
          &lt;option value=&quot;top&quot;&gt;슬라이드 내 위&lt;/option&gt;
          &lt;option value=&quot;bottom&quot;&gt;슬라이드 내 아래&lt;/option&gt;
          &lt;option value=&quot;left&quot;&gt;왼쪽 (세로)&lt;/option&gt;
          &lt;option value=&quot;right&quot;&gt;오른쪽 (세로)&lt;/option&gt;
          &lt;option value=&quot;bg&quot;&gt;배경 반투명&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ══ 자막 ══ --&gt;
&lt;div class=&quot;sec&quot;&gt;
  &lt;div class=&quot;sec-head open&quot; id=&quot;sh-ticker&quot; onclick=&quot;toggleSec('ticker')&quot;&gt;
    &lt;div class=&quot;sec-head-left&quot;&gt;&lt;span class=&quot;sec-icon&quot;&gt; &lt;/span&gt;&lt;div&gt;&lt;div class=&quot;sec-title&quot;&gt;흐르는 자막&lt;/div&gt;&lt;div class=&quot;sec-desc&quot;&gt;뉴스 티커 스타일&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;sec-head-right&quot;&gt;
      &lt;div class=&quot;slide-check active&quot; id=&quot;chk-ticker&quot; onclick=&quot;toggleSlideChk('ticker',event)&quot;&gt;✓ 포함&lt;/div&gt;
      &lt;span class=&quot;sec-chev&quot; id=&quot;sc-ticker&quot; style=&quot;transform:rotate(180deg)&quot;&gt;▼&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sec-body open&quot; id=&quot;sb-ticker&quot;&gt;
    &lt;div class=&quot;brow&quot;&gt;
      &lt;span class=&quot;blabel&quot;&gt;자막 내용&lt;/span&gt;
      &lt;div style=&quot;flex:1;min-width:140px&quot;&gt;
        &lt;input class=&quot;binput&quot; id=&quot;tickerText&quot; placeholder=&quot;환영합니다 / 잠시 후 시작합니다 / 휴대폰 진동 전환&quot; oninput=&quot;autoSave()&quot;&gt;
        &lt;div class=&quot;binfo&quot;&gt;&lt;code style=&quot;background:var(--card2);padding:1px 4px;border-radius:3px;font-family:var(--fm)&quot;&gt;/&lt;/code&gt; 로 구분 → 여러 메시지 순환&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div style=&quot;display:flex;gap:7px;flex-wrap:wrap&quot;&gt;
      &lt;div class=&quot;brow&quot; style=&quot;flex:1;min-width:120px;margin-bottom:0&quot;&gt;&lt;span class=&quot;blabel&quot;&gt;표시&lt;/span&gt;
        &lt;select class=&quot;binput&quot; id=&quot;tickerShow&quot; style=&quot;max-width:130px;min-width:0&quot; onchange=&quot;autoSave()&quot;&gt;
          &lt;option value=&quot;yes&quot; selected&gt;표시&lt;/option&gt;&lt;option value=&quot;no&quot;&gt;숨김&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
      &lt;div class=&quot;brow&quot; style=&quot;flex:1;min-width:120px;margin-bottom:0&quot;&gt;&lt;span class=&quot;blabel&quot;&gt;위치&lt;/span&gt;
        &lt;select class=&quot;binput&quot; id=&quot;tickerPos&quot; style=&quot;max-width:150px;min-width:0&quot; onchange=&quot;autoSave()&quot;&gt;
          &lt;option value=&quot;bottom&quot; selected&gt;하단&lt;/option&gt;
          &lt;option value=&quot;top-under&quot;&gt;상단(메뉴 아래)&lt;/option&gt;
          &lt;option value=&quot;middle&quot;&gt;중간&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div style=&quot;display:flex;gap:7px;flex-wrap:wrap;margin-top:.6rem&quot;&gt;
      &lt;div class=&quot;brow&quot; style=&quot;flex:1;min-width:120px;margin-bottom:0&quot;&gt;&lt;span class=&quot;blabel&quot;&gt;속도&lt;/span&gt;
        &lt;select class=&quot;binput&quot; id=&quot;tickerSpeed&quot; style=&quot;max-width:140px;min-width:0&quot; onchange=&quot;autoSave()&quot;&gt;
          &lt;option value=&quot;55s&quot;&gt;아주 느림&lt;/option&gt;&lt;option value=&quot;38s&quot;&gt;느림&lt;/option&gt;
          &lt;option value=&quot;24s&quot; selected&gt;보통&lt;/option&gt;&lt;option value=&quot;15s&quot;&gt;빠름&lt;/option&gt;&lt;option value=&quot;9s&quot;&gt;아주 빠름&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
      &lt;div class=&quot;brow&quot; style=&quot;flex:1;min-width:120px;margin-bottom:0&quot;&gt;&lt;span class=&quot;blabel&quot;&gt;글자 크기&lt;/span&gt;
        &lt;select class=&quot;binput&quot; id=&quot;tickerSize&quot; style=&quot;max-width:140px;min-width:0&quot; onchange=&quot;autoSave()&quot;&gt;
          &lt;option value=&quot;12px&quot;&gt;아주 작게&lt;/option&gt;&lt;option value=&quot;15px&quot;&gt;작게&lt;/option&gt;
          &lt;option value=&quot;18px&quot; selected&gt;보통&lt;/option&gt;&lt;option value=&quot;23px&quot;&gt;크게&lt;/option&gt;&lt;option value=&quot;30px&quot;&gt;아주 크게&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;brow&quot; style=&quot;margin-top:.6rem&quot;&gt;&lt;span class=&quot;blabel&quot;&gt;배경&lt;/span&gt;
      &lt;select class=&quot;binput&quot; id=&quot;tickerBg&quot; style=&quot;max-width:200px;min-width:0&quot; onchange=&quot;autoSave()&quot;&gt;
        &lt;option value=&quot;transparent&quot;&gt;투명&lt;/option&gt;
        &lt;option value=&quot;rgba(0,0,0,0.6)&quot; selected&gt;반투명 검정&lt;/option&gt;
        &lt;option value=&quot;rgba(13,16,32,0.88)&quot;&gt;진한 다크&lt;/option&gt;
        &lt;option value=&quot;rgba(26,92,255,0.45)&quot;&gt;반투명 블루&lt;/option&gt;
        &lt;option value=&quot;rgba(255,255,255,0.12)&quot;&gt;반투명 흰색&lt;/option&gt;
        &lt;option value=&quot;#0d1020&quot;&gt;불투명 다크&lt;/option&gt;
        &lt;option value=&quot;#1a5cff&quot;&gt;불투명 블루&lt;/option&gt;
      &lt;/select&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ══ 시계 슬라이드 옵션 ══ --&gt;
&lt;div class=&quot;sec&quot;&gt;
  &lt;div class=&quot;sec-head open&quot; id=&quot;sh-clock-slides&quot; onclick=&quot;toggleSec('clock-slides')&quot;&gt;
    &lt;div class=&quot;sec-head-left&quot;&gt;&lt;span class=&quot;sec-icon&quot;&gt;⏱️&lt;/span&gt;&lt;div&gt;&lt;div class=&quot;sec-title&quot;&gt;시계 슬라이드 옵션&lt;/div&gt;&lt;div class=&quot;sec-desc&quot;&gt;시간형식 / 초시계 / 포함 여부&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;sec-head-right&quot;&gt;&lt;span class=&quot;sec-chev&quot; id=&quot;sc-clock-slides&quot; style=&quot;transform:rotate(180deg)&quot;&gt;▼&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sec-body open&quot; id=&quot;sb-clock-slides&quot;&gt;
    &lt;div style=&quot;display:flex;gap:7px;flex-wrap:wrap&quot;&gt;
      &lt;div class=&quot;brow&quot; style=&quot;flex:1;min-width:130px;margin-bottom:0&quot;&gt;&lt;span class=&quot;blabel&quot;&gt;시간 형식&lt;/span&gt;
        &lt;select class=&quot;binput&quot; id=&quot;timeFormat&quot; style=&quot;max-width:170px;min-width:0&quot; onchange=&quot;autoSave()&quot;&gt;
          &lt;option value=&quot;12&quot; selected&gt;12시간 (AM/PM)&lt;/option&gt;&lt;option value=&quot;24&quot;&gt;24시간&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
      &lt;div class=&quot;brow&quot; style=&quot;flex:1;min-width:130px;margin-bottom:0&quot;&gt;&lt;span class=&quot;blabel&quot;&gt;초시계&lt;/span&gt;
        &lt;select class=&quot;binput&quot; id=&quot;showSec&quot; style=&quot;max-width:130px;min-width:0&quot; onchange=&quot;autoSave()&quot;&gt;
          &lt;option value=&quot;yes&quot; selected&gt;표시&lt;/option&gt;&lt;option value=&quot;no&quot;&gt;숨김&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ══ 커스터마이징 ══ --&gt;
&lt;div class=&quot;sec&quot; id=&quot;sec-custom&quot;&gt;
  &lt;div class=&quot;sec-head open&quot; id=&quot;sh-custom&quot; onclick=&quot;toggleSec('custom')&quot;&gt;
    &lt;div class=&quot;sec-head-left&quot;&gt;&lt;span class=&quot;sec-icon&quot;&gt; &lt;/span&gt;&lt;div&gt;&lt;div class=&quot;sec-title&quot;&gt;커스터마이징 화면&lt;/div&gt;&lt;div class=&quot;sec-desc&quot;&gt;상/중/하 3구역 자유 배치&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;sec-head-right&quot;&gt;&lt;span class=&quot;sec-chev&quot; id=&quot;sc-custom&quot; style=&quot;transform:rotate(180deg)&quot;&gt;▼&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sec-body open&quot; id=&quot;sb-custom&quot;&gt;
    &lt;div class=&quot;binfo&quot; style=&quot;margin-bottom:.65rem&quot;&gt;각 구역에 표시할 항목을 선택하세요.&lt;/div&gt;
    &lt;div class=&quot;custom-zones&quot;&gt;
      &lt;div class=&quot;custom-zone&quot;&gt;&lt;div class=&quot;custom-zone-title&quot;&gt;▲ 상단&lt;/div&gt;
        &lt;div class=&quot;custom-zone-opts&quot; id=&quot;cz-top&quot;&gt;
          &lt;div class=&quot;czopt on&quot; data-zone=&quot;top&quot; data-val=&quot;clock&quot; onclick=&quot;toggleCzOpt(this)&quot;&gt;  시계&lt;/div&gt;
          &lt;div class=&quot;czopt&quot; data-zone=&quot;top&quot; data-val=&quot;banner&quot; onclick=&quot;toggleCzOpt(this)&quot;&gt; ️ 배너&lt;/div&gt;
          &lt;div class=&quot;czopt&quot; data-zone=&quot;top&quot; data-val=&quot;ticker&quot; onclick=&quot;toggleCzOpt(this)&quot;&gt;  자막&lt;/div&gt;
          &lt;div class=&quot;czopt&quot; data-zone=&quot;top&quot; data-val=&quot;memo&quot; onclick=&quot;toggleCzOpt(this)&quot;&gt;  메모&lt;/div&gt;
          &lt;div class=&quot;czopt&quot; data-zone=&quot;top&quot; data-val=&quot;none&quot; onclick=&quot;toggleCzOpt(this)&quot;&gt;✕ 없음&lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;custom-zone&quot;&gt;&lt;div class=&quot;custom-zone-title&quot;&gt;● 중간&lt;/div&gt;
        &lt;div class=&quot;custom-zone-opts&quot; id=&quot;cz-mid&quot;&gt;
          &lt;div class=&quot;czopt&quot; data-zone=&quot;mid&quot; data-val=&quot;clock&quot; onclick=&quot;toggleCzOpt(this)&quot;&gt;  시계&lt;/div&gt;
          &lt;div class=&quot;czopt&quot; data-zone=&quot;mid&quot; data-val=&quot;banner&quot; onclick=&quot;toggleCzOpt(this)&quot;&gt; ️ 배너&lt;/div&gt;
          &lt;div class=&quot;czopt on&quot; data-zone=&quot;mid&quot; data-val=&quot;ticker&quot; onclick=&quot;toggleCzOpt(this)&quot;&gt;  자막&lt;/div&gt;
          &lt;div class=&quot;czopt&quot; data-zone=&quot;mid&quot; data-val=&quot;memo&quot; onclick=&quot;toggleCzOpt(this)&quot;&gt;  메모&lt;/div&gt;
          &lt;div class=&quot;czopt&quot; data-zone=&quot;mid&quot; data-val=&quot;none&quot; onclick=&quot;toggleCzOpt(this)&quot;&gt;✕ 없음&lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;custom-zone&quot;&gt;&lt;div class=&quot;custom-zone-title&quot;&gt;▼ 하단&lt;/div&gt;
        &lt;div class=&quot;custom-zone-opts&quot; id=&quot;cz-bot&quot;&gt;
          &lt;div class=&quot;czopt&quot; data-zone=&quot;bot&quot; data-val=&quot;clock&quot; onclick=&quot;toggleCzOpt(this)&quot;&gt;  시계&lt;/div&gt;
          &lt;div class=&quot;czopt&quot; data-zone=&quot;bot&quot; data-val=&quot;banner&quot; onclick=&quot;toggleCzOpt(this)&quot;&gt; ️ 배너&lt;/div&gt;
          &lt;div class=&quot;czopt&quot; data-zone=&quot;bot&quot; data-val=&quot;ticker&quot; onclick=&quot;toggleCzOpt(this)&quot;&gt;  자막&lt;/div&gt;
          &lt;div class=&quot;czopt on&quot; data-zone=&quot;bot&quot; data-val=&quot;memo&quot; onclick=&quot;toggleCzOpt(this)&quot;&gt;  메모&lt;/div&gt;
          &lt;div class=&quot;czopt&quot; data-zone=&quot;bot&quot; data-val=&quot;none&quot; onclick=&quot;toggleCzOpt(this)&quot;&gt;✕ 없음&lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div style=&quot;display:flex;gap:7px;flex-wrap:wrap;margin-top:.65rem&quot;&gt;
      &lt;div class=&quot;brow&quot; style=&quot;flex:1;min-width:120px;margin-bottom:0&quot;&gt;&lt;span class=&quot;blabel&quot;&gt;시계 크기&lt;/span&gt;
        &lt;select class=&quot;binput&quot; id=&quot;customClockSize&quot; style=&quot;max-width:140px;min-width:0&quot; onchange=&quot;autoSave()&quot;&gt;
          &lt;option value=&quot;small&quot;&gt;작게&lt;/option&gt;&lt;option value=&quot;medium&quot; selected&gt;보통&lt;/option&gt;
          &lt;option value=&quot;large&quot;&gt;크게&lt;/option&gt;&lt;option value=&quot;xlarge&quot;&gt;아주 크게&lt;/option&gt;
        &lt;/select&gt;
      &lt;/div&gt;
      &lt;div class=&quot;brow&quot; style=&quot;flex:1;min-width:140px;margin-bottom:0&quot;&gt;&lt;span class=&quot;blabel&quot;&gt;커스텀 메모&lt;/span&gt;
        &lt;input class=&quot;binput&quot; id=&quot;customMemoText&quot; placeholder=&quot;커스텀 화면 메모...&quot; oninput=&quot;autoSave()&quot;&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ══ 공지 멘트 ══ --&gt;
&lt;div class=&quot;sec&quot; id=&quot;sec-ment&quot;&gt;
  &lt;div class=&quot;sec-head open&quot; id=&quot;sh-ment&quot; onclick=&quot;toggleSec('ment')&quot;&gt;
    &lt;div class=&quot;sec-head-left&quot;&gt;&lt;span class=&quot;sec-icon&quot;&gt; &lt;/span&gt;&lt;div&gt;&lt;div class=&quot;sec-title&quot;&gt;공지 멘트 슬라이드&lt;/div&gt;&lt;div class=&quot;sec-desc&quot;&gt;드래그로 순서 변경 가능&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;sec-head-right&quot;&gt;&lt;span class=&quot;sec-chev&quot; id=&quot;sc-ment&quot; style=&quot;transform:rotate(180deg)&quot;&gt;▼&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sec-body open&quot; id=&quot;sb-ment&quot;&gt;
    &lt;div class=&quot;binfo&quot; style=&quot;margin-bottom:.75rem;font-size:12px&quot;&gt;  마지막 슬라이드에서 &amp;gt; 누르면 처음으로 순환. ↕ 핸들로 순서 조정.&lt;/div&gt;
    &lt;div class=&quot;ment-list&quot; id=&quot;mentList&quot;&gt;&lt;/div&gt;
    &lt;button class=&quot;abtn&quot; onclick=&quot;addMent('')&quot;&gt;＋ 멘트 추가&lt;/button&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ══ 타이머 ══ --&gt;
&lt;div class=&quot;sec&quot;&gt;
  &lt;div class=&quot;sec-head open&quot; id=&quot;sh-timer&quot; onclick=&quot;toggleSec('timer')&quot;&gt;
    &lt;div class=&quot;sec-head-left&quot;&gt;&lt;span class=&quot;sec-icon&quot;&gt;⏲️&lt;/span&gt;&lt;div&gt;&lt;div class=&quot;sec-title&quot;&gt;타이머&lt;/div&gt;&lt;div class=&quot;sec-desc&quot;&gt;프리셋 + 드래그 + TTS 알람&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;sec-head-right&quot;&gt;
      &lt;div class=&quot;slide-check active&quot; id=&quot;chk-timer&quot; onclick=&quot;toggleSlideChk('timer',event)&quot;&gt;✓ 포함&lt;/div&gt;
      &lt;span class=&quot;sec-chev&quot; id=&quot;sc-timer&quot; style=&quot;transform:rotate(180deg)&quot;&gt;▼&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sec-body open&quot; id=&quot;sb-timer&quot;&gt;
    &lt;div class=&quot;brow&quot;&gt;&lt;span class=&quot;blabel&quot;&gt;알람 소리&lt;/span&gt;
      &lt;select class=&quot;binput&quot; id=&quot;alarmVoice&quot; style=&quot;max-width:210px;min-width:0&quot; onchange=&quot;autoSave()&quot;&gt;
        &lt;option value=&quot;on&quot; selected&gt;TTS 멘트 + 비프음&lt;/option&gt;
        &lt;option value=&quot;beep&quot;&gt;비프음만&lt;/option&gt;
        &lt;option value=&quot;off&quot;&gt;소리 없음&lt;/option&gt;
      &lt;/select&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ══ 스톱워치 ══ --&gt;
&lt;div class=&quot;sec&quot;&gt;
  &lt;div class=&quot;sec-head open&quot; id=&quot;sh-sw&quot; onclick=&quot;toggleSec('sw')&quot;&gt;
    &lt;div class=&quot;sec-head-left&quot;&gt;&lt;span class=&quot;sec-icon&quot;&gt; &lt;/span&gt;&lt;div&gt;&lt;div class=&quot;sec-title&quot;&gt;스톱워치&lt;/div&gt;&lt;div class=&quot;sec-desc&quot;&gt;랩 기록 우측 표시 + 메모&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;sec-head-right&quot;&gt;
      &lt;div class=&quot;slide-check active&quot; id=&quot;chk-sw&quot; onclick=&quot;toggleSlideChk('sw',event)&quot;&gt;✓ 포함&lt;/div&gt;
      &lt;span class=&quot;sec-chev&quot; id=&quot;sc-sw&quot; style=&quot;transform:rotate(180deg)&quot;&gt;▼&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sec-body&quot; id=&quot;sb-sw&quot;&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;!-- ══ YouTube ══ --&gt;
&lt;div class=&quot;sec&quot;&gt;
  &lt;div class=&quot;sec-head open&quot; id=&quot;sh-yt&quot; onclick=&quot;toggleSec('yt')&quot;&gt;
    &lt;div class=&quot;sec-head-left&quot;&gt;&lt;span class=&quot;sec-icon&quot;&gt;▶️&lt;/span&gt;&lt;div&gt;&lt;div class=&quot;sec-title&quot;&gt;YouTube 배경음악&lt;/div&gt;&lt;div class=&quot;sec-desc&quot;&gt;풀정보 화면 하단에 삽입&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;sec-head-right&quot;&gt;
      &lt;div class=&quot;slide-check active&quot; id=&quot;chk-yt&quot; onclick=&quot;toggleSlideChk('yt',event)&quot;&gt;✓ 재생&lt;/div&gt;
      &lt;span class=&quot;sec-chev&quot; id=&quot;sc-yt&quot; style=&quot;transform:rotate(180deg)&quot;&gt;▼&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sec-body open&quot; id=&quot;sb-yt&quot;&gt;
    &lt;div class=&quot;brow&quot;&gt;&lt;span class=&quot;blabel&quot;&gt;YouTube URL&lt;/span&gt;
      &lt;div style=&quot;flex:1;min-width:140px&quot;&gt;
        &lt;input class=&quot;binput&quot; id=&quot;ytUrl&quot; placeholder=&quot;https://youtube.com/watch?v=...&quot; oninput=&quot;autoSave()&quot;&gt;
        &lt;div class=&quot;binfo&quot;&gt;재생목록 URL 권장. 풀정보 화면 하단에 작게 삽입. &lt;strong&gt;재생&lt;/strong&gt; 토글로 켜고 끌 수 있습니다.&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ══ PDF / 이미지 발표자료 ══ --&gt;
&lt;div class=&quot;sec&quot; id=&quot;sec-pdf&quot;&gt;
  &lt;div class=&quot;sec-head open&quot; id=&quot;sh-pdf&quot; onclick=&quot;toggleSec('pdf')&quot;&gt;
    &lt;div class=&quot;sec-head-left&quot;&gt;&lt;span class=&quot;sec-icon&quot;&gt; &lt;/span&gt;&lt;div&gt;&lt;div class=&quot;sec-title&quot;&gt;발표자료 (PDF / 이미지)&lt;/div&gt;&lt;div class=&quot;sec-desc&quot;&gt;페이지별 슬라이드로 전체화면 표시&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;sec-head-right&quot;&gt;
      &lt;div class=&quot;slide-check&quot; id=&quot;chk-pdf&quot; onclick=&quot;toggleSlideChk('pdf',event)&quot;&gt;✓ 포함&lt;/div&gt;
      &lt;span class=&quot;sec-chev&quot; id=&quot;sc-pdf&quot; style=&quot;transform:rotate(180deg)&quot;&gt;▼&lt;/span&gt;
    &lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sec-body open&quot; id=&quot;sb-pdf&quot;&gt;
    &lt;div class=&quot;brow&quot;&gt;&lt;span class=&quot;blabel&quot;&gt;PDF 파일&lt;/span&gt;
      &lt;div style=&quot;flex:1;min-width:140px&quot;&gt;
        &lt;input type=&quot;file&quot; id=&quot;pdfFile&quot; accept=&quot;application/pdf&quot; onchange=&quot;loadPdf()&quot; style=&quot;font-size:12px;color:var(--txt2);&quot;&gt;
        &lt;div class=&quot;binfo&quot;&gt;PDF 업로드 → 전체화면에서 페이지별 슬라이드 전환&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&quot;brow&quot;&gt;&lt;span class=&quot;blabel&quot;&gt;이미지 파일&lt;/span&gt;
      &lt;div style=&quot;flex:1;min-width:140px&quot;&gt;
        &lt;input type=&quot;file&quot; id=&quot;imgFiles&quot; accept=&quot;image/*&quot; multiple onchange=&quot;loadImgFiles()&quot; style=&quot;font-size:12px;color:var(--txt2);&quot;&gt;
        &lt;div class=&quot;binfo&quot;&gt;JPG/PNG/GIF 등 여러 장 선택 가능. 선택 순서대로 슬라이드로 표시됩니다.&lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div id=&quot;mediaInfo&quot; style=&quot;font-size:12px;color:var(--txt3);margin-top:.4rem;&quot;&gt;&lt;/div&gt;
    &lt;div style=&quot;margin-top:.65rem;padding:.65rem .9rem;background:rgba(255,140,0,.08);border:1px solid rgba(255,140,0,.2);border-radius:9px;font-size:11px;color:#b06000;&quot;&gt;
      ⚠️ &lt;strong&gt;공유 시 주의&lt;/strong&gt;: PDF·이미지 파일은 설정 URL에 저장되지 않습니다. 다음 접속 시 다시 업로드가 필요해요. 중요한 파일은 구글 드라이브 등 외부 링크로 대체하는 것을 권장합니다.
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;!-- ══ 사용설명서 ══ --&gt;
&lt;div class=&quot;sec&quot;&gt;
  &lt;div class=&quot;sec-head&quot; id=&quot;sh-manual&quot; onclick=&quot;toggleSec('manual')&quot;&gt;
    &lt;div class=&quot;sec-head-left&quot;&gt;&lt;span class=&quot;sec-icon&quot;&gt; &lt;/span&gt;&lt;div&gt;&lt;div class=&quot;sec-title&quot;&gt;사용설명서&lt;/div&gt;&lt;div class=&quot;sec-desc&quot;&gt;클릭하여 펼치기&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
    &lt;div class=&quot;sec-head-right&quot;&gt;&lt;span class=&quot;sec-chev&quot; id=&quot;sc-manual&quot;&gt;▼&lt;/span&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class=&quot;sec-body&quot; id=&quot;sb-manual&quot;&gt;
    &lt;div style=&quot;display:flex;flex-direction:column;gap:.8rem;font-size:12px;color:var(--txt2);line-height:1.75&quot;&gt;
      &lt;div&gt;&lt;b style=&quot;color:var(--acc)&quot;&gt;⚡ 빠른 시작&lt;/b&gt;
        &lt;div style=&quot;background:var(--card2);border-radius:9px;padding:.65rem .9rem;margin-top:.3rem&quot;&gt;
          1. 각 슬라이드 버튼 아래 &lt;b&gt;✓포함&lt;/b&gt; 클릭 → 전체화면에 포함할 슬라이드 선택&lt;br&gt;
          2. &amp;lt; &amp;gt; 화살표로 미리보기 확인&lt;br&gt;
          3. &lt;b&gt;전체화면 보기&lt;/b&gt; → ← → 키 또는 화살표로 슬라이드 전환&lt;br&gt;
          4. 마지막 &amp;gt; → 처음 / 첫번째 &amp;lt; → 마지막으로 순환
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div&gt;&lt;b style=&quot;color:var(--acc)&quot;&gt; ️ 전체화면 최상위&lt;/b&gt;&lt;br&gt;z-index 최대값 + 열릴 때 티스토리 스킨 헤더를 자동으로 뒤로 보냅니다.&lt;br&gt;그래도 가려진다면 스킨 CSS에: &lt;code style=&quot;background:rgba(0,0,0,.07);padding:1px 5px;border-radius:4px;font-family:var(--fm)&quot;&gt;#header, nav { z-index: 1 !important; }&lt;/code&gt;&lt;/div&gt;
      &lt;div&gt;&lt;b style=&quot;color:var(--acc)&quot;&gt; ️ 구글드라이브 이미지&lt;/b&gt;&lt;br&gt;&lt;code style=&quot;background:rgba(0,0,0,.07);padding:1px 5px;border-radius:4px;font-family:var(--fm)&quot;&gt;https://drive.google.com/uc?export=view&amp;id=파일ID&lt;/code&gt;&lt;/div&gt;
      &lt;div&gt;&lt;b style=&quot;color:var(--acc)&quot;&gt;⌨️ 단축키&lt;/b&gt;: ← → 슬라이드 | ESC 닫기 | 화면 상단 마우스 → 메뉴 표시&lt;/div&gt;
      &lt;div&gt;&lt;b style=&quot;color:var(--acc)&quot;&gt;  PWA 설치&lt;/b&gt;: 상단   설치 버튼 → 바탕화면 앱처럼 설치 (브라우저 필요)&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;div class=&quot;abtn-row&quot; style=&quot;margin-bottom:1rem&quot;&gt;
  &lt;button class=&quot;abtn primary&quot; onclick=&quot;launchFs()&quot; style=&quot;font-size:14px;padding:10px 20px&quot;&gt;▶ 전체화면 보기&lt;/button&gt;
  &lt;button class=&quot;abtn&quot; onclick=&quot;saveToUrl()&quot; style=&quot;font-size:14px;padding:10px 16px&quot;&gt;  설정 URL 저장&lt;/button&gt;
  &lt;button class=&quot;abtn&quot; onclick=&quot;toggleQr()&quot; style=&quot;font-size:14px;padding:10px 13px&quot;&gt;  QR&lt;/button&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;!-- .app --&gt;

&lt;!-- ══════════════════════
     전체화면 팝업
══════════════════════ --&gt;
&lt;div id=&quot;fsOv&quot;&gt;
  &lt;div id=&quot;fsBgLayer&quot;&gt;&lt;/div&gt;
  &lt;!-- 툴바 래퍼 --&gt;
  &lt;div class=&quot;fstb-wrap&quot; id=&quot;fsTbWrap&quot;&gt;
    &lt;div class=&quot;fstb&quot; id=&quot;fstb&quot;&gt;
      &lt;span style=&quot;font-size:11px;color:rgba(255,255,255,.9);flex-shrink:0;font-weight:500&quot; id=&quot;fsTbTitle&quot;&gt;풀 정보&lt;/span&gt;
      &lt;div class=&quot;ftsep&quot;&gt;&lt;/div&gt;
      &lt;span class=&quot;flabel&quot;&gt;글자&lt;/span&gt;
      &lt;div style=&quot;display:inline-flex;gap:3px;align-items:center;flex-wrap:nowrap;&quot; id=&quot;fTextPills&quot;&gt;
        &lt;div class=&quot;fpill on&quot; style=&quot;background:#ffffff&quot; data-col=&quot;#ffffff&quot; title=&quot;흰색&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#d0e8ff&quot; data-col=&quot;#d0e8ff&quot; title=&quot;하늘&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#ffe080&quot; data-col=&quot;#ffe080&quot; title=&quot;금빛&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#80ffb8&quot; data-col=&quot;#80ffb8&quot; title=&quot;민트&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#ffb0c8&quot; data-col=&quot;#ffb0c8&quot; title=&quot;핑크&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#ff9060&quot; data-col=&quot;#ff9060&quot; title=&quot;오렌지&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#c8a0ff&quot; data-col=&quot;#c8a0ff&quot; title=&quot;라벤더&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#222222&quot; data-col=&quot;#222222&quot; title=&quot;검정&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#1a2a60&quot; data-col=&quot;#1a2a60&quot; title=&quot;네이비&quot;&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;ftsep&quot;&gt;&lt;/div&gt;
      &lt;span class=&quot;flabel&quot;&gt;크기&lt;/span&gt;
      &lt;select class=&quot;fsel&quot; id=&quot;fSizeSelect&quot;&gt;
        &lt;option value=&quot;60px&quot;&gt;소&lt;/option&gt;
        &lt;option value=&quot;90px&quot;&gt;중소&lt;/option&gt;
        &lt;option value=&quot;130px&quot;&gt;중&lt;/option&gt;
        &lt;option value=&quot;170px&quot; selected&gt;대&lt;/option&gt;
        &lt;option value=&quot;210px&quot;&gt;특대&lt;/option&gt;
        &lt;option value=&quot;250px&quot;&gt;초대&lt;/option&gt;
      &lt;/select&gt;
      &lt;div class=&quot;ftsep&quot;&gt;&lt;/div&gt;
      &lt;span class=&quot;flabel&quot;&gt;배경&lt;/span&gt;
      &lt;div style=&quot;display:inline-flex;gap:4px;align-items:center;flex-wrap:nowrap;&quot; id=&quot;fBgPills&quot;&gt;
        &lt;div class=&quot;fpill on&quot; style=&quot;background:#0d1020&quot; data-bg=&quot;#0d1020&quot; title=&quot;다크 (기본)&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#181820&quot; data-bg=&quot;#181820&quot; title=&quot;차콜&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#1a0a2e&quot; data-bg=&quot;#1a0a2e&quot; title=&quot;딥퍼플&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#0a1a0a&quot; data-bg=&quot;#0a1a0a&quot; title=&quot;포레스트&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#1a0808&quot; data-bg=&quot;#1a0808&quot; title=&quot;딥레드&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#0a1628&quot; data-bg=&quot;#0a1628&quot; title=&quot;딥네이비&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#f5f4ef&quot; data-bg=&quot;#f5f4ef&quot; title=&quot;크림&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#ffffff&quot; data-bg=&quot;#ffffff&quot; title=&quot;흰색&quot;&gt;&lt;/div&gt;
        &lt;div class=&quot;fpill&quot; style=&quot;background:#f0f6ff&quot; data-bg=&quot;#f0f6ff&quot; title=&quot;라이트블루&quot;&gt;&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;ftsep&quot;&gt;&lt;/div&gt;
      &lt;button class=&quot;ftog&quot; id=&quot;fWakeLock&quot;&gt;항상켜짐&lt;/button&gt;
      &lt;button class=&quot;ftog on&quot; id=&quot;fTbToggle&quot; onclick=&quot;toggleFsTb()&quot;&gt;메뉴숨김&lt;/button&gt;
      &lt;button class=&quot;fclose&quot; id=&quot;fsCloseBtn&quot;&gt;
        &lt;svg width=&quot;13&quot; height=&quot;13&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;none&quot; stroke=&quot;currentColor&quot; stroke-width=&quot;2.5&quot;&gt;&lt;path d=&quot;M18 6L6 18M6 6l12 12&quot;/&gt;&lt;/svg&gt;
      &lt;/button&gt;
    &lt;/div&gt;
    &lt;div class=&quot;fstb-hint&quot; id=&quot;fsTbHint&quot;&gt;▲ 상단으로 마우스를 올리면 메뉴가 나타납니다&lt;/div&gt;
    &lt;div class=&quot;fstb-trigger&quot; id=&quot;fsTbTrigger&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;!-- 배너 고정 (툴바 아래) --&gt;
  &lt;div id=&quot;fsBannerFixed&quot; style=&quot;flex-shrink:0;text-align:center;position:relative;z-index:2;&quot;&gt;&lt;/div&gt;

  &lt;!-- 슬라이드 --&gt;
  &lt;div class=&quot;fs-slide-wrap&quot;&gt;
    &lt;button class=&quot;fs-arrow left&quot; id=&quot;arrowL&quot; onclick=&quot;slideMove(-1)&quot;&gt;&amp;lt;&lt;/button&gt;
    &lt;button class=&quot;fs-arrow right&quot; id=&quot;arrowR&quot; onclick=&quot;slideMove(1)&quot;&gt;&amp;gt;&lt;/button&gt;
    &lt;div class=&quot;fs-dots&quot; id=&quot;fsDots&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;fs-pgnum&quot; id=&quot;fsPgNum&quot;&gt;&lt;/div&gt;
    &lt;div style=&quot;width:100%;height:100%;overflow:hidden;&quot;&gt;
      &lt;div class=&quot;fs-slides&quot; id=&quot;fsSlides&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- 워터마크 --&gt;
  &lt;div style=&quot;position:absolute;top:10px;right:52px;z-index:8;font-size:16px;color:rgba(255,255,255,.28);letter-spacing:.04em;pointer-events:none;font-family:var(--fm);font-weight:400&quot;&gt;0-1.kr/16&lt;/div&gt;
  &lt;div style=&quot;position:absolute;bottom:10px;right:14px;z-index:8;font-size:14px;color:rgba(255,255,255,.25);letter-spacing:.06em;pointer-events:none;font-family:var(--ff);font-weight:400&quot;&gt;스타트업EX&lt;/div&gt;

  &lt;!-- 자막 --&gt;
  &lt;div class=&quot;fs-ticker-area&quot; id=&quot;fsTickerArea&quot; style=&quot;display:none&quot;&gt;
    &lt;div class=&quot;fs-ticker-bar&quot; id=&quot;fsTickerBar&quot;&gt;
      &lt;div class=&quot;fs-ticker&quot; id=&quot;fsTicker&quot;&gt;&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.min.js&quot;&gt;&lt;/script&gt;
&lt;script&gt;
if(typeof pdfjsLib!=='undefined')pdfjsLib.GlobalWorkerOptions.workerSrc='https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.worker.min.js';

/* ── 유틸 ── */
var P=function(n){return String(Math.max(0,Math.floor(n))).padStart(2,'0');};
var DAY=['일','월','화','수','목','금','토'];
function el(tag,cls,txt){var e=document.createElement(tag);if(cls)e.className=cls;if(txt!==undefined)e.textContent=txt;return e;}
function scalePx(sz,d){return Math.max(32,parseInt(sz||'170')+d)+'px';}
function getSize(){return document.getElementById('fSizeSelect').value||'170px';}

/* ── 테마 ── */
var TH=[
  {acc:'#1a5cff',bg:'#f0f2fa',card:'#fff',c2:'#e6e9f5',txt:'#080b1e',t2:'#2a2e4a',t3:'#6a6e90'},
  {acc:'#e04a0a',bg:'#fdf0ea',card:'#fff',c2:'#fde0cc',txt:'#1a0800',t2:'#4a1800',t3:'#9a5030'},
  {acc:'#1a8a3c',bg:'#edf7f0',card:'#fff',c2:'#d8f0e2',txt:'#041008',t2:'#0e3018',t3:'#4a7054'},
  {acc:'#8010b0',bg:'#f5ecfa',card:'#fff',c2:'#ead8f5',txt:'#120520',t2:'#360c50',t3:'#7a3a90'},
  {acc:'#9a5a00',bg:'#faf4e8',card:'#fff',c2:'#f5e8c8',txt:'#180e00',t2:'#3a2200',t3:'#886030'}
];
function applyTh(t){
  var r=document.documentElement;
  var keys=['--acc','--bg','--card','--card2','--txt','--txt2','--txt3'];
  var vals=[t.acc,t.bg,t.card,t.c2,t.txt,t.t2,t.t3];
  keys.forEach(function(k,i){r.style.setProperty(k,vals[i]);});
}
document.querySelectorAll('#cpills .cpill').forEach(function(p){
  p.addEventListener('click',function(){
    document.querySelectorAll('#cpills .cpill').forEach(function(q){q.classList.remove('on');});
    p.classList.add('on');applyTh(TH[+p.dataset.i]);
  });
});

/* ── 섹션 접기/펼치기 ── */
var secOpen={clock:true,banner:true,ticker:true,'clock-slides':true,custom:true,ment:true,timer:true,sw:false,yt:true,pdf:true,manual:false};
function toggleSec(id){
  secOpen[id]=!secOpen[id];
  var body=document.getElementById('sb-'+id);var chev=document.getElementById('sc-'+id);var head=document.getElementById('sh-'+id);
  if(body){body.classList.toggle('open',secOpen[id]);if(!secOpen[id])body.style.display='none';else body.style.display='';}
  if(chev)chev.style.transform=secOpen[id]?'rotate(180deg)':'';
  if(head)head.classList.toggle('open',secOpen[id]);
}
Object.keys(secOpen).forEach(function(id){
  var body=document.getElementById('sb-'+id);var chev=document.getElementById('sc-'+id);var head=document.getElementById('sh-'+id);
  if(body){body.classList.toggle('open',secOpen[id]);if(!secOpen[id])body.style.display='none';}
  if(chev)chev.style.transform=secOpen[id]?'rotate(180deg)':'';
  if(head)head.classList.toggle('open',secOpen[id]);
});

/* ── 슬라이드 포함 ── */
var slideIncludes={ticker:true,'slide-full':true,'slide-time':true,'slide-date':true,'slide-custom':false,
  'ment-0':false,'ment-1':false,'ment-2':false,'ment-3':false,'ment-4':false,
  timer:true,sw:true,yt:true,pdf:false};
function toggleSlideChk(key,e){
  if(e)e.stopPropagation();
  slideIncludes[key]=!slideIncludes[key];
  var chkEl=document.getElementById('chk-'+key);
  if(chkEl)chkEl.classList.toggle('active',slideIncludes[key]);
  /* 섹션 이동 */
  if(slideIncludes[key]){
    if(key==='slide-custom'){document.getElementById('sec-custom').scrollIntoView({behavior:'smooth',block:'start'});}
    if(key==='pdf'){document.getElementById('sec-pdf').scrollIntoView({behavior:'smooth',block:'start'});}
  }
  autoSave();buildSlideNavBar();
}

/* ── 커스터마이징 옵션 ── */
var czState={top:'clock',mid:'ticker',bot:'memo'};
function toggleCzOpt(btn){
  var zone=btn.dataset.zone;var val=btn.dataset.val;
  document.querySelectorAll('.czopt[data-zone=&quot;'+zone+'&quot;]').forEach(function(b){b.classList.remove('on');});
  btn.classList.add('on');czState[zone]=val;autoSave();
}

/* ── 멘트 (드래그 순서변경) ── */
var mentData=[
  '  잠시 후 행사가 시작됩니다\n편안히 앉아서 기다려 주세요.',
  '☕ 잠시 휴식 시간입니다\n10분 후 다시 시작합니다.',
  '  지금부터 단체 사진 촬영을 하겠습니다\n자리에서 잠시 기다려 주세요.',
  '  오늘 행사가 모두 종료되었습니다\n참여해 주셔서 감사합니다!',
  '  안내 말씀 드립니다\n  휴대폰은 진동 또는 무음으로 전환해 주세요.'
];
var dragSrcIdx=null;

function renderMents(){
  var list=document.getElementById('mentList');list.innerHTML='';
  mentData.forEach(function(txt,i){
    var row=el('div','ment-row');row.draggable=true;row.dataset.idx=i;
    var handle=el('span','ment-handle','↕');
    var num=el('span','ment-num',String(i+1));
    var inp=el('input');inp.className='ment-inp';
    inp.value=txt.replace(/\n/g,' / ');
    inp.placeholder='공지 멘트 '+(i+1)+' (줄바꿈: / 로 구분)';
    inp.addEventListener('input',function(){mentData[i]=this.value.replace(/ \/ /g,'\n');autoSave();buildSlideNavBar();});
    var del=el('button','ment-del','✕');
    del.addEventListener('click',function(){
      mentData.splice(i,1);
      /* 삭제 후 ment-N 키 재정렬 */
      var newInc={};
      Object.keys(slideIncludes).forEach(function(k){if(k.indexOf('ment-')!==0)newInc[k]=slideIncludes[k];});
      mentData.forEach(function(_,ni){newInc['ment-'+ni]=slideIncludes['ment-'+ni]||false;});
      slideIncludes=newInc;
      renderMents();autoSave();buildSlideNavBar();
    });
    /* 드래그 이벤트 */
    row.addEventListener('dragstart',function(){dragSrcIdx=i;row.classList.add('dragging');});
    row.addEventListener('dragend',function(){row.classList.remove('dragging');dragSrcIdx=null;});
    row.addEventListener('dragover',function(e){e.preventDefault();});
    row.addEventListener('drop',function(){
      if(dragSrcIdx===null||dragSrcIdx===i)return;
      var moved=mentData.splice(dragSrcIdx,1)[0];
      mentData.splice(i,0,moved);
      renderMents();autoSave();buildSlideNavBar();
    });
    row.appendChild(handle);row.appendChild(num);row.appendChild(inp);row.appendChild(del);
    list.appendChild(row);
  });
  try{buildSlideNavBar();}catch(e){}
}
function addMent(txt){
  var i=(mentData||[]).length;
  mentData.push(txt||'');
  slideIncludes['ment-'+i]=false;
  renderMents();autoSave();
}
renderMents();

/* ── 배너 파일 ── */
var bannerDataUrl='';
function onBannerFileChange(){document.getElementById('bannerClear').style.display='block';autoSave();}
function clearBannerFile(){document.getElementById('bannerFile').value='';bannerDataUrl='';document.getElementById('bannerClear').style.display='none';autoSave();}

/* ── PDF / 이미지 ── */
var pdfDoc=null,pdfTotalPages=0;
var mediaImages=[];/* 이미지 배열 */
function loadPdf(){
  var file=document.getElementById('pdfFile').files[0];if(!file)return;
  if(typeof pdfjsLib==='undefined'){document.getElementById('mediaInfo').textContent='PDF.js 로드 중...';return;}
  var reader=new FileReader();
  reader.onload=function(e){
    pdfjsLib.getDocument({data:e.target.result}).promise.then(function(doc){
      pdfDoc=doc;pdfTotalPages=doc.numPages;mediaImages=[];
      document.getElementById('mediaInfo').textContent='✅ PDF: '+file.name+' ('+pdfTotalPages+'페이지)';
      if(!slideIncludes.pdf){slideIncludes.pdf=true;var c=document.getElementById('chk-pdf');if(c)c.classList.add('active');}
      autoSave();buildSlideNavBar();
    }).catch(function(){document.getElementById('mediaInfo').textContent='❌ PDF 로드 실패';});
  };reader.readAsArrayBuffer(file);
}
function loadImgFiles(){
  var files=document.getElementById('imgFiles').files;if(!files||!files.length)return;
  mediaImages=[];pdfDoc=null;pdfTotalPages=0;
  var loaded=0;
  Array.from(files).forEach(function(f,i){
    var r=new FileReader();
    r.onload=function(e){mediaImages[i]=e.target.result;loaded++;
      if(loaded===files.length){
        document.getElementById('mediaInfo').textContent='✅ 이미지 '+files.length+'장 로드 완료';
        if(!slideIncludes.pdf){slideIncludes.pdf=true;var c=document.getElementById('chk-pdf');if(c)c.classList.add('active');}
        autoSave();buildSlideNavBar();
      }
    };r.readAsDataURL(f);
  });
}

/* ── URL 파라미터 ── */
var saveTimer=null;
function autoSave(){clearTimeout(saveTimer);saveTimer=setTimeout(buildUrl,300);}
function buildUrl(){
  var p=new URLSearchParams();
  var tk=document.getElementById('tickerText').value.trim();if(tk)p.set('tk',tk);
  var yt=document.getElementById('ytUrl').value.trim();if(yt)p.set('yt',yt);
  p.set('bh',document.getElementById('bannerHeight').value);
  p.set('bp',document.getElementById('bannerPos').value);
  p.set('ts',document.getElementById('tickerSpeed').value);
  p.set('tsz',document.getElementById('tickerSize').value);
  p.set('tbg',encodeURIComponent(document.getElementById('tickerBg').value));
  p.set('tpos',document.getElementById('tickerPos').value);
  p.set('tshow',document.getElementById('tickerShow').value);
  p.set('av',document.getElementById('alarmVoice').value);
  p.set('tf',document.getElementById('timeFormat').value);
  p.set('ss',document.getElementById('showSec').value);
  var ne=mentData.filter(function(m){return m.trim();});if(ne.length)p.set('mt',ne.join('||'));
  /* ment-N 개별 키 저장 */
  mentData.forEach(function(_,i){if(slideIncludes['ment-'+i]===undefined)slideIncludes['ment-'+i]=false;});
  var inc=Object.keys(slideIncludes).filter(function(k){return slideIncludes[k];}).join(',');p.set('inc',inc);
  p.set('cz',JSON.stringify(czState));
  var cm=document.getElementById('customMemoText').value.trim();if(cm)p.set('cmt',cm);
  var url=location.href.split('?')[0]+'?'+p.toString();
  var box=document.getElementById('shareUrlBox');if(box)box.textContent=url;
  return url;
}
function saveToUrl(){
  var url=buildUrl();
  if(navigator.clipboard)navigator.clipboard.writeText(url).then(function(){alert('✅ URL 복사 완료!\n\n⚠️ 직접 업로드 이미지·PDF는 URL에 저장되지 않습니다.');}).catch(function(){prompt('URL:',url);});
  else prompt('URL:',url);
}
function copyUrl(){var url=buildUrl();if(navigator.clipboard)navigator.clipboard.writeText(url);}
function toggleQr(){
  var box=document.getElementById('qrBox');box.style.display=box.style.display==='block'?'none':'block';
  if(box.style.display==='block'){var url=buildUrl();document.getElementById('qrImg').src='https://api.qrserver.com/v1/create-qr-code/?size=148x148&amp;data='+encodeURIComponent(url);}
}
function loadFromUrl(){
  var p=new URLSearchParams(location.search);
  if(p.get('tk'))document.getElementById('tickerText').value=p.get('tk');
  if(p.get('yt'))document.getElementById('ytUrl').value=p.get('yt');
  if(p.get('bh'))document.getElementById('bannerHeight').value=p.get('bh');
  if(p.get('bp'))document.getElementById('bannerPos').value=p.get('bp');
  if(p.get('ts'))document.getElementById('tickerSpeed').value=p.get('ts');
  if(p.get('tsz'))document.getElementById('tickerSize').value=p.get('tsz');
  if(p.get('tbg'))document.getElementById('tickerBg').value=decodeURIComponent(p.get('tbg'));
  if(p.get('tpos'))document.getElementById('tickerPos').value=p.get('tpos');
  if(p.get('tshow'))document.getElementById('tickerShow').value=p.get('tshow');
  if(p.get('av'))document.getElementById('alarmVoice').value=p.get('av');
  if(p.get('tf'))document.getElementById('timeFormat').value=p.get('tf');
  if(p.get('ss'))document.getElementById('showSec').value=p.get('ss');
  if(p.get('mt')){mentData=p.get('mt').split('||').filter(Boolean);renderMents();}
  if(p.get('inc')){
    var inc=p.get('inc').split(',');
    Object.keys(slideIncludes).forEach(function(k){slideIncludes[k]=inc.indexOf(k)&gt;=0;});
    /* ment-N 키 복원 */
    inc.forEach(function(k){if(k.indexOf('ment-')===0)slideIncludes[k]=true;});
  }
  if(p.get('cz')){try{var cz=JSON.parse(p.get('cz'));Object.assign(czState,cz);Object.keys(cz).forEach(function(zone){document.querySelectorAll('.czopt[data-zone=&quot;'+zone+'&quot;]').forEach(function(b){b.classList.toggle('on',b.dataset.val===cz[zone]);});});}catch(e){}}
  if(p.get('cmt'))document.getElementById('customMemoText').value=p.get('cmt');
  buildUrl();
}
loadFromUrl();

/* ── PWA ── */
var deferredInstall=null;
window.addEventListener('beforeinstallprompt',function(e){e.preventDefault();deferredInstall=e;});
function installPwa(){if(deferredInstall)deferredInstall.prompt();else alert('Chrome → 주소창 우측 설치 아이콘 또는 메뉴 → 앱 설치');}
(function(){
  var m={name:'모두의 행사전알림게시판',short_name:'행사알림',start_url:location.href.split('?')[0],display:'standalone',background_color:'#0d1020',theme_color:'#1a5cff'};
  var blob=new Blob([JSON.stringify(m)],{type:'application/json'});
  document.getElementById('pwaManifest').href=URL.createObjectURL(blob);
})();

/* ── 팝업 상태 ── */
var fsCol='#ffffff',fsBgColor='#0d1020',fsSize='170px';
var wlSentinel=null,fsIvs=[],slideIdx=0,slideCount=0;
var tbHidden=false;
var cspIdx=0,cspCount=0;
var slideLabels=[];
var timerState={total:25*60,rem:25*60,running:false,iv:null};
var swState={running:false,elapsed:0,start:0,laps:[]};
var audioCtx=null;
var weatherCache=null;

function clearFsIvs(){for(var i=0;i&lt;fsIvs.length;i++){clearInterval(fsIvs[i]);clearTimeout(fsIvs[i]);}fsIvs=[];}

/* 툴바 자동숨김 */
function toggleFsTb(){
  tbHidden=!tbHidden;var tb=document.getElementById('fstb');var btn=document.getElementById('fTbToggle');
  tb.classList.toggle('hidden',tbHidden);if(btn)btn.textContent=tbHidden?'메뉴보기':'메뉴숨김';
}
document.getElementById('fsTbTrigger').addEventListener('mouseenter',function(){if(tbHidden)document.getElementById('fstb').classList.remove('hidden');});
document.getElementById('fsTbWrap').addEventListener('mouseleave',function(){if(tbHidden)document.getElementById('fstb').classList.add('hidden');});

/* 툴바 피커 */
document.querySelectorAll('#fTextPills .fpill').forEach(function(p){
  p.addEventListener('click',function(){
    document.querySelectorAll('#fTextPills .fpill').forEach(function(q){q.classList.remove('on');});
    p.classList.add('on');fsCol=p.dataset.col;
    document.querySelectorAll('.fs-time,.fs-dateline,.fs-lbl,.fs-pill,.fs-extra,.fs-ment-text,.fs-ment-clock,.fs-weather').forEach(function(e){e.style.color=fsCol;});
    document.querySelectorAll('.fs-ticker span').forEach(function(e){e.style.color=fsCol;});
    var td=document.getElementById('fs-tdisp');if(td)td.style.color=fsCol;
    var sd=document.getElementById('fs-swdisp');if(sd)sd.style.color=fsCol;
    var cb=document.getElementById('cspBox');if(cb)cb.style.color=fsCol;
    renderCspContent();
  });
});
document.querySelectorAll('#fBgPills .fpill').forEach(function(p){
  p.addEventListener('click',function(){
    document.querySelectorAll('#fBgPills .fpill').forEach(function(q){q.classList.remove('on');});
    p.classList.add('on');fsBgColor=p.dataset.bg;
    document.getElementById('fsOv').style.background=fsBgColor;
    var cb=document.getElementById('cspBox');if(cb)cb.style.background=fsBgColor;
  });
});
document.getElementById('fSizeSelect').addEventListener('change',function(){
  fsSize=this.value;
  document.querySelectorAll('.fs-time[data-sizebase]').forEach(function(e){
    e.style.fontSize=scalePx(fsSize,parseInt(e.dataset.sizebase||'0'));
  });
  var td=document.getElementById('fs-tdisp');if(td)td.style.fontSize=fsSize;
  var sd=document.getElementById('fs-swdisp');if(sd)sd.style.fontSize=fsSize;
});
document.getElementById('fWakeLock').addEventListener('click',function(){
  if(wlSentinel){wlSentinel.release().catch(function(){});wlSentinel=null;this.classList.remove('on');this.textContent='항상켜짐';}
  else if('wakeLock' in navigator){
    var self=this;
    navigator.wakeLock.request('screen').then(function(s){wlSentinel=s;self.classList.add('on');self.textContent='항상켜짐ON';}).catch(function(){alert('HTTPS 필요');});
  }else alert('미지원');
});
document.getElementById('fsCloseBtn').addEventListener('click',closeFs);
document.addEventListener('keydown',function(e){
  if(!document.getElementById('fsOv').classList.contains('show'))return;
  if(e.key==='Escape')closeFs();
  else if(e.key==='ArrowRight'||e.key==='ArrowDown'){e.preventDefault();slideMove(1);}
  else if(e.key==='ArrowLeft'||e.key==='ArrowUp'){e.preventDefault();slideMove(-1);}
});

/* ── 이미지 URL ── */
function getBannerUrl(cb){
  var f=document.getElementById('bannerFile');
  if(f.files&amp;&amp;f.files[0]){var r=new FileReader();r.onload=function(e){cb(e.target.result);};r.readAsDataURL(f.files[0]);}
  else cb('');
}

/* ── 열기 ── */
function launchFs(){getBannerUrl(function(img){bannerDataUrl=img;openFs();});}
function openFs(){
  clearFsIvs();
  /* 티스토리 스킨 뒤로 */
  document.querySelectorAll('header,#header,.header,nav,.nav,.gnb,#gnb,.site-header,#site-header,[class*=&quot;header&quot;],[id*=&quot;header&quot;],[class*=&quot;gnb&quot;],[class*=&quot;nav-bar&quot;]').forEach(function(e){
    if(!document.getElementById('fsOv').contains(e)){e.dataset.origZ=e.style.zIndex||'';e.style.zIndex='0';}
  });
  var ov=document.getElementById('fsOv');ov.classList.add('show');ov.style.background=fsBgColor;
  document.body.style.overflow='hidden';
  document.documentElement.style.overflow='hidden';
  var bpos=document.getElementById('bannerPos').value;
  /* 배경 레이어 */
  var bgL=document.getElementById('fsBgLayer');
  if(bannerDataUrl&amp;&amp;bpos==='bg'){bgL.style.backgroundImage='url('+bannerDataUrl+')';bgL.style.display='block';}else bgL.style.display='none';
  /* 상단 고정 배너 */
  var bfixed=document.getElementById('fsBannerFixed');
  if(bannerDataUrl&amp;&amp;bpos==='fixed-top'){
    bfixed.innerHTML='&lt;img src=&quot;'+bannerDataUrl+'&quot; style=&quot;max-height:'+document.getElementById('bannerHeight').value+';max-width:100%;object-fit:contain;border-radius:7px;&quot; alt=&quot;배너&quot;&gt;';
    bfixed.style.display='block';
  }else bfixed.style.display='none';
  buildSlides();buildTicker();
  slideIdx=0;updateSlide();
}
function closeFs(){
  clearFsIvs();
  document.querySelectorAll('[data-orig-z]').forEach(function(e){e.style.zIndex=e.dataset.origZ;delete e.dataset.origZ;});
  document.getElementById('fsOv').classList.remove('show');
  document.body.style.overflow='';
  document.documentElement.style.overflow='';
}

/* ── 슬라이드 목록 (항상 전체 표시) ── */
function getSlideList(){
  var list=[];
  /* 풀정보 항상 포함 고정 */
  list.push({key:'slide-full',label:'  풀정보',always:true});
  list.push({key:'slide-time',label:'  시간'});
  list.push({key:'slide-date',label:'  날짜'});
  list.push({key:'slide-custom',label:'  커스텀'});
  /* 공지: 멘트 개수만큼 항상 표시 */
  (mentData||[]).filter(function(m){return m&amp;&amp;m.trim();}).forEach(function(m,i){
    list.push({key:'ment-'+i,label:'  공지'+(i+1),mentIdx:i});
  });
  /* 공지가 하나도 없으면 빈 공지1 버튼 표시 */
  if(!(mentData||[]).filter(function(m){return m&amp;&amp;m.trim();}).length){
    list.push({key:'ment-0',label:'  공지1',mentIdx:0,empty:true});
  }
  list.push({key:'timer',label:'⏲️ 타이머'});
  list.push({key:'sw',label:'  스톱워치'});
  if(pdfDoc||(mediaImages&amp;&amp;mediaImages.length)){
    var total=pdfDoc?pdfTotalPages:(mediaImages?mediaImages.length:0);
    for(var i=0;i&lt;total;i++)list.push({key:'pdf'+i,label:'  '+(i+1)+'p',pdfIdx:i});
  }else{
    list.push({key:'pdf-empty',label:'  발표자료',empty:true});
  }
  return list;
}

/* ── 슬라이드 탐색 바 ── */
function buildSlideNavBar(){
  var bar=document.getElementById('slideNavBar');if(!bar)return;
  bar.innerHTML='';
  var list=getSlideList()||[];
  cspCount=list.length||1;
  if(cspIdx&gt;=cspCount)cspIdx=0;

  list.forEach(function(s,i){
    var wrap=el('div','snav-item');

    /* 슬라이드 이동 버튼 */
    var btn=el('button','snav-btn'+(i===cspIdx?' active':''),s.label);
    if(s.empty){btn.style.opacity='.45';}
    (function(idx){btn.addEventListener('click',function(){
      if(s.empty&amp;&amp;s.key.indexOf('ment')===0){
        document.getElementById('sec-ment').scrollIntoView({behavior:'smooth',block:'start'});return;
      }
      if(s.empty&amp;&amp;s.key.indexOf('pdf')===0){
        document.getElementById('sec-pdf').scrollIntoView({behavior:'smooth',block:'start'});return;
      }
      cspIdx=idx;renderCspState();renderCspContent();
    });})(i);
    wrap.appendChild(btn);

    /* 포함 체크 */
    if(s.always){
      var locked=el('div','snav-chk on','  항상포함');
      locked.style.cursor='default';
      wrap.appendChild(locked);
    }else{
      /* 포함 여부 판단 */
      var isOn=false;
      if(s.key==='slide-time')isOn=!!slideIncludes['slide-time'];
      else if(s.key==='slide-date')isOn=!!slideIncludes['slide-date'];
      else if(s.key==='slide-custom')isOn=!!slideIncludes['slide-custom'];
      else if(s.key.indexOf('ment-')===0)isOn=!!slideIncludes['ment-'+s.mentIdx];
      else if(s.key==='timer')isOn=!!slideIncludes.timer;
      else if(s.key==='sw')isOn=!!slideIncludes.sw;
      else if(s.key.indexOf('pdf')===0)isOn=!!slideIncludes.pdf;

      var chk=el('div','snav-chk'+(isOn?' on':''),isOn?'✓ 포함':'포함');
      (function(slide,chkEl){
        chkEl.addEventListener('click',function(e){
          e.stopPropagation();
          var key=slide.key;
          var nowOn=false;
          if(key==='slide-time'){slideIncludes['slide-time']=!slideIncludes['slide-time'];nowOn=slideIncludes['slide-time'];}
          else if(key==='slide-date'){slideIncludes['slide-date']=!slideIncludes['slide-date'];nowOn=slideIncludes['slide-date'];}
          else if(key==='slide-custom'){
            slideIncludes['slide-custom']=!slideIncludes['slide-custom'];nowOn=slideIncludes['slide-custom'];
            if(nowOn)document.getElementById('sec-custom').scrollIntoView({behavior:'smooth',block:'start'});
          }
          else if(key.indexOf('ment-')===0){
            var mk='ment-'+slide.mentIdx;
            slideIncludes[mk]=!slideIncludes[mk];nowOn=slideIncludes[mk];
            /* 공지 섹션 자동이동 제거 */
          }
          else if(key==='timer'){slideIncludes.timer=!slideIncludes.timer;nowOn=slideIncludes.timer;}
          else if(key==='sw'){slideIncludes.sw=!slideIncludes.sw;nowOn=slideIncludes.sw;}
          else if(key.indexOf('pdf')===0){
            slideIncludes.pdf=!slideIncludes.pdf;nowOn=slideIncludes.pdf;
            if(nowOn)document.getElementById('sec-pdf').scrollIntoView({behavior:'smooth',block:'start'});
          }
          chkEl.textContent=nowOn?'✓ 포함':'포함';
          chkEl.classList.toggle('on',nowOn);
          autoSave();buildSlideNavBar();
        });
      })(s,chk);
      wrap.appendChild(chk);
    }
    bar.appendChild(wrap);
  });
  renderCspState();
}

function renderCspState(){
  document.querySelectorAll('.snav-btn').forEach(function(b,i){b.classList.toggle('active',i===cspIdx);});
  var pn=document.getElementById('cspPageNum');if(pn)pn.textContent=(cspIdx+1)+' / '+cspCount;
}

/* ── 미리보기 콘텐츠 ── */
function renderCspContent(){
  var box=document.getElementById('cspContent');if(!box)return;
  var list=getSlideList();
  if(!list||!list.length){box.innerHTML='';return;}
  var cur=list[cspIdx&gt;=list.length?0:cspIdx]||list[0];
  if(!cur){box.innerHTML='';return;}
  var key=cur.key;
  var now=new Date();
  var h=now.getHours(),mi=now.getMinutes(),sc=now.getSeconds();
  /* 안전한 DOM 접근 */
  var tfEl=document.getElementById('timeFormat');
  var ssEl=document.getElementById('showSec');
  var fmt=tfEl?tfEl.value==='24':false;
  var showSc=ssEl?ssEl.value==='yes':true;
  var ap=h&gt;=12?'PM':'AM';var h12=h%12||12;
  var hDisp=fmt?P(h):P(h12);
  var secStr=showSc?('&lt;span style=&quot;font-size:.36em;opacity:.4;margin-left:6px&quot;&gt;'+P(sc)+'&lt;/span&gt;'):'';
  var apStr=fmt?'':('&lt;span style=&quot;font-size:.26em;opacity:.3;margin-left:6px;font-family:var(--ff)&quot;&gt;'+ap+'&lt;/span&gt;');
  var bigTime=hDisp+':'+P(mi)+secStr+apStr;
  var dateStr=now.getFullYear()+'년 '+(now.getMonth()+1)+'월 '+now.getDate()+'일 '+DAY[now.getDay()]+'요일';
  var dangun=now.getFullYear()+2333;
  var st=new Date(now.getFullYear(),0,1);var dn=Math.ceil((now-st)/864e5);
  var col=fsCol||'#ffffff';
  var bg=fsBgColor||'#0d1020';
  var cb=document.getElementById('cspBox');if(cb)cb.style.background=bg;

  function timeDiv(sz){
    return '&lt;div style=&quot;font-size:'+sz+';font-family:var(--fm);font-variant-numeric:tabular-nums;color:'+col+';line-height:1;letter-spacing:-.04em&quot;&gt;'+bigTime+'&lt;/div&gt;';
  }

  try{
    if(key==='slide-full'){
      box.innerHTML=timeDiv('clamp(26px,5.5vw,50px)')
        +'&lt;div style=&quot;font-size:clamp(10px,1.8vw,14px);color:'+col+';opacity:.5;margin-top:.35rem&quot;&gt;'+dateStr+'&lt;/div&gt;'
        +'&lt;div style=&quot;font-size:clamp(9px,1.4vw,12px);color:'+col+';opacity:.3;margin-top:.18rem&quot;&gt;단기 '+dangun+'년&lt;/div&gt;'
        +'&lt;div style=&quot;display:flex;justify-content:center;gap:4px;flex-wrap:wrap;margin-top:.4rem&quot;&gt;'
        +['올해 '+dn+'일째','남은 '+(365-dn)+'일'].map(function(t){return '&lt;span style=&quot;font-size:9px;padding:2px 8px;border-radius:12px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.1);color:'+col+'&quot;&gt;'+t+'&lt;/span&gt;';}).join('')+'&lt;/div&gt;'
        +(weatherCache?'&lt;div style=&quot;font-size:10px;color:'+col+';opacity:.38;margin-top:.3rem&quot;&gt;'+weatherCache.icon+' '+weatherCache.now+'°C · 내일 '+weatherCache.minT+'°~'+weatherCache.maxT+'°&lt;/div&gt;':'');
    }else if(key==='slide-time'){
      box.innerHTML=timeDiv('clamp(32px,7vw,62px)');
    }else if(key==='slide-date'){
      box.innerHTML=timeDiv('clamp(24px,5vw,46px)')
        +'&lt;div style=&quot;font-size:clamp(11px,2vw,17px);color:'+col+';opacity:.5;margin-top:.35rem&quot;&gt;'+dateStr+'&lt;/div&gt;'
        +'&lt;div style=&quot;font-size:clamp(9px,1.5vw,12px);color:'+col+';opacity:.3;margin-top:.15rem&quot;&gt;단기 '+dangun+'년&lt;/div&gt;';
    }else if(key==='slide-custom'){
      box.innerHTML='&lt;div style=&quot;font-size:12px;color:rgba(255,255,255,.4)&quot;&gt;  커스터마이징&lt;br&gt;&lt;span style=&quot;font-size:10px;opacity:.6&quot;&gt;상/중/하 구역 자유 배치&lt;/span&gt;&lt;/div&gt;';
    }else if(key.indexOf('ment-')===0){
      var midx=+key.replace('ment-','');
      var mdata=mentData&amp;&amp;mentData.filter?mentData.filter(function(x){return x.trim();}):[];
      var m=mdata[midx]||'(공지 내용 없음)';
      box.innerHTML='&lt;div style=&quot;font-size:clamp(13px,2.8vw,24px);color:'+col+';line-height:1.4;text-align:center;white-space:pre-wrap;word-break:keep-all&quot;&gt;'+m.replace(/&lt;/g,'&amp;lt;')+'&lt;/div&gt;';
    }else if(key==='timer'){
      var tst=(typeof timerState!=='undefined'&amp;&amp;timerState)?timerState:{total:25*60,rem:25*60};
      var trem=tst.rem||0;
      var th=Math.floor(trem/3600),tm=Math.floor((trem%3600)/60),ts=trem%60;
      var tStr=th&gt;0?(P(th)+':'+P(tm)+':'+P(ts)):(P(tm)+':'+P(ts));
      box.innerHTML='&lt;div style=&quot;font-size:10px;color:rgba(255,255,255,.4);margin-bottom:.3rem&quot;&gt;⏲️ 타이머&lt;/div&gt;'
        +'&lt;div style=&quot;font-size:clamp(28px,5.5vw,50px);font-family:var(--fm);color:'+col+'&quot;&gt;'+tStr+'&lt;/div&gt;';
    }else if(key==='sw'){
      var sws2=(typeof swState!=='undefined'&amp;&amp;swState&amp;&amp;typeof swMs==='function')?swMs():0;
      var sws_s=Math.floor(sws2/1000),sws_m=Math.floor(sws_s/60);sws_s=sws_s%60;var sws_cs=Math.floor((sws2%1000)/10);
      box.innerHTML='&lt;div style=&quot;font-size:10px;color:rgba(255,255,255,.4);margin-bottom:.3rem&quot;&gt;  스톱워치&lt;/div&gt;'
        +'&lt;div style=&quot;font-size:clamp(28px,5.5vw,50px);font-family:var(--fm);color:'+col+'&quot;&gt;'+P(sws_m)+':'+P(sws_s)+'&lt;span style=&quot;font-size:.5em;opacity:.4&quot;&gt;.'+P(sws_cs)+'&lt;/span&gt;&lt;/div&gt;';
    }else if(key==='pdf-empty'){
      box.innerHTML='&lt;div style=&quot;font-size:12px;color:rgba(255,255,255,.4)&quot;&gt;  발표자료&lt;br&gt;&lt;span style=&quot;font-size:10px;opacity:.6&quot;&gt;파일을 업로드하면 슬라이드로 표시됩니다&lt;/span&gt;&lt;/div&gt;';
    }else if(key.indexOf('pdf')===0){
      var pi2=+key.replace('pdf','');
      var pdesc=pdfDoc?('PDF '+pdfTotalPages+'페이지'):((mediaImages&amp;&amp;mediaImages.length)?('이미지 '+mediaImages.length+'장'):'파일 미업로드');
      box.innerHTML='&lt;div style=&quot;font-size:10px;color:rgba(255,255,255,.4);margin-bottom:.3rem&quot;&gt;  발표자료 '+(pi2+1)+'p&lt;/div&gt;'
        +'&lt;div style=&quot;font-size:12px;color:rgba(255,255,255,.35)&quot;&gt;'+pdesc+'&lt;/div&gt;';
    }else{
      box.innerHTML='&lt;div style=&quot;font-size:12px;color:rgba(255,255,255,.3)&quot;&gt;'+key+'&lt;/div&gt;';
    }
  }catch(err){
    box.innerHTML='&lt;div style=&quot;font-size:11px;color:rgba(255,100,100,.7)&quot;&gt;미리보기 오류: '+err.message+'&lt;/div&gt;';
  }
}
function cspMove(dir){
  if(dir===1&amp;&amp;cspIdx===cspCount-1)cspIdx=0;
  else cspIdx=Math.max(0,Math.min(cspCount-1,cspIdx+dir));
  renderCspState();renderCspContent();
}

/* ── 현재시각 날짜 표시 ── */
function tickMain(){
  var now=new Date();var h=now.getHours(),mi=now.getMinutes(),sc=now.getSeconds();
  var fmt=document.getElementById('timeFormat')&amp;&amp;document.getElementById('timeFormat').value==='24';
  var ap=h&gt;=12?'PM':'AM';var h12=h%12||12;
  var dangun=now.getFullYear()+2333;
  var md=document.getElementById('mainDate');
  if(md)md.textContent=now.getFullYear()+'년 (단기 '+dangun+'년) '+(now.getMonth()+1)+'월 '+now.getDate()+'일 '+DAY[now.getDay()]+'요일  '
    +(fmt?P(h)+':'+P(mi)+':'+P(sc):(P(h12)+':'+P(mi)+':'+P(sc)+' '+ap));
}
tickMain();setInterval(tickMain,1000);
setTimeout(function(){cspIdx=0;buildSlideNavBar();renderCspContent();},300);
setInterval(function(){renderCspContent();},1000);

/* ── 날씨 ── */
function fetchWeather(){
  if(!navigator.geolocation)return;
  navigator.geolocation.getCurrentPosition(function(pos){
    fetch('https://api.open-meteo.com/v1/forecast?latitude='+pos.coords.latitude+'&amp;longitude='+pos.coords.longitude+'&amp;current=temperature_2m,weathercode&amp;daily=temperature_2m_max,temperature_2m_min&amp;timezone=auto&amp;forecast_days=2')
      .then(function(r){return r.json();}).then(function(data){
        var wc=data.current.weathercode;
        var IC={0:'☀️',1:' ️',2:'⛅',3:'☁️',45:' ️',51:' ️',61:' ️',71:'❄️',80:' ️',95:'⛈️'};
        var DC={0:'맑음',1:'대체로맑음',2:'구름조금',3:'흐림',45:'안개',51:'이슬비',61:'비',71:'눈',80:'소나기',95:'뇌우'};
        function cl(wc2,map){var ks=Object.keys(map).map(Number).sort(function(a,b){return Math.abs(a-wc2)-Math.abs(b-wc2);});return map[ks[0]];}
        weatherCache={now:Math.round(data.current.temperature_2m),icon:cl(wc,IC),desc:cl(wc,DC),maxT:Math.round(data.daily.temperature_2m_max[1]),minT:Math.round(data.daily.temperature_2m_min[1])};
        var row=document.getElementById('weatherRow');
        if(row)row.innerHTML='&lt;span style=&quot;font-size:11px;background:var(--card2);color:var(--txt2);padding:3px 10px;border-radius:20px&quot;&gt;'+weatherCache.icon+' '+weatherCache.now+'°C ('+weatherCache.desc+')&lt;/span&gt;'
          +'&lt;span style=&quot;font-size:11px;background:var(--card2);color:var(--txt2);padding:3px 10px;border-radius:20px&quot;&gt;  내일 '+weatherCache.minT+'°~'+weatherCache.maxT+'°&lt;/span&gt;';
      }).catch(function(){});
  },function(){});
}
fetchWeather();

/* ── 슬라이드 빌드 ── */
function makeSlide(){return el('div','fs-slide');}
function makeBannerEl(pos){
  var bpos=document.getElementById('bannerPos').value;
  if(!bannerDataUrl||bpos==='bg'||bpos==='fixed-top'||bpos!==pos)return null;
  var bh=document.getElementById('bannerHeight').value;
  var wrap=el('div','fs-banner-wrap');wrap.style.marginBottom=pos==='top'?'.75rem':'0';wrap.style.marginTop=pos==='bottom'?'.75rem':'0';
  var img=document.createElement('img');img.src=bannerDataUrl;img.style.maxHeight=bh;img.style.objectFit='contain';
  wrap.appendChild(img);return wrap;
}
function makeLRBannerEl(){
  var bpos=document.getElementById('bannerPos').value;if(!bannerDataUrl||(bpos!=='left'&amp;&amp;bpos!=='right'))return null;
  var bh=document.getElementById('bannerHeight').value;
  var wrap=el('div','fs-lr-banner');var img=document.createElement('img');img.src=bannerDataUrl;img.style.maxHeight=bh;
  wrap.appendChild(img);return wrap;
}
function makeYtEl(){
  if(!slideIncludes.yt)return null;
  var url=document.getElementById('ytUrl').value.trim();if(!url)return null;
  var vid='',list='';
  var m=url.match(/(?:v=|youtu\.be\/)([^&amp;?/]+)/);if(m)vid=m[1];
  var lm=url.match(/list=([^&amp;?/]+)/);if(lm)list=lm[1];
  var src='https://www.youtube.com/embed/';
  if(vid)src+=vid+'?autoplay=1&amp;controls=1&amp;loop=1';
  else if(list)src+='videoseries?list='+list+'&amp;autoplay=1&amp;controls=1';
  else return null;
  var wrap=el('div','fs-yt-wrap');
  wrap.style.cssText='width:100%;max-width:380px;height:32px;margin-top:.6rem;border-radius:7px;overflow:hidden;opacity:.7;';
  var fr=document.createElement('iframe');fr.src=src;fr.style.cssText='width:100%;height:200px;border:none;display:block;transform:scale(1) translateY(-84px);';
  fr.allow='autoplay;encrypted-media';fr.allowFullscreen=true;
  wrap.appendChild(fr);return wrap;
}
function wrapLR(items){
  var bpos=document.getElementById('bannerPos').value;
  if((bpos==='left'||bpos==='right')&amp;&amp;bannerDataUrl){
    var lrw=el('div','fs-lr-wrap');var lr=makeLRBannerEl();var cc=el('div','fs-center-content');
    items.forEach(function(d){cc.appendChild(d);});
    if(bpos==='left'){lrw.appendChild(lr);lrw.appendChild(cc);}else{lrw.appendChild(cc);lrw.appendChild(lr);}
    return [lrw];
  }return items;
}
function appendItems(s,items){wrapLR(items).forEach(function(d){s.appendChild(d);});}

function makeBigTime(sz,baseVal){
  var t=el('div','fs-time');t.dataset.sizebase=String(baseVal||0);t.style.cssText='font-size:'+scalePx(fsSize,baseVal||0)+';color:'+fsCol;return t;
}

function buildSlide_full(){
  var s=makeSlide();var bt=makeBannerEl('top');if(bt)s.appendChild(bt);
  var lbl=el('div','fs-lbl','풀 정보');lbl.style.color=fsCol;
  var t=makeBigTime(0,-55);t.id='fst3';
  var dl=el('div','fs-dateline');dl.id='fsd3';dl.style.color=fsCol;
  var dk=el('div','fs-extra');dk.id='fsdk3';dk.style.color=fsCol;
  var pills=el('div','fs-pills');pills.id='fsp3';
  var ww=el('div','fs-weather');ww.id='fsw3';ww.style.color=fsCol;
  var memo=el('div','fs-memo-box');memo.innerHTML='&lt;div class=&quot;fs-memo-t&quot;&gt;메모&lt;/div&gt;&lt;textarea class=&quot;fs-memo&quot; placeholder=&quot;행사 메모...&quot;&gt;&lt;/textarea&gt;';
  var yt=makeYtEl();
  appendItems(s,[lbl,t,dl,dk,pills,ww,memo]);
  if(yt)s.appendChild(yt);
  var bb=makeBannerEl('bottom');if(bb)s.appendChild(bb);
  return s;
}
function buildSlide_time(){
  var s=makeSlide();var bt=makeBannerEl('top');if(bt)s.appendChild(bt);
  var lbl=el('div','fs-lbl','현재 시각');lbl.style.color=fsCol;
  var t=makeBigTime(0,0);t.id='fst1';
  appendItems(s,[lbl,t]);var bb=makeBannerEl('bottom');if(bb)s.appendChild(bb);return s;
}
function buildSlide_date(){
  var s=makeSlide();var bt=makeBannerEl('top');if(bt)s.appendChild(bt);
  var lbl=el('div','fs-lbl','날짜 / 시각');lbl.style.color=fsCol;
  var t=makeBigTime(0,-40);t.id='fst2';
  var dl=el('div','fs-dateline');dl.id='fsd2';dl.style.color=fsCol;
  var dk=el('div','fs-extra');dk.id='fsdk2';dk.style.color=fsCol;
  appendItems(s,[lbl,t,dl,dk]);var bb=makeBannerEl('bottom');if(bb)s.appendChild(bb);return s;
}
function buildSlide_custom(){
  var s=makeSlide();s.style.padding='0';
  var grid=el('div','fs-custom');
  ['top','mid','bot'].forEach(function(zone,zi){
    var zd=el('div','fsc-zone '+(zi===0?'top':zi===2?'bottom':'middle'));
    var val=czState[zone];
    if(val==='clock'){
      var szMap={small:'60px',medium:'100px',large:'140px',xlarge:'180px'};
      var sz=szMap[document.getElementById('customClockSize').value]||'100px';
      var t=el('div','fs-time');t.dataset.sizebase='0';t.style.cssText='font-size:'+sz+';color:'+fsCol;t.id='fsc-t-'+zone;
      zd.appendChild(t);
    }else if(val==='banner'){
      if(bannerDataUrl){var img=document.createElement('img');img.src=bannerDataUrl;img.style.cssText='max-height:110px;max-width:100%;object-fit:contain;border-radius:7px;';zd.appendChild(img);}
    }else if(val==='ticker'){
      var tk=el('div');tk.style.cssText='overflow:hidden;width:100%;';
      var tc=el('div','fs-ticker');var txt=document.getElementById('tickerText').value.trim();
      var sz2=document.getElementById('tickerSize').value;var sp=document.getElementById('tickerSpeed').value;
      var msgs=(txt||'자막').split('/').map(function(s2){return s2.trim();}).join(' ✦ ')+'  ✦  ';
      tc.innerHTML='&lt;span style=&quot;color:'+fsCol+';font-size:'+sz2+'&quot;&gt;'+msgs+msgs+'&lt;/span&gt;';
      tc.style.animation='fstick '+sp+' linear infinite';tk.appendChild(tc);zd.appendChild(tk);
    }else if(val==='memo'){
      var mt=el('div');mt.style.cssText='font-size:clamp(14px,3vw,34px);color:'+fsCol+';text-align:center;padding:1rem;word-break:keep-all;white-space:pre-wrap;';
      mt.textContent=document.getElementById('customMemoText').value||'커스텀 메모';mt.id='fsc-memo';zd.appendChild(mt);
    }
    grid.appendChild(zd);
  });
  s.appendChild(grid);return s;
}
function buildSlide_ment(txt,idx,total){
  var s=makeSlide();var bt=makeBannerEl('top');if(bt)s.appendChild(bt);
  var lbl=el('div','fs-lbl','공지 '+(idx+1)+' / '+total);lbl.style.color=fsCol;
  var mt=el('div','fs-ment-text');mt.style.color=fsCol;
  txt.split('\n').forEach(function(line,li){if(li&gt;0)mt.appendChild(document.createElement('br'));mt.appendChild(document.createTextNode(line));});
  var clk=el('div','fs-ment-clock');clk.style.color=fsCol;
  appendItems(s,[lbl,mt,clk]);var bb=makeBannerEl('bottom');if(bb)s.appendChild(bb);return s;
}
function buildSlide_timer(){
  var s=makeSlide();
  var lbl=el('div','fs-lbl','타이머');lbl.style.color=fsCol;s.appendChild(lbl);
  var tdisp=el('div','timer-big');tdisp.id='fs-tdisp';tdisp.style.cssText='color:'+fsCol+';font-size:'+fsSize;tdisp.textContent='25:00';
  s.appendChild(tdisp);
  var bar=el('div','timer-bar');var barf=el('div','timer-barf');barf.id='fs-tbarf';bar.appendChild(barf);s.appendChild(bar);
  var pre=el('div','timer-presets');
  [[60,'1분'],[2*60,'2분'],[3*60,'3분'],[5*60,'5분'],[10*60,'10분'],[15*60,'15분'],[20*60,'20분'],[25*60,'25분'],[30*60,'30분'],[60*60,'1시간']].forEach(function(ps){
    var btn=el('button','t-preset',ps[1]);btn.addEventListener('click',function(){setTimer(ps[0]);});pre.appendChild(btn);
  });
  s.appendChild(pre);
  var row=el('div','fs-row');
  var bp=el('button','fs-btn primary','▶ 시작');bp.id='fs-tplay';
  var br2=el('button','fs-btn','↺ 초기화');
  bp.addEventListener('click',timerToggle);br2.addEventListener('click',timerReset);
  row.appendChild(bp);row.appendChild(br2);s.appendChild(row);
  setTimeout(function(){
    var dy=null,rem0=null;
    function onM(y){if(dy===null)return;timerState.rem=Math.max(0,Math.min(7200,rem0+Math.round((dy-y)*4)));if(!timerState.running)timerState.total=timerState.rem;updateTimerDisplay();}
    tdisp.addEventListener('mousedown',function(e){dy=e.clientY;rem0=timerState.rem;e.preventDefault();});
    document.addEventListener('mousemove',function(e){if(dy!==null)onM(e.clientY);});
    document.addEventListener('mouseup',function(){dy=null;rem0=null;});
    tdisp.addEventListener('touchstart',function(e){dy=e.touches[0].clientY;rem0=timerState.rem;},{passive:true});
    document.addEventListener('touchmove',function(e){if(dy!==null)onM(e.touches[0].clientY);},{passive:true});
    document.addEventListener('touchend',function(){dy=null;rem0=null;});
  },100);
  return s;
}
function buildSlide_sw(){
  var s=makeSlide();
  var lbl=el('div','fs-lbl','스톱워치');lbl.style.color=fsCol;s.appendChild(lbl);
  /* 좌우 레이아웃 */
  var layout=el('div','sw-layout');
  var swLeft=el('div','sw-left');
  var disp=el('div','sw-big');disp.id='fs-swdisp';disp.style.cssText='color:'+fsCol+';font-size:'+fsSize;
  disp.innerHTML='00:00&lt;span class=&quot;sw-ms&quot; id=&quot;fs-swms&quot;&gt;.00&lt;/span&gt;';
  swLeft.appendChild(disp);
  var row=el('div','fs-row');row.style.marginTop='.6rem';
  var bp=el('button','fs-btn primary','▶ 시작');bp.id='fs-swplay';
  var bl=el('button','fs-btn','  랩');var br2=el('button','fs-btn','↺ 초기화');
  bp.addEventListener('click',swToggle);bl.addEventListener('click',swLap);br2.addEventListener('click',swReset);
  row.appendChild(bp);row.appendChild(bl);row.appendChild(br2);swLeft.appendChild(row);
  var swRight=el('div','sw-right');swRight.id='fs-swlaps';
  layout.appendChild(swLeft);layout.appendChild(swRight);s.appendChild(layout);
  return s;
}
function buildPdfSlides(){
  var slides=[];
  if(pdfDoc){
    for(var i=1;i&lt;=pdfTotalPages;i++){
      var s=makeSlide();s.classList.add('pdf-slide');
      var cw=el('div','pdf-canvas-wrap');var canvas=document.createElement('canvas');
      canvas.id='pdf-canvas-'+i;canvas.dataset.page=i;cw.appendChild(canvas);s.appendChild(cw);
      var nav=el('div','pdf-nav');nav.innerHTML='&lt;span style=&quot;color:rgba(255,255,255,.5)&quot;&gt;PDF '+i+' / '+pdfTotalPages+'&lt;/span&gt;';s.appendChild(nav);
      slides.push(s);
    }
  }else if(mediaImages&amp;&amp;mediaImages.length){
    mediaImages.forEach(function(src,i){
      var s=makeSlide();s.classList.add('pdf-slide');
      var iw=el('div','media-img-wrap');var img=document.createElement('img');img.src=src;img.alt='이미지 '+(i+1);
      iw.appendChild(img);s.appendChild(iw);
      var nav=el('div','pdf-nav');nav.innerHTML='&lt;span style=&quot;color:rgba(255,255,255,.5)&quot;&gt;이미지 '+(i+1)+' / '+mediaImages.length+'&lt;/span&gt;';s.appendChild(nav);
      slides.push(s);
    });
  }
  return slides;
}
function renderPdfPage(pageNum){
  if(!pdfDoc)return;
  pdfDoc.getPage(pageNum).then(function(page){
    var canvas=document.getElementById('pdf-canvas-'+pageNum);if(!canvas)return;
    var maxW=(canvas.closest('.fs-slide')||document.body).offsetWidth*0.88||800;
    var maxH=window.innerHeight*0.7;var viewport=page.getViewport({scale:1});
    var scale=Math.min(maxW/viewport.width,maxH/viewport.height);
    var vp=page.getViewport({scale:scale});canvas.width=vp.width;canvas.height=vp.height;
    page.render({canvasContext:canvas.getContext('2d'),viewport:vp});
  });
}

/* ── buildSlides ── */
function buildSlides(){
  var container=document.getElementById('fsSlides');container.innerHTML='';
  var slides=[];slideLabels=[];
  /* 풀정보 항상 */
  slides.push(buildSlide_full());slideLabels.push('풀 정보');
  if(slideIncludes['slide-time']){slides.push(buildSlide_time());slideLabels.push('시간 중심');}
  if(slideIncludes['slide-date']){slides.push(buildSlide_date());slideLabels.push('날짜 중심');}
  if(slideIncludes['slide-custom']){slides.push(buildSlide_custom());slideLabels.push('커스텀');}
  /* 공지: 각 멘트별 개별 포함 여부 */
  var ne=mentData.filter(function(m){return m.trim();});
  ne.forEach(function(m,i){
    if(slideIncludes['ment-'+i]){
      slides.push(buildSlide_ment(m,i,ne.length));slideLabels.push('공지 '+(i+1));
    }
  });
  if(slideIncludes.timer){slides.push(buildSlide_timer());slideLabels.push('타이머');}
  if(slideIncludes.sw){slides.push(buildSlide_sw());slideLabels.push('스톱워치');}
  if(slideIncludes.pdf&amp;&amp;(pdfDoc||(mediaImages&amp;&amp;mediaImages.length))){
    var ps=buildPdfSlides();
    ps.forEach(function(s,i){slides.push(s);slideLabels.push((pdfDoc?'PDF':'이미지')+' '+(i+1)+'p');});
    setTimeout(function(){if(pdfDoc)renderPdfPage(1);},300);
  }
  if(!slides.length){
    var empty=makeSlide();var t=el('div','fs-lbl','슬라이드 없음 — 위에서 ✓ 포함을 선택하세요');
    t.style.color=fsCol;empty.appendChild(t);slides.push(empty);slideLabels.push('-');
  }
  slides.forEach(function(s){container.appendChild(s);});
  slideCount=slides.length;
  var dots=document.getElementById('fsDots');dots.innerHTML='';
  for(var i=0;i&lt;slideCount;i++){
    var dot=el('div','fs-dot');
    (function(idx){dot.addEventListener('click',function(){slideIdx=idx;updateSlide();});})(i);
    dots.appendChild(dot);
  }
  tickFsClock();fsIvs.push(setInterval(tickFsClock,1000));
  fsIvs.push(setInterval(updateTimerDisplay,400));
  fsIvs.push(setInterval(updateSwDisplay,50));
}

/* ── 시계 틱 ── */
function tickFsClock(){
  var now=new Date();var h=now.getHours(),mi=now.getMinutes(),sc=now.getSeconds();
  var fmt=document.getElementById('timeFormat').value==='24';
  var showSc=document.getElementById('showSec').value==='yes';
  var ap=h&gt;=12?'PM':'AM';var h12=h%12||12;
  var hDisp=fmt?P(h):P(h12);
  var secStr=showSc?('&lt;span style=&quot;font-size:.36em;opacity:.38;margin-left:8px&quot;&gt;'+P(sc)+'&lt;/span&gt;'):'';
  var apStr=fmt?'':('&lt;span style=&quot;font-size:.26em;opacity:.3;margin-left:8px;font-family:var(--ff)&quot;&gt;'+ap+'&lt;/span&gt;');
  var big=hDisp+':'+P(mi)+secStr+apStr;
  var dateStr=now.getFullYear()+'년 '+(now.getMonth()+1)+'월 '+now.getDate()+'일 '+DAY[now.getDay()]+'요일';
  var dangun=now.getFullYear()+2333;
  var st=new Date(now.getFullYear(),0,1);var dn=Math.ceil((now-st)/864e5);
  var G=function(id){return document.getElementById(id);};
  if(G('fst1'))G('fst1').innerHTML=big;
  if(G('fst2'))G('fst2').innerHTML=big;if(G('fsd2'))G('fsd2').textContent=dateStr;if(G('fsdk2'))G('fsdk2').textContent='단기 '+dangun+'년';
  if(G('fst3'))G('fst3').innerHTML=big;if(G('fsd3'))G('fsd3').textContent=dateStr;if(G('fsdk3'))G('fsdk3').textContent='단기 '+dangun+'년';
  if(G('fsp3')){
    var sz=parseInt(fsSize||'170');var pfsz=Math.max(9,Math.round(sz*0.082))+'px';
    G('fsp3').innerHTML=['올해 '+dn+'일째',''+Math.ceil(dn/7)+'번째 주','남은 '+(365-dn)+'일'].map(function(t){return '&lt;span class=&quot;fs-pill&quot; style=&quot;color:'+fsCol+';font-size:'+pfsz+'&quot;&gt;'+t+'&lt;/span&gt;';}).join('');
  }
  if(G('fsw3')&amp;&amp;weatherCache)G('fsw3').innerHTML='&lt;span&gt;'+weatherCache.icon+' 현재 '+weatherCache.now+'°C ('+weatherCache.desc+')&lt;/span&gt;&lt;span&gt;  내일 '+weatherCache.minT+'°~'+weatherCache.maxT+'°&lt;/span&gt;';
  document.querySelectorAll('.fs-ment-clock').forEach(function(e){e.textContent=(fmt?P(h)+':'+P(mi)+':'+P(sc):P(h12)+':'+P(mi)+':'+P(sc)+' '+ap);});
  ['top','mid','bot'].forEach(function(zone){var ce=G('fsc-t-'+zone);if(ce)ce.innerHTML=big;});
}

/* ── 자막 ── */
function buildTicker(){
  var show=document.getElementById('tickerShow').value;var txt=document.getElementById('tickerText').value.trim();
  var area=document.getElementById('fsTickerArea');var bar=document.getElementById('fsTickerBar');var track=document.getElementById('fsTicker');
  if(show==='no'||!txt||!slideIncludes.ticker){area.style.display='none';return;}
  var msgs=txt.split('/').map(function(s){return s.trim();}).filter(Boolean).join('   ✦   ')+'   ✦   ';
  var sz=document.getElementById('tickerSize').value;var bg=document.getElementById('tickerBg').value;var spd=document.getElementById('tickerSpeed').value;
  var tpos=document.getElementById('tickerPos').value;
  bar.style.background=bg;
  track.innerHTML='&lt;span style=&quot;color:'+fsCol+';font-size:'+sz+'&quot;&gt;'+msgs+msgs+'&lt;/span&gt;';
  track.style.animation='fstick '+spd+' linear infinite';
  area.className='fs-ticker-area';area.classList.add(tpos==='top-under'?'pos-top-under':('pos-'+tpos));
  area.style.display='block';
}

/* ── 슬라이드 이동 (양방향 순환) ── */
function slideMove(dir){
  if(dir===1&amp;&amp;slideIdx===slideCount-1)slideIdx=0;
  else if(dir===-1&amp;&amp;slideIdx===0)slideIdx=slideCount-1;
  else slideIdx=Math.max(0,Math.min(slideCount-1,slideIdx+dir));
  updateSlide();
  if(pdfDoc){var s=document.getElementById('fsSlides').children[slideIdx];if(s&amp;&amp;s.classList.contains('pdf-slide')){var c=s.querySelector('canvas');if(c)renderPdfPage(+c.dataset.page);}}
}
function updateSlide(){
  document.getElementById('fsSlides').style.transform='translateX(-'+slideIdx*100+'%)';
  document.querySelectorAll('.fs-dot').forEach(function(d,i){d.classList.toggle('on',i===slideIdx);});
  /* 순환이므로 화살표 항상 활성 */
  document.getElementById('arrowL').style.opacity='1';document.getElementById('arrowR').style.opacity='1';
  document.getElementById('fsPgNum').textContent=(slideIdx+1)+' / '+slideCount;
  document.getElementById('fsTbTitle').textContent=slideLabels[slideIdx]||('슬라이드 '+(slideIdx+1));
  cspIdx=slideIdx;renderCspState();
}

/* ── 타이머 ── */
function getAudioCtx(){if(!audioCtx)audioCtx=new(window.AudioContext||window.webkitAudioContext)();return audioCtx;}
function playBeep(f,d,v){try{var ctx=getAudioCtx();var o=ctx.createOscillator();var g=ctx.createGain();o.connect(g);g.connect(ctx.destination);o.frequency.value=f||880;o.type='sine';g.gain.setValueAtTime(v||0.4,ctx.currentTime);g.gain.exponentialRampToValueAtTime(0.001,ctx.currentTime+(d||0.2));o.start();o.stop(ctx.currentTime+(d||0.2));}catch(e){}}
function playAlarm(){
  var av=document.getElementById('alarmVoice').value;if(av==='off')return;
  if(av==='on'||av==='beep'){[0,0.3,0.6,0.9].forEach(function(t){setTimeout(function(){playBeep(880,0.22,0.5);},t*1000);});}
  if(av==='on'&amp;&amp;'speechSynthesis' in window){setTimeout(function(){var u=new SpeechSynthesisUtterance('Time out');u.lang='en-US';u.rate=0.9;speechSynthesis.speak(u);},400);}
}
function playWarning(label){
  var av=document.getElementById('alarmVoice').value;if(av==='off')return;
  playBeep(660,0.18,0.3);
  if(av==='on'&amp;&amp;'speechSynthesis' in window){setTimeout(function(){var u=new SpeechSynthesisUtterance(label);u.lang='en-US';u.rate=0.9;speechSynthesis.speak(u);},200);}
}
function fmtT(sec){var s=Math.max(0,Math.floor(sec));var h=Math.floor(s/3600),m=Math.floor((s%3600)/60),ss=s%60;if(h&gt;0)return P(h)+':'+P(m)+':'+P(ss);return P(m)+':'+P(ss);}
function setTimer(sec){timerReset();timerState.total=sec;timerState.rem=sec;updateTimerDisplay();}
function timerToggle(){
  if(timerState.running){clearInterval(timerState.iv);timerState.running=false;var btn=document.getElementById('fs-tplay');if(btn)btn.textContent='▶ 시작';}
  else{
    if(timerState.rem&lt;=0)timerState.rem=timerState.total;timerState.running=true;
    var btn=document.getElementById('fs-tplay');if(btn)btn.textContent='⏸ 정지';
    timerState.iv=setInterval(function(){
      timerState.rem--;
      if(timerState.rem===120)playWarning('Two minutes');
      else if(timerState.rem===60)playWarning('One minute');
      else if(timerState.rem===30)playWarning('Thirty seconds');
      if(timerState.rem&lt;=0){clearInterval(timerState.iv);timerState.running=false;playAlarm();var btn=document.getElementById('fs-tplay');if(btn)btn.textContent='▶ 시작';}
    },1000);
  }
}
function timerReset(){clearInterval(timerState.iv);timerState.running=false;timerState.rem=timerState.total;var btn=document.getElementById('fs-tplay');if(btn)btn.textContent='▶ 시작';}
function updateTimerDisplay(){
  var disp=document.getElementById('fs-tdisp');var barf=document.getElementById('fs-tbarf');
  if(disp)disp.textContent=fmtT(timerState.rem);
  if(barf&amp;&amp;timerState.total&gt;0)barf.style.width=Math.round((1-timerState.rem/timerState.total)*100)+'%';
  if(disp){disp.classList.remove('warn1','warn2');if(timerState.running&amp;&amp;timerState.rem&lt;=30)disp.classList.add('warn2');else if(timerState.running&amp;&amp;timerState.rem&lt;=60)disp.classList.add('warn1');}
}

/* ── 스톱워치 ── */
function swMs(){return swState.running?(swState.elapsed+Date.now()-swState.start):swState.elapsed;}
function swToggle(){
  var btn=document.getElementById('fs-swplay');
  if(swState.running){swState.elapsed+=Date.now()-swState.start;swState.running=false;if(btn)btn.textContent='▶ 시작';}
  else{swState.start=Date.now();swState.running=true;if(btn)btn.textContent='⏸ 정지';}
}
function swLap(){swState.laps.push({ms:swMs(),note:''});renderSwLaps();}
function swReset(){swState.running=false;swState.elapsed=0;swState.laps=[];var btn=document.getElementById('fs-swplay');if(btn)btn.textContent='▶ 시작';renderSwLaps();}
function renderSwLaps(){
  var le=document.getElementById('fs-swlaps');if(!le)return;
  var lts=swState.laps.map(function(l,i){return i===0?l.ms:l.ms-swState.laps[i-1].ms;});
  var mn=lts.length?Math.min.apply(null,lts):0;var mx=lts.length?Math.max.apply(null,lts):0;
  le.innerHTML='';
  swState.laps.slice().reverse().forEach(function(lap,ri){
    var i=swState.laps.length-1-ri;var lt=lts[i];
    var ss=Math.floor(lt/1000),mm=Math.floor(ss/60);ss=ss%60;var cc=Math.floor((lt%1000)/10);
    var row=document.createElement('div');
    row.className='sw-laprow'+(lt===mn&amp;&amp;lts.length&gt;1?' best':'')+(lt===mx&amp;&amp;lts.length&gt;1?' worst':'');
    row.innerHTML='&lt;span style=&quot;min-width:22px;flex-shrink:0&quot;&gt;'+(i+1)+'&lt;/span&gt;'
      +'&lt;span style=&quot;min-width:62px;font-family:var(--fm);flex-shrink:0&quot;&gt;'+P(mm)+':'+P(ss)+'.'+P(cc)+'&lt;/span&gt;';
    var inp=document.createElement('input');inp.value=lap.note;inp.placeholder='메모';
    inp.addEventListener('input',function(){swState.laps[i].note=this.value;});
    row.appendChild(inp);le.appendChild(row);
  });
}
function updateSwDisplay(){
  var disp=document.getElementById('fs-swdisp');var ms2=document.getElementById('fs-swms');if(!disp)return;
  var ms=swMs();var s=Math.floor(ms/1000),m=Math.floor(s/60);s=s%60;var cs=Math.floor((ms%1000)/10);
  if(disp.childNodes[0])disp.childNodes[0].textContent=P(m)+':'+P(s);
  if(ms2)ms2.textContent='.'+P(cs);
}

buildUrl();
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>모두의계산기</category>
      <category>행사</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/16</guid>
      <comments>https://0-1.kr/16#entry16comment</comments>
      <pubDate>Thu, 12 Nov 2020 14:22:26 +0900</pubDate>
    </item>
    <item>
      <title>모두의 자료취합계산기_V2(0-1.kr/14)</title>
      <link>https://0-1.kr/14</link>
      <description>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
&lt;head&gt;
&lt;meta charset=&quot;UTF-8&quot;&gt;
&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
&lt;title&gt;모두의 자료취합계산기&lt;/title&gt;
&lt;link href=&quot;https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700;900&amp;display=swap&quot; rel=&quot;stylesheet&quot;&gt;
&lt;script src=&quot;https://unpkg.com/pdf-lib@1.17.1/dist/pdf-lib.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;https://unpkg.com/downloadjs@1.4.7/download.js&quot;&gt;&lt;/script&gt;
&lt;style&gt;
/* ===== RESET &amp; BASE ===== */
*{box-sizing:border-box;margin:0;padding:0}
:root{
  --blue:#2563eb;--blue-light:#eff6ff;--blue-mid:#bfdbfe;
  --gray-50:#f8fafc;--gray-100:#f1f5f9;--gray-200:#e2e8f0;
  --gray-400:#94a3b8;--gray-600:#475569;--gray-900:#0f172a;
  --radius:12px;--radius-sm:8px;--radius-xs:6px;
  --shadow:0 1px 3px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.05);
  --shadow-md:0 4px 16px rgba(0,0,0,.08);
}

body{
  font-family:'Noto Sans KR',sans-serif;
  background:#f0f4f8;
  min-height:100vh;
  padding:32px 16px 60px;
  color:var(--gray-900);
  line-height:1.6;
}

/* ===== LAYOUT ===== */
.app-wrap{max-width:760px;margin:0 auto}

.app-header{
  text-align:center;
  margin-bottom:32px;
  padding:32px 24px 28px;
  background:#fff;
  border-radius:16px;
  border:1px solid var(--gray-200);
  box-shadow:var(--shadow);
}
.app-header .badge{
  display:inline-block;
  background:var(--blue-light);
  color:var(--blue);
  font-size:11px;font-weight:700;
  padding:4px 12px;border-radius:20px;
  margin-bottom:12px;letter-spacing:.5px;
}
.app-header h1{font-size:24px;font-weight:900;letter-spacing:-1px;color:var(--gray-900);margin-bottom:6px}
.app-header p{font-size:13px;color:var(--gray-400)}

/* ===== SECTION CARD ===== */
.section-card{
  background:#fff;
  border-radius:var(--radius);
  border:1px solid var(--gray-200);
  box-shadow:var(--shadow);
  margin-bottom:16px;
  overflow:hidden;
}
.sec-header{
  padding:16px 22px 14px;
  border-bottom:1px solid var(--gray-100);
  display:flex;align-items:center;gap:10px;
}
.sec-num{
  width:26px;height:26px;border-radius:50%;
  background:var(--blue);color:#fff;
  font-size:12px;font-weight:700;
  display:flex;align-items:center;justify-content:center;
  flex-shrink:0;
}
.sec-title{font-size:15px;font-weight:700;color:var(--gray-900)}
.sec-sub{font-size:12px;color:var(--gray-400);margin-left:auto}
.sec-body{padding:20px 22px}

/* ===== COLLAPSIBLE SECTION ===== */
.sec-header.collapsible{cursor:pointer;user-select:none}
.sec-chevron{font-size:11px;color:var(--gray-400);flex-shrink:0;margin-left:10px;transition:transform .2s}
.section-card.collapsed .sec-body{display:none}
.section-card.collapsed .sec-chevron{transform:rotate(-90deg)}
.sec-header.collapsible:hover .sec-title{color:var(--blue)}

/* ===== ORIENTATION TOGGLE (간지틀 / 표지배경) ===== */
.orient-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.orient-title{font-size:13px;color:var(--gray-600)}
.orient-btns{display:flex;gap:8px}
.orient-btn{
  padding:6px 16px;border:1px solid var(--gray-200);border-radius:var(--radius-xs);
  background:#fff;font-size:12px;color:var(--gray-600);cursor:pointer;
  font-family:'Noto Sans KR',sans-serif;transition:all .15s;
}
.orient-btn:hover{border-color:#93c5fd}
.orient-btn.selected{border-color:var(--blue);background:var(--blue-light);color:var(--blue);font-weight:700}

/* ===== DROP ZONE ===== */
.drop-zone{
  border:2px dashed var(--blue-mid);
  border-radius:var(--radius);
  background:var(--blue-light);
  padding:32px 20px;
  text-align:center;
  cursor:pointer;
  transition:all .2s;
  position:relative;
}
.drop-zone:hover,.drop-zone.over{border-color:var(--blue);background:#dbeafe}
.drop-zone input[type=file]{
  position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;height:100%;
}
.drop-icon{font-size:32px;margin-bottom:8px}
.drop-main{font-size:14px;font-weight:700;color:var(--blue);margin-bottom:4px}
.drop-hint{font-size:12px;color:var(--gray-400)}
.file-support{font-size:11px;color:#dc2626;margin-top:12px;line-height:1.8}

/* ===== FILE LIST ===== */
.file-list{margin-top:14px;display:flex;flex-direction:column;gap:6px;min-height:0}
.empty-list{text-align:center;padding:20px;font-size:13px;color:var(--gray-400);display:none}

.file-item{
  display:flex;align-items:center;gap:8px;
  background:var(--gray-50);
  border:1px solid var(--gray-200);
  border-radius:var(--radius-sm);
  padding:9px 12px;
  cursor:default;
  transition:box-shadow .15s,opacity .15s;
  user-select:none;
}
.file-item.is-divider{background:#fffbf0;border-color:#fed7aa}
.file-item.dragging{opacity:.4;box-shadow:var(--shadow-md)}
.file-item.drag-over{border-color:var(--blue);background:var(--blue-light)}

.drag-handle{
  color:#cbd5e1;font-size:16px;cursor:grab;flex-shrink:0;line-height:1;
  padding:2px 0;
}
.drag-handle:active{cursor:grabbing}

.ext-badge{
  font-size:9px;font-weight:700;padding:3px 6px;
  border-radius:4px;flex-shrink:0;text-transform:uppercase;letter-spacing:.3px;
}
.ext-pdf{background:#fee2e2;color:#b91c1c}
.ext-ppt,.ext-pptx{background:#ffedd5;color:#c2410c}
.ext-doc,.ext-docx{background:#dbeafe;color:#1d4ed8}
.ext-img{background:#dcfce7;color:#15803d}
.ext-div{background:#fef9c3;color:#854d0e}

.file-name{font-size:12px;font-weight:500;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.file-meta{font-size:11px;color:var(--gray-400);white-space:nowrap;flex-shrink:0}
.file-del{
  color:#cbd5e1;font-size:18px;cursor:pointer;
  flex-shrink:0;line-height:1;padding:0 2px;
  transition:color .15s;
}
.file-del:hover{color:#ef4444}

.list-summary{font-size:11px;color:var(--gray-400);margin-top:8px;text-align:right}

/* ===== UNDO ROW ===== */
.undo-row{display:flex;align-items:center;gap:8px;margin-top:10px}
.btn-sm{
  font-size:12px;padding:5px 14px;
  border:1px solid var(--gray-200);border-radius:var(--radius-xs);
  background:#fff;cursor:pointer;color:var(--gray-600);
  font-family:'Noto Sans KR',sans-serif;transition:background .15s;
}
.btn-sm:hover:not(:disabled){background:var(--gray-100)}
.btn-sm:disabled{opacity:.4;cursor:not-allowed}
.undo-hint{font-size:11px;color:var(--gray-400)}

/* ===== DIVIDER GRID ===== */
.divider-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:16px}
@media(max-width:480px){.divider-grid{grid-template-columns:repeat(2,1fr)}}

.div-card{
  border:2px solid var(--gray-200);border-radius:var(--radius);
  padding:10px 8px 8px;cursor:pointer;text-align:center;
  transition:all .2s;background:#fff;
}
.div-card:hover{border-color:#93c5fd}
.div-card.selected{border-color:var(--blue);background:var(--blue-light)}
.div-preview{
  width:100%;height:88px;background:var(--gray-50);
  border-radius:var(--radius-sm);margin-bottom:7px;
  display:flex;align-items:center;justify-content:center;overflow:hidden;
}
.div-card.selected .div-preview{background:#dbeafe}
.div-label{font-size:11px;color:var(--gray-600);font-weight:500}

.pages-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pages-row label{font-size:13px;color:var(--gray-600)}
.pages-input{
  width:60px;padding:6px 8px;border:1px solid var(--gray-200);
  border-radius:var(--radius-xs);font-size:13px;text-align:center;
  font-family:'Noto Sans KR',sans-serif;
}
.pages-input:focus{outline:none;border-color:var(--blue)}

/* ===== OPTIONS ===== */
.opt-group{margin-bottom:16px}
.opt-group:last-child{margin-bottom:0}
.opt-label{font-size:13px;color:var(--gray-600);margin-bottom:8px;font-weight:500}
.opt-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}

/* Toggle */
.toggle-wrap{display:flex;align-items:center;gap:10px;cursor:pointer}
.toggle{
  width:44px;height:24px;background:var(--gray-200);border-radius:12px;
  position:relative;transition:background .2s;flex-shrink:0;cursor:pointer;
}
.toggle.on{background:var(--blue)}
.toggle::after{
  content:'';width:20px;height:20px;background:#fff;border-radius:50%;
  position:absolute;top:2px;left:2px;transition:left .2s;
  box-shadow:0 1px 3px rgba(0,0,0,.15);
}
.toggle.on::after{left:22px}
.toggle-text{font-size:13px;color:var(--gray-600)}

.sub-opt{margin-top:12px;padding:14px;background:var(--gray-50);border-radius:var(--radius-sm);border:1px solid var(--gray-200)}
.text-input{
  width:100%;padding:8px 12px;border:1px solid var(--gray-200);border-radius:var(--radius-xs);
  font-size:13px;font-family:'Noto Sans KR',sans-serif;color:var(--gray-900);
}
.text-input:focus{outline:none;border-color:var(--blue);background:#fff}

/* Color swatches */
.swatches{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.swatch{
  width:30px;height:30px;border-radius:50%;cursor:pointer;
  border:3px solid transparent;transition:border-color .15s,transform .15s;
}
.swatch:hover{transform:scale(1.1)}
.swatch.selected{border-color:var(--blue)}

/* Quality */
.quality-block{background:var(--gray-50);border-radius:var(--radius-sm);padding:14px;border:1px solid var(--gray-200)}
.quality-slider-row{display:flex;align-items:center;gap:12px}
.quality-slider-row input[type=range]{flex:1;accent-color:var(--blue)}
.q-label{font-size:13px;font-weight:700;color:var(--blue);min-width:48px;text-align:right}
.quality-info{margin-top:10px;font-size:12px;color:var(--gray-600);line-height:1.8}
.q-bar-wrap{height:5px;background:var(--gray-200);border-radius:3px;margin:4px 0 6px;overflow:hidden}
.q-bar{height:100%;border-radius:3px;background:var(--blue);transition:width .3s}

/* Format &amp; filename */
.select-input{
  padding:8px 12px;border:1px solid var(--gray-200);border-radius:var(--radius-xs);
  font-size:13px;font-family:'Noto Sans KR',sans-serif;background:#fff;
  color:var(--gray-900);cursor:pointer;
}
.select-input:focus{outline:none;border-color:var(--blue)}

/* ===== SUBMIT ===== */
.submit-section{
  background:#fff;border-radius:var(--radius);border:1px solid var(--gray-200);
  box-shadow:var(--shadow);padding:24px 22px;text-align:center;
  margin-bottom:16px;
}
.size-preview{
  font-size:12px;color:var(--gray-400);margin-bottom:16px;
  padding:10px 16px;background:var(--gray-50);border-radius:var(--radius-xs);
  display:inline-block;
}
.btn-merge{
  display:inline-flex;align-items:center;gap:8px;
  background:var(--blue);color:#fff;border:none;
  padding:14px 48px;border-radius:var(--radius);
  font-size:15px;font-weight:700;cursor:pointer;
  font-family:'Noto Sans KR',sans-serif;
  transition:background .2s,transform .1s;
  letter-spacing:-.3px;box-shadow:0 2px 8px rgba(37,99,235,.3);
}
.btn-merge:hover{background:#1d4ed8}
.btn-merge:active{transform:scale(.98)}
.btn-merge:disabled{background:var(--gray-400);cursor:not-allowed;box-shadow:none}
.merge-hint{font-size:12px;color:var(--gray-400);margin-top:10px}

/* ===== PROGRESS ===== */
.progress-wrap{display:none;margin-top:16px}
.progress-bar-bg{height:6px;background:var(--gray-200);border-radius:3px;overflow:hidden;margin-bottom:8px}
.progress-bar{height:100%;background:var(--blue);border-radius:3px;width:0%;transition:width .3s}
.progress-text{font-size:12px;color:var(--gray-600);text-align:center}

/* ===== NOTICE ===== */
.notice{
  font-size:12px;color:#92400e;background:#fffbeb;
  border:1px solid #fde68a;border-radius:var(--radius-xs);
  padding:10px 14px;margin-top:12px;line-height:1.7;
}
.notice strong{font-weight:700}

/* ===== FOOTER ===== */
.app-footer{text-align:center;font-size:11px;color:var(--gray-400);margin-top:8px;padding-bottom:8px}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;div class=&quot;app-wrap&quot;&gt;

  &lt;!-- HEADER --&gt;
  &lt;div class=&quot;app-header&quot;&gt;
    &lt;div class=&quot;badge&quot;&gt;  ALL-IN-ONE 취합기&lt;/div&gt;
    &lt;h1&gt;모두의 자료취합계산기&lt;/h1&gt;
    &lt;p&gt;여러 파일을 하나로 합치고 · 간지 삽입 · 용량 조절 · PDF 생성까지&lt;/p&gt;
  &lt;/div&gt;

  &lt;!-- SECTION 1: 파일 첨부 --&gt;
  &lt;div class=&quot;section-card&quot;&gt;
    &lt;div class=&quot;sec-header&quot;&gt;
      &lt;div class=&quot;sec-num&quot;&gt;1&lt;/div&gt;
      &lt;span class=&quot;sec-title&quot;&gt;파일 첨부&lt;/span&gt;
      &lt;span class=&quot;sec-sub&quot;&gt;드래그하거나 클릭해서 추가 · 이름순 자동 정렬&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&quot;sec-body&quot;&gt;
      &lt;div class=&quot;drop-zone&quot; id=&quot;dropZone&quot;&gt;
        &lt;input type=&quot;file&quot; id=&quot;fileInput&quot; multiple accept=&quot;.pdf,.ppt,.pptx,.doc,.docx,.jpg,.jpeg,.png,.gif,.bmp,.webp&quot;&gt;
        &lt;div class=&quot;drop-icon&quot;&gt; &lt;/div&gt;
        &lt;div class=&quot;drop-main&quot;&gt;파일을 여기에 드래그하거나 클릭하여 선택&lt;/div&gt;
        &lt;div class=&quot;drop-hint&quot;&gt;여러 파일 동시 선택 가능 · 기본 정렬: 파일명 오름차순&lt;/div&gt;
      &lt;/div&gt;
      &lt;div class=&quot;file-support&quot;&gt;
        ※ 지원 파일: &lt;strong&gt;PDF · PPT / PPTX · DOC / DOCX · JPG · PNG · GIF · BMP · WEBP&lt;/strong&gt;&lt;br&gt;
        ※ 이미지(JPG·PNG 등)는 한 장씩 PDF 페이지로 변환되어 취합됩니다&lt;br&gt;
        ※ PPT·DOCX는 브라우저에서 직접 변환이 불가하여 PDF로 미리 변환 후 업로드를 권장합니다&lt;br&gt;
        ※ 파일 1개 최대 100MB · 보안상 파일은 브라우저 내에서만 처리됩니다 (서버 전송 없음)
      &lt;/div&gt;
      &lt;div class=&quot;file-list&quot; id=&quot;fileList&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;list-summary&quot; id=&quot;listSummary&quot; style=&quot;display:none&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;undo-row&quot; id=&quot;undoRow&quot; style=&quot;display:none&quot;&gt;
        &lt;button class=&quot;btn-sm&quot; id=&quot;btnUndo&quot; onclick=&quot;undo()&quot; disabled&gt;← 이전&lt;/button&gt;
        &lt;button class=&quot;btn-sm&quot; id=&quot;btnRedo&quot; onclick=&quot;redo()&quot; disabled&gt;다음 →&lt;/button&gt;
        &lt;span class=&quot;undo-hint&quot; id=&quot;undoHint&quot;&gt;&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- SECTION 2: 간지 선택 --&gt;
  &lt;div class=&quot;section-card collapsed&quot; id=&quot;cardDivider&quot;&gt;
    &lt;div class=&quot;sec-header collapsible&quot; onclick=&quot;toggleSection('cardDivider')&quot;&gt;
      &lt;div class=&quot;sec-num&quot;&gt;2&lt;/div&gt;
      &lt;span class=&quot;sec-title&quot;&gt;간지 선택&lt;/span&gt;
      &lt;span class=&quot;sec-sub&quot;&gt;파일 사이에 삽입될 구분 페이지&lt;/span&gt;
      &lt;span class=&quot;sec-chevron&quot;&gt;▾&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&quot;sec-body&quot;&gt;
      &lt;div class=&quot;divider-grid&quot; id=&quot;dividerGrid&quot;&gt;&lt;/div&gt;
      &lt;div class=&quot;pages-row&quot;&gt;
        &lt;label for=&quot;divPages&quot;&gt;간지 장수&lt;/label&gt;
        &lt;input type=&quot;number&quot; id=&quot;divPages&quot; class=&quot;pages-input&quot; value=&quot;3&quot; min=&quot;1&quot; max=&quot;10&quot; onchange=&quot;applyDividers()&quot;&gt;
        &lt;span style=&quot;font-size:12px;color:var(--gray-400)&quot;&gt;장 / 파일 사이마다 삽입 (기본 3장)&lt;/span&gt;
      &lt;/div&gt;
      &lt;div class=&quot;orient-row&quot; id=&quot;divOrientRow&quot; style=&quot;margin-top:14px&quot;&gt;
        &lt;span class=&quot;orient-title&quot;&gt;간지틀&lt;/span&gt;
        &lt;div class=&quot;orient-btns&quot;&gt;
          &lt;button type=&quot;button&quot; class=&quot;orient-btn selected&quot; data-orient=&quot;landscape&quot; onclick=&quot;setDivOrient('landscape')&quot;&gt;가로&lt;/button&gt;
          &lt;button type=&quot;button&quot; class=&quot;orient-btn&quot; data-orient=&quot;portrait&quot; onclick=&quot;setDivOrient('portrait')&quot;&gt;세로&lt;/button&gt;
        &lt;/div&gt;
        &lt;span style=&quot;font-size:12px;color:var(--gray-400)&quot;&gt;간지 배경 방향 (기본 가로)&lt;/span&gt;
      &lt;/div&gt;
      &lt;div class=&quot;notice&quot; style=&quot;margin-top:14px&quot;&gt;
        &lt;strong&gt;사용법:&lt;/strong&gt; 간지 스타일을 선택하면 위 파일 목록에 자동으로 삽입됩니다. 아무 것도 고르지 않으면 &lt;strong&gt;카운트다운(3→2→1)&lt;/strong&gt; 스타일이 기본 적용됩니다.&lt;br&gt;
        간지 아이템도 드래그로 순서 변경·삭제가 가능합니다. 중간에 빠진 순번이 있어도 미리보기는 정상 표시됩니다.
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- SECTION 3: 옵션 --&gt;
  &lt;div class=&quot;section-card&quot; id=&quot;cardOptions&quot;&gt;
    &lt;div class=&quot;sec-header collapsible&quot; onclick=&quot;toggleSection('cardOptions')&quot;&gt;
      &lt;div class=&quot;sec-num&quot;&gt;3&lt;/div&gt;
      &lt;span class=&quot;sec-title&quot;&gt;옵션 설정&lt;/span&gt;
      &lt;span class=&quot;sec-sub&quot;&gt;표지 · 간지색 · 화질 · 출력형식 · 파일명&lt;/span&gt;
      &lt;span class=&quot;sec-chevron&quot;&gt;▾&lt;/span&gt;
    &lt;/div&gt;
    &lt;div class=&quot;sec-body&quot;&gt;

      &lt;!-- 페이지(캔버스) 크기 일치 --&gt;
      &lt;div class=&quot;opt-group&quot;&gt;
        &lt;div class=&quot;opt-label&quot;&gt;페이지 크기 일치 &lt;span style=&quot;font-weight:400;color:var(--gray-400)&quot;&gt;(PPT 캔버스 크기 통일)&lt;/span&gt;&lt;/div&gt;
        &lt;div class=&quot;toggle-wrap&quot; onclick=&quot;toggleMatchSize()&quot;&gt;
          &lt;div class=&quot;toggle&quot; id=&quot;matchSizeToggle&quot;&gt;&lt;/div&gt;
          &lt;span class=&quot;toggle-text&quot;&gt;모든 페이지 크기를 하나로 맞추기&lt;/span&gt;
        &lt;/div&gt;
        &lt;div style=&quot;font-size:11px;color:var(--gray-400);margin-top:6px;line-height:1.7&quot;&gt;
          PPT마다 슬라이드(페이지) 크기가 달라 취합 시 페이지마다 크기가 들쭉날쭉할 수 있습니다.&lt;br&gt;
          켜두면 위 '간지틀'에서 고른 방향(가로/세로) 기준 크기로 모든 페이지를 여백 없이 맞춰 통일합니다.
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;!-- 표지 --&gt;
      &lt;div class=&quot;opt-group&quot;&gt;
        &lt;div class=&quot;opt-label&quot;&gt;표지 (첫 페이지)&lt;/div&gt;
        &lt;div class=&quot;toggle-wrap&quot; onclick=&quot;toggleCover()&quot;&gt;
          &lt;div class=&quot;toggle&quot; id=&quot;coverToggle&quot;&gt;&lt;/div&gt;
          &lt;span class=&quot;toggle-text&quot;&gt;표지 페이지 추가하기&lt;/span&gt;
        &lt;/div&gt;
        &lt;div class=&quot;sub-opt&quot; id=&quot;coverOpt&quot; style=&quot;display:none&quot;&gt;
          &lt;div style=&quot;font-size:12px;color:var(--gray-600);margin-bottom:6px&quot;&gt;표지에 표시될 제목 텍스트&lt;/div&gt;
          &lt;input type=&quot;text&quot; class=&quot;text-input&quot; id=&quot;coverText&quot; placeholder=&quot;예) 2024 경진대회 발표자료 모음집&quot;&gt;
          &lt;div class=&quot;orient-row&quot; style=&quot;margin-top:12px&quot;&gt;
            &lt;span class=&quot;orient-title&quot;&gt;표지 배경&lt;/span&gt;
            &lt;div class=&quot;orient-btns&quot;&gt;
              &lt;button type=&quot;button&quot; class=&quot;orient-btn selected&quot; data-orient=&quot;landscape&quot; onclick=&quot;setCoverOrient('landscape')&quot;&gt;가로&lt;/button&gt;
              &lt;button type=&quot;button&quot; class=&quot;orient-btn&quot; data-orient=&quot;portrait&quot; onclick=&quot;setCoverOrient('portrait')&quot;&gt;세로&lt;/button&gt;
            &lt;/div&gt;
            &lt;span style=&quot;font-size:12px;color:var(--gray-400)&quot;&gt;기본 가로&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;!-- 간지 배경색 --&gt;
      &lt;div class=&quot;opt-group&quot;&gt;
        &lt;div class=&quot;opt-label&quot;&gt;간지 배경색&lt;/div&gt;
        &lt;div class=&quot;swatches&quot; id=&quot;swatches&quot;&gt;
          &lt;div class=&quot;swatch selected&quot; style=&quot;background:#ffffff;border:3px solid var(--blue);box-shadow:0 0 0 1px #e2e8f0&quot; data-color=&quot;#ffffff&quot; title=&quot;화이트 (기본)&quot;&gt;&lt;/div&gt;
          &lt;div class=&quot;swatch&quot; style=&quot;background:#f0f4ff&quot; data-color=&quot;#f0f4ff&quot; title=&quot;연한 파랑&quot;&gt;&lt;/div&gt;
          &lt;div class=&quot;swatch&quot; style=&quot;background:#f0fdf4&quot; data-color=&quot;#f0fdf4&quot; title=&quot;연한 초록&quot;&gt;&lt;/div&gt;
          &lt;div class=&quot;swatch&quot; style=&quot;background:#fefce8&quot; data-color=&quot;#fefce8&quot; title=&quot;연한 노랑&quot;&gt;&lt;/div&gt;
          &lt;div class=&quot;swatch&quot; style=&quot;background:#fff1f2&quot; data-color=&quot;#fff1f2&quot; title=&quot;연한 핑크&quot;&gt;&lt;/div&gt;
          &lt;div class=&quot;swatch&quot; style=&quot;background:#f5f3ff&quot; data-color=&quot;#f5f3ff&quot; title=&quot;연한 보라&quot;&gt;&lt;/div&gt;
          &lt;div class=&quot;swatch&quot; style=&quot;background:#1e293b&quot; data-color=&quot;#1e293b&quot; title=&quot;다크 네이비&quot;&gt;&lt;/div&gt;
          &lt;div class=&quot;swatch&quot; style=&quot;background:#1a1a1a&quot; data-color=&quot;#1a1a1a&quot; title=&quot;블랙&quot;&gt;&lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;!-- 화질/용량 --&gt;
      &lt;div class=&quot;opt-group&quot;&gt;
        &lt;div class=&quot;opt-label&quot;&gt;이미지 화질 / 용량 조절&lt;/div&gt;
        &lt;div class=&quot;quality-block&quot;&gt;
          &lt;div class=&quot;quality-slider-row&quot;&gt;
            &lt;span style=&quot;font-size:12px;color:var(--gray-400)&quot;&gt;저화질&lt;/span&gt;
            &lt;input type=&quot;range&quot; id=&quot;qualSlider&quot; min=&quot;1&quot; max=&quot;3&quot; value=&quot;2&quot; step=&quot;1&quot; oninput=&quot;updateQuality()&quot;&gt;
            &lt;span style=&quot;font-size:12px;color:var(--gray-400)&quot;&gt;고화질&lt;/span&gt;
            &lt;span class=&quot;q-label&quot; id=&quot;qLabel&quot;&gt;보통&lt;/span&gt;
          &lt;/div&gt;
          &lt;div class=&quot;quality-info&quot;&gt;
            &lt;div style=&quot;display:flex;justify-content:space-between;font-size:11px;color:var(--gray-400)&quot;&gt;
              &lt;span&gt;화질&lt;/span&gt;&lt;span id=&quot;qPct&quot;&gt;75%&lt;/span&gt;
            &lt;/div&gt;
            &lt;div class=&quot;q-bar-wrap&quot;&gt;&lt;div class=&quot;q-bar&quot; id=&quot;qBar&quot; style=&quot;width:75%&quot;&gt;&lt;/div&gt;&lt;/div&gt;
            예상 크기: 원본 대비 &lt;strong id=&quot;qRatio&quot;&gt;약 60%&lt;/strong&gt; · 권장 용도: &lt;span id=&quot;qUse&quot;&gt;일반 발표·이메일 공유&lt;/span&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;!-- 출력 형식 --&gt;
      &lt;div class=&quot;opt-group&quot;&gt;
        &lt;div class=&quot;opt-label&quot;&gt;출력 파일 형식&lt;/div&gt;
        &lt;div class=&quot;opt-row&quot;&gt;
          &lt;select class=&quot;select-input&quot; id=&quot;outFormat&quot; onchange=&quot;updateSizeEst()&quot;&gt;
            &lt;option value=&quot;pdf&quot; selected&gt;  PDF (권장 · 모든 환경 호환)&lt;/option&gt;
            &lt;option value=&quot;pdf_a4&quot;&gt;  PDF / A4 강제 변환&lt;/option&gt;
          &lt;/select&gt;
          &lt;span style=&quot;font-size:12px;color:var(--gray-400)&quot;&gt;기본값: PDF&lt;/span&gt;
        &lt;/div&gt;
        &lt;div style=&quot;font-size:11px;color:var(--gray-400);margin-top:6px&quot;&gt;
          ※ PPT·DOCX 직접 출력은 서버 변환이 필요합니다. 브라우저에서는 PDF 취합만 완벽 지원됩니다.
        &lt;/div&gt;
      &lt;/div&gt;

      &lt;!-- 파일명 --&gt;
      &lt;div class=&quot;opt-group&quot;&gt;
        &lt;div class=&quot;opt-label&quot;&gt;최종 파일명&lt;/div&gt;
        &lt;div class=&quot;opt-row&quot;&gt;
          &lt;input type=&quot;text&quot; class=&quot;text-input&quot; id=&quot;finalName&quot; placeholder=&quot;예) 2024_경진대회_최종취합본&quot; style=&quot;flex:1&quot;&gt;
          &lt;span style=&quot;font-size:13px;color:var(--gray-600);white-space:nowrap&quot; id=&quot;extLabel&quot;&gt;.pdf&lt;/span&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;
  &lt;/div&gt;

  &lt;!-- SUBMIT --&gt;
  &lt;div class=&quot;submit-section&quot;&gt;
    &lt;div class=&quot;size-preview&quot; id=&quot;sizePreview&quot;&gt;파일을 추가하면 예상 용량이 표시됩니다&lt;/div&gt;&lt;br&gt;
    &lt;button class=&quot;btn-merge&quot; id=&quot;btnMerge&quot; onclick=&quot;startMerge()&quot;&gt;
      &lt;span&gt; &lt;/span&gt; 취합 시작하기
    &lt;/button&gt;
    &lt;div class=&quot;merge-hint&quot;&gt;클릭 시 브라우저에서 직접 처리 후 자동 다운로드됩니다&lt;/div&gt;
    &lt;div class=&quot;progress-wrap&quot; id=&quot;progressWrap&quot;&gt;
      &lt;div class=&quot;progress-bar-bg&quot;&gt;&lt;div class=&quot;progress-bar&quot; id=&quot;progBar&quot;&gt;&lt;/div&gt;&lt;/div&gt;
      &lt;div class=&quot;progress-text&quot; id=&quot;progText&quot;&gt;처리 중...&lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;

  &lt;div class=&quot;app-footer&quot;&gt;※ 모든 파일은 브라우저 내에서만 처리되며 서버로 전송되지 않습니다&lt;/div&gt;

&lt;/div&gt;&lt;!-- /app-wrap --&gt;

&lt;script&gt;
/* ============================================================
   STATE
   ============================================================ */
let files = [];          // { id, name, size, ext, type:'file'|'divider', rawFile?, divStyle?, fromIdx?, toIdx?, pageNum?, totalPages? }
let history = [[]];
let histIdx = 0;
let selDivStyle = 'countdown';   // 기본값: 카운트다운(3→2→1) 스타일
let divBgColor = '#ffffff';
let useCover = false;
let divOrientation = 'landscape';   // 간지틀: 'landscape'(가로,기본) | 'portrait'(세로)
let coverOrientation = 'landscape'; // 표지 배경: 'landscape'(가로,기본) | 'portrait'(세로)
let matchPageSize = false;          // 페이지 크기(캔버스) 일치 옵션

function getPageSize(orientation){
  return orientation==='portrait' ? [595,842] : [842,595];
}

/* ============================================================
   DIVIDER DEFINITIONS
   ============================================================ */
const DIVIDERS = [
  { id:'arrow-h',   label:'가로 화살표형',      make: makeDivArrowH   },
  { id:'arrow-v',   label:'세로 화살표형',      make: makeDivArrowV   },
  { id:'chevron',   label:'계층형 (장식)',      make: makeDivChevron  },
  { id:'line',      label:'단순 구분선',        make: makeDivLine     },
  { id:'circle',    label:'원형 번호',          make: makeDivCircle   },
  { id:'countdown', label:'카운트다운 (3→2→1)', make: makeDivCountdown },
];

function makeDivArrowH(from,to,p,total){
  const arrows='&gt;'.repeat(total-p+1);
  return `&lt;div style=&quot;display:flex;flex-direction:column;align-items:center;justify-content:center;height:80px;gap:4px&quot;&gt;
    &lt;div style=&quot;font-size:15px;font-weight:900;color:#1a1a1a&quot;&gt;${from}&lt;/div&gt;
    &lt;div style=&quot;font-size:13px;color:#2563eb;letter-spacing:-1px;font-weight:700&quot;&gt;${arrows}&lt;/div&gt;
    &lt;div style=&quot;font-size:15px;font-weight:900;color:#1a1a1a&quot;&gt;${to}&lt;/div&gt;
  &lt;/div&gt;`;
}
function makeDivArrowV(from,to,p,total){
  const chevs='∨'.repeat(total-p+1);
  return `&lt;div style=&quot;display:flex;flex-direction:column;align-items:center;justify-content:center;height:80px;gap:3px&quot;&gt;
    &lt;div style=&quot;font-size:13px;font-weight:900;color:#1a1a1a&quot;&gt;${from}&lt;/div&gt;
    &lt;div style=&quot;font-size:12px;color:#2563eb;letter-spacing:2px&quot;&gt;${chevs}&lt;/div&gt;
    &lt;div style=&quot;font-size:13px;font-weight:900;color:#1a1a1a&quot;&gt;${to}&lt;/div&gt;
  &lt;/div&gt;`;
}
function makeDivChevron(from,to,p,total){
  return `&lt;div style=&quot;display:flex;flex-direction:column;align-items:center;justify-content:center;height:80px;gap:2px&quot;&gt;
    &lt;div style=&quot;font-size:9px;color:#94a3b8;letter-spacing:4px&quot;&gt;∨ ∨ ∨&lt;/div&gt;
    &lt;div style=&quot;font-size:9px;color:#64748b;letter-spacing:4px&quot;&gt; ∨ ∨ &lt;/div&gt;
    &lt;div style=&quot;font-size:9px;color:#334155;letter-spacing:4px&quot;&gt;  ∨  &lt;/div&gt;
  &lt;/div&gt;`;
}
function makeDivLine(from,to,p,total){
  return `&lt;div style=&quot;display:flex;flex-direction:column;align-items:center;justify-content:center;height:80px;gap:6px&quot;&gt;
    &lt;div style=&quot;width:64px;height:2px;background:#2563eb;border-radius:1px&quot;&gt;&lt;/div&gt;
    &lt;div style=&quot;font-size:12px;font-weight:700;color:#1a1a1a&quot;&gt;${from} → ${to}&lt;/div&gt;
    &lt;div style=&quot;width:44px;height:1px;background:#e2e8f0;border-radius:1px&quot;&gt;&lt;/div&gt;
  &lt;/div&gt;`;
}
function makeDivCircle(from,to,p,total){
  return `&lt;div style=&quot;display:flex;align-items:center;justify-content:center;gap:8px;height:80px&quot;&gt;
    &lt;div style=&quot;width:28px;height:28px;border-radius:50%;background:#2563eb;color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700&quot;&gt;${from}&lt;/div&gt;
    &lt;div style=&quot;font-size:16px;color:#94a3b8&quot;&gt;→&lt;/div&gt;
    &lt;div style=&quot;width:28px;height:28px;border-radius:50%;border:2px solid #2563eb;color:#2563eb;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700&quot;&gt;${to}&lt;/div&gt;
  &lt;/div&gt;`;
}
function makeDivCountdown(from,to,p,total){
  const cnt = total-p+1; // 3 → 2 → 1 순서로 감소
  return `&lt;div style=&quot;display:flex;align-items:center;justify-content:center;height:80px&quot;&gt;
    &lt;div style=&quot;font-size:42px;font-weight:900;color:#2563eb;letter-spacing:-1px&quot;&gt;${cnt}&lt;/div&gt;
  &lt;/div&gt;`;
}

/* ============================================================
   INIT
   ============================================================ */
function init(){
  buildDividerGrid();
  document.querySelectorAll('.swatch').forEach(s=&gt;{
    s.addEventListener('click',()=&gt;pickColor(s));
  });
  document.getElementById('outFormat').addEventListener('change',()=&gt;{
    document.getElementById('extLabel').textContent =
      document.getElementById('outFormat').value==='pdf'||document.getElementById('outFormat').value==='pdf_a4' ? '.pdf' : '.pdf';
    updateSizeEst();
  });
}

function buildDividerGrid(){
  const grid=document.getElementById('dividerGrid');
  grid.innerHTML='';
  DIVIDERS.forEach(d=&gt;{
    const card=document.createElement('div');
    card.className='div-card'+(d.id===selDivStyle?' selected':'');
    card.dataset.id=d.id;
    card.innerHTML=`&lt;div class=&quot;div-preview&quot;&gt;${d.make(1,2,1,3)}&lt;/div&gt;&lt;div class=&quot;div-label&quot;&gt;${d.label}&lt;/div&gt;`;
    card.addEventListener('click',()=&gt;selectDivStyle(d.id));
    grid.appendChild(card);
  });
}

/* ============================================================
   FILE HANDLING
   ============================================================ */
const dropZone=document.getElementById('dropZone');
const fileInput=document.getElementById('fileInput');
const ALLOWED=['pdf','ppt','pptx','doc','docx','jpg','jpeg','png','gif','bmp','webp'];

dropZone.addEventListener('dragover',e=&gt;{e.preventDefault();dropZone.classList.add('over')});
dropZone.addEventListener('dragleave',()=&gt;dropZone.classList.remove('over'));
dropZone.addEventListener('drop',e=&gt;{
  e.preventDefault();dropZone.classList.remove('over');
  addFiles([...e.dataTransfer.files]);
});
fileInput.addEventListener('change',e=&gt;{addFiles([...e.target.files]);e.target.value='';});

function getExt(name){return(name.match(/\.([^.]+)$/)||['',''])[1].toLowerCase()}

function addFiles(newFs){
  const valid=newFs.filter(f=&gt;ALLOWED.includes(getExt(f.name)));
  if(!valid.length) return;
  const pureCurrent=files.filter(f=&gt;f.type==='file');
  const merged=[...pureCurrent,...valid.map(f=&gt;({
    id:crypto.randomUUID(),name:f.name,size:f.size,ext:getExt(f.name),
    type:'file',rawFile:f,lastModified:f.lastModified
  }))].sort((a,b)=&gt;a.name.localeCompare(b.name,'ko'));
  const withDiv=injectDividers(merged);
  pushHistory(withDiv);
  renderList();
}

function injectDividers(pureList){
  if(!selDivStyle||pureList.length&lt;2) return pureList;
  const pages=parseInt(document.getElementById('divPages').value)||3;
  const out=[];
  pureList.forEach((f,i)=&gt;{
    out.push(f);
    if(i&lt;pureList.length-1){
      for(let p=1;p&lt;=pages;p++){
        out.push({
          id:crypto.randomUUID(),
          name:`간지 ${i+1}→${i+2} (${p}/${pages}p)`,
          type:'divider',divStyle:selDivStyle,
          fromIdx:i+1,toIdx:i+2,pageNum:p,totalPages:pages
        });
      }
    }
  });
  return out;
}

/* ============================================================
   RENDER FILE LIST
   ============================================================ */
function renderList(){
  const list=document.getElementById('fileList');
  const summary=document.getElementById('listSummary');
  const undoRow=document.getElementById('undoRow');
  list.innerHTML='';
  if(files.length===0){summary.style.display='none';undoRow.style.display='none';updateSizeEst();return;}
  summary.style.display='block';
  undoRow.style.display='flex';
  files.forEach((f,i)=&gt;{
    const el=document.createElement('div');
    el.className='file-item'+(f.type==='divider'?' is-divider':'');
    el.draggable=true;
    el.dataset.idx=i;
    const ext=f.type==='divider'?'간지':f.ext;
    const extCls=f.type==='divider'?'ext-div':getExtCls(f.ext);
    const meta=f.type==='divider'
      ?`${DIVIDERS.find(d=&gt;d.id===f.divStyle)?.label||f.divStyle}`
      :formatBytes(f.size)+(f.lastModified?' · '+new Date(f.lastModified).toLocaleDateString('ko-KR'):'');
    el.innerHTML=`
      &lt;span class=&quot;drag-handle&quot; title=&quot;드래그하여 순서 변경&quot;&gt;⠿&lt;/span&gt;
      &lt;span class=&quot;ext-badge ${extCls}&quot;&gt;${ext.toUpperCase()}&lt;/span&gt;
      &lt;span class=&quot;file-name&quot;&gt;${f.name}&lt;/span&gt;
      &lt;span class=&quot;file-meta&quot;&gt;${meta}&lt;/span&gt;
      &lt;span class=&quot;file-del&quot; title=&quot;삭제&quot; onclick=&quot;removeItem(${i})&quot;&gt;×&lt;/span&gt;`;
    el.addEventListener('dragstart',onDragStart);
    el.addEventListener('dragover', onDragOver);
    el.addEventListener('drop',     onDrop);
    el.addEventListener('dragend',  onDragEnd);
    list.appendChild(el);
  });
  const fc=files.filter(f=&gt;f.type==='file').length;
  const dc=files.filter(f=&gt;f.type==='divider').length;
  summary.textContent=`파일 ${fc}개 · 간지 ${dc}장 · 총 ${files.length}개 항목`;
  updateUndo();
  updateSizeEst();
}

function getExtCls(ext){
  if(['jpg','jpeg','png','gif','bmp','webp'].includes(ext)) return 'ext-img';
  if(['doc','docx'].includes(ext)) return 'ext-doc';
  if(['ppt','pptx'].includes(ext)) return 'ext-ppt';
  if(ext==='pdf') return 'ext-pdf';
  return '';
}
function formatBytes(b){
  if(!b&amp;&amp;b!==0) return '-';
  if(b&lt;1024) return b+'B';
  if(b&lt;1048576) return (b/1024).toFixed(1)+'KB';
  return (b/1048576).toFixed(1)+'MB';
}

/* ============================================================
   DRAG &amp; DROP REORDER
   ============================================================ */
let dragSrc=null;
function onDragStart(e){dragSrc=+e.currentTarget.dataset.idx;e.currentTarget.classList.add('dragging')}
function onDragEnd(e){e.currentTarget.classList.remove('dragging');document.querySelectorAll('.file-item').forEach(el=&gt;el.classList.remove('drag-over'))}
function onDragOver(e){e.preventDefault();e.currentTarget.classList.add('drag-over')}
function onDrop(e){
  e.preventDefault();
  document.querySelectorAll('.file-item').forEach(el=&gt;el.classList.remove('drag-over'));
  const dest=+e.currentTarget.dataset.idx;
  if(dragSrc===null||dragSrc===dest) return;
  const arr=[...files];
  const [moved]=arr.splice(dragSrc,1);
  arr.splice(dest,0,moved);
  pushHistory(arr);
  renderList();
}

/* ============================================================
   REMOVE ITEM
   ============================================================ */
function removeItem(i){
  const arr=[...files];arr.splice(i,1);
  pushHistory(arr);renderList();
}

/* ============================================================
   HISTORY (UNDO/REDO)
   ============================================================ */
function pushHistory(state){
  history=history.slice(0,histIdx+1);
  history.push(state.map(f=&gt;({...f})));
  histIdx=history.length-1;
  files=[...history[histIdx].map(f=&gt;({...f}))];
}
function undo(){if(histIdx&gt;0){histIdx--;files=history[histIdx].map(f=&gt;({...f}));renderList();}}
function redo(){if(histIdx&lt;history.length-1){histIdx++;files=history[histIdx].map(f=&gt;({...f}));renderList();}}
function updateUndo(){
  document.getElementById('btnUndo').disabled=histIdx&lt;=0;
  document.getElementById('btnRedo').disabled=histIdx&gt;=history.length-1;
  document.getElementById('undoHint').textContent=`기록 ${histIdx} / ${history.length-1}`;
}

/* ============================================================
   DIVIDER STYLE SELECT
   ============================================================ */
function selectDivStyle(id){
  selDivStyle=id;
  document.querySelectorAll('.div-card').forEach(c=&gt;c.classList.toggle('selected',c.dataset.id===id));
  applyDividers();
}

function applyDividers(){
  if(!selDivStyle) return;
  const pure=files.filter(f=&gt;f.type==='file');
  const withDiv=injectDividers(pure);
  pushHistory(withDiv);
  renderList();
}

/* ============================================================
   OPTIONS
   ============================================================ */
function toggleCover(){
  useCover=!useCover;
  document.getElementById('coverToggle').classList.toggle('on',useCover);
  document.getElementById('coverOpt').style.display=useCover?'block':'none';
}

/* ===== 섹션 접기/펴기 ===== */
function toggleSection(cardId){
  document.getElementById(cardId).classList.toggle('collapsed');
}

/* ===== 간지틀 / 표지 배경 방향 ===== */
function setDivOrient(o){
  divOrientation=o;
  document.querySelectorAll('#divOrientRow .orient-btn').forEach(b=&gt;b.classList.toggle('selected',b.dataset.orient===o));
}
function setCoverOrient(o){
  coverOrientation=o;
  document.querySelectorAll('#coverOpt .orient-btn').forEach(b=&gt;b.classList.toggle('selected',b.dataset.orient===o));
}

/* ===== 페이지 크기(캔버스) 일치 ===== */
function toggleMatchSize(){
  matchPageSize=!matchPageSize;
  document.getElementById('matchSizeToggle').classList.toggle('on',matchPageSize);
}

function pickColor(el){
  document.querySelectorAll('.swatch').forEach(s=&gt;s.classList.remove('selected'));
  el.classList.add('selected');
  divBgColor=el.dataset.color;
}

function updateQuality(){
  const v=+document.getElementById('qualSlider').value;
  const labels=['저화질','보통','고화질'];
  const pcts=[40,75,95];
  const ratios=['약 30%','약 60%','약 90%'];
  const uses=['이메일 전송·업로드용','일반 발표·공유용','인쇄·고품질용'];
  document.getElementById('qLabel').textContent=labels[v-1];
  document.getElementById('qPct').textContent=pcts[v-1]+'%';
  document.getElementById('qBar').style.width=pcts[v-1]+'%';
  document.getElementById('qRatio').textContent=ratios[v-1];
  document.getElementById('qUse').textContent=uses[v-1];
  updateSizeEst();
}

function updateSizeEst(){
  const total=files.filter(f=&gt;f.type==='file').reduce((s,f)=&gt;s+(f.size||0),0);
  const v=+document.getElementById('qualSlider').value;
  const mult=[0.3,0.6,0.9][v-1];
  const est=total*mult;
  const fc=files.filter(f=&gt;f.type==='file').length;
  const dc=files.filter(f=&gt;f.type==='divider').length;
  if(total&gt;0){
    document.getElementById('sizePreview').textContent=
      `파일 ${fc}개 + 간지 ${dc}장 → 예상 파일 크기: 약 ${formatBytes(est)}`;
  } else {
    document.getElementById('sizePreview').textContent='파일을 추가하면 예상 용량이 표시됩니다';
  }
}

/* ============================================================
   MERGE (PDF-LIB)
   ============================================================ */
async function startMerge(){
  const pureFiles=files.filter(f=&gt;f.type==='file');
  if(pureFiles.length&lt;1){alert('파일을 1개 이상 추가해주세요.');return;}

  const btn=document.getElementById('btnMerge');
  const progWrap=document.getElementById('progressWrap');
  const progBar=document.getElementById('progBar');
  const progText=document.getElementById('progText');

  btn.disabled=true;
  progWrap.style.display='block';
  setProgress(0,'준비 중...');

  try{
    const { PDFDocument, rgb, StandardFonts } = PDFLib;
    const mergedPdf=await PDFDocument.create();
    const qualVal=+document.getElementById('qualSlider').value;
    const jpegQ=[0.3,0.6,0.9][qualVal-1];
    // 페이지 크기 일치 옵션: 켜져 있으면 '간지틀' 방향 기준 크기로 모든 페이지를 통일
    const targetSize = matchPageSize ? getPageSize(divOrientation) : null;

    // ── 폰트는 ASCII 전용 StandardFonts만 사용 ──
    // 한글·특수문자는 Canvas → PNG → embedPng 로 처리
    async function textToImageBytes(lines, opts={}){
      const {
        bgColor='#ffffff', textColor='#111111', accentColor='#2563eb',
        width=595, height=842, fontSize=32, lineGap=14
      } = opts;
      const canvas=document.createElement('canvas');
      canvas.width=width; canvas.height=height;
      const ctx=canvas.getContext('2d');
      ctx.fillStyle=bgColor;
      ctx.fillRect(0,0,width,height);
      if(opts.drawFn) opts.drawFn(ctx,width,height,accentColor,textColor);
      else{
        ctx.fillStyle=textColor;
        ctx.font=`bold ${fontSize}px sans-serif`;
        ctx.textAlign='center';
        let y=height/2-(lines.length-1)*(fontSize+lineGap)/2;
        lines.forEach(l=&gt;{ctx.fillText(l,width/2,y);y+=fontSize+lineGap;});
      }
      return new Promise(res=&gt;{
        canvas.toBlob(blob=&gt;blob.arrayBuffer().then(res),'image/png');
      });
    }

    // 표지 페이지
    if(useCover){
      const coverText=document.getElementById('coverText').value.trim()||'문서 취합본';
      const bgHex=divBgColor||'#ffffff';
      const isDark=isDarkColor(bgHex);
      const textClr=isDark?'#f0f0f0':'#111111';
      const [coverW,coverH]=targetSize || getPageSize(coverOrientation);
      const bytes=await textToImageBytes([],{
        bgColor:bgHex, textColor:textClr, accentColor:'#2563eb',
        width:coverW, height:coverH,
        drawFn:(ctx,w,h,ac,tc)=&gt;{
          const margin=w*0.1;
          // 배경
          ctx.fillStyle=bgHex; ctx.fillRect(0,0,w,h);
          // 상단 포인트 바
          ctx.fillStyle=ac; ctx.fillRect(margin,h*0.32,3,h*0.14);
          // 제목
          ctx.fillStyle=tc; ctx.font=`bold ${Math.round(h*0.053)}px sans-serif`;
          ctx.textAlign='left';
          // 줄바꿈 처리
          const words=coverText; const maxW=w-margin*2-16; let line=''; let y=h*0.39;
          const lineH=h*0.075;
          for(const ch of words){
            const test=line+ch;
            if(ctx.measureText(test).width&gt;maxW&amp;&amp;line){
              ctx.fillText(line,margin,y); line=ch; y+=lineH;
            } else line=test;
          }
          if(line) ctx.fillText(line,margin,y);
          // 구분선
          ctx.strokeStyle=ac; ctx.lineWidth=2;
          ctx.beginPath(); ctx.moveTo(margin,y+h*0.033); ctx.lineTo(w-margin,y+h*0.033); ctx.stroke();
          // 날짜
          const d=new Date().toLocaleDateString('ko-KR');
          ctx.fillStyle=isDark?'#aaaaaa':'#666666';
          ctx.font=`${Math.round(h*0.019)}px sans-serif`;
          ctx.fillText(d,margin,y+h*0.062);
        }
      });
      const img=await mergedPdf.embedPng(bytes);
      const page=mergedPdf.addPage([coverW,coverH]);
      page.drawImage(img,{x:0,y:0,width:coverW,height:coverH});
    }

    const total=files.length;
    let done=0;

    for(let i=0;i&lt;files.length;i++){
      const item=files[i];
      done=i+1;
      setProgress(Math.round(done/total*100),`처리 중 (${done}/${total}): ${item.name}`);
      await sleep(20);

      if(item.type==='divider'){
        // 간지 → Canvas로 그려서 PNG embed (특수문자·한글 완벽 지원)
        const bgHex=divBgColor||'#ffffff';
        const isDark=isDarkColor(bgHex);
        const textClr=isDark?'#f0f0f0':'#111111';
        const accentClr='#2563eb';
        const style=item.divStyle;
        const from=item.fromIdx, to=item.toIdx;
        const p=item.pageNum, tp=item.totalPages;
        const [divW,divH]=targetSize || getPageSize(divOrientation);

        const bytes=await textToImageBytes([],{
          bgColor:bgHex, textColor:textClr, accentColor:accentClr,
          width:divW, height:divH,
          drawFn:(ctx,w,h,ac,tc)=&gt;{
            ctx.fillStyle=bgHex; ctx.fillRect(0,0,w,h);
            const cx=w/2, cy=h/2;

            if(style==='arrow-h'){
              // 숫자
              ctx.fillStyle=tc; ctx.font='bold 52px sans-serif'; ctx.textAlign='center';
              ctx.fillText(String(from), cx, cy-60);
              ctx.fillText(String(to),   cx, cy+80);
              // &gt; 화살표 (장수만큼)
              const cnt=tp-p+1;
              const arrowStr='&gt;'.repeat(cnt);
              ctx.fillStyle=ac; ctx.font=`bold ${cnt&gt;2?28:34}px monospace`;
              ctx.fillText(arrowStr, cx, cy+10);

            } else if(style==='arrow-v'){
              // 위 숫자
              ctx.fillStyle=tc; ctx.font='bold 52px sans-serif'; ctx.textAlign='center';
              ctx.fillText(String(from), cx, cy-70);
              // V 화살표
              const cnt=tp-p+1;
              ctx.fillStyle=ac; ctx.font=`bold ${cnt&gt;2?26:30}px sans-serif`;
              for(let vi=0;vi&lt;cnt;vi++){
                ctx.fillText('V', cx, cy-20+(vi*36));
              }
              // 아래 숫자
              ctx.fillStyle=tc; ctx.font='bold 52px sans-serif';
              ctx.fillText(String(to), cx, cy-20+(cnt*36)+46);

            } else if(style==='chevron'){
              // 계층형 삼각 배치 (숫자 없음)
              ctx.fillStyle=ac; ctx.textAlign='center';
              const rows=['VVV','VV','V'];
              const sizes=[26,22,18];
              const colors=[ac,'#5b7fd4','#93a8e8'];
              rows.forEach((r,ri)=&gt;{
                ctx.fillStyle=colors[ri];
                ctx.font=`bold ${sizes[ri]}px monospace`;
                ctx.fillText(r, cx, cy-40+(ri*42));
              });

            } else if(style==='line'){
              // 구분선 스타일 (가로/세로 캔버스 모두 대응하도록 폭 비례 계산)
              const lineW1=w*0.5, lineW2=w*0.335;
              ctx.strokeStyle=ac; ctx.lineWidth=3;
              ctx.beginPath(); ctx.moveTo(cx-lineW1/2,cy-10); ctx.lineTo(cx+lineW1/2,cy-10); ctx.stroke();
              ctx.fillStyle=tc; ctx.font='bold 36px sans-serif'; ctx.textAlign='center';
              ctx.fillText(`${from}  -&gt;  ${to}`, cx, cy+36);
              ctx.strokeStyle='#c0cfe8'; ctx.lineWidth=1.5;
              ctx.beginPath(); ctx.moveTo(cx-lineW2/2,cy+55); ctx.lineTo(cx+lineW2/2,cy+55); ctx.stroke();

            } else if(style==='countdown'){
              // 카운트다운 스타일: 큰 숫자 하나만 중앙 표시 (3 → 2 → 1)
              const cnt=tp-p+1;
              ctx.fillStyle=ac; ctx.font='bold 160px sans-serif'; ctx.textAlign='center'; ctx.textBaseline='middle';
              ctx.fillText(String(cnt), cx, cy-10);
              ctx.textBaseline='alphabetic';

            } else if(style==='circle'){
              // 왼쪽 원 채움
              ctx.fillStyle=ac;
              ctx.beginPath(); ctx.arc(cx-60,cy,32,0,Math.PI*2); ctx.fill();
              ctx.fillStyle='#ffffff'; ctx.font='bold 26px sans-serif'; ctx.textAlign='center';
              ctx.fillText(String(from), cx-60, cy+9);
              // 화살표 선
              ctx.strokeStyle='#93c5fd'; ctx.lineWidth=2;
              ctx.beginPath(); ctx.moveTo(cx-22,cy); ctx.lineTo(cx+22,cy); ctx.stroke();
              // 오른쪽 원 테두리
              ctx.strokeStyle=ac; ctx.lineWidth=3;
              ctx.beginPath(); ctx.arc(cx+60,cy,30,0,Math.PI*2); ctx.stroke();
              ctx.fillStyle=ac; ctx.font='bold 26px sans-serif';
              ctx.fillText(String(to), cx+60, cy+9);

            }

            // 페이지 번호 (하단)
            ctx.fillStyle=isDark?'#888888':'#aaaaaa';
            ctx.font='14px sans-serif'; ctx.textAlign='center';
            ctx.fillText(`${p} / ${tp}`, cx, h-40);
          }
        });
        const img=await mergedPdf.embedPng(bytes);
        const page=mergedPdf.addPage([divW,divH]);
        page.drawImage(img,{x:0,y:0,width:divW,height:divH});
        continue;
      }

      // 파일 처리
      const ext=item.ext;
      if(ext==='pdf'){
        try{
          const bytes=await readFileAsArrayBuffer(item.rawFile);
          if(targetSize){
            // 페이지 크기 일치: 원본 페이지를 통일 크기 안에 여백 없이 꽉 채워 배치
            const [tw,th]=targetSize;
            const srcPdf=await PDFDocument.load(bytes,{ignoreEncryption:true});
            const embeddedPages=await mergedPdf.embedPdf(bytes,srcPdf.getPageIndices());
            embeddedPages.forEach(ep=&gt;{
              const scale=Math.min(tw/ep.width,th/ep.height); // 내용 잘림 없이 비율 유지하여 안에 맞춤
              const dw=ep.width*scale, dh=ep.height*scale;
              const pg=mergedPdf.addPage([tw,th]);
              pg.drawRectangle({x:0,y:0,width:tw,height:th,color:rgb(1,1,1)});
              pg.drawPage(ep,{x:(tw-dw)/2,y:(th-dh)/2,width:dw,height:dh});
            });
          } else {
            const srcPdf=await PDFDocument.load(bytes,{ignoreEncryption:true});
            const pageIndices=srcPdf.getPageIndices();
            const copied=await mergedPdf.copyPages(srcPdf,pageIndices);
            copied.forEach(pg=&gt;mergedPdf.addPage(pg));
          }
        }catch(e){
          console.warn('PDF 처리 오류:',item.name,e);
          const [ew,eh]=targetSize||[595,842];
          const errBytes=await textToImageBytes([],{
            bgColor:'#fff8f8', width:ew, height:eh,
            drawFn:(ctx,w,h)=&gt;{
              ctx.fillStyle='#fff8f8'; ctx.fillRect(0,0,w,h);
              ctx.fillStyle='#dc2626'; ctx.font='bold 18px sans-serif'; ctx.textAlign='center';
              ctx.fillText('[오류] 파일을 처리할 수 없습니다', w/2, h/2-30);
              ctx.fillStyle='#555555'; ctx.font='13px sans-serif';
              ctx.fillText(item.name, w/2, h/2+8);
              ctx.fillStyle='#888888'; ctx.font='12px sans-serif';
              ctx.fillText('암호화되거나 손상된 PDF일 수 있습니다', w/2, h/2+38);
            }
          });
          const errImg=await mergedPdf.embedPng(errBytes);
          const errPage=mergedPdf.addPage([ew,eh]);
          errPage.drawImage(errImg,{x:0,y:0,width:ew,height:eh});
        }
      } else if(['jpg','jpeg','png','gif','bmp','webp'].includes(ext)){
        try{
          const jpegBytes=await convertToJpeg(item.rawFile,jpegQ);
          const img=await mergedPdf.embedJpg(jpegBytes);
          const dims=img.scale(1);
          const [pw,ph]=targetSize||[595,842];
          const scale=Math.min(pw/dims.width,ph/dims.height,1);
          const dw=Math.round(dims.width*scale),dh=Math.round(dims.height*scale);
          const pg=mergedPdf.addPage([pw,ph]);
          pg.drawRectangle({x:0,y:0,width:pw,height:ph,color:rgb(1,1,1)});
          pg.drawImage(img,{x:(pw-dw)/2,y:(ph-dh)/2,width:dw,height:dh});
        }catch(e){
          console.warn('이미지 처리 오류:',item.name,e);
        }
      } else {
        // PPT/DOC 등 변환 불가 안내 페이지
        const [nw,nh]=targetSize||[595,842];
        const noticeBytes=await textToImageBytes([],{
          bgColor:'#fffbeb', width:nw, height:nh,
          drawFn:(ctx,w,h)=&gt;{
            ctx.fillStyle='#fffbeb'; ctx.fillRect(0,0,w,h);
            ctx.strokeStyle='#fde68a'; ctx.lineWidth=2;
            ctx.strokeRect(40,h/2-80,w-80,140);
            ctx.fillStyle='#92400e'; ctx.font='bold 17px sans-serif'; ctx.textAlign='center';
            ctx.fillText('[변환 불가] ' + item.name, w/2, h/2-40);
            ctx.fillStyle='#555555'; ctx.font='14px sans-serif';
            ctx.fillText('PPT / DOCX 형식은 브라우저에서 직접 변환이 어렵습니다.', w/2, h/2+4);
            ctx.fillText('PDF로 내보낸 후 다시 업로드 해주세요.', w/2, h/2+30);
          }
        });
        const noticeImg=await mergedPdf.embedPng(noticeBytes);
        const noticePage=mergedPdf.addPage([nw,nh]);
        noticePage.drawImage(noticeImg,{x:0,y:0,width:nw,height:nh});
      }
    } // end for loop

    setProgress(100,'파일 생성 중...');
    await sleep(100);
    const pdfBytes=await mergedPdf.save();
    const fname=(document.getElementById('finalName').value.trim()||'취합본')+'.pdf';
    download(pdfBytes,fname,'application/pdf');
    setProgress(100,'완료! 다운로드가 시작됩니다.');
    await sleep(1500);

  }catch(err){
    console.error('취합 오류:',err);
    alert('취합 중 오류가 발생했습니다.\n\n'+err.message);
  }finally{
    btn.disabled=false;
    setTimeout(()=&gt;{progWrap.style.display='none';setProgress(0,'');},2500);
  }
}

function setProgress(pct,text){
  document.getElementById('progBar').style.width=pct+'%';
  document.getElementById('progText').textContent=text;
}
function sleep(ms){return new Promise(r=&gt;setTimeout(r,ms))}

function readFileAsArrayBuffer(file){
  return new Promise((res,rej)=&gt;{
    const r=new FileReader();
    r.onload=e=&gt;res(e.target.result);
    r.onerror=rej;
    r.readAsArrayBuffer(file);
  });
}

function convertToJpeg(file,quality){
  return new Promise((res,rej)=&gt;{
    const url=URL.createObjectURL(file);
    const img=new Image();
    img.onload=()=&gt;{
      const c=document.createElement('canvas');
      c.width=img.naturalWidth;c.height=img.naturalHeight;
      c.getContext('2d').drawImage(img,0,0);
      c.toBlob(blob=&gt;{
        URL.revokeObjectURL(url);
        blob.arrayBuffer().then(res).catch(rej);
      },'image/jpeg',quality);
    };
    img.onerror=rej;
    img.src=url;
  });
}

function hexToRgb(hex){
  hex=hex.replace('#','');
  if(hex.length===3) hex=hex.split('').map(c=&gt;c+c).join('');
  const n=parseInt(hex,16);
  return [(n&gt;&gt;16&amp;255)/255,(n&gt;&gt;8&amp;255)/255,(n&amp;255)/255];
}
function isDarkColor(hex){
  const [r,g,b]=hexToRgb(hex);
  return (r*0.299+g*0.587+b*0.114)&lt;0.5;
}

/* ============================================================
   BOOT
   ============================================================ */
init();
&lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</description>
      <category>모두의계산기/PDF취합관련</category>
      <category>계산기</category>
      <category>모두</category>
      <category>자료취합</category>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/14</guid>
      <comments>https://0-1.kr/14#entry14comment</comments>
      <pubDate>Thu, 12 Nov 2020 13:47:08 +0900</pubDate>
    </item>
    <item>
      <title>모두의 00계산기 시리즈 활용</title>
      <link>https://0-1.kr/notice/12</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;모두의 계산기 시리즈들을 소개합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;모두의 계산기는 이런분들을 위해 만들었어요&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;모두의 00계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;a href=&quot;https://startupex.tistory.com/category/%EB%AA%A8%EB%91%90%EC%9D%98%EA%B3%84%EC%82%B0%EA%B8%B0&quot; target=&quot;_blank&quot; title=&quot;모두의계산기 모두보기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cvAJjM/dJMcadHIfPE/PnjJOPwcTRIGy3r5EcHVb0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcvAJjM%2FdJMcadHIfPE%2FPnjJOPwcTRIGy3r5EcHVb0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;200&quot; height=&quot;1024&quot; data-filename=&quot;모두의 00계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/a&gt;&lt;figcaption&gt;모두의계산기 모두보기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #006dd7;&quot;&gt;가입 X, 로그인X, 설치X, 개인정보X&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;모두의 계산기는 위의 4가지가 없어요&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이거 싫어하는 분들을 위해 만들었습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;접속쉽고, 링크짧고, 누구나 설치된 앱 중에&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인터넷 브라우저가 있죠.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;PC 또는 휴대폰과 약간의 기억력(?)만 있음&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;전세계 어디서나 사용이 가능합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;http? 없이 주소창에 [&lt;span style=&quot;color: #006dd7;&quot;&gt;0-1.kr]&lt;/span&gt; 만 쓰세요&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;서버없이 조금 번거로운 작업은 필요하지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;누구나 본인에 맞게 설정 후&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;사용할 수있게 해놨으니 맘껏 테스트하세요&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;꼭 개인용, 사업용이 필요하다면&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;연락주세요.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;***** 모든 정보들은 여러분의 장치에만 저장됩니다. *****&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #6164c6;&quot;&gt;(캐쉬삭제,공장초기화로 데이터가 삭제됩니다.)&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #ee2323;&quot;&gt;활용팁 1.&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;PC &amp;amp; 모바일을 통해 즐겨찾기 동기화(?)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;엄밀히 말하면 동기화는 아닙니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;PC 작업 후 즐겨찾기에 추가 시 모바일에서 작업 가능&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;단 동일 브라우저로 작업 시 가능. 반드시 저장 후 변경된 주소로 저장해야 활용가능&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;클라우드를 활용하기 어려운 곳에서 활용&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;구글 or 클라우드 미 가입자들이 은근 많음&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(크롬 및 웨일브라우저 추천)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;모바일 및 테블릿에 최적화&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;별도 설치없이 링크 접속만으로도 가능&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;짧은 링크라 외우기도 쉬움. 저장도 입력 시 항시저장됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;모두의 00계산기 모두보기&quot; href=&quot;https://0-1.kr/category/%EB%AA%A8%EB%91%90%EC%9D%98%EA%B3%84%EC%82%B0%EA%B8%B0&quot;&gt;모두의 땡땡 계산기 모두보기&lt;/a&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #22315b; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;1.모두의 채점계산기_V3(260211)&lt;/h2&gt;
&lt;figure data-ke-type=&quot;image&quot; data-ke-style=&quot;alignCenter&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-link=&quot;http://0-1.kr/85&quot; data-link-islinknewwindow=&quot;true&quot;&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1) 링크 : &lt;a title=&quot;모두의 채점계산기&quot; href=&quot;http://0-1.kr/85&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;0-1.kr/85&lt;/a&gt; &lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;[설명서 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a style=&quot;color: #0070d1; text-align: left;&quot; href=&quot;http://0-1.kr/77&quot;&gt;0-1.kr/77&lt;/a&gt;]&lt;/p&gt;
&lt;figure id=&quot;og_1773539023329&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;모두의채점계산기_V3(260211)&quot; data-og-description=&quot;모두의 채점계산기_V3(260211)   공장초기화 초기화 ⚠️ 점수입력값과 평가의견만 삭제됩니다.소속&amp;middot;성명&amp;middot;서식&amp;middot;대상자정보는 유지됩니다. 서식저장/주소복사   off URL복사   사용설명서 ▼ &quot; data-og-host=&quot;0-1.kr&quot; data-og-source-url=&quot;http://0-1.kr/85&quot; data-og-url=&quot;https://0-1.kr/85&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/5OTDl/dJMb9iaPMQo/vgvrsojPZsJkGvgbuHgXfK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/FZLuV/dJMb8Rj0zMo/DzwihjocbOBzjzOQYBdFK0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;http://0-1.kr/85&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://0-1.kr/85&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/5OTDl/dJMb9iaPMQo/vgvrsojPZsJkGvgbuHgXfK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/FZLuV/dJMb8Rj0zMo/DzwihjocbOBzjzOQYBdFK0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모두의채점계산기_V3(260211)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;모두의 채점계산기_V3(260211)   공장초기화 초기화 ⚠️ 점수입력값과 평가의견만 삭제됩니다.소속&amp;middot;성명&amp;middot;서식&amp;middot;대상자정보는 유지됩니다. 서식저장/주소복사   off URL복사   사용설명서 ▼&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;0-1.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2) 사유 : 평가가 잦고 평가항목이 다양한 기관에서 멀티탭 없이 태블릿(또는 휴대폰)으로 심플하고 공정한 심사를 하기 위해 만듦.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;3) 기능&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 태블릿에 최적화.(배터리 오래가는 태블릿이면 멀티탭없이 채점 가능할듯?)&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 채점항목을 자유롭게 수정하여 공유 가능.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;**수정한 서식을 배포 및 공유.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 각 채점자의 정보를 한페이지에서 쉽게 입력.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 입력값 전달 시 메일, 파일화 가능.(메일 내용 필수 확인요망)&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;기본서식 수정 후 공유 시 다소 긴 링크가 생성됩니다. 앞 링크는 0-1.kr로 시작되오니 이점 참고바랍니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;수정 후 서식을 각 채점자에게 공유하는 링크는 아래와 같아요. 테스트 한번 해보세요.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://0-1.kr/85?d=N4IgjiBcDaoHZRIDCHCoEwRhAGhAZytNTAJkwGZMAWTAVgF1sAXATwAcBTROAVwFsQBfTPESoiWXPhJUAbJgAcmNAAZ6IZu068BqhlGCCQHSCHEAbRMvEJj4gFaIBQA&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://0-1.kr/85?d=N4IgjiBcDaoHZRIDCHCoEwRhAGhAZytNTAJkwGZMAWTAVgF1sAXATwAcBTROAVwFsQBfTPESoiWXPhJUAbJgAcmNAAZ6IZu068BqhlGCCQHSCHEAbRMvEJj4gFaIBQA&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저 링크들을 줄여서 공유하셔도 됩니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/buTqCY/dJMcadHIfzi/EFyQLydT9RNavCYgKvhJkK/01.%EB%AA%A8%EB%91%90%EC%9D%98%20%EC%B1%84%EC%A0%90%EA%B3%84%EC%82%B0%EA%B8%B0%20V3_%EB%8B%B4%EB%8B%B9%EC%9E%90%EC%9A%A9.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;01.모두의 채점계산기 V3_담당자용.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.07MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/AIXIU/dJMcagxG7Be/QrxVjucOvMFiiR41JCpF21/02.%EB%AA%A8%EB%91%90%EC%9D%98%20%EC%B1%84%EC%A0%90%EA%B3%84%EC%82%B0%EA%B8%B0%20V3_%ED%8F%89%EA%B0%80%EC%9E%90%EC%9A%A9.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;02.모두의 채점계산기 V3_평가자용.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.06MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #22315b; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;2.모두의 간단메모계산기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 링크 : &lt;a href=&quot;https://0-1.kr/107&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;0-1.kr/107&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1773539772899&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;모두의 간단메모계산기(프롬프트제작기)&quot; data-og-description=&quot;  모두의 간단 메모계산기 드래그앤드롭 &amp;middot; 자동저장   공유가능 | ✏️ 프롬프트 편집기 |   카테고리   사용설명서 (클릭하여 펼치기) ▼   사용팁   활용   공유 ✏️ 편집기 웹으&quot; data-og-host=&quot;0-1.kr&quot; data-og-source-url=&quot;https://0-1.kr/107&quot; data-og-url=&quot;https://0-1.kr/107&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cS5XVG/dJMb89ycd0N/kNuiisapV8NNZ2lP82iOx1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dBveY6/dJMb9fZtYZ9/6Gclq2cgYoKNNkl2Ma8B8k/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://0-1.kr/107&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://0-1.kr/107&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cS5XVG/dJMb89ycd0N/kNuiisapV8NNZ2lP82iOx1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/dBveY6/dJMb9fZtYZ9/6Gclq2cgYoKNNkl2Ma8B8k/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모두의 간단메모계산기(프롬프트제작기)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;  모두의 간단 메모계산기 드래그앤드롭 &amp;middot; 자동저장   공유가능 | ✏️ 프롬프트 편집기 |   카테고리   사용설명서 (클릭하여 펼치기) ▼   사용팁   활용   공유 ✏️ 편집기 웹으&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;0-1.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;2) 사유 :&lt;span&gt; 뉴스를 보면서 프롬프트 쓰다 보니 내가 한 말들이 순서가 뒤죽박죽이고 중복되고 어이가 없더만요. 좀 체계적으로 정리해볼까해서 만들었어요. 근데 기자분들이 휴대폰을 보면서 기사를 읽더만요. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;작성도 쉽고 보기도 쉽고 읽기도 쉽고 한 메모장! 게다가 휴대폰으로도 쉽게 쓰는 간단메모장을 만들어 볼려고 만들었습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3) 기능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 문장마다 섹션을 나눠 작성. 섹션마다 구분이 쉽게 작성.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 섹션 이동 및 들여쓰기로 아이디어 정리 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 발표 기획 및 목차설정(아이디어단계), 강의준비 및 대본으로 활용, 프롬프트 작성기로 활용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 작성 후 리딩이 편한 전체보기 기능&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #22315b; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;3.모두의 출장계산기&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1) 링크 : &lt;a href=&quot;http://0-1.kr/91&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;0-1.kr/91&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1773539612279&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;모두의 출장계산기_V4(260217)&quot; data-og-description=&quot; ️ 출장계산기 V3 ️ 날씨    QR   즐겨찾기 0 / 0 완료   복사 ️ 초기화   기기저장   화면켜짐  자동저장 대기중 ＋ 섹션 추가 저장 복구 요약 카톡바로가기 메일  사용설&quot; data-og-host=&quot;0-1.kr&quot; data-og-source-url=&quot;http://0-1.kr/91&quot; data-og-url=&quot;https://0-1.kr/91&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hMouA/dJMb9jgvRIN/xcdwnuG9aCxfgxyPoxCKL0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/AbBgr/dJMb9jgvRIO/shKJZw4P6Mn8kMcpRFQ2k0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;http://0-1.kr/91&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://0-1.kr/91&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hMouA/dJMb9jgvRIN/xcdwnuG9aCxfgxyPoxCKL0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/AbBgr/dJMb9jgvRIO/shKJZw4P6Mn8kMcpRFQ2k0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모두의 출장계산기_V4(260217)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt; ️ 출장계산기 V3 ️ 날씨    QR   즐겨찾기 0 / 0 완료   복사 ️ 초기화   기기저장   화면켜짐  자동저장 대기중 ＋ 섹션 추가 저장 복구 요약 카톡바로가기 메일  사용설&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;0-1.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2) 사유 : 출장이 잦은 업무라 한달 출장을 미리 세팅하고자 제작. 용도에 따라 내비를 바꿔쓰는데 주소만 적으면 내비를 선택하고 싶어 제작함. 티비를 보는데 [틈만나면]에 유연석씨가 제가 초딩때 보물처럼 쓰던 자석 전화번호 메모지를 길게 작성해서 다니는 모습을 보고 한참 추억에 빠졌다가 유느님한테 혼나는 거 보고 만들어 봤습니다.ㅎ 혼나지 마시옵소서.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2) 활용팁 :&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 저장 후 공유 가능(동일 브라우저로) | 국내 스마트폰 네비 바로가기 연결가능.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 출장 시 마다 메모 및 체크리스트 저장 가능.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 여행 시 스케쥴 정리용으로도 활용가능.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 버튼 중 작동안하는 기능이 꽤 있으니 필요한 기능만 활용해 쓰세요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #22315b; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;4.모두의 내차어디 계산기&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1) 링크 :&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://0-1.kr/90&quot;&gt;0-1.kr/90&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1773543006769&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;모두의 내차어디 계산기_V2(260217)&quot; data-og-description=&quot;  모두의 내차어디 계산기 V2.0 &amp;middot; 자동저장 ⏱ 주차 경과시간 --:--:-- 저장된 주차 기록이 없습니다   복귀 예정까지 --:-- 예정시간 미설정 ⚠️ 공장초기화 (전체 데이터 삭제)   사용설명서 &quot; data-og-host=&quot;0-1.kr&quot; data-og-source-url=&quot;http://0-1.kr/90&quot; data-og-url=&quot;https://0-1.kr/90&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bJs9Ox/dJMb9cBGLaD/QBKjPwGqmd9w7RKcnLsGwK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/brt4RQ/dJMb9frD78y/CCxJgrvCYMZHx5k4dUMZG0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;http://0-1.kr/90&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://0-1.kr/90&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bJs9Ox/dJMb9cBGLaD/QBKjPwGqmd9w7RKcnLsGwK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/brt4RQ/dJMb9frD78y/CCxJgrvCYMZHx5k4dUMZG0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모두의 내차어디 계산기_V2(260217)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;  모두의 내차어디 계산기 V2.0 &amp;middot; 자동저장 ⏱ 주차 경과시간 --:--:-- 저장된 주차 기록이 없습니다   복귀 예정까지 --:-- 예정시간 미설정 ⚠️ 공장초기화 (전체 데이터 삭제)   사용설명서&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;0-1.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2) 사유 : 운전을 별로 안 좋아해서 차를 자주 방치하는데 내차가 어디 있는지..젤 짜증나는건 몇층에 주차한지 기억이 잘 안나서 만들었습니다. 경찰 부르기 전에 만들어야 겠다고 해서 만들었습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2) 활용팁 :&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 모든 항목은 필수가 아니니 원하는 기능만 입력.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 입력한 휴대폰 내에서 해당 주소만 클릭하면 입력값을 볼 수 있음.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;- 내위치 전송 기능으로도 활용가능.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #22315b; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;5.모두의 출첵계산기&lt;/h2&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;1) 링크 : &lt;a href=&quot;https://0-1.kr/95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;0-1.kr/95&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1773543200313&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;모두의 간단출첵계산기 엑셀버전_V1&quot; data-og-description=&quot;모두의 간단출첵2   해제A 고정 B까지C까지 D까지E까지   전체보기   데이터전송   구글시트 리셋 * 마우스 우클릭으로 행 추가/삭제가 가능합니다. 열 너비도 자유롭게 조절해보세요!   &quot; data-og-host=&quot;0-1.kr&quot; data-og-source-url=&quot;https://0-1.kr/95&quot; data-og-url=&quot;https://0-1.kr/95&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cwrhEt/dJMb8SXwqWx/rdHKKkaRkl0CQNKeeVELkK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/b9IMXA/dJMb8Zvz7ns/UnHkTmS3cEVWXO9KUg7mJk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://0-1.kr/95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://0-1.kr/95&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cwrhEt/dJMb8SXwqWx/rdHKKkaRkl0CQNKeeVELkK/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/b9IMXA/dJMb8Zvz7ns/UnHkTmS3cEVWXO9KUg7mJk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모두의 간단출첵계산기 엑셀버전_V1&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;모두의 간단출첵2   해제A 고정 B까지C까지 D까지E까지   전체보기   데이터전송   구글시트 리셋 * 마우스 우클릭으로 행 추가/삭제가 가능합니다. 열 너비도 자유롭게 조절해보세요!  &lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;0-1.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2) 사유 : 발표장에서 대기실에 있는 분들이 폰으로 통제 가능하도록 엑셀 내용을 복붙해서 통제 가능하도록 설계함&lt;/p&gt;
&lt;figure data-ke-type=&quot;image&quot; data-ke-style=&quot;alignLeft&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; data-link=&quot;http://0-1.kr/95&quot; data-link-islinknewwindow=&quot;true&quot;&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2) 활용팁 :&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #22315b; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;5.모두의 전화메모 계산기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 링크 : &lt;a href=&quot;http://0-1.kr/73&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;0-1.kr/73&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1773544022253&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;모두의 전화메모 계산기_V1(260208)&quot; data-og-description=&quot;모두의 전화메모 계산기ℹ️ [0. 사용설명서] 클릭하여 보기&amp;bull; 공초: 서식 초기화 페이지로 이동합니다.&amp;bull; RE: 질문에 대한 답변을 무한으로 추가할 수 있습니다.&amp;bull; 요약: 모든 작성 내용을 취합&quot; data-og-host=&quot;0-1.kr&quot; data-og-source-url=&quot;http://0-1.kr/73&quot; data-og-url=&quot;https://0-1.kr/73&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/A3Bd2/dJMb8Zvz7pQ/W0X3EXYOAvBGGBMiIWzxsk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/B4lQs/dJMb88F3xW2/kkbq4P7N9CeYO0EzHesmA1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;http://0-1.kr/73&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://0-1.kr/73&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/A3Bd2/dJMb8Zvz7pQ/W0X3EXYOAvBGGBMiIWzxsk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/B4lQs/dJMb88F3xW2/kkbq4P7N9CeYO0EzHesmA1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모두의 전화메모 계산기_V1(260208)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;모두의 전화메모 계산기ℹ️ [0. 사용설명서] 클릭하여 보기&amp;bull; 공초: 서식 초기화 페이지로 이동합니다.&amp;bull; RE: 질문에 대한 답변을 무한으로 추가할 수 있습니다.&amp;bull; 요약: 모든 작성 내용을 취합&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;0-1.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 사유 :&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 style=&quot;text-align: center;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;활용 시 주의&lt;/b&gt;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style3&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;각 장치에 임시폴더로 저장되어 캐시 삭제 시 삭제됨&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(즐겨찾기로 저장을 추천함)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;PC 및 모바일 활용 시 동일 브라우저 활용&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(크롬과 웨일브라우저 추천. 안드로이드인 경우 삼성브라우저로 이동이 많네요)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;데이터양이 많은 경우 저장 불가. 보조기구로 활용&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(A4 10장분량의 텍스트는 가능)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;업데이트 시마다 수정하겠습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아래내용들은 정리되는대로 올려드릴게요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;채점계산기_V3.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oFu8f/dJMcafeO2ej/355zwENEEPvtiXGvz6vlW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oFu8f/dJMcafeO2ej/355zwENEEPvtiXGvz6vlW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oFu8f/dJMcafeO2ej/355zwENEEPvtiXGvz6vlW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoFu8f%2FdJMcafeO2ej%2F355zwENEEPvtiXGvz6vlW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;150&quot; height=&quot;1024&quot; data-filename=&quot;채점계산기_V3.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;출장계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y73C1/dJMcacbh8KO/ixvK9wvAuOMtnNxz4NYfN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y73C1/dJMcacbh8KO/ixvK9wvAuOMtnNxz4NYfN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y73C1/dJMcacbh8KO/ixvK9wvAuOMtnNxz4NYfN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy73C1%2FdJMcacbh8KO%2FixvK9wvAuOMtnNxz4NYfN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;100&quot; data-filename=&quot;출장계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;모두의 출첵계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bns20T/dJMcaibfgg5/KuoK0T04zVdLDOTYmkuqK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bns20T/dJMcaibfgg5/KuoK0T04zVdLDOTYmkuqK1/img.png&quot; data-alt=&quot;모드의계산기_출첵계산기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bns20T/dJMcaibfgg5/KuoK0T04zVdLDOTYmkuqK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbns20T%2FdJMcaibfgg5%2FKuoK0T04zVdLDOTYmkuqK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;100&quot; data-filename=&quot;모두의 출첵계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모드의계산기_출첵계산기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;전화메모계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wnDgU/dJMcadHIfTy/YC0m4UVGUbVzg6RDMUCiak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wnDgU/dJMcadHIfTy/YC0m4UVGUbVzg6RDMUCiak/img.png&quot; data-alt=&quot;모두의계산기_전화메모계산기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wnDgU/dJMcadHIfTy/YC0m4UVGUbVzg6RDMUCiak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwnDgU%2FdJMcadHIfTy%2FYC0m4UVGUbVzg6RDMUCiak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;100&quot; data-filename=&quot;전화메모계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모두의계산기_전화메모계산기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;크기비율계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tHWNH/dJMcajgQU75/e9P93RuahXrQgKaLYkKt1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tHWNH/dJMcajgQU75/e9P93RuahXrQgKaLYkKt1K/img.png&quot; data-alt=&quot;모두의계산기_크기비율계산기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tHWNH/dJMcajgQU75/e9P93RuahXrQgKaLYkKt1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtHWNH%2FdJMcajgQU75%2Fe9P93RuahXrQgKaLYkKt1K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;100&quot; data-filename=&quot;크기비율계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모두의계산기_크기비율계산기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;모두의 날짜계산기_V1.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UWF1k/dJMcadnpTmw/TZoZ4zFk7H8GM7OkmYWyAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UWF1k/dJMcadnpTmw/TZoZ4zFk7H8GM7OkmYWyAK/img.png&quot; data-alt=&quot;모두의계산기_날짜계산기&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UWF1k/dJMcadnpTmw/TZoZ4zFk7H8GM7OkmYWyAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUWF1k%2FdJMcadnpTmw%2FTZoZ4zFk7H8GM7OkmYWyAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;100&quot; data-filename=&quot;모두의 날짜계산기_V1.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;모두의계산기_날짜계산기&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;모두의 간단엑셀계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6MJZJ/dJMcaca16uh/iYfIlXdwU2kkFcttJ1bX2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6MJZJ/dJMcaca16uh/iYfIlXdwU2kkFcttJ1bX2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6MJZJ/dJMcaca16uh/iYfIlXdwU2kkFcttJ1bX2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6MJZJ%2FdJMcaca16uh%2FiYfIlXdwU2kkFcttJ1bX2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;100&quot; data-filename=&quot;모두의 간단엑셀계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스프레드출력계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LMGPE/dJMcadVfo2C/xkhQ6MjlgHbt5d3emvWQi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LMGPE/dJMcadVfo2C/xkhQ6MjlgHbt5d3emvWQi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LMGPE/dJMcadVfo2C/xkhQ6MjlgHbt5d3emvWQi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLMGPE%2FdJMcadVfo2C%2FxkhQ6MjlgHbt5d3emvWQi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;100&quot; data-filename=&quot;스프레드출력계산기.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1024&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;사진출력.png&quot; data-origin-width=&quot;230&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3tsl9/dJMcac9RGB9/dkmGgJS2ZLiRDjPMPikh01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3tsl9/dJMcac9RGB9/dkmGgJS2ZLiRDjPMPikh01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3tsl9/dJMcac9RGB9/dkmGgJS2ZLiRDjPMPikh01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3tsl9%2FdJMcac9RGB9%2FdkmGgJS2ZLiRDjPMPikh01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;100&quot; height=&quot;130&quot; data-filename=&quot;사진출력.png&quot; data-origin-width=&quot;230&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>최매슨생</author>
      <guid isPermaLink="true">https://0-1.kr/notice/12</guid>
      <pubDate>Tue, 10 Nov 2020 15:10:30 +0900</pubDate>
    </item>
  </channel>
</rss>