:root{
  --paper:#FFFFFF; --surface:#FFFFFF; --sunk:#F5F4F2;
  --ink:#141C26; --body:#2B3846; --steel:#566B80; --faint:#8A99A8;
  --rule:#E3E1DE; --rule-hard:#C4C0BB;
  --accent:#C2410C; --accent-2:#EA580C; --accent-soft:#FDE7DA; --accent-line:#F19A6B;
  --go:#15803D; --go-2:#16A34A; --go-soft:#DFF1E5; --go-line:#6FC48D;
  --hold:#A16207; --hold-soft:#FBF1D8; --hold-line:#E0B252;
  --stop:#B3123C; --stop-2:#DC2657; --stop-soft:#FCE3EA; --stop-line:#F08DA6;
  --rail:#E8E6E2;
  --f-disp:"Malgun Gothic","맑은 고딕","Apple SD Gothic Neo","Noto Sans KR",sans-serif;
  --f-body:"Malgun Gothic","맑은 고딕","Apple SD Gothic Neo","Noto Sans KR",sans-serif;
  --f-mono:"IBM Plex Mono","Consolas","Malgun Gothic","맑은 고딕","Apple SD Gothic Neo","Noto Sans KR",monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --paper:#0F141A; --surface:#171E26; --sunk:#1D252E;
  --ink:#F2F5F7; --body:#C6D0D9; --steel:#94A6B5; --faint:#6E8090;
  --rule:#28323C; --rule-hard:#3B4854;
  --accent:#FB923C; --accent-2:#F97316; --accent-soft:#33200F; --accent-line:#8A4A1E;
  --go:#4ADE80; --go-2:#22C55E; --go-soft:#102618; --go-line:#2C6B43;
  --hold:#FBBF24; --hold-soft:#2C2210; --hold-line:#7A5C18;
  --stop:#FB7185; --stop-2:#F43F5E; --stop-soft:#2E1219; --stop-line:#7C2740;
  --rail:#222B34;
}}
:root[data-theme="dark"]{
  --paper:#0F141A; --surface:#171E26; --sunk:#1D252E;
  --ink:#F2F5F7; --body:#C6D0D9; --steel:#94A6B5; --faint:#6E8090;
  --rule:#28323C; --rule-hard:#3B4854;
  --accent:#FB923C; --accent-2:#F97316; --accent-soft:#33200F; --accent-line:#8A4A1E;
  --go:#4ADE80; --go-2:#22C55E; --go-soft:#102618; --go-line:#2C6B43;
  --hold:#FBBF24; --hold-soft:#2C2210; --hold-line:#7A5C18;
  --stop:#FB7185; --stop-2:#F43F5E; --stop-soft:#2E1219; --stop-line:#7C2740;
  --rail:#222B34;
}
*{box-sizing:border-box}
/* ══ 한글 줄바꿈 ══
   브라우저 기본값은 CJK 를 글자 단위로 끊는다 — "받으셨습니다." 의 "다." 한 글자가
   다음 줄로 떨어지는 원인이다(2026-09-07 지적). keep-all 은 공백(어절)에서만 끊는다.
   긴 영문·URL 이 칸을 밀지 않도록 overflow-wrap 을 함께 둔다. */
body,p,li,td,th,h1,h2,h3,h4,dd,dt,caption,figcaption,span,b,strong,mark
  {word-break:keep-all;overflow-wrap:break-word}
h1,h2,h3,.standfirst,.exec-lead{text-wrap:pretty}
body{background:var(--paper);color:var(--body);font-family:var(--f-body);font-size:15.5px;line-height:1.62;
  -webkit-font-smoothing:antialiased;padding:0 20px 90px}
.wrap{max-width:980px;margin:0 auto}

/* ══ 머리 ══ */
.masthead{padding:44px 0 0}
.brandline{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;
  font-family:var(--f-mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--steel);padding-bottom:14px;border-bottom:3px solid var(--ink)}
.brandline b{color:var(--surface);background:var(--accent);font-weight:700;padding:3px 9px}
.to{font-family:var(--f-disp);font-weight:700;font-size:16px;color:var(--accent);margin:26px 0 12px;
  letter-spacing:-.01em}
h1{font-family:var(--f-disp);font-weight:700;font-size:clamp(31px,5.6vw,52px);line-height:1.1;
  letter-spacing:-.025em;color:var(--ink);margin:0 0 20px;text-wrap:balance}
