/* 법정서식 [별지 제13호서식] 자위소방대 및 초기대응체계 교육·훈련 실시 결과 기록부 — 화면·인쇄 모양(접두어 fft-)
   - 치수는 첨부 PDF(ref_training.pdf)의 글자·선 좌표(pt)에서 가져왔다. 좌표 원점 = 쪽 왼쪽 위.
   - @page · 인쇄 때 zoom 축소(--fire-fit) 규칙은 css/fire.css 에 있다(여기서 다시 정하지 않는다).
   - 표 선: 첨부 서식은 회색(#808080) 머리카락 선(0.24pt)·이중선(0.36pt 두 줄, 1.08pt 간격)·굵은 바깥선(1.68pt)이다.
     CSS border 는 1px(0.75pt) 아래로 못 내려가므로, 칸마다 가상요소(::before 아래선 · ::after 오른쪽선)를 1px 짜리로 만들어
     transform:scale 로 가늘게 그린다(칸 경계 정중앙). 칸이 늘어나도 선은 칸을 따라간다.
   - 화면(@media screen)에서는 같은 선을 1px 로 굵게(머리카락 선은 화면에서 흐려 보이므로). */
.ff-sheet[data-form="training"]{
  --fft-h:.32;      /* 칸 선 두께 0.24pt = 1px × .32 */
  --fft-h2:.48;     /* 이중선 한 줄 0.36pt */
  --fft-k:2;        /* 굵은 선: 2px = 1.5pt (첨부 1.68pt) */
  --fft-dof:.72px;  /* 이중선 두 줄 사이 중심 간격(1.08pt)의 절반 */
  --fft-c:#808080;
  box-sizing:border-box;position:relative;flex:none;
  margin:0 auto;
  padding:72.24pt 56.88pt 6pt 58.92pt;                              /* 표 왼쪽 x=58.92pt · 머리줄 위 y=72.24pt · 표 오른쪽 x=538.44pt */
  background:#fff;color:#000;text-align:left;
  font-family:"Malgun Gothic","맑은 고딕",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  font-size:9.96pt;font-weight:400;line-height:1.3;font-style:normal;letter-spacing:0;
  -webkit-text-size-adjust:100%;text-size-adjust:100%;
  -webkit-print-color-adjust:exact;print-color-adjust:exact;       /* 브라우저 인쇄의 "배경 그래픽" 옵션이 꺼져 있어도 선·진회색 칸이 찍히게 */
  box-shadow:0 1px 8px rgba(0,0,0,.18);
}
@media screen{
  /* 화면 폭·높이: 실물 A4(210mm). 높이는 fire.js 의 한 쪽 맞춤 기준(scrollHeight 1116px)을 넘지 않게 1115px.
     인쇄 폭은 fire.css 의 .ff-sheet{width:calc(210mm / var(--fire-fit))} 가 정한다(여기서 인쇄 폭을 고정하면 그 규칙을 이겨 버린다). */
  .ff-sheet[data-form="training"]{width:210mm;min-height:1115px;--fft-h:1;--fft-h2:1;--fft-k:2;--fft-dof:1px;}
}
.ff-sheet[data-form="training"] *{box-sizing:border-box;}

