/* 2026-09-05: 밝은 배경 위의 골드를 읽히는 값으로 바꿨다. 브랜드 골드(#D7BC97)는
   검은 배경용이라 크림 위에서 1.75:1 이다 — 종이에 옅게 인쇄한 것처럼 뜬다.
   어두운 배경(잉크·에스프레소) 위는 그대로 둔다. 거기서는 11.3:1 로 훌륭하다. */
/* JFP 신입교육 가이드북 — 챕터 본문 스코프 CSS (.gb)
   build/head.html <style> 에서 원본을 추출·스코프한 뒤,
   2026-09-06 사람이 JFP 공통 토큰(--jfp-*, guide.css :root)으로 재작성했다.
   색 · 글자 크기 · 모서리를 여기서 새로 정하지 않고 그 토큰만 별칭한다.
   build_guide.py 로 다시 추출하면 이 수정이 통째로 날아간다.
   웹폰트 <link> 는 manifest.json 의 fonts 필드 참조. */
.gb{--ink:var(--jfp-ink);
  --ink-2:var(--jfp-ink-2);
  --navy:var(--jfp-navy);
  --gold:var(--jfp-gold);
  --gold-2:var(--jfp-gold);
  --gold-a:var(--jfp-gold-a);
  /* 종이 위 골드 글자(장 번호 · 라벨 · 용어)는 밝은 면용 값을 쓴다.
     --jfp-gold-deep(#A8823A) 은 크림 위에서 3.37:1 이라 12~16px 글자에
     모자란다. 선 · 테두리로 쓰이던 자리는 같이 짙어질 뿐 문제없다. */
  --gold-deep:var(--jfp-golda-on-light);
  /* 종이 위 액센트(세로선 · 불릿 · 상태 테두리). 어두운 면의 --gold-a 와
     구분해서 쓴다 — --jfp-gold-a 는 크림 위에서 2.07:1 이다. */
  --gold-a-lt:var(--jfp-golda-on-light);
  --ivory:var(--jfp-ivory);
  --dim:var(--jfp-dim);

  --paper:var(--jfp-paper);
  --paper-2:var(--jfp-paper-2);
  --paper-3:var(--jfp-paper-3);
  --text:var(--jfp-text);
  --text-2:var(--jfp-text-2);
  --text-3:var(--jfp-text-3);
  --line:var(--jfp-line);
  --line-2:var(--jfp-line-2);
  --gline:var(--jfp-gline);
  --gline-soft:var(--jfp-gline-soft);

  --serif:var(--jfp-serif);
  --serif-ko:var(--jfp-serif-ko);
  --sans:var(--jfp-sans);

  --sbw:306px;
  --measure:var(--rd-measure);
  --fs:var(--jfp-fs-body);}