h1 .red{color:var(--stop-2)}
h1 .org{color:var(--accent-2)}
.standfirst{font-size:clamp(16px,2.1vw,18.5px);line-height:1.55;color:var(--body);max-width:66ch;margin:0 0 30px}

/* ══ 히어로 요약 띠 ══ */
.keyband{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:0;
  border:2px solid var(--ink);margin:0 0 6px;background:var(--surface)}
.keyband > div{padding:20px 22px;border-left:1px solid var(--rule)}
.keyband > div:first-child{border-left:none}
.keyband dt{font-family:var(--f-mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--faint);margin-bottom:8px}
.keyband dd{margin:0;font-family:var(--f-disp);font-weight:700;font-size:38px;line-height:1;
  color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.keyband dd small{font-size:16px;font-weight:700;margin-left:3px;color:var(--steel)}
.keyband .sub{display:block;font-family:var(--f-body);font-size:12.5px;font-weight:500;
  color:var(--steel);margin-top:8px;line-height:1.45;letter-spacing:0}
.keyband .k-red dd{color:var(--stop-2)}
.keyband .k-org dd{color:var(--accent-2)}
.keyband .k-go dd{color:var(--go-2)}

/* ══ 단계 ══ */
.step{display:grid;grid-template-columns:70px 1fr;padding-top:54px}
.step-num{position:relative}
.step-num span{font-family:var(--f-mono);font-size:13px;font-weight:700;color:var(--surface);
  background:var(--ink);letter-spacing:.06em;display:inline-block;padding:4px 9px}
.step-num::after{content:"";position:absolute;left:15px;top:40px;bottom:-54px;width:2px;background:var(--rail)}
.step:last-of-type .step-num::after{display:none}
.step-body{min-width:0}
h2{font-family:var(--f-disp);font-weight:700;font-size:clamp(22px,3.2vw,29px);line-height:1.24;
  letter-spacing:-.02em;color:var(--ink);margin:0 0 8px;text-wrap:balance}
.dek{color:var(--steel);font-size:14.5px;margin:0 0 26px;max-width:62ch}
h3{font-family:var(--f-disp);font-weight:700;font-size:17.5px;color:var(--ink);margin:36px 0 13px;
  padding-left:11px;border-left:4px solid var(--accent)}
p{margin:0 0 15px;max-width:66ch}
p:last-child{margin-bottom:0}
strong{color:var(--ink);font-weight:700}
code,.mono{font-family:var(--f-mono);font-size:.9em;font-variant-numeric:tabular-nums}
a{color:var(--accent)}
a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}

/* ══ 인라인 강조 ══ */
mark,.hl{background:var(--accent-soft);color:var(--ink);font-weight:700;padding:1px 4px;
  box-decoration-break:clone;-webkit-box-decoration-break:clone}
.hl-red{background:var(--stop-soft);color:var(--stop);font-weight:700;padding:1px 4px;
  box-decoration-break:clone;-webkit-box-decoration-break:clone}
.hl-go{background:var(--go-soft);color:var(--go);font-weight:700;padding:1px 4px;
  box-decoration-break:clone;-webkit-box-decoration-break:clone}