/* ── 머리줄: [서식 2.14] 진회색 칸 + 제목 테두리 칸 + 파란 [2년간 보관] ── */
.ff-sheet[data-form="training"] .fft-head{display:flex;align-items:stretch;height:30.12pt;margin:0 -.24pt 0 .12pt;}
.ff-sheet[data-form="training"] .fft-no{position:relative;flex:0 0 73.56pt;display:flex;align-items:center;justify-content:center;padding-bottom:1.76pt;background:#4c4c4c;color:#fff;font-size:15pt;font-weight:700;line-height:1;word-spacing:.1em;white-space:nowrap;}
.ff-sheet[data-form="training"] .fft-ttl{position:relative;flex:1 1 auto;min-width:0;margin-left:8.4pt;display:flex;align-items:center;justify-content:space-between;padding:0 5.4pt 0 9pt;font-size:15pt;font-weight:700;line-height:1;word-spacing:.15em;white-space:nowrap;}
.ff-sheet[data-form="training"] .fft-ttl>span{position:relative;top:-1.03pt;}
.ff-sheet[data-form="training"] .fft-mid{display:inline-block;width:1em;text-align:center;}   /* 머리 박스 제목의 가운뎃점은 기준 서식도 U+00B7(글자 폭 1em) — 본문 큰 제목·'교육ㆍ훈련 결과' 의 점은 기준도 U+318D */
.ff-sheet[data-form="training"] .fft-ttl>.fft-keep{top:1.07pt;margin-left:6pt;font-size:12pt;color:#00f;word-spacing:.1em;}
.ff-sheet[data-form="training"] .fft-bd{position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible;pointer-events:none;}
.ff-sheet[data-form="training"] .fft-bd rect{fill:none;stroke:var(--fft-c);stroke-width:.48px;}
@media screen{
  .ff-sheet[data-form="training"] .fft-bd rect{stroke-width:1px;}
}

/* ── 법령 근거 줄 · 제목 · 안내문 줄((앞쪽)) ── */
.ff-sheet[data-form="training"] .fft-law{height:12pt;margin-top:18.78pt;padding-left:3pt;font-size:8.04pt;line-height:12pt;word-spacing:.13em;white-space:nowrap;}
.ff-sheet[data-form="training"] .fft-title{height:24pt;margin-top:4.8pt;font-size:15.96pt;font-weight:700;line-height:24pt;text-align:center;word-spacing:.15em;white-space:nowrap;}
.ff-sheet[data-form="training"] .fft-note{display:flex;justify-content:space-between;height:12pt;margin-top:6.04pt;padding:0 2.94pt 0 3pt;font-size:8.04pt;line-height:12pt;word-spacing:.13em;white-space:nowrap;}
.ff-sheet[data-form="training"] .fft-foot{margin-top:27.1pt;padding-right:2.94pt;font-size:8.04pt;line-height:12pt;text-align:right;white-space:nowrap;}

/* ── 표(칸 경계에 선을 직접 그린다: 테두리 없음 · 칸 사이 간격 없음) ── */
.ff-sheet[data-form="training"] .fft-tb{position:relative;width:100%;margin:3.86pt 0 0;table-layout:fixed;border-collapse:separate;border-spacing:0;border:0;background:none;color:#000;font-size:9.96pt;line-height:1.35;}
.ff-sheet[data-form="training"] .fft-tb::before{content:"";position:absolute;left:0;right:0;top:-.5px;height:1px;background:var(--fft-c);transform:scaleY(var(--fft-k));pointer-events:none;}   /* 맨 위 굵은 선 */
.ff-sheet[data-form="training"] .fft-tb th,
.ff-sheet[data-form="training"] .fft-tb td{position:relative;padding:0 2pt .32pt;border:0;background:none;color:#000;font-size:inherit;font-weight:400;text-align:center;vertical-align:middle;overflow-wrap:anywhere;word-break:normal;}
.ff-sheet[data-form="training"] .fft-tb th::before,
.ff-sheet[data-form="training"] .fft-tb td::before{content:"";position:absolute;left:0;right:0;bottom:-.5px;height:1px;background:var(--fft-c);transform:scaleY(var(--fft-h));pointer-events:none;}   /* 칸 아래선 */
.ff-sheet[data-form="training"] .fft-tb th::after,
.ff-sheet[data-form="training"] .fft-tb td::after{content:"";position:absolute;top:0;bottom:0;right:-.5px;width:1px;background:var(--fft-c);transform:scaleX(var(--fft-h));pointer-events:none;}   /* 칸 오른쪽 세로선 */
.ff-sheet[data-form="training"] .fft-tb .fft-e::after{display:none;}   /* 표 오른쪽 끝 칸: 첨부 서식에는 바깥 세로선이 없다 */
/* 이중선: 아래선을 위·아래 두 줄(경계 ±0.54pt)로 */
.ff-sheet[data-form="training"] .fft-tb .fft-d::before{bottom:calc(var(--fft-dof) - .5px);transform:scaleY(var(--fft-h2));}
.ff-sheet[data-form="training"] .fft-tb .fft-dl{position:absolute;left:0;right:0;bottom:calc(var(--fft-dof) * -1 - .5px);height:1px;background:var(--fft-c);transform:scaleY(var(--fft-h2));pointer-events:none;}
/* 맨 아래 굵은 선 */
.ff-sheet[data-form="training"] .fft-tb tr.fft-z>th::before,
.ff-sheet[data-form="training"] .fft-tb tr.fft-z>td::before{transform:scaleY(var(--fft-k));}

/* 머리글(라벨) 칸 */
.ff-sheet[data-form="training"] .fft-tb .fft-lg{line-height:16.1pt;padding-bottom:.82pt;}   /* '소방안전 / 관리대상물' 두 줄 간격 */
.ff-sheet[data-form="training"] .fft-tb .fft-hd{word-spacing:.17em;}                          /* 교육ㆍ훈련 결과 */
.ff-sheet[data-form="training"] .fft-tb .fft-cd{display:block;width:116.3%;margin:0 -8.15% 0;text-align:center;white-space:nowrap;transform:scaleX(.86);transform-origin:50% 50%;}   /* 주간(00:00~00:00) — 기준도 글자 폭을 좁혀 넣음 */

/* 값 칸 */
.ff-sheet[data-form="training"] .fft-tb .fft-v{line-height:1.35;}
.ff-sheet[data-form="training"] .fft-tb .fft-s{text-align:left;padding-left:5pt;padding-right:4pt;}
.ff-sheet[data-form="training"] .fft-tb .fft-tx{white-space:pre-wrap;padding-top:3.5pt;padding-bottom:3.5pt;line-height:1.4;}
/* 비상사태 시나리오 연결(2026-10-20): 주요내용 칸 맨 위 요약 블록. 연결이 없으면 이 요소 자체가 없다(서식 행 수·모양 불변). 칸의 pre-wrap 을 이 블록 안에서는 풀어 마크업 공백이 찍히지 않게 */
.ff-sheet[data-form="training"] .fft-tb .fft-scn{white-space:normal;margin:0 0 2.5pt;padding:0 0 2.5pt;border-bottom:1px dotted var(--fft-c);font-size:8.5pt;line-height:1.35;word-break:keep-all;overflow-wrap:anywhere;}
.ff-sheet[data-form="training"] .fft-tb .fft-scn b{display:block;font-weight:700;}
.ff-sheet[data-form="training"] .fft-tb .fft-scn .fft-scn-i{display:block;font-weight:400;}
.ff-sheet[data-form="training"] .fft-tb .fft-t2{font-size:7.6pt;line-height:1.2;word-break:keep-all;}
.ff-sheet[data-form="training"] .fft-tb .fft-t3{font-size:7pt;line-height:1.15;word-break:keep-all;}
.ff-sheet[data-form="training"] .fft-tb .fft-f1,
.ff-sheet[data-form="training"] .fft-wn.fft-f1{font-size:8.5pt;}
.ff-sheet[data-form="training"] .fft-tb .fft-f2,
.ff-sheet[data-form="training"] .fft-wn.fft-f2{font-size:7.5pt;line-height:1.3;}
/* 전화번호: 평소 한 줄(8.5pt · 대장연락처 9.96pt). 칸 폭보다 길면 JS(fitp)가 글자를 7.5pt → 7pt 로 줄이고(fft-pa/pb/pc), 그래도 길면 두 줄(fft-pd)로 늘린다. 줄 바꿈은 글이 정말 안 들어갈 때만(overflow-wrap:anywhere 는 칸에서 이어받음) */
.ff-sheet[data-form="training"] .fft-tb .fft-ph{font-size:8.5pt;white-space:normal;}
.ff-sheet[data-form="training"] .fft-tb .fft-ph2{font-size:inherit;}
.ff-sheet[data-form="training"] .fft-tb .fft-ph.fft-pa{font-size:8.5pt;}
.ff-sheet[data-form="training"] .fft-tb .fft-ph.fft-pb{font-size:7.5pt;}
.ff-sheet[data-form="training"] .fft-tb .fft-ph.fft-pc{font-size:7pt;}
.ff-sheet[data-form="training"] .fft-tb .fft-ph.fft-pd{display:block;font-size:7pt;line-height:1.2;}

/* ■ 표시 칸 — [ ] 안에 해당되면 ■ */
.ff-sheet[data-form="training"] .fft-cb{display:inline-block;white-space:nowrap;}
.ff-sheet[data-form="training"] .fft-bx{display:inline-flex;justify-content:center;align-items:center;font-style:normal;overflow:visible;}
.ff-sheet[data-form="training"] .fft-bg{width:9.9pt;}
.ff-sheet[data-form="training"] .fft-br{width:8.1pt;}
.ff-sheet[data-form="training"] .fft-grs{display:flex;padding-left:.85pt;text-align:left;white-space:nowrap;}
.ff-sheet[data-form="training"] .fft-gr{flex:0 0 84.24pt;}
.ff-sheet[data-form="training"] .fft-gr.fft-gl{flex:0 0 auto;}
.ff-sheet[data-form="training"] .fft-rl{position:relative;top:-.35pt;display:flex;padding-left:.78pt;text-align:left;white-space:nowrap;}
.ff-sheet[data-form="training"] .fft-r1{flex:0 0 38.1pt;}

/* 작성자 칸 — 이름(가운데) + (서명) 또는 서명 이미지(오른쪽 끝) */
.ff-sheet[data-form="training"] .fft-wr{display:flex;align-items:center;min-width:0;}
.ff-sheet[data-form="training"] .fft-wn{flex:1 1 auto;min-width:0;text-align:center;}
.ff-sheet[data-form="training"] .fft-sg{flex:0 0 auto;margin-right:1pt;white-space:nowrap;}
.ff-sheet[data-form="training"] .fft-sig{display:block;height:18.5pt;width:auto;max-width:78pt;object-fit:contain;-webkit-print-color-adjust:exact;print-color-adjust:exact;}
/* 서명 이미지를 불러오지 못했을 때(JS 가 칸에 fft-fail 을 단다): 깨진 그림 대신 (서명) 글자 */
.ff-sheet[data-form="training"] .fft-sg.fft-fail .fft-sig{display:none;}
.ff-sheet[data-form="training"] .fft-sg.fft-fail::after{content:"(서명)";}