.gb *,.gb *::before,.gb *::after{box-sizing:border-box}
.gb{margin:0;background:var(--paper);color:var(--text);
  font-family:var(--sans);font-size:var(--fs);font-weight:350;
  line-height:1.86;letter-spacing:-.012em;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
.gb img{max-width:100%}
.gb a{color:inherit}
.gb .part-cover{position:relative;background:var(--ink);color:var(--ivory);padding:110px 40px 104px;overflow:hidden;
  border-top:var(--jfp-bw) solid var(--jfp-hair)}
.gb .part-cover::before{content:"";position:absolute;left:50%;top:-46%;width:120%;height:100%;transform:translateX(-50%);
  background:radial-gradient(closest-side,rgba(217,169,78,.17),transparent 70%)}
.gb .part-cover::after{content:"";position:absolute;inset:0;opacity:.44;
  background:repeating-linear-gradient(90deg,rgba(217,169,78,.05) 0 1px,transparent 1px 68px)}
.gb .part-cover>*{position:relative;z-index:2;max-width:var(--measure);margin-left:auto;margin-right:auto}
.gb .part-kicker{font-family:var(--serif);font-size:var(--jfp-fs-label);letter-spacing:.5em;color:var(--gold-a);text-transform:uppercase;margin-bottom:26px}
.gb .part-title{font-family:var(--serif-ko);font-size:var(--jfp-fs-d2);font-weight:400;letter-spacing:-.03em;
  line-height:1.2;margin:0 0 20px;color:var(--ivory)}
.gb .part-tagline{font-family:var(--serif-ko);font-size:var(--jfp-fs-h3);font-weight:300;color:var(--gold);
  letter-spacing:-.015em;margin:0 0 26px;line-height:1.72}
.gb .part-desc{font-size:var(--jfp-fs-sm);font-weight:300;line-height:1.94;color:rgba(240,231,214,.62);max-width:600px;margin:0 0 40px}
.gb .part-list{list-style:none;margin:0;padding:32px 0 0;border-top:var(--jfp-bw) solid var(--jfp-hair);
  display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:2px 40px}
.gb .part-list li{display:flex;gap:15px;align-items:baseline;padding:9px 0;font-size:var(--jfp-fs-sm);color:rgba(240,231,214,.82);font-weight:300}
.gb .part-list li span{font-family:var(--serif);font-size:var(--jfp-fs-label);color:var(--gold-a);flex:none;min-width:22px;letter-spacing:.1em}
.gb .part{display:block}
.gb .chapter{max-width:var(--measure);margin:0 auto;padding:82px 40px 30px;border-bottom:1px solid var(--line-2)}
.gb .chapter:last-child{border-bottom:none}
.gb .ch-head{margin-bottom:44px;padding-bottom:30px;border-bottom:1px solid var(--gline)}
.gb .ch-num{font-family:var(--serif);font-size:var(--jfp-fs-label);letter-spacing:.42em;color:var(--gold-deep);text-transform:uppercase;margin-bottom:18px}
.gb .ch-title{font-family:var(--serif-ko);font-size:var(--jfp-fs-h1);font-weight:500;letter-spacing:-.034em;
  line-height:1.34;margin:0 0 18px;color:var(--text)}
.gb .ch-lead{font-family:var(--serif-ko);font-size:var(--jfp-fs-body);font-weight:300;line-height:1.84;color:var(--text-2);
  margin:0 0 22px;letter-spacing:-.018em;border-left:var(--jfp-bw-2) solid var(--gold-a-lt);padding-left:18px}
.gb .ch-meta{display:flex;flex-wrap:wrap;gap:0;font-size:var(--jfp-fs-label);color:var(--text-2);letter-spacing:.05em}
.gb .ch-meta span{padding-right:15px;margin-right:15px;border-right:1px solid var(--line)}
.gb .ch-meta span:last-child{border-right:none;margin-right:0;padding-right:0}
/* ── 눌린 크림 바탕 안에서는 골드를 한 눈금 더 어둡게 ────────────────────
   아래 상자들은 바탕이 --paper-2(#F5F1E9) · --paper-3(#EFE9DE) 다.
   --golda-on-light 는 종이색(#FCFAF6) 기준 4.57:1 이라 이 위에서는
   4.23 · 3.94:1 로 내려간다. 커스텀 속성은 상속되므로 상자에 한 번만
   갈아 끼우면 안에 있는 라벨 · 번호 · 용어가 전부 따라온다. */
.gb .objectives,
.gb .box,
.gb table.tbl caption,
.gb .script .situation,
.gb .script .why-say,
.gb .activity,
.gb .quiz .ans,
.gb .writein{--gold-deep:var(--jfp-golda-on-tint);
  --gold-on-light:var(--jfp-gold-on-tint);
  --gold-a-lt:var(--jfp-golda-on-tint)}
.gb .objectives{background:var(--paper-2);border:1px solid var(--line);border-left:var(--jfp-bw-2) solid var(--gold-deep);
  padding:26px 30px;margin:0 0 44px}
.gb .objectives h3{font-family:var(--serif);font-size:var(--jfp-fs-label);letter-spacing:.3em;color:var(--gold-deep);
  text-transform:uppercase;margin:0 0 16px;font-weight:600}
.gb .objectives ul{margin:0;padding:0;list-style:none;display:grid;gap:9px}
.gb .objectives li{position:relative;padding-left:23px;font-size:var(--jfp-fs-sm);line-height:1.74;color:var(--text-2)}
.gb .objectives li::before{content:"";position:absolute;left:2px;top:11px;width:9px;height:1px;background:var(--gold-a-lt)}
.gb h3.sec{display:flex;align-items:baseline;flex-wrap:wrap;gap:12px;font-family:var(--serif-ko);
  font-size:var(--jfp-fs-h2);font-weight:500;letter-spacing:-.03em;line-height:1.46;color:var(--text);
  margin:62px 0 20px;padding-top:24px;border-top:1px solid var(--line)}
.gb .secno{font-family:var(--serif);font-size:var(--jfp-fs-label);font-weight:600;letter-spacing:.1em;color:var(--gold-deep);flex:none}
.gb .ts{margin-left:auto;font-family:var(--serif);font-size:var(--jfp-fs-label);letter-spacing:.1em;color:var(--text-2);font-weight:400;flex:none}
.gb h4.sub{font-family:var(--sans);font-size:var(--jfp-fs-h3);font-weight:600;letter-spacing:-.024em;color:var(--text);
  margin:36px 0 13px;padding-left:12px;border-left:var(--jfp-bw-2) solid var(--gline)}
.gb .chapter p{margin:0 0 17px;font-size:var(--fs);line-height:1.9;color:var(--text)}
.gb .chapter p strong{font-weight:600;color:var(--jfp-text);background:linear-gradient(transparent 62%,rgba(217,169,78,.26) 62%)}
.gb .term{font-style:normal;font-weight:500;color:var(--gold-on-light);border-bottom:1px dotted var(--gline)}
.gb .unsure{font-size:var(--jfp-fs-label);color:var(--gold-deep);background:var(--jfp-hair);padding:1px 6px;border-radius:var(--jfp-r);letter-spacing:0;white-space:nowrap}
.gb ul.dots,.gb ol.nums{margin:0 0 22px;padding:0 0 0 2px;list-style:none}
.gb ul.dots li,.gb ol.nums li{position:relative;padding-left:24px;margin-bottom:9px;font-size:var(--jfp-fs-sm);line-height:1.84;color:var(--text)}
.gb ul.dots li::before{content:"";position:absolute;left:6px;top:12px;width:5px;height:5px;
  border:1px solid var(--gold-deep);transform:rotate(45deg)}
.gb ol.nums{counter-reset:nn}
.gb ol.nums li{counter-increment:nn}
.gb ol.nums li::before{content:counter(nn);position:absolute;left:0;top:1px;font-family:var(--serif);font-size:var(--jfp-fs-label);
  font-weight:600;color:var(--gold-deep);width:17px;text-align:center}
.gb .box{position:relative;margin:28px 0;padding:22px 26px 22px 27px;border:1px solid var(--line);
  background:var(--paper-2);break-inside:avoid}
.gb .box::before{content:"";position:absolute;left:0;top:0;bottom:0;width:var(--jfp-bw-2);background:var(--gold-a-lt)}
.gb .box h4{font-family:var(--sans);font-size:var(--jfp-fs-label);font-weight:700;letter-spacing:.18em;
  margin:0 0 12px;color:var(--gold-deep);display:flex;align-items:center;gap:9px}
.gb .box h4::after{content:"";flex:1;height:1px;background:var(--gline-soft)}
.gb .box p{margin:0 0 11px;font-size:var(--jfp-fs-sm);line-height:1.86;color:var(--text-2)}
.gb .box p:last-child{margin-bottom:0}
.gb .box p b{color:var(--text);font-weight:600}
.gb .box ul.dots,.gb .box ol.nums{margin-bottom:0}
.gb .box ul.dots li,.gb .box ol.nums li{font-size:var(--jfp-fs-sm)}
.gb .box .tbl-wrap{margin:14px 0 4px}
.gb .box.key{background:var(--paper-2);border-color:var(--gline)}
.gb .box.key::before{background:var(--gold-deep)}
.gb .box.why::before{background:var(--text-3)}
.gb .box.why h4{color:var(--text-2)}
.gb .box.metaphor{background:var(--paper-2);border-style:dashed}
.gb .box.metaphor::before{background:var(--dim)}
.gb .box.metaphor h4{color:var(--gold-deep)}
.gb .box.case{background:var(--paper-3)}
.gb .box.case::before{background:var(--navy)}
.gb .box.case h4{color:var(--navy)}
.gb .box.warn{background:var(--jfp-warn-bg);border-color:var(--line)}
.gb .box.warn::before{background:var(--jfp-warn)}
.gb .box.warn h4{color:var(--jfp-warn)}
.gb .box.deep{background:var(--jfp-calm-bg);border-color:var(--line)}
.gb .box.deep::before{background:var(--jfp-calm)}
.gb .box.deep h4{color:var(--jfp-calm)}
.gb .box.myth{background:var(--jfp-calm-bg);border-color:var(--line)}
.gb .box.myth::before{background:var(--jfp-calm)}
.gb .box.myth h4{color:var(--jfp-calm)}
.gb .box.myth p b{display:inline-block;min-width:38px;font-family:var(--serif);letter-spacing:.06em}
.gb .tbl-wrap{margin:32px 0;overflow-x:auto;border:var(--jfp-bw) solid var(--line);background:var(--jfp-white);break-inside:avoid}
.gb table.tbl{width:100%;border-collapse:collapse;font-size:var(--jfp-fs-sm);line-height:1.68;min-width:520px}
.gb table.tbl caption{caption-side:top;text-align:left;padding:15px 18px 13px;font-family:var(--sans);
  /* ⚠ 2026-09-15 2차: --gold-deep(= --jfp-golda-on-light #8D6E33)이었다. 그 값은
       **종이색(#FCFAF6) 기준으로 딱 4.57:1** 이라, 바탕이 한 단 눌린 여기
       (--paper-2 #F5F1E9)에서는 **4.23:1** 로 기준 아래였다. :root 주석이
       바로 그 경우를 위해 --jfp-golda-on-tint(#82652F)를 따로 두었다 —
       가장 어두운 크림(#EFE9DE)에서도 4.51:1 이라 눌린 면 어디서나 통과한다.
       ★ 이 자리는 화면에 잘 안 떠서 브라우저 훑기로는 못 잡혔다. 붙박이 시험
         (tests/unit_contrast.mjs)이 규칙을 글자로 읽어 찾아냈다. */
  font-size:var(--jfp-fs-sm);font-weight:600;letter-spacing:.03em;color:var(--jfp-golda-on-tint);background:var(--paper-2);
  border-bottom:1px solid var(--gline)}
.gb table.tbl th{background:var(--jfp-espresso);color:var(--jfp-gold);font-weight:500;font-size:var(--jfp-fs-sm);letter-spacing:.02em;
  padding:12px 15px;text-align:left;vertical-align:top;border-right:var(--jfp-bw) solid var(--jfp-hair)}
.gb table.tbl th:last-child{border-right:none}
.gb table.tbl td{padding:12px 15px;vertical-align:top;border-bottom:1px solid var(--line-2);border-right:1px solid var(--line-2);color:var(--text-2)}
.gb table.tbl td:last-child{border-right:none}
.gb table.tbl td:first-child{font-weight:500;color:var(--text)}
.gb table.tbl tbody tr:nth-child(even) td{background:var(--paper)}
.gb table.tbl tbody tr:hover td{background:var(--paper-2)}
.gb table.tbl tbody tr:last-child td{border-bottom:none}
.gb ol.flow{list-style:none;margin:30px 0;padding:0;counter-reset:ff;display:grid;gap:0;break-inside:avoid}
.gb ol.flow li{position:relative;counter-increment:ff;padding:0 0 22px 52px;border-left:1px solid var(--gline);margin-left:15px}
.gb ol.flow li:last-child{border-left-color:transparent;padding-bottom:0}
.gb ol.flow li .step{position:absolute;left:-15px;top:-2px;width:30px;height:30px;border-radius:50%;
  background:var(--ink);color:var(--gold);display:grid;place-items:center;font-family:var(--serif);
  font-size:var(--jfp-fs-label);font-weight:600;border:var(--jfp-bw) solid var(--gold-a)}
.gb ol.flow li b{display:block;font-size:var(--jfp-fs-sm);font-weight:600;color:var(--text);margin-bottom:6px;letter-spacing:-.022em;padding-top:3px}
.gb ol.flow li p{margin:0;font-size:var(--jfp-fs-sm);line-height:1.8;color:var(--text-2)}
.gb .script{margin:36px 0;border:var(--jfp-bw) solid var(--gline);background:var(--jfp-white);break-inside:avoid}
.gb .script>h4{font-family:var(--sans);font-size:var(--jfp-fs-label);font-weight:700;letter-spacing:.1em;color:var(--ivory);
  background:var(--ink);margin:0;padding:14px 22px;display:flex;align-items:center;gap:11px;line-height:1.5}
/* ⚠ 2026-09-15 2차: --jfp-golda-on-light(#8D6E33)를 쓰고 있었다. 이름 그대로
     **밝은 면용** 값이라(크림 위 4.57:1) 여기 잉크로 채운 머리 띠 위에서는
     **4.32:1** — 기준(4.5:1) 아래였다. 어두운 면 위 골드는 브랜드 골드다(11.3:1). */
.gb .script>h4::before{content:"SCRIPT";font-family:var(--serif);font-size:var(--jfp-fs-label);letter-spacing:.28em;
  color:var(--gold);border:var(--jfp-bw) solid var(--jfp-hair-2);padding:3px 8px;flex:none}
.gb .script .situation{margin:0;padding:14px 22px;font-size:var(--jfp-fs-sm);color:var(--text-2);background:var(--paper-2);
  border-bottom:1px solid var(--line);font-style:italic;line-height:1.72}
.gb .turn{display:flex;gap:16px;padding:16px 22px;border-bottom:1px solid var(--line-2);align-items:flex-start}
.gb .turn:last-of-type{border-bottom:none}
.gb .turn .who{flex:none;width:106px;font-size:var(--jfp-fs-label);font-weight:700;letter-spacing:.02em;padding-top:5px;line-height:1.5}
.gb .turn p{margin:0;font-size:var(--jfp-fs-sm);line-height:1.86;color:var(--text)}
.gb .turn.cust{background:var(--paper)}
.gb .turn.cust .who{color:var(--text-2)}
.gb .turn.me .who{color:var(--gold-deep)}
.gb .turn.bad{background:var(--jfp-warn-bg)}
.gb .turn.bad .who{color:var(--jfp-warn)}
.gb .turn.bad p{color:var(--text-2)}
.gb .turn.good{background:var(--jfp-calm-bg)}
.gb .turn.good .who{color:var(--jfp-calm)}
.gb .script .why-say{margin:0;padding:16px 22px;font-size:var(--jfp-fs-sm);line-height:1.84;color:var(--text-2);
  background:var(--paper-2);border-top:1px solid var(--gline)}
.gb .script .why-say b{color:var(--gold-deep);font-weight:700;margin-right:8px;font-size:var(--jfp-fs-label);letter-spacing:.08em}
.gb .activity{margin:36px 0;border:var(--jfp-bw) solid var(--line);border-top:var(--jfp-bw-2) solid var(--ink);
  background:var(--paper-2);padding:26px 28px;break-inside:avoid}
.gb .activity>h4{font-family:var(--sans);font-size:var(--jfp-fs-label);font-weight:700;letter-spacing:.16em;color:var(--text);
  margin:0 0 14px;display:flex;align-items:center;gap:10px;line-height:1.5}
.gb .activity>h4::before{content:"WORKSHOP";font-family:var(--serif);font-size:var(--jfp-fs-label);letter-spacing:.26em;
  color:var(--gold-deep);border-bottom:var(--jfp-bw) solid var(--gold-a-lt);padding-bottom:2px;flex:none}
.gb .activity .brief{font-size:var(--jfp-fs-sm);color:var(--text-2);margin:0 0 16px;line-height:1.84}
.gb ol.task{list-style:none;counter-reset:tk;margin:0 0 18px;padding:0}
.gb ol.task li{counter-increment:tk;position:relative;padding-left:30px;margin-bottom:10px;font-size:var(--jfp-fs-sm);line-height:1.8;color:var(--text)}
.gb ol.task li::before{content:counter(tk);position:absolute;left:0;top:3px;width:19px;height:19px;
  background:var(--ink);color:var(--gold);font-family:var(--serif);font-size:var(--jfp-fs-label);display:grid;place-items:center;border-radius:50%}
.gb .writein{position:relative;margin-top:16px;background-color:var(--jfp-white);background-image:
  repeating-linear-gradient(to bottom,transparent 0 33px,var(--line) 33px 34px);
  min-height:70px;border:var(--jfp-bw) solid var(--line);padding:0 14px}
.gb .writein[data-lines="2"]{height:70px}
.gb .writein[data-lines="3"]{height:104px}
.gb .writein[data-lines="4"]{height:138px}
.gb .writein[data-lines="5"]{height:172px}
.gb .writein[data-lines="6"]{height:206px}
.gb .writein>span{position:absolute;top:-8px;left:12px;background:var(--paper-2);padding:0 7px;font-size:var(--jfp-fs-label);
  letter-spacing:.16em;color:var(--text-2)}
.gb .writein textarea{width:100%;height:100%;border:none;outline:none;resize:none;background:transparent;
  font-family:var(--sans);font-size:var(--jfp-fs-sm);line-height:34px;color:var(--text);padding:0;letter-spacing:-.01em}
.gb .checklist{margin:30px 0;border:var(--jfp-bw) solid var(--line);background:var(--jfp-white);padding:24px 26px;break-inside:avoid}
.gb .checklist>h4{font-family:var(--sans);font-size:var(--jfp-fs-label);font-weight:700;letter-spacing:.16em;color:var(--text);
  margin:0 0 14px;padding-bottom:11px;border-bottom:1px solid var(--gline);display:flex;align-items:center;gap:10px;line-height:1.5}
.gb .checklist>h4::before{content:"CHECK";font-family:var(--serif);font-size:var(--jfp-fs-label);letter-spacing:.26em;color:var(--gold-deep);flex:none}
.gb .checklist ul{list-style:none;margin:0;padding:0}
.gb .checklist li{border-bottom:1px solid var(--line-2)}
.gb .checklist li:last-child{border-bottom:none}
.gb .checklist label{display:flex;gap:13px;align-items:flex-start;padding:10px 2px;cursor:pointer;font-size:var(--jfp-fs-sm);
  line-height:1.74;color:var(--text-2);transition:color .16s}
.gb .checklist label:hover{color:var(--text)}
.gb .checklist input{appearance:none;-webkit-appearance:none;flex:none;width:16px;height:16px;margin:5px 0 0;
  border:var(--jfp-bw) solid var(--text-3);background:var(--jfp-white);cursor:pointer;position:relative;transition:.16s;border-radius:var(--jfp-r)}
.gb .checklist input:checked{background:var(--ink);border-color:var(--ink)}
.gb .checklist input:checked::after{content:"";position:absolute;left:4.6px;top:1.4px;width:4px;height:8px;
  border:solid var(--gold);border-width:0 1.6px 1.6px 0;transform:rotate(42deg)}
.gb .checklist input:checked+span{color:var(--text-2);text-decoration:line-through;text-decoration-color:var(--gline)}
.gb .quiz{margin:38px 0;border:var(--jfp-bw) solid var(--gline);background:var(--jfp-white);break-inside:avoid}
.gb .quiz>h4{font-family:var(--sans);font-size:var(--jfp-fs-label);font-weight:700;letter-spacing:.14em;color:var(--ivory);
  background:linear-gradient(100deg,var(--ink),var(--navy));margin:0;padding:14px 24px;display:flex;align-items:center;gap:11px;line-height:1.5}
/* ⚠ 위 SCRIPT 와 같은 사고 — 잉크→네이비 그라데이션 머리 위라 4.30:1 이었다. */
.gb .quiz>h4::before{content:"QUIZ";font-family:var(--serif);font-size:var(--jfp-fs-label);letter-spacing:.3em;color:var(--gold);
  border:var(--jfp-bw) solid var(--jfp-hair-2);padding:3px 9px;flex:none}
.gb .quiz>ol{list-style:none;counter-reset:qq;margin:0;padding:0}
.gb .quiz li.q{counter-increment:qq;padding:24px 24px 22px;border-bottom:1px solid var(--line)}
.gb .quiz li.q:last-child{border-bottom:none}
.gb .quiz .qt{position:relative;padding-left:34px;margin:0 0 15px;font-size:var(--jfp-fs-sm);font-weight:500;line-height:1.78;color:var(--text)}
.gb .quiz .qt::before{content:"Q" counter(qq);position:absolute;left:0;top:1px;font-family:var(--serif);font-size:var(--jfp-fs-label);
  font-weight:700;color:var(--gold-deep);letter-spacing:.04em}
.gb ul.opts{list-style:none;margin:0;padding:0 0 0 34px;display:grid;gap:7px}
.gb ul.opts li{padding:10px 15px;border:var(--jfp-bw) solid var(--line);background:var(--paper);font-size:var(--jfp-fs-sm);line-height:1.68;
  color:var(--text-2);cursor:pointer;transition:.16s;position:relative;border-radius:var(--jfp-r);padding-right:52px}
.gb ul.opts li:hover{border-color:var(--gold-a-lt);background:var(--paper-2);color:var(--text)}
.gb ul.opts li.pick-ok{border-color:var(--jfp-calm);background:var(--jfp-calm-bg);color:var(--jfp-calm);font-weight:500}
.gb ul.opts li.pick-no{border-color:var(--jfp-warn);background:var(--jfp-warn-bg);color:var(--jfp-warn)}
.gb ul.opts li.reveal{border-color:var(--jfp-calm);background:var(--jfp-calm-bg);color:var(--jfp-calm)}
.gb ul.opts li.pick-ok::after,.gb ul.opts li.reveal::after{content:"정답";position:absolute;right:13px;top:50%;transform:translateY(-50%);
  font-size:var(--jfp-fs-label);letter-spacing:.1em;color:var(--jfp-calm);font-weight:700}
.gb ul.opts li.pick-no::after{content:"오답";position:absolute;right:13px;top:50%;transform:translateY(-50%);
  font-size:var(--jfp-fs-label);letter-spacing:.1em;color:var(--jfp-warn);font-weight:700}
.gb .quiz .ans{display:none;margin:14px 0 0 34px;padding:15px 18px;background:var(--paper-2);
  border-left:var(--jfp-bw-2) solid var(--gold-deep);font-size:var(--jfp-fs-sm);line-height:1.86;color:var(--text-2)}
.gb .quiz .ans.show{display:block;animation:fadein .26s ease}
.gb .quiz .ans b{color:var(--gold-deep);font-weight:700;margin-right:8px;font-size:var(--jfp-fs-label);letter-spacing:.06em}
@keyframes fadein{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.gb .recap{margin:52px 0 12px;background:var(--ink);color:var(--ivory);padding:30px 32px;position:relative;
  overflow:hidden;break-inside:avoid}
.gb .recap::before{content:"";position:absolute;right:-8%;top:-70%;width:60%;height:200%;
  background:radial-gradient(closest-side,var(--jfp-hair),transparent 70%)}
.gb .recap>*{position:relative;z-index:2}
.gb .recap h3{font-family:var(--serif);font-size:var(--jfp-fs-label);letter-spacing:.34em;color:var(--gold-a);
  text-transform:uppercase;margin:0 0 18px;font-weight:600}
.gb .recap ul{list-style:none;margin:0;padding:0;display:grid;gap:11px}
.gb .recap li{position:relative;padding-left:24px;font-size:var(--jfp-fs-sm);line-height:1.8;color:rgba(240,231,214,.9);font-weight:300}
.gb .recap li::before{content:"";position:absolute;left:2px;top:12px;width:10px;height:1px;background:var(--gold-a)}
.gb .recap li strong{color:var(--gold);font-weight:500;background:none}
.gb .part-close{max-width:var(--measure);margin:0 auto;padding:56px 40px 84px}
.gb .part-close>h3{font-family:var(--serif-ko);font-size:var(--jfp-fs-h2);font-weight:500;letter-spacing:-.028em;margin:0 0 18px;
  padding-top:28px;border-top:var(--jfp-bw-2) solid var(--ink)}
.gb .part-close>p{font-size:var(--jfp-fs-sm);line-height:1.94;color:var(--text-2);margin:0 0 16px}
@media (max-width:1180px){
  .gb{--sbw:264px}
  .gb .chapter,.gb .part-close{padding-left:32px;padding-right:32px}
}
@media (max-width:900px){
  /* 폰에서도 본문을 줄이지 않는다 — 읽는 글자의 바닥은 --jfp-fs-sm(15px) 이고
     본문은 --jfp-fs-body(16.5px) 그대로 간다. (예전 --fs:16px 축소 규칙 삭제) */
  .gb .chapter,.gb .part-close{padding-left:22px;padding-right:22px}
  .gb .part-cover{padding:76px 22px 68px}
  .gb .chapter{padding-top:58px}
  .gb .turn{flex-direction:column;gap:5px}
  .gb .turn .who{width:auto;padding-top:0}
  .gb ul.opts,.gb .quiz .ans{padding-left:0;margin-left:0}
  .gb .quiz li.q{padding:20px 16px}
  .gb .box{padding:20px 18px 20px 20px}
  .gb .script>h4,.gb .activity>h4,.gb .checklist>h4,.gb .quiz>h4{flex-wrap:wrap}
  .gb h3.sec .ts{margin-left:0;width:100%}
  .gb .recap{padding:26px 22px}
}
@page{size:A4;margin:17mm 15mm 18mm}
@media print{
  .gb{--fs:10.5pt;--measure:100%}
  .gb{background:#fff}
  .gb .chapter,.gb .part-close{padding-left:0;padding-right:0;max-width:100%}
  .gb .part{page-break-before:always}
  .gb .part-cover{page-break-after:always;height:248mm;padding:56mm 10mm}
  .gb .chapter{page-break-before:always;padding-top:0;border-bottom:none}
  .gb .part-cover+.chapter{page-break-before:avoid}
  .gb h3.sec{page-break-after:avoid;margin-top:9mm;page-break-inside:avoid}
  .gb h4.sub,.gb .ch-head,.gb .objectives{page-break-after:avoid}
  .gb .box,.gb .tbl-wrap,.gb .script,.gb .activity,.gb .checklist,.gb .quiz,.gb .recap,.gb ol.flow,.gb .writein,.gb ol.task li{page-break-inside:avoid}
  .gb .quiz .ans{display:block !important}
  .gb ul.opts li{cursor:auto}
  .gb .recap,.gb .part-cover,.gb table.tbl th,.gb .script>h4,.gb .quiz>h4,.gb ol.flow li .step,.gb ol.task li::before{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .gb a{text-decoration:none}
  .gb .chapter p,.gb .box p,.gb ul.dots li{orphans:3;widows:3}
}