.big{font-family:var(--f-disp);font-weight:700;font-size:1.32em;color:var(--accent-2);
  font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.big-red{font-family:var(--f-disp);font-weight:700;font-size:1.32em;color:var(--stop-2);
  font-variant-numeric:tabular-nums;letter-spacing:-.01em}

/* ══ 컬러 박스 ══ */
.callout{margin:28px 0;border:2px solid;background:var(--surface)}
.callout .cap{font-family:var(--f-disp);font-weight:700;font-size:13px;letter-spacing:.02em;
  padding:9px 18px;color:#fff;display:flex;align-items:center;gap:9px}
.callout .cap::before{content:"";width:7px;height:7px;background:#fff;border-radius:50%;flex:none}
.callout .in{padding:18px 20px}
.callout p{margin:0;font-size:15px;max-width:none}
.callout p + p{margin-top:11px;font-size:14px}
.c-red{border-color:var(--stop-2);background:var(--stop-soft)}
.c-red .cap{background:var(--stop-2)}
.c-red p strong{color:var(--stop)}
.c-org{border-color:var(--accent-2);background:var(--accent-soft)}
.c-org .cap{background:var(--accent-2)}
.c-go{border-color:var(--go-2);background:var(--go-soft)}
.c-go .cap{background:var(--go-2)}
.c-go p strong{color:var(--go)}
.c-amber{border-color:var(--hold-line);background:var(--hold-soft)}
.c-amber .cap{background:var(--hold)}

/* ══ 표 ══ */
.tw{overflow-x:auto;border:2px solid var(--ink);background:var(--surface);margin:0 0 8px}
table{border-collapse:collapse;width:100%;min-width:620px;font-size:13.5px}
th{font-family:var(--f-mono);font-size:11px;letter-spacing:.07em;text-transform:uppercase;
  color:var(--surface);background:var(--ink);text-align:left;padding:11px 13px;
  white-space:nowrap;font-weight:500}
td{padding:12px 13px;border-top:1px solid var(--rule);vertical-align:top;color:var(--body)}
tbody tr:first-child td{border-top:none}
tbody tr.danger td{background:var(--stop-soft)}
tbody tr.good td{background:var(--go-soft)}
tbody tr.dim td{opacity:.55}
.num{text-align:right;font-family:var(--f-mono);font-variant-numeric:tabular-nums;white-space:nowrap}
.nowrap{white-space:nowrap}
td b{color:var(--ink);font-weight:700}
td .xl{font-family:var(--f-disp);font-weight:700;font-size:16px;color:var(--ink)}
td .xl-red{font-family:var(--f-disp);font-weight:700;font-size:16px;color:var(--stop-2)}
caption{caption-side:bottom;text-align:left;padding:11px 13px;font-size:12.5px;color:var(--steel);
  border-top:2px solid var(--rule-hard);background:var(--sunk)}
caption b{color:var(--ink)}

/* ══ 배지 ══ */
.tag{display:inline-block;font-family:var(--f-mono);font-size:10.5px;font-weight:700;letter-spacing:.05em;
  padding:3px 7px;white-space:nowrap;text-transform:uppercase;color:#fff}
.t-go{background:var(--go-2)}
.t-hold{background:var(--hold)}
.t-stop{background:var(--stop-2)}
.t-org{background:var(--accent-2)}

/* ══ 막대 ══ */
.bars{display:flex;flex-direction:column;gap:13px;margin:6px 0 8px}
.bar-row{display:grid;gap:5px}
.bar-lab{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:14px}
.bar-lab b{font-family:var(--f-disp);font-weight:700;font-size:17px;color:var(--ink);
  font-variant-numeric:tabular-nums}
.bar-track{height:18px;background:var(--sunk);overflow:hidden;border:1px solid var(--rule)}
.bar-fill{height:100%;background:var(--steel)}
.bar-fill.cut{background:var(--stop-2)}
.bar-fill.win{background:var(--accent-2)}
.bar-row.is-cut .bar-lab span,.bar-row.is-cut .bar-lab b{color:var(--stop-2)}
.bar-row.is-win .bar-lab b{color:var(--accent-2);font-size:20px}

/* ══ 통계 타일 ══ */
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:0;
  border:2px solid var(--ink);background:var(--surface);margin:0 0 8px}
.stat{padding:17px 19px;border-left:1px solid var(--rule)}
.stat:first-child{border-left:none}
.stat dt{font-family:var(--f-mono);font-size:11px;letter-spacing:.06em;color:var(--faint);margin-bottom:6px;
  text-transform:uppercase}
.stat dd{margin:0;font-family:var(--f-disp);font-weight:700;font-size:30px;color:var(--ink);
  line-height:1.05;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.stat dd small{font-size:15px;font-weight:700;color:var(--steel);margin-left:2px}
.stat .sub{font-family:var(--f-body);font-size:12.5px;font-weight:500;color:var(--steel);margin-top:7px;
  display:block;line-height:1.45;letter-spacing:0}
.stat.s-red dd{color:var(--stop-2)}
.stat.s-go dd{color:var(--go-2)}
.stat.s-org dd{color:var(--accent-2)}

/* ══ 체크리스트 ══ */
.todo{list-style:none;padding:0;margin:0}
.todo li{display:grid;grid-template-columns:30px 1fr;gap:13px;padding:20px 0;border-top:2px solid var(--rule)}
.todo li:first-child{border-top:none;padding-top:4px}
.box{width:20px;height:20px;border:2px solid var(--accent);margin-top:4px;background:var(--surface)}
.todo b{display:block;color:var(--ink);font-weight:700;font-size:16.5px;margin-bottom:6px;
  font-family:var(--f-disp);letter-spacing:-.01em}
.todo .how{font-size:14px;margin:0}
.todo .how + .how{margin-top:6px}
.todo .why{font-size:13px;color:var(--steel);margin:9px 0 0;padding-left:12px;
  border-left:3px solid var(--rule-hard)}
.when{font-family:var(--f-mono);font-size:11px;letter-spacing:.06em;color:#fff;background:var(--accent);
  text-transform:uppercase;margin-bottom:8px;display:inline-block;padding:3px 8px;font-weight:700}
.when.urgent{background:var(--stop-2)}
.when.calm{background:var(--steel)}

/* ══ 꼬리 ══ */
.colophon{margin-top:64px;padding-top:24px;border-top:3px solid var(--ink);font-size:12.5px;color:var(--steel)}
.colophon p{max-width:none;margin:0 0 8px}
.colophon b{color:var(--ink);font-weight:700}

@media (max-width:640px){
  .step{grid-template-columns:1fr}
  .step-num{padding-bottom:12px}
  .step-num::after{display:none}
  .keyband > div{border-left:none;border-top:1px solid var(--rule)}
  .keyband > div:first-child{border-top:none}
  .stat{border-left:none;border-top:1px solid var(--rule)}
  .stat:first-child{border-top:none}
  body{padding:0 16px 70px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ══════════════════════════════════════════════════════════════════
   인쇄 — A4 흑백/컬러 프린터 공통
   · 다크 모드에서 인쇄해도 흰 종이·검은 글씨가 나오도록 토큰을 되돌린다
   · 표 머리를 검정 → 연회색으로 바꾼다 (잉크 절약, 흑백에서도 글씨가 읽힌다)
   · 표·박스·체크항목이 페이지 경계에서 잘리지 않게 한다
   ══════════════════════════════════════════════════════════════════ */
@page{ margin:14mm 13mm; }
@media print{
  :root, :root[data-theme="dark"], :root:not([data-theme="light"]){
    --paper:#FFFFFF; --surface:#FFFFFF; --sunk:#F2F1EF;
    --ink:#000000; --body:#1A1A1A; --steel:#3F3F3F; --faint:#5E5E5E;
    --rule:#CFCCC8; --rule-hard:#9A9691; --rail:#D8D5D1;
    --accent:#A8360A; --accent-2:#C2410C; --accent-soft:#FBE6D9; --accent-line:#E09A72;
    --go:#0E6B31; --go-2:#12803B; --go-soft:#E5F2E9; --go-line:#6BB98A;
    --hold:#7E4C06; --hold-soft:#F9EFD8; --hold-line:#C79E48;
    --stop:#93102F; --stop-2:#B3123C; --stop-soft:#FAE1E8; --stop-line:#E38DA3;
  }
  *{ -webkit-print-color-adjust:exact; print-color-adjust:exact; }
  body{ font-size:10.2pt; line-height:1.5; padding:0; background:#fff; }
  .wrap{ max-width:none; }

  /* 표 — 머리를 연회색으로. 검정 배경은 흑백 인쇄에서 글씨가 사라진다 */
  th{ background:#EBE9E6; color:#000; border-bottom:1.2pt solid #000; font-weight:700; }
  .tw{ border:1pt solid #000; overflow:visible; }
  table{ min-width:0; font-size:9pt; }
  td{ padding:7px 9px; }
  caption{ background:#F4F3F1; border-top:1pt solid #9A9691; font-size:8.6pt; }

  /* 단계 — 세로 레일은 페이지가 나뉘면 어긋나므로 뺀다 */
  .step{ grid-template-columns:52px 1fr; padding-top:24px; }
  .step-num::after{ display:none; }
  .step-num span{ background:#000; color:#fff; font-size:10pt; }

  /* 1장 = 머리글 + 요약. 실측상 여유가 3mm 뿐이라 머리글을 조인다(2026-09-07). */
  /* 1장 = 머리글 + 요약. 인쇄 규칙을 화면에 적용해 실측하니 283mm 로 14mm 넘쳤다
     (2026-09-07). 리드문은 요약 블록이 같은 말을 하므로 인쇄에서 뺀다. */
  h1{ font-size:17pt; line-height:1.16; margin-bottom:0 }
  .to{ font-size:10pt; margin:7px 0 4px }
  .brandline{ padding-bottom:6px; border-bottom-width:2pt }
  .standfirst{ display:none }
  .masthead{ padding-top:0 }
  .exec{ margin-top:10px }
  .exec-lead{ font-size:12pt; padding:10px 15px 9px }
  .exec-nums > div{ padding:8px 12px }
  .exec-nums dd{ font-size:18pt }
  .exec-2col > section,.exec-do > div{ padding:8px 12px }
  /* 요약 1장은 고객마다 내용 길이가 달라 여유가 들쭉날쭉하다(2026-09-08 실측:
     삼빛 235 · 태신 237 · 우분트팜 274mm). 안쪽 여백을 한 번 더 조여 전부 269mm 아래로 넣는다. */
  .kv{ gap:6px } .kv > div{ padding-bottom:5px }
  .cmp td{ padding:5px 0 }
  .exec-nums > div{ padding:7px 11px }
  .exec-hd{ padding:7px 16px }
  h2{ font-size:14.5pt; }
  h3{ font-size:11.5pt; margin:20px 0 9px; }
    .dek{ font-size:9.6pt; margin-bottom:14px; }
  .keyband dd{ font-size:21pt; }
  .keyband > div{ padding:12px 14px; }
  .stat{ padding:11px 13px; }
  .stat dd{ font-size:17pt; }
  .callout{ margin:16px 0; }
  .callout .in{ padding:12px 14px; }
  .callout p{ font-size:10pt; }
  .todo li{ padding:13px 0; }
  .masthead{ padding-top:0; }

  /* 페이지 경계에서 잘리면 안 되는 덩어리 */
  .tw, .callout, .stats, .keyband, .bars, .todo li, .colophon{ break-inside:avoid; }
  h1, h2, h3{ break-after:avoid; }
  .step-body > h3 + .tw{ break-before:avoid; }
  section.step{ break-inside:auto; }
}

/* ══════════════════════════════════════════════════════════════════
   요약 1장 — 첫 장에서 끝나야 한다
   구조: 결론 한 줄 → 숫자 4칸 → (현재↔기대 대조 | 시장·경쟁) → 즉시 할 일 3칸
   인쇄하면 이 블록 뒤에서 페이지가 넘어가고, 2장부터는 검토용 상세다.
   ══════════════════════════════════════════════════════════════════ */
.exec{border:3px solid var(--ink);margin:30px 0 0;background:var(--surface)}
.exec-hd{background:var(--ink);color:#fff;padding:11px 20px;display:flex;
  justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.exec-hd h2{color:#fff;margin:0;font-size:18px;border:none;padding:0;letter-spacing:-.01em}
.exec-hd span{font-family:var(--f-mono);font-size:10.5px;letter-spacing:.1em;opacity:.75}
.exec-lead{padding:17px 20px 15px;margin:0;font-size:17.5px;line-height:1.45;
  color:var(--ink);font-weight:700;max-width:none;border-bottom:1px solid var(--rule)}
.exec-lead .org{color:var(--accent-2)}
.exec-lead .red{color:var(--stop-2)}

.exec-nums{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border-bottom:1px solid var(--rule)}
.exec-nums > div{padding:13px 16px;border-left:1px solid var(--rule)}
.exec-nums > div:first-child{border-left:none}
.exec-nums dt{font-family:var(--f-mono);font-size:10px;letter-spacing:.06em;color:var(--faint);
  text-transform:uppercase;margin-bottom:5px}
.exec-nums dd{margin:0;font-family:var(--f-disp);font-weight:700;font-size:27px;line-height:1;
  color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.exec-nums dd small{font-size:13px;font-weight:700;color:var(--steel);margin-left:2px}
.exec-nums .cap{display:block;font-family:var(--f-body);font-size:11.5px;font-weight:400;
  color:var(--steel);margin-top:5px;line-height:1.35;letter-spacing:0}
.exec-nums .n-red dd{color:var(--stop-2)}
.exec-nums .n-org dd{color:var(--accent-2)}
.exec-nums .n-go  dd{color:var(--go-2)}

.exec-2col{display:grid;grid-template-columns:1.15fr 1fr;gap:0;border-bottom:1px solid var(--rule)}
.exec-2col > section{padding:15px 20px;border-left:1px solid var(--rule);min-width:0}
.exec-2col > section:first-child{border-left:none}
.exec-h{font-family:var(--f-disp);font-weight:700;font-size:12.5px;color:var(--surface);
  background:var(--steel);display:inline-block;padding:3px 9px;margin:0 0 11px;letter-spacing:.01em}
.exec-h.is-org{background:var(--accent-2)}
.exec-h.is-red{background:var(--stop-2)}

/* 대조표 — 지금 / 갖추면 */
.cmp{width:100%;border-collapse:collapse;font-size:12.5px;min-width:0}
.cmp th{background:transparent;color:var(--faint);font-family:var(--f-mono);font-size:10px;
  letter-spacing:.05em;padding:0 0 6px;border-bottom:1px solid var(--rule-hard);white-space:nowrap}
.cmp td{padding:7px 0;border-top:1px solid var(--rule);vertical-align:baseline;color:var(--body)}
.cmp tr:first-child td{border-top:none}
.cmp .lab{padding-right:10px}
.cmp .lab b{color:var(--ink);font-weight:700;display:block}
.cmp .lab i{font-style:normal;color:var(--steel);font-size:11px}
.cmp .v{text-align:right;font-family:var(--f-mono);font-variant-numeric:tabular-nums;
  white-space:nowrap;padding-left:8px}
.cmp .v b{font-family:var(--f-disp);font-weight:700;font-size:14px;color:var(--ink)}
.cmp .v .up{color:var(--accent-2);font-weight:700}
.cmp .now td{background:var(--sunk)}
.cmp .now .v b{color:var(--steel)}

/* 지표 줄 — 시장·경쟁 */
.kv{display:flex;flex-direction:column;gap:8px;margin:0}
.kv > div{display:flex;justify-content:space-between;align-items:baseline;gap:10px;
  padding-bottom:7px;border-bottom:1px solid var(--rule)}
.kv > div:last-child{border-bottom:none;padding-bottom:0}
.kv dt{font-size:12.5px;color:var(--body);min-width:0}
.kv dt small{display:block;color:var(--faint);font-size:11px;margin-top:2px}
.kv dd{margin:0;font-family:var(--f-disp);font-weight:700;font-size:15px;color:var(--ink);
  white-space:nowrap;font-variant-numeric:tabular-nums}
.kv dd.red{color:var(--stop-2)}
.kv dd.go{color:var(--go-2)}

/* 즉시 할 일 3칸 */
.exec-do{display:grid;grid-template-columns:repeat(3,1fr);gap:0}
.exec-do > div{padding:14px 18px;border-left:1px solid var(--rule)}
.exec-do > div:first-child{border-left:none}
.exec-do .when{margin-bottom:6px}
.exec-do b{display:block;font-family:var(--f-disp);font-weight:700;font-size:13.5px;
  color:var(--ink);margin-bottom:4px;line-height:1.35}
.exec-do p{margin:0;font-size:11.5px;color:var(--steel);line-height:1.45;max-width:none}

@media (max-width:720px){
  .exec-nums{grid-template-columns:repeat(2,1fr)}
  .exec-nums > div:nth-child(3){border-left:none}
  .exec-nums > div:nth-child(n+3){border-top:1px solid var(--rule)}
  .exec-2col,.exec-do{grid-template-columns:1fr}
  .exec-2col > section,.exec-do > div{border-left:none;border-top:1px solid var(--rule)}
  .exec-2col > section:first-child,.exec-do > div:first-child{border-top:none}
}

/* ══ 인쇄: A4 프레임을 매 장 같게 ══ */
@media print{
  @page{ size:A4; }
  /* 요약 1장은 반드시 첫 장에서 끝난다 */
  .exec{ break-after:page; break-inside:avoid; margin-top:14px; border-width:2pt }
  .cmp{ font-size:9pt } .kv dt{ font-size:9pt } .kv dd{ font-size:11pt }
  .exec-do b{ font-size:10pt } .exec-do p{ font-size:8.6pt }
  /* 상세는 2장부터 — 각 단계가 장 중간에서 시작해도 머리가 함께 간다 */
  thead{ display:table-header-group }          /* 표가 장을 넘으면 머리를 다시 찍는다 */
  tfoot{ display:table-footer-group }
  tr{ break-inside:avoid }
  .step{ break-inside:auto }
  .step-body > h2{ break-after:avoid }
}
