/* =============================================================================
   협력업체(ct) 안전관리계획서 — 화면 스타일 (2026-10-10)   js/ct-plan-*.js · modules/ct-plan.js 와 한 쌍
   접두사: ctp-(화면) · ctpt-(양식 편집기) · ctpp-(인쇄 — 모두 #hsPrintHost 안에서만). 색은 앱 토큰(--mint · --line · --ink-2 …)을 그대로 쓴다.
   ========================================================================== */
.ctp-sub1 { color: var(--ink-2); font-size: 14px; margin-top: 2px; }
.ctp-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin: 0 0 10px; }
.ctp-stage { font-weight: 700; font-size: 13.5px; }
.ctp-ban { margin: 0 0 10px; line-height: 1.55; }

/* ---- 업체별 현황 ---- */
#ctpYear { min-height: 44px; padding: 0 12px; font: inherit; font-size: 16px; border: 1px solid var(--line-strong); border-radius: 10px; background: #fff; color: var(--ink); }
#ctpStats { grid-template-columns: repeat(6, 1fr); }
.ctp-stat { background: #fff; border: 1px solid var(--line); border-radius: var(--radius); padding: 10px 6px; text-align: center; cursor: pointer; }
.ctp-stat b { display: block; font-size: 22px; line-height: 1.15; }
.ctp-stat span { font-size: 12.5px; color: var(--ink-2); }
.ctp-stat.is-on { border-color: var(--mint); background: var(--mint-tint); }
.ctp-stat:focus-visible { outline: 2px solid var(--mint); outline-offset: 1px; }
.ctp-bulkbar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin: 4px 0 10px; }
.ctp-board { display: grid; gap: 8px; }
.ctp-brow { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; padding: 10px 12px; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); cursor: pointer; }
.ctp-brow:hover { border-color: var(--mint); }
.ctp-brow.is-none { background: var(--surface-2); }
.ctp-bsel { flex: 0 0 32px; display: inline-flex; align-items: center; }
.ctp-bsel input { width: 20px; height: 20px; }
.ctp-bname { flex: 1 1 170px; min-width: 0; display: flex; flex-direction: column; }
.ctp-bname small, .ctp-bmeta small, .ctp-bst small { color: var(--ink-2); font-size: 12.5px; }
.ctp-bst { flex: 0 1 200px; display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.ctp-bmeta { flex: 1 1 200px; min-width: 0; }
.ctp-bact { flex: 0 0 auto; }
.ctp-cropt { display: grid; gap: 8px; margin: 8px 0; }
.ctp-bres { list-style: none; margin: 8px 0 0; padding: 0; font-size: 13.5px; }
.ctp-bres li { padding: 4px 0; border-bottom: 1px solid var(--line); }
.ctp-bres li.bad { color: #b42318; }
.ctp-misslist { margin: 0; padding-left: 20px; line-height: 1.7; }

/* ---- 작성 폼 ---- */
.ctp-jumprow { display: flex; align-items: center; gap: 8px; margin: 0 0 10px; }
.ctp-jumprow label { font-size: 13px; font-weight: 700; white-space: nowrap; }
.ctp-jumprow select { flex: 1 1 auto; min-width: 0; min-height: 40px; border: 1px solid var(--line-strong); border-radius: 10px; padding: 0 10px; background: #fff; font: inherit; font-size: 14px; }
.ctp-sec > summary { font-weight: 800; font-size: 16px; cursor: pointer; list-style: none; display: flex; align-items: center; gap: 8px; }
.ctp-sec > summary::-webkit-details-marker { display: none; }
.ctp-sec > summary::before { content: '▾'; color: var(--ink-2); font-size: 13px; }
.ctp-sec:not([open]) > summary::before { content: '▸'; }
.ctp-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 14px 18px; margin-top: 12px; }
.ctp-it { min-width: 0; }
.ctp-it.ctp-t-textarea, .ctp-it.ctp-t-table, .ctp-it.ctp-t-attach, .ctp-it.ctp-t-checks, .ctp-it.ctp-t-radio, .ctp-grid > .ctp-st, .ctp-grid > .ctp-sub { grid-column: 1 / -1; }
.ctp-lb { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin: 0 0 5px; }
.ctp-lb label { font-weight: 700; font-size: 13.5px; }
.ctp-rq { color: #d93a3a; font-style: normal; margin-left: 2px; }
.ctp-lock { font-size: 11px; font-weight: 700; padding: 1px 7px; border-radius: 999px; background: #fff4d6; color: #7a5200; border: 1px solid #e5c36a; }
.ctp-help { font-size: 12.5px; color: var(--ink-2); margin-top: 4px; line-height: 1.5; }
.ctp-in { display: flex; align-items: center; gap: 6px; }
.ctp-in input[type="text"], .ctp-in input[type="date"], .ctp-in input[type="number"], .ctp-in select, .ctp-in textarea,
.ctp-tb td input[type="text"], .ctp-tb td input[type="date"], .ctp-tb td input[type="number"], .ctp-tb td select, .ctp-tb td textarea {
  width: 100%; min-width: 0; box-sizing: border-box; min-height: 40px; padding: 8px 10px; border: 1px solid var(--line-strong); border-radius: 10px; background: #fff; color: var(--ink); font: inherit; font-size: 16px; line-height: 1.4; -webkit-appearance: none; appearance: none; }
.ctp-in textarea, .ctp-tb td textarea { resize: vertical; min-height: 70px; }
.ctp-tb td textarea { min-height: 56px; }
.ctp-in input:focus, .ctp-in select:focus, .ctp-in textarea:focus, .ctp-tb td input:focus, .ctp-tb td select:focus, .ctp-tb td textarea:focus { outline: 2px solid var(--mint); outline-offset: 0; border-color: var(--mint); }
.ctp-won, .ctp-unit { color: var(--ink-2); font-weight: 700; white-space: nowrap; }
.ctp-opts { display: flex; flex-wrap: wrap; gap: 6px 18px; }
.ctp-opt { display: inline-flex; align-items: flex-start; gap: 8px; min-height: 36px; padding: 4px 0; cursor: pointer; font-size: 14.5px; line-height: 1.45; }
.ctp-opt input { width: 20px; height: 20px; margin: 1px 0 0; flex: 0 0 auto; }
.ctp-v { padding: 8px 10px; border: 1px solid var(--line); border-radius: 10px; background: var(--surface-2); font-size: 14.5px; min-height: 38px; overflow-wrap: anywhere; }
.ctp-v.ctp-pre { white-space: pre-wrap; }
.ctp-v.is-empty { color: var(--ink-2); }
.ctp-locked { padding: 12px 14px; background: var(--surface-2); border: 1px dashed var(--line-strong); border-radius: 10px; color: var(--ink-2); font-size: 13.5px; line-height: 1.5; }
.ctp-it.is-bad { outline: 2px solid #e5484d; outline-offset: 5px; border-radius: 6px; }
.ctp-sub { margin: 10px 0 0; font-size: 15px; padding-top: 10px; border-top: 1px solid var(--line); }
.ctp-st { background: var(--surface-2); border-radius: 10px; padding: 10px 12px; }
.ctp-st-h { font-weight: 800; font-size: 13.5px; margin-bottom: 6px; }
.ctp-st-b { white-space: pre-wrap; font-size: 13.5px; line-height: 1.65; overflow-wrap: anywhere; }
.ctp-st.is-note { background: none; padding: 0 2px; color: var(--ink-2); }

/* ---- 표 ---- */
.ctp-tw { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--line); border-radius: var(--radius); background: #fff; }
.ctp-tb { width: 100%; border-collapse: collapse; font-size: 14px; }
.ctp-tb th, .ctp-tb td { border: 1px solid var(--line); padding: 5px 6px; vertical-align: middle; }
.ctp-tb thead th { background: var(--surface-2); font-size: 12.5px; color: var(--ink-2); text-align: center; white-space: nowrap; }
.ctp-tb td.is-ro { background: var(--surface-2); font-weight: 600; min-width: 90px; }
.ctp-tb td.ctp-c-check { text-align: center; width: 44px; }
.ctp-tb td.ctp-c-check input { width: 20px; height: 20px; }
.ctp-tb td.ctp-c-number input, .ctp-tb td.ctp-c-money input { text-align: right; }
.ctp-tb .ctp-th-x, .ctp-td-x { width: 36px; text-align: center; }
.ctp-tb td.ctp-c-money, .ctp-tb tr.ctp-sum td { font-variant-numeric: tabular-nums; }
.ctp-tb tr.ctp-sum td { background: var(--surface-2); font-weight: 800; text-align: right; }
.ctp-tb tr.ctp-sum td:first-child { text-align: center; }
.ctp-tb.is-ro td { padding: 7px 9px; }
.ctp-del { width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--line-strong); background: #fff; color: #b42318; font-size: 18px; line-height: 1; cursor: pointer; }
.ctp-addrow { margin-top: 8px; }
.ctp-tool { grid-column: 1 / -1; display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 12px; background: var(--surface-2); border-radius: 10px; }
.ctp-ck { display: inline-flex; align-items: center; justify-content: center; min-width: 32px; min-height: 32px; cursor: pointer; }

/* ---- 저장 막대 · 결재 ---- */
.ctp-savebar { position: sticky; bottom: 0; z-index: 6; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 10px 12px; margin: 0 0 12px; background: #fff; border: 1px solid var(--line-strong); border-radius: var(--radius); box-shadow: 0 -2px 10px rgba(0, 0, 0, .06); }
.ctp-bar-sp { flex: 1 1 auto; }
.ctp-savestate { font-size: 13px; color: var(--ink-2); }
.ctp-savestate.is-dirty { color: #b45309; font-weight: 700; }
#ctpAppr.is-dirty .ct-appr-act { opacity: .55; }
.ctp-ops .hs-btnrow { margin: 4px 0; }

@media (max-width: 720px) {
  #ctpStats { grid-template-columns: repeat(3, 1fr); }
  .ctp-grid { grid-template-columns: minmax(0, 1fr); }
  .ctp-tw { border: 0; background: none; overflow: visible; }
  .ctp-tb, .ctp-tb tbody, .ctp-tb tfoot, .ctp-tb tr, .ctp-tb td { display: block; width: auto; }
  .ctp-tb thead { display: none; }
  .ctp-tb tr { border: 1px solid var(--line); border-radius: var(--radius); background: #fff; margin: 0 0 10px; padding: 8px 10px 6px; position: relative; display: flex; flex-wrap: wrap; align-items: center; }
  .ctp-tb td { flex: 1 1 100%; min-width: 0; }
  .ctp-tb td { border: 0; padding: 4px 0; }
  .ctp-tb td::before { content: attr(data-label); display: block; font-size: 12px; color: var(--ink-2); margin-bottom: 2px; }
  .ctp-tb td.ctp-c-check { display: inline-flex; flex: 0 0 auto; align-items: center; gap: 6px; width: auto; margin-right: 14px; text-align: left; }
  .ctp-tb td.ctp-c-check::before { display: inline; margin: 0; font-size: 13px; }
  .ctp-tb td.is-ro { background: none; font-weight: 800; min-width: 0; padding-right: 36px; }
  .ctp-tb td.is-ro::before { display: none; }
  .ctp-tb td.ctp-td-x { order: -1; text-align: right; padding: 0 0 2px; }
  .ctp-tb td.ctp-td-x:empty { display: none; }
  .ctp-tb td.ctp-td-x::before { display: none; }
  .ctp-tb td.ctp-c-number input, .ctp-tb td.ctp-c-money input { text-align: left; }
  .ctp-tb tr.ctp-sum td { text-align: left; }
  .ctp-tb tr.ctp-sum td:empty { display: none; }
  .ctp-ck { min-width: 44px; min-height: 44px; }
  .ctp-opt { min-height: 44px; align-items: center; }
  .ctp-del { width: 40px; height: 40px; }
  .ctp-savebar { padding: 8px 10px; }
  .ctp-savebar .btn { min-height: 44px; }
  .ctp-brow { padding: 12px; }
  .ctp-bact { flex: 1 1 100%; }
  .ctp-bact .btn { width: 100%; min-height: 44px; }
}

/* =============================================================================
   인쇄 서식 (ctpp-) — 원본 PPT 모양: 흰 바탕 · 검은 글자 · 검은 표선 · 맑은 고딕. Apple 화면 스타일을 쓰지 않는다. 쪽 설정은 hs-print.css 의 이름 있는 @page(hsPortrait).
   모든 인쇄 규칙은 #hsPrintHost 안에서만 작동한다. (도식 일부는 화면 폼의 안내 칸(.ctp-st)에서도 같은 모양으로 보인다)
   ========================================================================== */
#hsPrintHost .ctpp-page { font-family: 'Malgun Gothic', '맑은 고딕', sans-serif; font-size: 10pt; line-height: 1.45; color: #000; word-break: keep-all; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
#hsPrintHost .hs-page.hs-port.ctpp-meas { position: absolute; left: -12000px; top: 0; visibility: hidden; height: auto; overflow: visible; zoom: 1; box-shadow: none; margin: 0; font-family: 'Malgun Gothic', '맑은 고딕', sans-serif; font-size: 10pt; line-height: 1.45; }
#hsPrintHost .ctpp-mb { display: flow-root; padding-bottom: 2.5mm; }
#hsPrintHost .ctpp-frame { border: .55mm solid #000; padding: 5mm 5mm 3mm; min-height: 258mm; box-sizing: border-box; }
#hsPrintHost .ctpp-wm { position: absolute; left: 14mm; top: 4.5mm; font-size: 7.5pt; color: #999; }
#hsPrintHost .ctpp-void { position: absolute; left: 0; right: 0; top: 105mm; text-align: center; font-size: 90pt; font-weight: 800; color: rgba(200, 40, 40, .16); transform: rotate(-24deg); letter-spacing: 8mm; pointer-events: none; }
#hsPrintHost .ctpp-lim { color: #888; font-size: 8pt; font-weight: 400; }
#hsPrintHost .ctpp-sig { height: 11mm; max-width: 24mm; object-fit: contain; vertical-align: middle; }
/* 제목 · 머리글 */
#hsPrintHost .ctpp-apprwrap { display: flex; justify-content: flex-end; margin-bottom: 6mm; }
#hsPrintHost .ctpp-appr { border-collapse: collapse; table-layout: fixed; }
#hsPrintHost .ctpp-appr th, #hsPrintHost .ctpp-appr td { border: .25mm solid #000; width: 25mm; text-align: center; padding: 0; overflow: hidden; }
#hsPrintHost .ctpp-appr th { background: #e6e6e6; font-size: 8.5pt; height: 6mm; font-weight: 700; white-space: nowrap; }
#hsPrintHost .ctpp-appr td.sg { height: 13mm; }
#hsPrintHost .ctpp-appr td.nm { height: 8mm; font-size: 8pt; line-height: 1.15; }
#hsPrintHost .ctpp-appr td.nm span { font-size: 7pt; color: #444; }
#hsPrintHost .ctpp-rule { border-top: .5mm solid #000; }
#hsPrintHost .ctpp-title { text-align: center; font-size: 22pt; font-weight: 700; padding: 6mm 0 6mm; }
#hsPrintHost .ctpp-h1 { font-size: 13pt; font-weight: 700; margin: 3mm 0 2.5mm; }
#hsPrintHost .ctpp-h2 { font-size: 11.5pt; font-weight: 700; margin: 1.5mm 0 2mm; }
#hsPrintHost .ctpp-sh { font-size: 10.5pt; font-weight: 700; margin: 2mm 0 1mm; }
#hsPrintHost .ctpp-gh { background: #e9e9e9; border: .3mm solid #000; border-bottom: 0; text-align: center; font-weight: 700; padding: 2mm; }
#hsPrintHost .ctpp-ptitle { text-align: center; font-size: 16pt; font-weight: 700; text-decoration: underline; margin: 4mm 0 8mm; }
#hsPrintHost .ctpp-note { font-size: 8.5pt; margin-top: 1mm; }
#hsPrintHost .ctpp-ah { font-size: 11.5pt; font-weight: 700; margin: 2mm 0 3mm; }
/* 표 */
#hsPrintHost .ctpp-t { border-collapse: collapse; table-layout: fixed; width: 100%; }
#hsPrintHost .ctpp-t th, #hsPrintHost .ctpp-t td { border: .3mm solid #000; padding: 1.3mm 2mm; vertical-align: middle; font-size: 9.5pt; line-height: 1.4; overflow-wrap: anywhere; word-break: keep-all; text-align: left; }
#hsPrintHost .ctpp-t th { background: #e9e9e9; text-align: center; font-weight: 700; }
#hsPrintHost .ctpp-t td.l { background: #efefef; text-align: center; font-weight: 600; }
#hsPrintHost .ctpp-t td.cn { text-align: center; }
#hsPrintHost .ctpp-t td.cn.left { text-align: left; }
#hsPrintHost .ctpp-t td.num { text-align: right; font-variant-numeric: tabular-nums; }
#hsPrintHost .ctpp-t td.top { vertical-align: top; }
#hsPrintHost .ctpp-t td.ctr { text-align: center; }
#hsPrintHost .ctpp-t tr { break-inside: avoid; }
#hsPrintHost .ctpp-t td.bx { padding: 2.5mm 4mm; vertical-align: top; font-size: 10pt; line-height: 1.65; }
#hsPrintHost .ctpp-nobd td.bx { border: 0; }
#hsPrintHost .ctpp-ov td { height: 11.5mm; }
#hsPrintHost .ctpp-ov td.v { font-size: 10pt; }
#hsPrintHost .ctpp-ov td.v small { font-size: 8.5pt; }
#hsPrintHost .ctpp-goal td.l { font-size: 10pt; }
#hsPrintHost .ctpp-goal td.v { font-size: 10pt; line-height: 1.7; }
#hsPrintHost .ctpp-gantt td.l, #hsPrintHost .ctpp-gantt td.cn { text-align: center; }
#hsPrintHost .ctpp-gantt td { height: 11mm; }
#hsPrintHost .ctpp-gantt td.g.on { background: #b0d97a; }
#hsPrintHost .ctpp-st2 td { height: 11mm; text-align: center; }
#hsPrintHost .ctpp-cost td { height: 10mm; }
#hsPrintHost .ctpp-cost td.v.ctr { text-align: center; }
#hsPrintHost .ctpp-grd td { height: 11mm; }
#hsPrintHost .ctpp-gbox td.bx { border: .3mm solid #000; }
#hsPrintHost .ctpp-gh + .ctpp-mb .ctpp-gbox td.bx { border-top: .3mm solid #000; }
#hsPrintHost .ctpp-acc td { height: 11mm; }
#hsPrintHost .ctpp-acc th.dg { height: 18mm; position: relative; background: #e9e9e9 linear-gradient(to top right, transparent calc(50% - .3mm), #000 50%, transparent calc(50% + .3mm)); }
#hsPrintHost .ctpp-acc th.dg .a { position: absolute; right: 2.5mm; top: 1.5mm; }
#hsPrintHost .ctpp-acc th.dg .b { position: absolute; left: 2.5mm; bottom: 1.5mm; }
#hsPrintHost .ctpp-extra td.l { text-align: left; }
#hsPrintHost .ctpp-in { border-collapse: collapse; width: 100%; }
#hsPrintHost .ctpp-in th, #hsPrintHost .ctpp-in td { border: .25mm solid #666; padding: 1mm 1.5mm; font-size: 8.5pt; }
#hsPrintHost .ctpp-ln { white-space: pre-wrap; }
#hsPrintHost .ctpp-ln.is-b { font-weight: 700; }
#hsPrintHost .ctpp-ln.e { height: 2.6mm; }
#hsPrintHost .ctpp-small td.bx { font-size: 9pt; line-height: 1.5; }
/* 체크 상자 · 서명 */
#hsPrintHost .ctpp-ck { display: inline-block; margin-right: 5mm; white-space: nowrap; }
#hsPrintHost .ctpp-cb, .ctp-st .ctpp-cb { display: inline-block; width: 3.4mm; height: 3.4mm; border: .3mm solid #000; margin-right: 1.6mm; vertical-align: -.6mm; position: relative; background: #fff; }
#hsPrintHost .ctpp-cb.on::after { content: ''; position: absolute; left: .8mm; top: -.5mm; width: 1.2mm; height: 2.5mm; border: solid #000; border-width: 0 .5mm .5mm 0; transform: rotate(45deg); }
#hsPrintHost .ctpp-rt { display: flex; justify-content: space-between; align-items: center; gap: 2mm; }
#hsPrintHost .ctpp-sgn { display: inline-flex; align-items: center; gap: 1.5mm; white-space: nowrap; }
/* 조직도 · 비상경보 도식(트리) — 화면 안내 칸에서도 같은 모양 */
#hsPrintHost .ctpp-orgbox { padding: 18mm 0 0; }
#hsPrintHost .ctpp-ob, .ctp-st .ctpp-ob { border: .3mm solid #000; width: 62mm; margin: 0 auto; background: #fff; font-size: 9.5pt; }
#hsPrintHost .ctpp-obh { text-align: center; padding: 1.8mm 1mm; border-bottom: .3mm solid #000; }
#hsPrintHost .ctpp-obr { display: flex; align-items: center; min-height: 8mm; border-top: .3mm solid #000; }
#hsPrintHost .ctpp-obh + .ctpp-obr { border-top: 0; }
#hsPrintHost .ctpp-obr span:first-child { flex: 0 0 22mm; text-align: center; border-right: .3mm solid #000; align-self: stretch; display: flex; align-items: center; justify-content: center; }
#hsPrintHost .ctpp-obr span:last-child { flex: 1 1 auto; padding: 0 2mm; min-width: 0; overflow-wrap: anywhere; }
#hsPrintHost .ctpp-ov, .ctp-st .ctpp-ov { width: 0; height: 7mm; margin: 0 auto; border-left: .3mm solid #000; }
#hsPrintHost .ctpp-ov.s, .ctp-st .ctpp-ov.s { height: 3mm; }
#hsPrintHost .ctpp-tree, .ctp-st .ctpp-tree { display: flex; justify-content: center; align-items: flex-start; }
#hsPrintHost .ctpp-trc, .ctp-st .ctpp-trc { position: relative; padding: 7mm 3mm 0; flex: 1 1 0; max-width: 64mm; min-width: 0; }
#hsPrintHost .ctpp-trc::before, .ctp-st .ctpp-trc::before { content: ''; position: absolute; top: 0; left: 0; right: 0; border-top: .3mm solid #000; }
#hsPrintHost .ctpp-trc:first-child::before, .ctp-st .ctpp-trc:first-child::before { left: 50%; }
#hsPrintHost .ctpp-trc:last-child::before, .ctp-st .ctpp-trc:last-child::before { right: 50%; }
#hsPrintHost .ctpp-trc:only-child::before, .ctp-st .ctpp-trc:only-child::before { display: none; }
#hsPrintHost .ctpp-trc::after, .ctp-st .ctpp-trc::after { content: ''; position: absolute; top: 0; left: 50%; height: 7mm; border-left: .3mm solid #000; }
#hsPrintHost .ctpp-trc .ctpp-ob { width: 100%; }
#hsPrintHost .ctpp-al, .ctp-st .ctpp-al { max-width: 150mm; margin: 4mm auto 0; }
#hsPrintHost .ctpp-algwrap { padding: 8mm 0 0; }
#hsPrintHost .ctpp-alb, .ctp-st .ctpp-alb { border: .3mm solid #000; text-align: center; padding: 4.5mm 3mm; margin: 0 auto; width: 68mm; background: #fff; font-size: 10pt; line-height: 1.4; }
#hsPrintHost .ctpp-alb.tall, .ctp-st .ctpp-alb.tall { padding: 9mm 3mm; }
#hsPrintHost .ctpp-alar, .ctp-st .ctpp-alar { text-align: center; line-height: 1; padding: 1mm 0; font-size: 10pt; }
#hsPrintHost .ctpp-altree .ctpp-alb, .ctp-st .ctpp-altree .ctpp-alb { width: 100%; padding: 4.5mm 2mm; }
#hsPrintHost .ctpp-alst .ctpp-alb, .ctp-st .ctpp-alst .ctpp-alb { border-top: 0; }
#hsPrintHost .ctpp-alst .ctpp-alb:first-child, .ctp-st .ctpp-alst .ctpp-alb:first-child { border-top: .3mm solid #000; }
#hsPrintHost .ctpp-altree .ctpp-trc > .ctpp-alb, .ctp-st .ctpp-altree .ctpp-trc > .ctpp-alb { }
/* 연락망 도식(고정 배치: 168mm × 82mm 안에 mm 좌표) */
#hsPrintHost .ctpp-net { position: relative; width: 168mm; margin: 1mm auto 4mm; }
#hsPrintHost .ctpp-npa { position: absolute; top: 0; bottom: 2mm; border: .25mm dashed #555; }
#hsPrintHost .ctpp-npa.l { left: 0; width: 52mm; }
#hsPrintHost .ctpp-npa.r { left: 58mm; right: 0; }
#hsPrintHost .ctpp-nph { position: absolute; left: 50%; top: 3mm; transform: translateX(-50%); background: #cfcfcf; font-weight: 700; padding: 1.5mm 8mm; white-space: nowrap; font-size: 10.5pt; }
#hsPrintHost .ctpp-nl { position: absolute; left: 0; top: 0; width: 100%; height: 100%; }
#hsPrintHost .ctpp-cbx { position: absolute; border: .3mm solid #000; background: #fff; font-size: 9.5pt; }
#hsPrintHost .ctpp-cbh { background: #e5e5e5; font-weight: 700; text-align: center; padding: 1.2mm 1mm; border-bottom: .3mm solid #000; line-height: 1.25; }
#hsPrintHost .ctpp-cbt { padding: 1.8mm 2mm; min-height: 6mm; }
#hsPrintHost .ctpp-cbx.a { left: 4mm; top: 27mm; width: 40mm; }
#hsPrintHost .ctpp-cbx.b { left: 4mm; top: 56mm; width: 40mm; }
#hsPrintHost .ctpp-cbx.c { left: 72mm; top: 13mm; width: 36mm; }
#hsPrintHost .ctpp-cbx.d { left: 72mm; top: 44mm; width: 36mm; }
#hsPrintHost .ctpp-cbx.n { left: 118mm; top: 25mm; width: 47mm; }
#hsPrintHost .ctpp-nr { display: flex; min-height: 9mm; border-top: .3mm solid #000; align-items: center; }
#hsPrintHost .ctpp-cbh + .ctpp-nr { border-top: 0; }
#hsPrintHost .ctpp-nr span:first-child { flex: 0 0 15mm; border-right: .3mm solid #000; align-self: stretch; padding: 1mm 1.5mm; overflow-wrap: anywhere; }
#hsPrintHost .ctpp-nr span:last-child { flex: 1 1 auto; padding: 0 1.5mm; overflow-wrap: anywhere; }
/* 별첨 서식 */
#hsPrintHost .ctpp-ft { border: .55mm solid #000; padding: 9mm 8mm 8mm; min-height: 235mm; box-sizing: border-box; }
#hsPrintHost .ctpp-ftt { text-align: center; font-size: 19pt; font-weight: 700; margin: 4mm 0 16mm; }
#hsPrintHost .ctpp-fl > div { margin: 5mm 0; font-size: 10.5pt; font-weight: 600; }
#hsPrintHost .ctpp-fl > div span { display: inline-block; min-width: 40mm; }
#hsPrintHost .ctpp-fl > .gp { margin-top: 11mm; }
#hsPrintHost .ctpp-fm { margin-top: 42mm; }
#hsPrintHost .ctpp-fm .ctpp-ln { margin: 5mm 0 0 5mm; font-size: 10.5pt; font-weight: 600; }
#hsPrintHost .ctpp-fh { text-align: center; font-weight: 700; margin-bottom: 8mm; font-size: 10pt; }
#hsPrintHost .ctpp-fd { text-align: center; font-weight: 700; margin: 17mm 0 15mm; font-size: 11pt; }
#hsPrintHost .ctpp-ff { display: flex; justify-content: space-between; gap: 4mm; font-weight: 700; padding: 0 2mm; font-size: 10.5pt; }
#hsPrintHost .ctpp-form { border-collapse: collapse; table-layout: fixed; width: 100%; }
#hsPrintHost .ctpp-form th, #hsPrintHost .ctpp-form td { border: .3mm solid #000; padding: 2mm 3mm; font-size: 10pt; vertical-align: middle; }
#hsPrintHost .ctpp-form th { background: #efefef; text-align: center; height: 12mm; }
#hsPrintHost .ctpp-form td.tt { text-align: center; font-size: 17pt; font-weight: 700; height: 25mm; }
#hsPrintHost .ctpp-form td.st { padding: 6mm 8mm; line-height: 1.9; font-weight: 600; }
#hsPrintHost .ctpp-form td.st .ctpp-ln { white-space: normal; }
#hsPrintHost .ctpp-form td.ctr { text-align: center; font-weight: 600; }
#hsPrintHost .ctpp-form td.du { padding: 4mm 6mm; line-height: 1.95; font-weight: 600; }
#hsPrintHost .ctpp-form td.ft { height: 66mm; }
#hsPrintHost .ctpp-form td.ft .ctpp-fd { margin: 4mm 0 12mm; }
#hsPrintHost .ctpp-attimg { height: 232mm; text-align: center; border: .3mm solid #aaa; box-sizing: border-box; padding: 2mm; }
#hsPrintHost .ctpp-attimg img { max-width: 100%; max-height: 222mm; object-fit: contain; display: block; margin: 0 auto; }
#hsPrintHost .ctpp-attimg .cap { font-size: 8pt; color: #666; margin-top: 1mm; }
#hsPrintHost .ctpp-attfile { border: .3mm solid #000; padding: 6mm; font-size: 10.5pt; }
#hsPrintHost .ctpp-emptyatt { height: 200mm; border: .3mm dashed #999; display: flex; align-items: center; justify-content: center; color: #888; font-size: 10pt; }

/* ---- 양식 항목 편집기(관리자 /ct-admin/plan) ---- */
.ctpt-sec.is-off, .ctpt-it.is-off { opacity: .62; }
.ctpt-stop { display: flex; flex-wrap: wrap; gap: 8px 10px; align-items: center; margin-bottom: 8px; }
.ctpt-mv { display: inline-flex; gap: 4px; }
.ctpt-in { min-height: 40px; border: 1px solid var(--line-strong); border-radius: 10px; padding: 6px 10px; font: inherit; font-size: 16px; background: #fff; color: var(--ink); box-sizing: border-box; }
.ctpt-stl { flex: 1 1 220px; min-width: 0; font-weight: 700; }
.ctpt-it { border: 1px solid var(--line); border-radius: 10px; padding: 8px 10px; margin: 8px 0; background: #fff; }
.ctpt-itop { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; }
.ctpt-lbl { flex: 1 1 240px; min-width: 0; }
.ctpt-tag { font-size: 12px; padding: 2px 8px; border-radius: 999px; background: var(--surface-2); color: var(--ink-2); border: 1px solid var(--line); white-space: nowrap; }
.ctpt-key { font-size: 11.5px; color: var(--ink-2); margin-top: 4px; font-family: Consolas, monospace; overflow-wrap: anywhere; }
.ctpt-det { margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--line); }
.ctpt-det .field { margin: 0 0 10px; }
.ctpt-det .field label { font-size: 12.5px; font-weight: 700; display: block; margin-bottom: 3px; }
.ctpt-det .field input, .ctpt-det .field textarea { width: 100%; }
.ctpt-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 10px; align-items: end; margin-bottom: 6px; }
.ctpt-orow, .ctpt-crow { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; margin: 4px 0; }
.ctpt-orow input[type="text"], .ctpt-crow input[type="text"] { flex: 1 1 180px; min-width: 0; }
.ctpt-crow.is-off, tr.is-off td { opacity: .5; }
.ctpt-add { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0; align-items: center; }
.ctpt-sub { font-weight: 700; font-size: 13px; margin: 12px 0 4px; }
.ctpt-chk { display: flex; flex-wrap: wrap; gap: 4px 16px; }
.ctpt-prev .ctpt-pv-sec { margin: 0 0 10px; }
.ctpt-prev ul { margin: 4px 0 0; padding-left: 18px; font-size: 13.5px; line-height: 1.6; }
.ctpt-prev li.is-off, .ctpt-pv-sec.is-off { color: var(--ink-2); text-decoration: line-through; }
.ctpt-prev small { color: var(--ink-2); }
.ctpt-pv-cols { font-size: 12.5px; color: var(--ink-2); }
@media (max-width: 720px) { .ctpt-itop .btn, .ctpt-stop .btn, .ctpt-orow .btn, .ctpt-crow .btn, .ctpt-add .btn, .ctpt-det .btn { min-height: 44px; } .ctpt-in { min-height: 44px; } .ctpt-det .ctp-opt, .ctpt-itop .ctp-opt, .ctpt-stop .ctp-opt, .ctpt-crow .ctp-opt { min-height: 44px; } }
