/* ══════════════════════════════════════════════════════════════════════
   잡아바 UIUX 개편 · 레거시 브릿지 (C 등급 스타일 승계)
   ----------------------------------------------------------------------
   ★ 한시적 자산이다. 화면 작업이 끝나면 이 파일의 값을 운영 CSS 로 흡수하고
     파일·.jb-root·!important 를 전부 제거한다
     (UI_개편적용범위_및_CSS충돌방지방안.md §6 3단계 = 별도 과업).
     그때까지 이 파일이 곧 「운영 CSS 변경 목록」이다.

   ★ 적용 조건 — 개편 블록 최상위에 .jb-root 가 있어야만 동작한다.
     .jb-root 를 붙이지 않은 화면·영역에는 영향이 0 이다. <body> 에는 부여하지 않는다.

   ★ !important 는 여기에만 쓴다. 다른 jb- CSS 에는 넣지 않는다(grep 한 번에 전수 확인).
     붙이는 기준 = 2026-09-13 개발서버 실측으로 **운영 셀렉터에 지는 것만**.
     운영이 .contents-wrap .job_info_wrap .category_wrap .cate_search .srch_btn (0,5,0)
     처럼 긴 체인을 쓰고 있어 .jb-root .srch_btn (0,2,0) 으로는 이길 수 없다.

   ★ !important 는 **시각 속성에만** 쓴다 — 색 · 폰트 · radius · 높이.
     display · position · float · width · margin 등 레이아웃 속성에는 쓰지 않는다.
     레이아웃을 important 로 덮으면 배치가 깨졌을 때 되돌리기 어렵다.

   근거 = docs/20260913_C등급_스타일승계_매핑표.md · index_new.html 등급 정의(C)
   ══════════════════════════════════════════════════════════════════════ */

/* ── 버튼 ──────────────────────────────────────────────────────────────
   §3.2 「버튼 = 교체」 — pill · Paperlogy Medium

   ★위계 — A등급 확정본(design/job-public-list.html:205-206)이 기준이다.
     보조 동작 = jb-btn--secondary(흰 배경) · 주요 CTA = jb-btn--primary(브랜드 채움).
     **화면당 primary 는 하나다.**
       <button class="jb-btn jb-btn--secondary">선택 저장</button>
       <button class="jb-btn jb-btn--primary">선택한 조건으로 검색</button>
     2026-09-13 1차 적용에서 .srch_btn(필터 선택 토글)을 primary 로 줬다가
     주요 CTA 와 무게가 같아져 위계가 깨졌다 — secondary 로 내린다.

   실측 : .submit_btn · .srch_btn 은 운영이 이겨 important 필요 / .reset_btn 은 불필요 */

/* 주요 CTA — 조회·검색 실행
   ⚠️ `.result_btn` 은 버튼이 아니라 **두 버튼을 감싸는 div 컨테이너**다
      (DIV.result_btn > BUTTON.reset_btn + BUTTON.submit_btn · 2026-09-13 DOM 실측).
      여기에 배경을 주면 컨테이너 전체가 칠해진다. 넣지 말 것.
      클래스 이름이 `_btn` 이라고 버튼이라 단정하지 않는다 — DOM 을 확인한다. */
.jb-root .submit_btn,
.jb-root .btn_search{
  background:var(--jb-brand) !important;
  border-color:var(--jb-brand) !important;
  color:var(--jb-on-brand) !important;
  border-radius:var(--jb-r-pill) !important;
  font-family:var(--jb-font-display) !important;
  font-weight:var(--jb-fw-medium) !important;
}
.jb-root .submit_btn:hover,
.jb-root .btn_search:hover{
  background:var(--jb-brand-hover) !important;
  border-color:var(--jb-brand-hover) !important;
}

/* 보조 — 필터 선택 토글(.srch_btn) · 초기화(.reset_btn)
   .srch_btn 은 운영이 이겨 important 필요 · .reset_btn 은 불필요 */
.jb-root .srch_btn{
  background:var(--jb-surface) !important;
  border-color:var(--jb-border) !important;
  color:var(--jb-muted) !important;
  border-radius:var(--jb-r-pill) !important;
  font-family:var(--jb-font-display) !important;
  font-weight:var(--jb-fw-medium) !important;
}
.jb-root .srch_btn:hover{ background:var(--jb-bg-subtle) !important; }

.jb-root .reset_btn,
.jb-root .btn_reset{
  background:var(--jb-surface);
  border:1px solid var(--jb-border);
  color:var(--jb-muted);
  border-radius:var(--jb-r-pill);
  font-family:var(--jb-font-display);
  font-weight:var(--jb-fw-medium);
}
.jb-root .reset_btn:hover,
.jb-root .btn_reset:hover{ background:var(--jb-bg-subtle); }

/* 공통 버튼 계열 — btn_type01 + btn_style01(채움) / btn_style02(외곽선) */
.jb-root .btn_type01{
  border-radius:var(--jb-r-pill) !important;
  font-family:var(--jb-font-display) !important;
  font-weight:var(--jb-fw-medium) !important;
}
.jb-root .btn_type01.btn_style01{
  background:var(--jb-brand) !important;
  border-color:var(--jb-brand) !important;
  color:var(--jb-on-brand) !important;
}
.jb-root .btn_type01.btn_style02{
  background:var(--jb-surface) !important;
  border-color:var(--jb-border) !important;
  color:var(--jb-inverse) !important;
}

/* ── 필터 선택 항목 ────────────────────────────────────────────────────
   ⚠️ 2026-09-14 정정 — 처음에 「필터 칩」으로 보고 알약 테두리를 줬는데,
      실제 DOM 은 드롭다운 안의 **세로 체크박스 목록**이다(전 33+10+43건이 전부
      `.scroll-content` · `.m_check_list` 안이며 가로 칩 배치는 한 건도 없다).
      A등급 확정본의 가로 칩과 같은 컴포넌트로 본 것이 오판이었다 —
      `.result_btn` 을 버튼으로 오인한 것과 같은 유형이다. 클래스 이름이 아니라 DOM 을 본다.
      → 테두리를 지우고 목록 행으로 되돌린다. 선택 상태만 채움으로 표시한다.
   실측 : 병기만으로 이긴다 — important 불필요 */
.jb-root .check_txt{
  border-radius:var(--jb-r-btn);
  border:1px solid transparent;
  background:var(--jb-surface);
  color:var(--jb-muted);
  font-family:var(--jb-font-body);
}
.jb-root .check_item:hover .check_txt{ background:var(--jb-bg-subtle); }
.jb-root .check_item input:checked + .check_txt{
  background:var(--jb-inverse);
  border-color:var(--jb-inverse);
  color:var(--jb-on-brand);
}

/* ── 태그 ──────────────────────────────────────────────────────────────
   ★ 두 가지를 갈라서 다룬다. 2026-09-14 에 한 규칙으로 묶었다가 결함 2건을 냈다.

   (1) 인기태그 `.keywords a` · `.tag_cont a` = **진짜 칩 요소**(a 하나가 태그 하나).
       칩 스타일을 준다.
   (2) 카드 해시태그 `.d_tag` = **칩이 아니라 span 들을 감싸는 li 줄 컨테이너**다.
       `LI.d_tag > SPAN × N` 구조라 여기에 배경을 주면 줄 전체(378px)가 민트 막대가 된다.
       → 배경·radius 를 주지 않고 색만 바꾼다. 레이아웃 변화 0.
       ⚠️ `.result_btn`(div) · `.check_txt`(세로목록)에 이어 **세 번째 같은 오판**이었다.
         클래스 이름으로 컴포넌트 유형을 추정하지 말고 DOM 을 확인한다.

   색 실측 : 운영이 색을 이기므로(#AFAFAF) important 가 필요하다.
     배경 없이 brand-deep = 5.80:1 · 종전(민트배경+연회색) = 1.93:1 로 AA 미달이었다. */
.jb-root .keywords a,
.jb-root .tag_cont a{
  background:var(--jb-brand-weak);
  color:var(--jb-brand-deep) !important;
  border-radius:20px;
  font-family:var(--jb-font-body);
}
.jb-root .d_tag{
  color:var(--jb-brand-deep) !important;   /* span 들이 상속받는다 */
  font-family:var(--jb-font-body);
}

/* ── 폼 ────────────────────────────────────────────────────────────────
   §3.2 「폼 = 조정」 — 보더·radius 만 토큰 치환한다. 높이·폭은 건드리지 않는다.
   실측 : 운영 .contents-wrap .job_info_wrap .select_style01 (0,3,0) 이 이겨 important 필요 */
.jb-root .select_style01{
  border-radius:var(--jb-r-btn) !important;
  border-color:var(--jb-border) !important;
  font-family:var(--jb-font-body) !important;
}
.jb-root .select_style01:focus{ border-color:var(--jb-brand) !important; }

/* ── 페이지네이션 ──────────────────────────────────────────────────────
   실측 : 병기만으로 이긴다.
   ⚠️ a.current 의 파랑(#008ae0)은 R28 블루 치환 대상이라 여기서 건드리지 않는다(순서 21단계) */
.jb-root .paging a{ font-family:var(--jb-font-display); }

/* ── 제목 ──────────────────────────────────────────────────────────────
   §3.2 「제목 폰트 = 교체」 — Paperlogy.
   실측 : 운영 .contents-wrap … p.tit (0,4,1) 이 이겨 important 필요 */
.jb-root .tit,
.jb-root .s_tit,
.jb-root .d_tit,
.jb-root .c_tit,
.jb-root .srch_title{
  font-family:var(--jb-font-display) !important;
  font-weight:var(--jb-fw-semibold) !important;
  color:var(--jb-ink) !important;
}

/* ── 배지 ──────────────────────────────────────────────────────────────
   §3.2 「배지 = 교체」 r4 / 12px SemiBold.
   ⚠️ 마감임박(D-day)은 상태색 예외 ST-02 로 #ed1c24 를 유지한다 — 색은 건드리지 않는다 */
/* ▲ `.jb-root .d_day` 배지 규칙 삭제 — 참조 0(D130 4-4) */
.jb-root .new_label,
.jb-root .best_label,
.jb-root .hot_label,
.jb-root .receipt_label{
  border-radius:var(--jb-r-sm) !important;
  font-family:var(--jb-font-display) !important;
  font-weight:var(--jb-fw-semibold) !important;
}

/* ── 안내 박스 ─────────────────────────────────────────────────────────
   실측 : 병기만으로 이긴다 */
.jb-root .m_info_box{
  border-radius:var(--jb-r-box);
  border:1px solid var(--jb-border);
  background:var(--jb-bg-subtle);
}

/* ── 목록 화면 공통 (4단계 공공채용 목록에서 추가) ─────────────────────
   §3.2 「제목 폰트 = 교체 · 카드 = 교체 · 칩 = 교체」
   실측(2026-09-14 /pblcEmpmn/list.do) : 아래는 전부 important 없이 이긴다.
   ⚠️ 요소 셀렉터 h2·h3 는 반드시 .jb-root 하위에서만 쓴다(격리 원칙 3). */
.jb-root h2{
  font-family:var(--jb-font-display);
  color:var(--jb-ink);
}
/* 굵기는 «운영 제목»에만 건다 — `jb-` 컴포넌트 제목은 제 규격의 굵기를 따른다.
   🔴 2026-09-18 정정 — 종전에는 아래처럼 «덮은 뒤 되살리는» 방식이었다.
        .jb-root h2{ font-weight:semibold }                 (0,1,1)
        .jb-root h2[class*="jb-"]{ font-weight:inherit }    (0,2,1)  ← 「jb- 제목 보호」
        .jb-root h2.jb-mypage__group{ font-weight:bold }    (0,2,1)  ← 하나씩 복원
        .jb-root h2.jb-mysec__title{ font-weight:bold }
      주석은 「앞으로 생길 jb- h2 도 함께 보호된다」였지만 «사실과 반대»였다.
      `inherit` 은 보호가 아니라 부모 굵기(400)로 «떨어뜨린다». 복원 목록에 없는 jb- 제목은 전부 400 이 됐다.
      dev 배포본(#3050) 실측 — 규격이 bold/semibold 인 제목 3종이 전부 400 이었다.
        jb-searchmodal__title(GNB 통합검색 · 전 화면) · jb-ddaybox__title · jb-listsec__title
      사용 중인 jb- h2 9종(subhead · listsec · mysec · display · ddaybox · subhero · searchmodal ·
      mypage__group · cardslider)이 «전부» 자기 규격에 굵기를 선언하고 있으므로,
      덮지 않으면 되살릴 일도 없다. 복원 목록도 함께 걷었다. */
.jb-root h2:not([class*="jb-"]){ font-weight:var(--jb-fw-semibold); }
.jb-root .main_txt{ font-family:var(--jb-font-body); color:var(--jb-muted); }

/* 필터 탭(근무지역·채용분야·고용형태·채용구분) */
.jb-root .p_btn button{ font-family:var(--jb-font-display); font-weight:var(--jb-fw-medium); }
.jb-root .p_btn.active button{ color:var(--jb-brand); }

/* 카드 안 태그
   실측(2026-09-14 확정본 대조) : 배경·radius 는 이기고 **색만 진다**(검정이 남는다).
   대비는 18:1 로 문제없지만 확정본(job-public-list.html)의 브랜드 톤과 달라진다.
   .d_tag 와 같은 패턴이라 color 에만 important 를 건다. */
.jb-root .lb_tag{
  background:var(--jb-brand-weak);
  color:var(--jb-brand-deep) !important;
  border-radius:var(--jb-r-pill);
}

/* 결과 카드 — §3.2 「카드 = 교체」 r20
   ⚠️ radius·보더색만 준다. 레이아웃(폭·여백·display)은 건드리지 않는다.
   6·7단계 실측 : 기업채용 목록(r10)·상세(r15)는 운영이 이겨 important 가 필요하다.
   공공채용 목록·대외활동은 important 없이도 이겼으므로 값이 같아 무영향이다. */
.jb-root:not(.jb-mypage) .item{   /* 마이페이지 제외 — 멘토링 목록 행이 .item 이라 카드 테두리가 붙으면 안 된다 */
  border:1px solid var(--jb-border);
  border-radius:var(--jb-r-card) !important;
  border-color:var(--jb-border) !important;
}

/* ▲ 2026-09-17 · 95지시 04-13(D58) — 「04 공공채용 결과 목록만 예외」 블록을 지웠다.
   그 블록은 `li.item > a.jb-jobcard` 구조에서 바깥 래퍼의 테두리를 걷어내려고 둔 것이다.
   D58 로 카드가 **stretched link**(`div.jb-jobcard` + `a.jb-jobcard__title`)가 되면서
   `li.item` 래퍼 자체가 사라져 매칭 대상이 없다 — 이중 테두리(04-1)도 함께 해소됐다.
   ⚠️ 위 227 포괄 규칙(`.jb-root:not(.jb-mypage) .item`)은 그대로 둔다 —
      기업채용 목록·상세 · 기업지원 목록이 의존한다. */

/* ── 기업채용 목록·상세 (6·7단계에서 추가) ───────────────────────────────
   운영 마크업이 공공채용과 완전히 다르다 — 목록은 comRecruit.css, 상세는 박람회
   계열(exhb_*)을 그대로 쓴다. 그래서 위의 공통 규칙이 거의 걸리지 않아
   이 화면들의 고유 클래스를 따로 받는다.

   ★ exhb_* · blue_btn* 은 박람회 화면과 공유하는 클래스다.
     .jb-root 를 붙이지 않은 박람회 화면에는 영향이 0 이므로 그대로 둔다
     — 운영 CSS 를 직접 고쳤다면 박람회까지 함께 바뀌었을 자리다(브릿지의 이유).

   실측(2026-09-14 /empmn/enterpriseEmployListNew.do · /empmn/jobEntDtl.do?seq=14514) :
     폰트 계열은 병기만으로 이기고, **배경·보더·radius 는 전부 진다** → important 필요. */

/* 목록 — 검색 실행(주) · 초기화(보조)
   운영 .btn.search 는 코랄(#ff6163) · .btn.reset 은 회색 채움이었다.
   §3.2 「버튼 = 교체」로 브랜드 채움 + 흰 배경 보조로 위계를 다시 세운다. */
.jb-root .btn.search{
  background:var(--jb-brand) !important;
  border:1px solid var(--jb-brand) !important;
  color:var(--jb-on-brand) !important;
  border-radius:var(--jb-r-pill) !important;
  font-family:var(--jb-font-display) !important;
  font-weight:var(--jb-fw-medium) !important;
}
.jb-root .btn.search:hover{
  background:var(--jb-brand-hover) !important;
  border-color:var(--jb-brand-hover) !important;
}
/* ⚠️ border-color 만으로는 안 된다 — 운영이 border-width:0 이라 테두리가 안 그려져
      초기화 버튼이 맨 텍스트로 보였다(2026-09-14 배포 후 육안 확인).
      width/style 까지 줘야 보조 버튼의 외곽선이 산다. 높이가 46→48px 로 2px 커지는데
      검색 버튼도 같이 커져 둘의 정렬은 유지된다. */
.jb-root .btn.reset{
  background:var(--jb-surface) !important;
  border:1px solid var(--jb-border) !important;
  color:var(--jb-muted) !important;
  border-radius:var(--jb-r-pill) !important;
  font-family:var(--jb-font-display) !important;
  font-weight:var(--jb-fw-medium) !important;
}
.jb-root .btn.reset:hover{ background:var(--jb-bg-subtle) !important; }

/* 목록 — 카드 제목 · 페이지네이션 · 출처 (important 없이 이긴다) */
.jb-root .rctit{
  font-family:var(--jb-font-display) !important;
  font-weight:var(--jb-fw-semibold) !important;
  color:var(--jb-ink) !important;
}
.jb-root .paginate_button{ font-family:var(--jb-font-display); }
.jb-root .source{ color:var(--jb-muted); }

/* 상세 — 박람회 계열 버튼
   .red_btn(입사지원) · .blue_btn(지원하기) = 같은 「지원」 동작의 상·하단 배치라
   둘 다 주요 CTA 로 둔다. .blue_btn02(관심·알림) · .gray_btn(목록) = 보조. */
.jb-root .exhb_btn{
  border-radius:var(--jb-r-pill) !important;
  font-family:var(--jb-font-display) !important;
  font-weight:var(--jb-fw-medium) !important;
}
.jb-root .exhb_btn.red_btn,
.jb-root .exhb_btn.blue_btn{
  background:var(--jb-brand) !important;
  border-color:var(--jb-brand) !important;
  color:var(--jb-on-brand) !important;
}
.jb-root .exhb_btn.red_btn:hover,
.jb-root .exhb_btn.blue_btn:hover{
  background:var(--jb-brand-hover) !important;
  border-color:var(--jb-brand-hover) !important;
}
.jb-root .exhb_btn.blue_btn02{
  background:var(--jb-surface) !important;
  border-color:var(--jb-brand) !important;
  color:var(--jb-brand-deep) !important;
}
.jb-root .exhb_btn.gray_btn{
  background:var(--jb-surface) !important;
  border-color:var(--jb-border) !important;
  color:var(--jb-muted) !important;
}

/* 상세 — 섹션 제목(상세내용 / 기업의 다른 채용공고 / 유사공고)
   ⚠️ 요소 셀렉터 h3 는 .jb-root .info_tit 하위로만 좁힌다(격리 원칙 3) */
.jb-root .info_tit h3{
  font-family:var(--jb-font-display) !important;
  font-weight:var(--jb-fw-semibold) !important;
  color:var(--jb-ink) !important;
}

/* ══ 20-B 공공채용 목록 2단 재배치 (2026-09-14) ═══════════════════════
   상단 탭에 있던 체크박스를 좌측 aside.jb-filter 로 옮기면서, 운영 CSS 가
   기대하던 조상 체인(.pbj_result / .pbj_tab_content)이 사라진 요소들이 있다.
   ⚠️ publicJob.css 는 화면 JSP 가 직접 link 해서 **브릿지보다 뒤에** 로드된다.
      같은 특성도로는 못 이기므로 요소 셀렉터를 하나 더해 올린다. */

/* ▲ 2026-09-17 · 95지시 04-13(D58) — 1261↑ 「3열」 규칙(`.jb-listlayout .job_list li.item`)을 지웠다.
   결과 목록에 `li` 가 없어졌고(래퍼 제거), 배치는 아래 `.job_list.jb-joblist` 그리드 1열이 맡는다. */

/* ▲ D122 · 04 4차 #3 (D57) — 「선택된 조건 칩」 규칙(`.jb-root .jb-selcond .selected_keyword` · `.btn_del`)을 걷었다.
     04 fn_AddCdArray 가 정본 칩(`span.jb-chip.jb-chip--outline.jb-chip--removable > button.jb-chip__x`)을 그리게 바뀌어
     `.jb-selcond` · `.selected_keyword` 는 04 에 없다(`.jb-selcond` 는 04 전용이었다 · 정책 목록은 `.jb-selcondrow`). */

/* 2026-09-17 · D57 브릿지 잔재 정리 — 「조건 저장 안내 말풍선」 규칙을 걷어냈다.
   95지시 04-7(D55)로 `fn_SearchSave` 와 `.btn_save` 버튼 3종을 제거해 `.jb-filter .btn_save`
   가 어느 화면에도 없다(usr JSP 전수 grep 0건). 저장 API·테이블은 D56 으로 보존한다. */

/* ══ 20단계 GNB 6메뉴 (2026-09-15) ═══════════════════════════════════════
   메뉴가 5 → 6 으로 늘면서 운영의 gap:100px 고정으로는 넘친다.
   dev 실측(1260 컨테이너 · Noto Sans KR 500 20px) — 가용 1069px · 필요 1163px = 94px 초과.
   gap 64px 면 983px 로 86px 여유가 남는다.
   ★ 경우의 수가 하나다 — GNB 는 1260px 초과에서만 보이고(@media max-width:1260 에서 display:none)
     그때 .innerSection 은 max-width:1260 고정이다.
   ★ 특성도 — 운영 `.depth1 > li:nth-child(2) > ul` 은 (0,2,2), 이 규칙은 (0,4,2)라 순서와 무관하게 이긴다.
     레이아웃 속성이므로 !important 는 쓰지 않는다. */
.jb-root .newGnb .depth1 > li:nth-child(2) > ul{ gap:64px; }
/* 「취업 준비·역량강화」처럼 긴 라벨이 두 줄로 접히지 않게 한다 */
.jb-root .newGnb .depth1 > li > ul > li > a{ white-space:nowrap; }

/* ══ 20단계 유틸바 pill 4종 (2026-09-15) ═══════════════════════════════
   🔴 운영 CSS 는 pill 색을 **순서**로 칠한다 — `li:first-child` · `li:nth-child(2)` · `li:last-child`
      3개뿐이다(`main2025/css/style.css:148~159`). 3종일 때만 전부 칠해진다.
   → 기업서비스를 더해 4종이 되자 **3번째(일자리맵)가 아무 규칙도 못 받아 투명 배경 + 흰 글자**가 됐다.
      (화면에서 화살표만 보이고 글자가 사라졌다 — 2026-09-15 dev 실측)
   → 순서 의존을 끊고 항목마다 클래스를 줘 고정한다. 항목이 늘거나 순서가 바뀌어도 안전하다.
   ★ `#newHeader`(id) 를 쓴 운영 규칙이 (1,2,3) 이라 클래스만으로는 못 이긴다.
     색상은 시각 속성이므로 `!important` 를 쓴다(레이아웃에는 쓰지 않는다).
   ⚠️ 기업서비스 색은 FR-COMMON02 가 「pill 전용 색상 1종 지정」을 잔여로 남긴 항목이다.
      나머지 3종과 겹치지 않는 디자인시스템 토큰(warning-weak/ink · 대비 약 7:1)으로 임시 지정했다.
      디자인 세션이 확정하면 이 두 줄만 바꾸면 된다. */
.jb-root .topMenu ul.left a.jb-utilbtn--lms  { background-color:#EDEFF6 !important; color:#000000 !important; }
.jb-root .topMenu ul.left a.jb-utilbtn--apply{ background-color:#E2F4F5 !important; color:#2E919A !important; }
.jb-root .topMenu ul.left a.jb-utilbtn--map  { background-color:#E5F1FC !important; color:#5589E1 !important; }
.jb-root .topMenu ul.left a.jb-utilbtn--biz  { background-color:var(--jb-warning-weak) !important; color:var(--jb-warning-ink) !important; }

/* ══════════════════════════════════════════════════════════════════════════
   마이페이지 본문 그리드 (UI2026 18단계)
   퍼블은 `jb-mypage` = LNB 200 + gap 70 + 본문 1fr 그리드다.
   운영 `.contentsBox{width:calc(100% - 320px)}`(mypage.css:109)가 그리드 칼럼 안에서
   한 번 더 320px 를 깎아 본문이 좁아진다. 그 계산만 끊는다.
   ★ 레이아웃 속성이라 `!important` 를 쓰지 않는다 — (0,3,0) 이 (0,1,0) 을 그냥 이긴다.
   ══════════════════════════════════════════════════════════════════════════ */
.jb-root .jb-mypage__body.contentsBox{ width:auto; }

/* 마이페이지 공용 카테고리 탭 → 퍼블 칩(`jb-chip`) 모양
   운영 `.myContents ul.categoryMenu li`(mypage.css:118·119)는 사각 탭이다.
   이 탭은 rcmnInfo·intrsInfo·infrm·usrReg 4화면이 **레이아웃에서 공유**하고
   활성 표시를 JS 가 `.active` 로 넣는다 — 마크업·JS 를 건드리지 않고 모양만 덮는다.
   ★ (0,4,1) 이 운영 (0,3,1) 을 이기므로 `!important` 가 필요 없다. */
.jb-root .contentsBox ul.categoryMenu{ gap:10px; margin-bottom:30px; }
.jb-root .contentsBox ul.categoryMenu li{
  width:auto; padding:9px 18px; border:1px solid var(--jb-border); border-radius:var(--jb-r-pill);
  background:var(--jb-surface); font-size:var(--jb-fs-sm); line-height:20px; color:var(--jb-muted); }
.jb-root .contentsBox ul.categoryMenu li.active{
  border:1px solid var(--jb-brand); background:var(--jb-brand);
  font-weight:var(--jb-fw-semibold); color:var(--jb-on-brand); }
/* 관심등록은 탭이 9개(공공일자리 추가분 포함)라 칩 안에서 글자가 접혔다 — 실측 63px.
   칩은 접히지 않게 두고 줄은 목록 쪽에서 넘긴다. */
.jb-root .contentsBox ul.categoryMenu{ flex-wrap:wrap; row-gap:8px; }
.jb-root .contentsBox ul.categoryMenu li{ white-space:nowrap; }
/* 활성 칩 글자가 배경에 묻혔다 — 운영 `mypage.css:120` `.myContents ul.categoryMenu li.active a{color:#38bab2}` 가
   링크에 직접 색을 준다(li 의 color 를 상속하지 않는다). 청록 배경 위 청록 글자라 거의 안 보였다(로컬 실측).
   ⚠️ `li a` 만으로는 (0,3,3) 로 운영과 동점이고, 운영 `mypage.css` 가 브릿지보다 **나중에** 로드돼 졌다(실측).
   `.active` 를 붙여 (0,4,3) 으로 이기게 한다 — `!important` 는 필요 없다. */
.jb-root .contentsBox ul.categoryMenu li a,
.jb-root .contentsBox ul.categoryMenu li.active a{ color:inherit; }

/* 목록 제목 옆 상태 배지(`.lb_box`) — 운영은 진행중이 빨강(#d3000a)이다.
   빨강은 개편 기준에서 **오류·마감** 자리라 진행중에 쓰면 뜻이 뒤집힌다.
   진행중 = 기준색, 마감 = 중립 회색으로 돌린다. 원본이 `!important` 라 같은 무기를 쓴다. */
.jb-root .jb-mypage__body .lb_box{ border-radius:var(--jb-r-sm); padding:2px 10px;
  font-family:var(--jb-font-body); font-size:var(--jb-fs-xs); }
.jb-root .jb-mypage__body .lb_box.st_ing{ background:var(--jb-brand) !important; }
.jb-root .jb-mypage__body .lb_box.st_end{ background:var(--jb-muted) !important; }

/* ══════════════════════════════════════════════════════════════════════════
   마이페이지 개인정보 수정 — 폼 규격 승계 (UI2026 18단계 · 퍼블 mypage-indif.html)
   이 화면은 이력서 작성계 `res_*` CSS 를 쓴다. 개발팀 대원칙 §0 「두 체계를 섞지 않는다」에 따라
   마크업·클래스를 갈지 않고 **퍼블 `jb-form` 의 규격만 토큰으로 얹는다.**
   퍼블 규격 : row = grid 140 + 1fr · label 굵기 medium · actions 가운데 정렬 + 상단 구분선
   ══════════════════════════════════════════════════════════════════════════ */
.jb-root .flex_info{ display:grid; grid-template-columns:140px minmax(0,1fr); gap:16px; align-items:start; }
.jb-root .flex_info > .label-wrap{ padding-top:13px; }
.jb-root .flex_info > .label-wrap p{ font-family:var(--jb-font-display) !important;
  font-weight:var(--jb-fw-medium) !important; font-size:var(--jb-fs-base) !important; color:var(--jb-ink) !important; }
.jb-root .res_red_star{ color:var(--jb-danger) !important; }
/* 입력 요소 — 색·높이·라디우스만 (레이아웃 폭은 res_* 가 계속 책임진다) */
.jb-root input.res, .jb-root select.res, .jb-root textarea.res{
  border:1px solid var(--jb-border) !important; border-radius:var(--jb-r-btn) !important;
  font-family:var(--jb-font-body) !important; font-size:var(--jb-fs-base) !important; color:var(--jb-ink) !important; }
.jb-root input.res:focus, .jb-root select.res:focus, .jb-root textarea.res:focus{
  border-color:var(--jb-brand) !important; }
.jb-root .res_button_writing{
  border-radius:var(--jb-r-pill) !important; font-family:var(--jb-font-body) !important;
  font-weight:var(--jb-fw-medium) !important; color:var(--jb-brand) !important;
  border:1px solid var(--jb-brand) !important; background:var(--jb-surface) !important; }
.jb-root .res_button_writing:hover{ background:var(--jb-brand-weak) !important; }

/* 취업추천서비스 토글 — 퍼블 `jb-switch` 규격
   운영 마크업(`#a_EmpmRcmdtnSrvcApplyYn` + `<span>` 노브)과 JS 를 그대로 두고 모양만 준다.
   ⚠️ 종전에는 `article.mypageWrap .btnWrap` 문맥에서만 스타일이 잡혀 있어
      요약박스를 `jb-mysum` 으로 바꾼 뒤 **크기 0 으로 사라졌다**(2026-09-15 dev 실측).
   ★ JS 가 켜는 클래스는 `.on` 이다(퍼블의 `.is-on` 이 아니다) — 둘 다 받는다. */
.jb-root a.jb-switch{ display:inline-block; position:relative; flex:0 0 auto; width:36px; height:20px;
  border-radius:var(--jb-r-pill); background:var(--jb-border); cursor:pointer; transition:background var(--jb-dur-fast) var(--jb-ease); }
.jb-root a.jb-switch > span{ position:absolute; top:2px; left:2px; width:16px; height:16px; border-radius:50%;
  background:var(--jb-surface); transition:transform var(--jb-dur-fast) var(--jb-ease); }
.jb-root a.jb-switch.on, .jb-root a.jb-switch.is-on{ background:var(--jb-ink); }
.jb-root a.jb-switch.on > span, .jb-root a.jb-switch.is-on > span{ transform:translateX(16px); }

/* GNB 고정배너가 가로 스크롤을 만든다 — 닫힌 `.depth2`(width 0 · overflow visible) 안의
   배너 이미지(239px)가 뷰포트 밖 223px 까지 튀어나온다(1440 폭 실측).
   ⚠️ `origin/product` 헤더에도 동일한 마크업이 있다 — **운영부터 있던 결함**이지 개편 회귀가 아니다.
   ★ `overflow-x: clip` 은 `hidden` 과 달리 세로축을 강제로 바꾸지 않아 드롭다운이 그대로 내려온다. */
.jb-root .newGnb{ overflow-x:clip; }

/* ══ 18단계 · 공고추천(마이페이지 취업활동 탭) ══
   퍼블 없음 — 2025 카드형 구조를 그대로 두고 **색·타이포만** 개편 기준으로 덮는다.
   원본 `main2025/css/style_wfm.css` 는 손대지 않는다(R28 방식).
   같은 CSS 를 쓰는 기업회원 인재추천 화면(`talent_recommendation_list.jsp`)은
   `.jb-root` 가 없어 영향을 받지 않는다 — 격리는 스코프로 보장한다. */
.jb-root .wfm_select_wrapper,
.jb-root .wfm_select_wrapper.line_mint{ border-bottom-color:var(--jb-brand); }
.jb-root .wfm_sky{ color:var(--jb-brand); background-color:var(--jb-brand-weak); }
.jb-root .wfm_blue{ background-color:var(--jb-brand); color:#fff; }
.jb-root .wfm_mint{ background-color:var(--jb-brand); }
.jb-root .wfm_value_status.apply_ing_blue,
.jb-root .wfm_value_status.apply_ing_mint,
.jb-root .wfm_jobPos_status.apply_ing_mint,
.jb-root .wfm_card .wfm_desc a{ color:var(--jb-brand); }
.jb-root .wfm_jobPos_subtitle{ border-bottom-color:var(--jb-brand); }
.jb-root .wfm_list_header_mint{ background-color:var(--jb-brand-weak); }
.jb-root .wfm_list_header div,
.jb-root .wfm_list_header_mint div{ border-bottom-color:var(--jb-brand); }
/* 원본이 `!important` 라 같은 무기가 필요하다 — 시각 속성(테두리색)에만 쓴다. */
.jb-root div.wfm_list > div.wfm_card:last-child,
.jb-root div.wfm_list.line_mint > div.wfm_card:last-child{ border-bottom-color:var(--jb-brand) !important; }
.jb-root .wfm_agree_wrapper button{ background:var(--jb-brand); border-color:var(--jb-brand);
  border-radius:var(--jb-r-btn); font-family:var(--jb-font-display); }
.jb-root .wfm_agree_wrapper button:hover{ background:var(--jb-brand-hover); border-color:var(--jb-brand-hover); }
.jb-root .wfm_card .wfm_job_desc a,
.jb-root .wfm_card .wfm_name a{ font-family:var(--jb-font-display); }

/* ══════════════════════════════════════════════════════════════════════════
   21단계 R28 · 레거시 블루(#2a61f9 · #008ae0) → 기준색  (2026-09-15)
   근거 = `Claude outputs/20260910_R28_블루치환_대응표.md` (74건 · 60줄)
        + 사용자 확정 2026-09-14 「브릿지로 처리」 — 운영 CSS 4종은 **고치지 않는다.**

   ▸ 범위 = **브릿지가 닿는 화면**뿐이다. 대응표 74건 중
     · 헤더(`#newHeader.jb-root`) 10건        → 개편 대상(20단계 GNB)
     · 지원정책 목록군(`.contents-wrap.jb-root .job_info_wrap`) 14건
       (jobSprt·entSprt·empmEdu·extrActv 목록 4벌이 이 마크업을 쓴다 — 실측)
     · 모달 머리(`.jb-root .modal-header`) 1건
     나머지 **32건은 범위 밖**이다 — `#newMain`·`main2025` 는 메인 전용이고
     메인은 `.jb-root` 를 쓰지 않는다(전용 `page-main.css` 관할), 로그인은 외부 SSO 화면이다.
   ▸ 치환색은 대응표의 `#00A6CA` 가 아니라 **토큰 `--jb-brand`(#00AAA5)** 를 쓴다.
     대응표는 2026-09-10 조사본이고, 그 뒤 `tokens.css` 가 디자인시스템 정본이 됐다.
     색을 두 벌로 두면 흡수 단계에서 어느 쪽이 정본인지 다시 다퉈야 한다.
   ▸ 스코프는 **원 셀렉터에 `.jb-root` 를 덧붙이는 방식**이다(꼬리만 따지 않는다).
     꼬리만 쓰면 `button`·`span`·`a` 같은 요소 셀렉터가 되어 격리 4원칙 §3 에 어긋난다.
     덧붙이면 클래스 1개만큼 특정도가 높아져 `!important` 없이 이긴다
     (원본이 `!important` 인 `.modal-header` 만 예외).
  ══════════════════════════════════════════════════════════════════════════ */
.contents-wrap.jb-root .job_info_wrap .category_wrap .check_item input:checked + .check_txt::before{ background: var(--jb-brand); border-color: var(--jb-brand); }
.contents-wrap.jb-root .job_info_wrap .category_wrap .check_item input:checked + .check_txt{ color: var(--jb-brand); }
.contents-wrap.jb-root .job_info_wrap .category_wrap .cate_result .submit_btn{ background: var(--jb-brand); }
.contents-wrap.jb-root .job_info_wrap .content_wrap .fc_blue{ color: var(--jb-brand); }
.contents-wrap.jb-root .job_info_wrap .content_wrap .cont_list_area .txt_wrap .c_tit{ color: var(--jb-brand); }
.contents-wrap.jb-root .job_info_wrap .paging a.current{ color: var(--jb-brand); border: 1px solid var(--jb-brand); }
.contents-wrap.jb-root .job_info_wrap .content_wrap .cont_top .tab_list_wrap ul::after{ background: var(--jb-brand); }
.contents-wrap.jb-root .job_info_wrap .content_wrap .cont_top .tab_list_wrap ul li.active{ background: var(--jb-brand); border: 1px solid var(--jb-brand); }
.contents-wrap.jb-root .job_info_wrap .cont_list .check_wrap .item input[type="checkbox"]:checked + label{ color: var(--jb-brand); border-color: var(--jb-brand); }
.contents-wrap.jb-root .job_info_wrap .cont_list .check_wrap .item input[type="checkbox"]:checked + label::before{ color: var(--jb-brand); border-color: var(--jb-brand); }
.contents-wrap.jb-root .job_info_wrap .m_job_info .m_info_top .m_check_list .check_item input:checked + .check_txt{ color: var(--jb-brand); }
.contents-wrap.jb-root .job_info_wrap .m_job_info .m_info_bottom .btn_pop_open{ background: var(--jb-brand); }
.contents-wrap.jb-root .job_info_wrap .m_job_info .m_info_bottom .btn_search{ background: var(--jb-brand); }
#newHeader.jb-root .bottomMenu .searchBox .inputSearch{ border: 2px solid var(--jb-brand); }
#newHeader.jb-root .newGnb .depth1 > li.moveLink .btnStyle01{ background: var(--jb-brand); border: 1px solid var(--jb-brand); }
#newHeader.jb-root .newGnb .depth1 > li.moveLink .btnStyle02{ color: var(--jb-brand); border: 1px solid var(--jb-brand); }
#newHeader.jb-root .newGnb .depth1 > li > a:hover{ color: var(--jb-brand); }
#newHeader.jb-root .newGnb .depth2 a:hover{ color: var(--jb-brand); }
#newHeader.jb-root .newGnb .depth1 > li > ul a:hover{ color: var(--jb-brand); }
#newHeader.jb-root .h_mobile_top{ border-top: 4px solid var(--jb-brand); }
#newHeader.jb-root .h_mobile_login .btn01.joinBtn{ background: var(--jb-brand); border: 1px solid var(--jb-brand); }
#newHeader.jb-root .searchCont .inputSearch{ border-bottom: 2px solid var(--jb-brand); }
/* UI2026-IT4-8 (D336 · 설계 판단 09-30) — 명도 대비 모드는 GNB · 유틸 글자를 흰색으로 뒤집는데 헤더 바탕은 운영 style.css `#newHeader{background:#fff}`(id)가 칠해 토큰이 진다 → 흰 면 + 흰 글자. id 로 맞선다(색만) */
body.is-high-contrast #newHeader.jb-root{ background: var(--jb-surface); }
@media all and (max-width: 480px) {
  .contents-wrap.jb-root .job_info_wrap .content_wrap .cont_top .tab_list_wrap ul li .ct_txt em{ color: var(--jb-brand); }
}
@media screen and (max-width: 640px) {
  #newHeader.jb-root .bottomMenu{ border-top: 3px solid var(--jb-brand); }
}
@media screen and (max-width: 768px) {
  #newHeader.jb-root .bottomMenu{ border-top: 4px solid var(--jb-brand); }
}
/* ⚠️ 대응표는 이 규칙을 `@media (max-width:768px)` 로 적었는데 **실제로는 최상위**다
   (`css/new/style.css:614` 실측 — 앞 블록이 이미 닫혀 있다). 미디어 안에 두면 PC 에서 파랑이 남는다.
   실제로 로컬에서 관심공고 모달 머리가 #008ae0 로 떴다(2026-09-15 확인).
   공용 모달은 레이아웃 최하단에 있어 본문 `.jb-root` 밖이다 →
   모달 래퍼에 `jb-root` 를 병기해 스코프를 만든다(마크업 한 줄). */
.jb-root .modal-header{ background: var(--jb-brand) !important; }

/* ══ 18단계 · 마이페이지 레거시 본문 공통 ══
   퍼블이 있는 화면(요약·LNB·탭·이력서·추천·개인정보·입사지원)은 개별로 맞췄다.
   나머지 콘텐츠 탭 화면 40여 벌은 **구조를 바꾸지 않고** 기준색·타이포·라디우스만 맞춘다
   (「조정」 등급 — 표는 유지). 본문은 전부 `.jb-mypage__body`(=`.jb-mypage.jb-root` 자식)
   안에 들어오므로 여기 한 벌이면 전 화면에 닿는다. 마이페이지 밖에는 닿지 않는다. */
.jb-root .jb-mypage__body .table-list > thead > tr > th,
.jb-root .jb-mypage__body .table-bordered > thead > tr > th{ background-color:var(--jb-th-bg); color:var(--jb-muted); }
.jb-root .jb-mypage__body .h2_tit h2,
.jb-root .jb-mypage__body .tit,
.jb-root .jb-mypage__body .btn_nomal,
.jb-root .jb-mypage__body .btn{ font-family:var(--jb-font-display); }
.jb-root .jb-mypage__body .btn_puertoRico{ background:var(--jb-brand); border-color:var(--jb-brand); border-radius:var(--jb-r-btn); }
.jb-root .jb-mypage__body .btn_puertoRico:hover{ background:var(--jb-brand-hover); border-color:var(--jb-brand-hover); }
/* 원본이 `!important` 라 같은 무기가 필요하다 — 배경·테두리색(시각 속성)에만 쓴다. */
.jb-root .jb-mypage__body .list-paging.pagination > li.active > a,
.jb-root .jb-mypage__body .list-paging.pagination > li:hover > a{
  background-color:var(--jb-brand) !important; border-color:var(--jb-brand) !important; }

/* ══ R28 보강 · 상세 5종 접수요약의 레거시 파랑 2규칙 (단위테스트01 · R55 · 2026-09-15) ══
   화면설계 세션이 상세 5종의 보이는 모든 요소를 전수 스캔해 남은 것은 이 2규칙뿐이었다.
   원본 = main2024/css/main_2024/style_kgoon.css — R28 대응표가 「공통 20종 밖」으로 분류해 빠졌지만,
   요소가 전부 .jb-root 안(브릿지 적용 화면)이라 덮어야 하는 건이었다.
   · `.contents-wrap .view-wrap .summary_side .state .apply a` (0,5,1) background #008ae0 — 「홈페이지 바로가기」(정책 3종·교육·대외활동)
   · `.contents-wrap .view-wrap .summary_side .sminfo li` (0,4,1) color·border #008ae0 + `:hover` 배경 #008ae0·글자 #fff — 태그 칩(상세 5종)
   원본이 우리보다 특정도가 높아 `!important` 를 쓴다 — 색 속성에만. 칩은 호버 규칙을 뒤에 둬야 흰 글자가 산다. */
.jb-root .summary_side .state .apply a{ background-color:var(--jb-brand) !important; }
.jb-root .summary_side .state .apply a:hover{ background-color:var(--jb-brand-hover) !important; }
.jb-root .summary_side .sminfo li{ color:var(--jb-brand) !important; border-color:var(--jb-brand) !important; }
.jb-root .summary_side .sminfo li:hover{ background-color:var(--jb-brand) !important; color:var(--jb-on-brand) !important; }

/* ▲ D122 · 04 4차 A1 · A7 (D57) — 「공공채용 결과 카드 그리드」 규칙 3줄(`.jb-root .pbj_list .job_list.jb-joblist` · `> .item` · `> .item.nodata`)을 걷었다.
     04 가 운영 래퍼(`article.pbj_list`)와 운영 클래스(`job_list`)를 떼고 정본 `div.jb-container.jb-listpage > … > div.jb-joblist` 가 되어
     운영 flex 4열 규칙이 더는 걸리지 않는다(열 · 간격 = components.css `.jb-joblist`). 빈 결과도 `.item.nodata` 가 아니라 정본 `.jb-empty` 다. */

/* ══ UI2026 06 기업채용 목록 · D119 3차(2026-09-18) — 정본 job-corp-list.html 1:1 로 다시 짰다 ══
   ▲ 종전 «운영 .rclist .item 카드 겨냥» 규칙 3줄(커서 · 호버 · 「상세보기」 숨김)은 카드가 정본 .jb-jobcard 로 바뀌어 걷었다(D57).
   ▼ 남는 것은 «개편 마크업을 운영 comRecruit.css 가 건드리는 곳»뿐이다.
   ① `#comRecruit{ 하늘색 그라데이션 · padding-top:60px }` — 페이지 헤드(회색 띠) 위에 하늘색 띠가 한 겹 더 생겼다(QA 3차 #5).
   ② `#comRecruit h2{ 50px · #003281 · 가운데 }` + `::before`(54×44 아이콘) — 개편 h2(추천 띠 · 직무로 찾기 제목)가 운영 히어로 제목 모양이 됐다.
      규격 값(components.css)을 같은 토큰으로 되돌린다 — 운영 규칙이 id 특정도(1,0,1)라 id 를 함께 써서 이긴다(!important 없음).
   ⚠️ 운영 comRecruit.css 는 건드리지 않는다 — 옛 채용 목록 화면이 같은 id 를 쓴다. */
#comRecruit.jb-root{ padding-top:0; background:none; }
#comRecruit.jb-root h2[class*="jb-"]{ font-size:var(--jb-fs-h3); line-height:var(--jb-lh-tight); color:var(--jb-ink); text-align:left; }
#comRecruit.jb-root h2[class*="jb-"]::before{ content:none; display:none; }

/* ══ UI2026 7단계 · 기업채용 상세 — 청록 히어로 배경 제거 · 요약 카드 규격 (설계 2.7.0 #2) ══
   운영 `.exhb_sub .company_info` 가 배경 이미지(cpn_bg.png)를 깔아 청록 히어로가 된다.
   설계는 흰 카드 위의 요약이라 배경만 무채색으로 덮는다(운영 CSS 는 그대로 둔다). */
.jb-root.exhb_sub .company_info{ background:var(--jb-bg-section); }
.jb-root.exhb_sub .ci_cont_view{ border:1px solid var(--jb-border); border-radius:var(--jb-r-card); background:var(--jb-surface); }
.jb-root.exhb_sub .info_tit h3{ font-family:var(--jb-font-display); }

/* 앵커 탭(설계 2.7.0 #4) — 디자인시스템 탭바 규격과 같은 토큰을 쓴다 */
.jb-anchortabs{ display:flex; gap:var(--jb-sp-2); margin:var(--jb-sp-6) 0 var(--jb-sp-4);
  border-bottom:1px solid var(--jb-border); }
.jb-anchortabs__item{ flex:1; padding:14px 8px; text-align:center; font-family:var(--jb-font-display);
  font-weight:var(--jb-fw-semibold); font-size:var(--jb-fs-sm); color:var(--jb-muted);
  border-bottom:2px solid transparent; }
.jb-anchortabs__item:hover{ color:var(--jb-ink); }
.jb-anchortabs__item[aria-current="true"]{ color:var(--jb-brand); border-bottom-color:var(--jb-brand); }

/* ══ UI2026 21단계 · R28 잔여 레거시 파랑 (08-2/21 지시 1) ══
   `publicJob.css` 의 `.public_job .fcBlue{color:#008ae0}` — 공공채용 화면의 강조 숫자.
   4단계 재개발로 목록의 건수 표기는 `.jb-resulthead` 로 바뀌었지만,
   같은 CSS 를 쓰는 다른 자리(모바일 시트 등)가 남아 있어 브릿지로 함께 덮는다.
   색 속성이라 `!important` 를 쓴다(R28 방식 · 운영 CSS 는 건드리지 않는다). */
.jb-root .public_job .fcBlue{ color:var(--jb-brand) !important; }


/* ▲ 6단계 #5 · 기업채용 목록 좌측 필터 겨냥 브릿지(.jb-filter 안 .cate2_wrap · .choice_wrap · .scrollbar-outer 27줄)는
     D119 3차에서 필터가 정본 .jb-filter__group · .jb-check 로 바뀌어 걷었다(D57). 이 두 클래스를 쓰는 다른 화면은 .jb-filter 밖이라 영향 없음. */

/* 7단계 추가지시 · 기업채용 상세 복리후생 태그(2026-09-16) */
.jb-root .jb-welfare{ display:flex; flex-wrap:wrap; gap:var(--jb-sp-2); }

/* ══ 7단계 추가지시 · 기업채용 상세 2단 스티키 (2026-09-16) ═══════════════
   본문 섹션들이 `containerNew`(1260px 고정) · `pd_inner` 를 쓰고 있어 그리드 칸 안에서 폭이 넘친다.
   `jb-detailmain` 하위에 한해 폭 제약만 푼다. 레이아웃 속성이라 `!important` 를 쓰지 않는다. */
.jb-root .jb-detailmain .containerNew,
.jb-root .jb-detailmain .pd_inner,
.jb-root .jb-detailmain .pd_innder{ width:auto; max-width:none; margin-left:0; margin-right:0; padding-left:0; padding-right:0; }
.jb-root .jb-detailmain > div{ min-width:0; }

/* 우측 스티키 배너 — 디자인시스템 토큰만 쓴다 */
.jb-root .jb-sidebanner{ display:flex; flex-direction:column; gap:var(--jb-sp-2); padding:var(--jb-sp-5);
  border:1px solid var(--jb-border); border-radius:var(--jb-r-card); background:var(--jb-brand-weak);
  text-decoration:none; }
.jb-root .jb-sidebanner:hover{ border-color:var(--jb-brand); }
.jb-root .jb-sidebanner__kicker{ font-size:var(--jb-fs-xs); font-weight:var(--jb-fw-semibold); color:var(--jb-brand-deep); }
.jb-root .jb-sidebanner__title{ font-family:var(--jb-font-display); font-weight:var(--jb-fw-semibold);
  font-size:var(--jb-fs-base); line-height:22px; color:var(--jb-ink); }
.jb-root .jb-sidebanner__go{ margin-top:var(--jb-sp-2); font-size:var(--jb-fs-sm); color:var(--jb-brand-hover);
  text-decoration:underline; text-underline-offset:2px; }

/* 유사공고(#8) — 전체 폭 그리드에서 본문 폭 목록형으로 */
.jb-root .jb-detailmain .open_simil .list_wrap,
.jb-root .jb-detailmain .open_simil ul{ display:flex; flex-direction:column; gap:var(--jb-sp-3); }
.jb-root .jb-detailmain .open_simil li{ width:auto; float:none; margin:0; }

/* ══ 10단계 #6 · 기업지원정책 분류 탭 밑줄형 (D22 · 2026-09-16) ═══════════
   운영 `.tab_list_wrap ul` 은 가로 버튼 띠다. `jb-tabbar` 로 밑줄형으로 바꾸되
   운영 클래스와 `fn_SwitchTab` · `em_EntSprtCnt<코드>` 규약은 그대로 둔다. */
.jb-root .tab_list_wrap .jb-tabbar{ margin:0; padding:0; list-style:none; }
.jb-root .tab_list_wrap .jb-tabbar > li{ float:none; width:auto; margin:0; padding:0; background:none; border:0; }
.jb-root .tab_list_wrap .jb-tabbar > li::before, .jb-root .tab_list_wrap .jb-tabbar > li::after{ display:none; }
.jb-root .tab_list_wrap .jb-tabbar .ct_txt{ margin-left:4px; font-weight:var(--jb-fw-regular); }
/* 활성 표시 — 운영 JS(fn_SwitchTab)가 `li.active` 를 토글한다. 그 상태를 밑줄형 활성 스타일로 잇는다
   (`jb-tabbar__item` 자신은 `aria-current` · `.is-active` 를 보므로 JS 를 고치지 않고 여기서 맞춘다). */
.jb-root .tab_list_wrap .jb-tabbar > li.active > .jb-tabbar__item{
  color:var(--jb-brand); font-weight:var(--jb-fw-bold); border-bottom-color:var(--jb-brand); }

/* ══ 8·10단계 #8 카드 브릿지 — D73 으로 «전부» 걷었다 (2026-09-17) ═══════════
   종전엔 운영 래퍼(`.cont_list_area`)를 남겨 둔 채 «없던 요소만» 얹는 방식이었다.
   D73 이 08·10 카드를 `jb-polcard` 로 교체하면서 그 래퍼가 사라져 4개 규칙이 «전부 죽었다».
     · `.jb-edubadges` · `.jb-entsprtbadges` — JSP 사용처 0건(분류 배지를 `__orgline` 안에 직접 넣는다)
     · `.jb-eduext` · `.jb-eduext__ico`      — 요소는 살아 있지만 `jb-` 끼리의 규칙이라
                                               브릿지가 제자리가 아니다 → `page-list.css` 로 옮겼다.
   ⚠️ 죽은 규칙을 남기면 「처리된 것처럼」 보여 더 위험하다 (D57 · D71 과 같은 취지). */

/* ══ 7단계 M3 · 기업채용 입사지원 모달 안내 (2026-09-16) ══════════════════
   운영 모달(`#supportPopup`)의 동작은 그대로 두고, 프로토타입에 있던 안내 · 체크리스트만 얹는다. */
.jb-root .jb-applymodal{ padding:var(--jb-sp-5) var(--jb-sp-5) 0; }
.jb-root .jb-applymodal__lead{ margin:0; font-size:var(--jb-fs-sm); line-height:22px; color:var(--jb-body); word-break:keep-all; }
.jb-root .jb-applymodal__lead b{ font-weight:var(--jb-fw-semibold); color:var(--jb-ink); }
.jb-root .jb-applymodal__check{ margin:var(--jb-sp-3) 0 0; padding:var(--jb-sp-3) var(--jb-sp-4);
  list-style:none; border:1px solid var(--jb-border-soft); border-radius:var(--jb-r-box); background:var(--jb-bg-summary); }
.jb-root .jb-applymodal__check li{ display:flex; align-items:center; gap:var(--jb-sp-2);
  font-size:var(--jb-fs-sm); line-height:24px; color:var(--jb-ink); }
.jb-root .jb-applymodal__check li + li{ margin-top:4px; }
.jb-root .jb-applymodal__check .jb-ico{ width:16px; height:16px; color:var(--jb-brand); }
.jb-root .jb-applymodal__check span{ color:var(--jb-muted); font-size:var(--jb-fs-xs); }

/* ══ 18단계 하위 화면 · 마이페이지 잔여 레거시 값 (2026-09-16 · 계산값 실측) ══════
   운영 CSS 20종은 고치지 않는다 — 여기서만 덮는다. 색 속성이라 `!important` 를 쓴다. */

/* 공고추천 관리 — 상태 태그의 핫핑크(#FC5CA9)는 토큰 밖이다. 「인기HOT」은 강조이므로 브랜드색으로 */
.jb-root .wfm_status_tag.wfm_hotpink{ background:var(--jb-brand) !important; }
.jb-root .wfm_status_tag{ border-radius:var(--jb-r-sm) !important; font-size:var(--jb-fs-sm) !important; }

/* 취업준비(자소서 · 진단) 표 머리 테두리 #CCCCCC → 토큰 */
.jb-root .mytbl-type th, .jb-root .tbl-type th, .jb-root table.table-list th{ border-color:var(--jb-border) !important; }

/* 🔴 R28 잔여 — 자소서 목록의 `txtBlue` 가 레거시 파랑(#0030FF)이다. 브랜드색으로 덮는다
   (21단계 대응표의 「20종 밖 페이지 전용 CSS」에 해당 · 브릿지가 닿는 화면이라 대상이다) */
.jb-root .txtBlue{ color:var(--jb-brand) !important; }
.jb-root .txtRed{ color:var(--jb-danger) !important; }

/* 🔴 신청·접수 · 자소서 목록의 앵커가 운영 갈색(#3e332e)으로 렌더된다 —
   `a:link{color:#3e332e}`(0,1,1)가 상속을 끊는 그 건이다. 마이페이지 본문 앵커는 색을 상속하게 되돌린다.
   ★ `jb-` 컴포넌트 앵커는 **건드리지 않는다**(자기 색을 가진 것들이 있다) — `:not([class*="jb-"])` 로 뺀다. */
.jb-root .jb-mypage__body a:not([class*="jb-"]):link,
.jb-root .jb-mypage__body a:not([class*="jb-"]):visited{ color:inherit; }

/* 관심·알림 · 목록 공통 셀렉트 테두리 #E2E2E2 → 토큰 · 공고추천 카드 기업명 15px → 토큰 */
.jb-root .comm_select{ border-color:var(--jb-border) !important; }
.jb-root .wfm_company_name{ font-size:var(--jb-fs-sm) !important; }
/* 자소서 목록 표 셀 테두리 */
.jb-root .mytbl-type td, .jb-root .tbl-type td, .jb-root table.table-list td{ border-color:var(--jb-border-weak) !important; }
/* 공고추천 카드의 제목 링크 15px → 토큰 */
.jb-root .wfm_card a{ font-size:var(--jb-fs-sm) !important; }

/* ══ 18단계 하위 화면 · 회원정보(개인정보 수정 / 비밀번호 변경 / 회원탈퇴) ════════
   `/mber/myPage/indif/dtl.do` 는 마이페이지에서 유일하게 `main2025/style_member.css` 를
   **`page-mypage.css` 뒤에** 함께 싣는다(2026-09-16 로컬 실측 · 시트 29종 중 마지막).
   그 시트의 이력서 계열 클래스(`res_*` · `radio-mark` · `custom-checkbox`)가 토큰 밖 값을 쓴다.
   운영 CSS 는 고치지 않고 여기서만 덮는다 — 전부 시각 속성이다. */

/* 라디오 · 체크박스 — 레거시 청록 #01A3B5 는 브랜드색(#00AAA5)이 아니다(R28 계열 잔여) */
.jb-root .jb-mypage__body .radio-mark,
.jb-root .jb-mypage__body .custom-checkbox{ border-color:var(--jb-brand) !important; }
.jb-root .jb-mypage__body .radio-mark{ background-color:var(--jb-brand-weak) !important; }
.jb-root .jb-mypage__body .custom-checkbox{ border-radius:var(--jb-r-sm) !important; }
/* ⚠️ 채움은 **선택된 칸만**이다(`style_member.css:560 input:checked + .custom-checkbox`).
   `.custom-checkbox` 전체에 배경을 주면 미선택 칸까지 채워진다 — 2026-09-16 로컬에서 실제로 냈던 회귀. */
.jb-root .jb-mypage__body .res_checkbox_container input[type="checkbox"]:checked + .custom-checkbox{
  background-color:var(--jb-brand) !important; }

/* 본문 텍스트 — #303030 · #797272 · #949494 · #B0ABAB 는 토큰 밖 회색이다 */
.jb-root .jb-mypage__body [class*="res_title_text"]{ color:var(--jb-ink) !important; }
.jb-root .jb-mypage__body .res_title_text_13,
.jb-root .jb-mypage__body .res_title_text_14{ color:var(--jb-muted) !important; font-size:var(--jb-fs-sm) !important; }
.jb-root .jb-mypage__body [class*="res_title_text_19"]{ font-size:var(--jb-fs-lg) !important; }
.jb-root .jb-mypage__body .res_txt_lightGray_s14{ color:var(--jb-disabled) !important; }
.jb-root .jb-mypage__body .marketing_notice{ color:var(--jb-ctrl-muted) !important; }

/* 입력칸 비활성 배경 #EFEFEF · 구분선 #D8D8D8 · #CCCCCC → 토큰 */
.jb-root .jb-mypage__body input.res[readonly],
.jb-root .jb-mypage__body input.res[disabled]{ background-color:var(--jb-bg-subtle) !important; }
.jb-root .jb-mypage__body .res_line-gray,
.jb-root .jb-mypage__body [class*="res_line-gray_"]{ background-color:var(--jb-border) !important; }

/* 제목 밑줄 #474747 → 토큰(마이페이지 「이어하기」 구분선과 같은 굵기·색) */
.jb-root .jb-mypage__body .myTitle{ border-color:var(--jb-ink) !important; }

/* 입력칸 기본 배경 #EFEFEF(`style_member.css:1824 input.res`) · 버튼 반경 r10 → 토큰 */
.jb-root .jb-mypage__body input.res{ background-color:var(--jb-bg-subtle) !important; }
.jb-root .jb-mypage__body [class*="res_main_button"]{ border-radius:var(--jb-r-btn) !important; }

/* ── 회원탈퇴(`/mber/myPage/indif/memberDelete.do`) — 운영 `custom.css` 계열 잔여값 ────── */
.jb-root .jb-mypage__body .txtPink{ color:var(--jb-danger) !important; }        /* #EF2263 → 경고색 */
.jb-root .jb-mypage__body .whiteBox{ border-radius:var(--jb-r-box) !important; }/* r10 → 스케일 */
.jb-root .jb-mypage__body .board-view-tp02,
.jb-root .jb-mypage__body .board-view-tp02 th,
.jb-root .jb-mypage__body .board-view-tp02 td{ border-color:var(--jb-border) !important; }
.jb-root .jb-mypage__body .board-view-tp02 th{ background-color:var(--jb-th-bg) !important; }
.jb-root .jb-mypage__body .comm_input{ border-color:var(--jb-border) !important; }
.jb-root .jb-mypage__body .btn_athensGray{ background-color:var(--jb-bg-section) !important; }
/* 안내문 본문 회색 #737373 · 버튼 폰트 Spoqa → 토큰 */
.jb-root .jb-mypage__body .unregister span.text,
.jb-root .jb-mypage__body .unregister i{ color:var(--jb-muted-weak) !important; }
.jb-root .jb-mypage__body .btn_medium{ font-family:var(--jb-font-body) !important; }

/* ── 비밀번호 변경 모달(`new2025_mypage_top.jsp #pwLayerPopup`) ────────────────────
   🔴 R28 잔여 — 머리띠 #008AE0 · 확인 버튼 #155CC6 이 레거시 파랑이다
   (21단계 대응표의 `#008ae0` 27건이 이 계열이다). 마크업은 `jb-root` 한 줄만 붙였다. */
.jb-root#pwLayerPopup .modal-header{ background-color:var(--jb-brand) !important; }
.jb-root#pwLayerPopup .btn_blue{ background-color:var(--jb-brand) !important; border-color:var(--jb-brand) !important; }
.jb-root#pwLayerPopup .btn_grey{ background-color:var(--jb-muted) !important; border-color:var(--jb-muted) !important; }
.jb-root#pwLayerPopup .modal-content{ border-radius:var(--jb-r-btn) !important; }
.jb-root#pwLayerPopup .comm_input{ border-color:var(--jb-border) !important; }
.jb-root#pwLayerPopup hr{ border-color:var(--jb-border) !important; color:var(--jb-border) !important; }
.jb-root#pwLayerPopup .f_red{ color:var(--jb-danger) !important; }
.jb-root#pwLayerPopup .txt3{ font-size:var(--jb-fs-sm) !important; }
.jb-root#pwLayerPopup .btn{ font-size:var(--jb-fs-base) !important; }

/* ══ 91 재검증 ② 축 회신 — B · C (2026-09-16 · 기능정의/화면설계 세션 지시) ═══════════
   B. 🔴 운영 `import.css` 의 `a:link,a:visited,a:hover,a:active{color:#3e332e}`(0,1,1) 가
      **앵커 안의 글자까지 상속으로 끌고 간다** — D-day · 페이지네이션 · 클립 아이콘이 푸터 갈색(`--jb-footer-bg`)으로 렌더됐다(104건+).
      링크형 버튼(`components.css:39·:88`)에 쓴 방법 그대로, **상태까지 붙여** 색을 되돌린다. */
/* ▲ `.jb-root .d_day` 색 규칙 삭제 — 참조 0(D130 4-4) */
/* ⚠️ 2026-09-18 정정 — 토큰을 잘못 잡고 있었다. 규격 `.jb-pagination__item` 은 `--jb-body`(#4E4E4E) 인데
   여기서 `--jb-ink`(#222) 로 덮어 **정본보다 진하게** 나왔다(퍼블 대조로 발견).
   ⚠️ `[disabled]` 는 제외한다 — 규격의 `.jb-pagination__item[disabled]{color:var(--jb-disabled)}` (0,2,0) 가
      이 브릿지(0,3,1)에 져서 **비활성 화살표가 회색이 아니라 검정**으로 나오고 있었다.
   ⚠️ `.jb-pagination` 을 쓰는 «다른 화면»(공공채용 목록 등)에도 그대로 적용되는 공통 사안이다. */
.jb-root a.jb-pagination__item:not([aria-disabled="true"]):link, .jb-root a.jb-pagination__item:not([aria-disabled="true"]):visited,
.jb-root a.jb-pagination__item:not([aria-disabled="true"]):hover, .jb-root a.jb-pagination__item:not([aria-disabled="true"]):active{ color:var(--jb-body); }
.jb-root a.jb-pagination__item[aria-disabled="true"]:link, .jb-root a.jb-pagination__item[aria-disabled="true"]:visited,
.jb-root a.jb-pagination__item[aria-disabled="true"]:hover, .jb-root a.jb-pagination__item[aria-disabled="true"]:active{ color:var(--jb-disabled); }   /* D130 4-0 — <a> 비활성 = aria-disabled */
.jb-root a.jb-pagination__item[aria-current="page"]:link,
.jb-root a.jb-pagination__item[aria-current="page"]:visited{ color:var(--jb-on-brand); }
.jb-root .jb-ico--paperclip, .jb-root a:link .jb-ico--paperclip, .jb-root a:visited .jb-ico--paperclip,
.jb-root a:hover .jb-ico--paperclip, .jb-root a:active .jb-ico--paperclip{ background-color:var(--jb-ink); }

/* C. 🟡 신규 `jb-` 컴포넌트 · 운영 버튼이 토큰 밖 값을 쓴다 — 다음 화면이 복제하기 전에 잡는다.
      폰트가 운영 `Spoqa Han Sans` 로 나오는 것은 **상속만 받고 있다**는 뜻이라 명시한다. */
.jb-root .m_info_btn button, .jb-root .btn_pop_open,
.jb-root button.jb-actbtn{ font-family:var(--jb-font-body); }
/* ▲ 2026-09-18 · 06 4차 #13 · 04 4차 #10 — `.jb-root .jb-filter button` 을 위 셀렉터에서 뺐다.
     (0,2,1) 이 `.jb-btn`(Paperlogy · 0,1,0)을 이겨 좌측 필터 「필터 적용」·「취소」가 Noto 로 나왔다(운영 규칙이 아니라 우리 잔재).
     필터 안 본문 글꼴 버튼(.jb-filter__more)은 components.css 가 스스로 --jb-font-body 를 준다. */
/* 91-B 추가분 — 필터 버튼 글자도 푸터 갈색이었다(문서 B 표에는 없지만 같은 결함이다).
   `li` 는 이미 `--jb-body` 인데 `button` 에만 직접 규칙이 걸려 있어 상속이 끊겼다. */
.jb-root .m_info_btn button{ color:var(--jb-body); }
.jb-root .btn_pop_open{ color:var(--jb-ink); }   /* 「검색하기」 — 푸터 갈색이었다 */
/* `publicJob.css :: .public_job .job_list a{display:block; background:#fff; border:1px solid #DFDFDF; border-radius:10px}` 가
   같은 특정도(0,2,1)에 **소스 순서가 뒤**라 이긴다(실측 · publicJob.css 는 JSP 가 직접 link).
   ▲ 95지시 04-13(D58) — 카드가 `a.jb-jobcard` 에서 `div.jb-jobcard` 로 바뀌어
      종전 규칙(`.jb-root a.jb-jobcard`)은 매칭 대상을 잃었다. 대신 그 운영 규칙이
      이제 **제목 링크**(`a.jb-jobcard__title`)에 걸려 제목에 테두리·라운딩이 생긴다 — 걷어낸다.
      카드 테두리는 components.css 의 `.jb-jobcard` 가 스스로 그린다(한 겹). 시각 속성에만 important. */
.jb-root .job_list a.jb-jobcard__title,
.jb-root .job_list a.jb-jobcard__title:hover{
  border:0 !important; border-radius:0 !important;
  background:none !important; box-shadow:none !important;
}
.jb-root b.jb-polcard__title{ font-size:var(--jb-fs-md); }
/* 🔴 2026-09-27 D275 — «눌린 상태»는 비켜 준다. 종전에는 조건 없이 걸려 있어
   `.jb-actbtn[aria-pressed="true"]`(components.css · 0,2,0) 을 이 규칙(0,2,1)이 «이겼고»,
   그래서 헤더 하트를 눌러도 «테두리만» 회색으로 남았다(로컬 실측 — 면·글자색은 브랜드로 바뀌는데 테두리 rgb(221,221,221)).
   정본 규격은 «브랜드 테두리 + 연한 브랜드 면 + 브랜드 글자» 세 가지가 함께다.
   ★ 규칙이 «있는 이유»(기본 테두리 복원)는 그대로 남기고, 눌린 상태에서만 비켜서게 한다.
     (0,4,1) 이라 종전(0,2,1)보다 강하므로 원래 이기던 운영 규칙에는 계속 이긴다. */
.jb-root button.jb-actbtn:not([aria-pressed="true"]):not(.on){ border-color:var(--jb-border); }
/* ▲ 06 4차 #9 — `.jb-root .jb-jobcard .d_day` 삭제(06 카드가 정본 .jb-jobcard__dday 로 바뀌어 참조 없음) */
/* 공공채용 목록 — 스와이퍼 기본 파랑(#007AFF) · 「곧 마감」 띠 배경 #F7F7F7 */
.jb-root .swiper-button-prev, .jb-root .swiper-button-next{ color:var(--jb-ink); }
.jb-root .pbj_slide{ background-color:var(--jb-bg-subtle); }

/* ── 91-D 기업채용 목록 — 카드만 교체되고 주변 운영 블록이 그대로였다(6개 축 전부 걸린 유일한 화면) ──
   ⚠️ 이 화면의 운영 시트(`empmn` 계열)는 **`legacy-bridge.css` 보다 뒤에 로드**된다(실측).
      같은 특정도면 소스 순서로 지므로 시각 속성에 `!important` 를 붙인다(브릿지 원칙 그대로).
   ⚠️ 운영 마크업이 클래스 없는 `div` 라 구조 셀렉터를 쓴다 — `.jb-root` 스코프 안이라 격리는 유지된다.
      `.rcdesc_wrap > div:nth-child(1)` = 직무·조건 설명 · `:nth-child(2)` = D-day. */
.jb-root .rcdesc_wrap{ border-color:var(--jb-border) !important; }
.jb-root .rcdesc_wrap > div:first-child,
.jb-root .rcdesc_wrap > div:first-child *{ color:var(--jb-muted-weak) !important; }
.jb-root .rcdesc_wrap > div:first-child ul.clearfix li{ color:var(--jb-body) !important;
  background-color:var(--jb-brand-weak) !important; }
/* 「경기도유망중소기업」 인증 칩 — 하늘색(#C6E7F0 · 글자 #565656)을 브랜드 약배경으로 */
.jb-root .cert_wrap ul.clearfix li{ color:var(--jb-body) !important;
  background-color:var(--jb-brand-weak) !important; }
.jb-root .rcdesc_wrap > div + div{ color:var(--jb-danger) !important; }   /* D-day */
.jb-root button.like{ border-color:var(--jb-border) !important; font-family:var(--jb-font-body) !important; }
.jb-root button.like.active{ border-color:var(--jb-brand) !important; color:var(--jb-brand) !important; }
.jb-root .scroll-bar{ background-color:var(--jb-border-weak) !important; }
/* ▲ 06 4차 #9 — `.jb-root .consulting_wrap` 3줄 삭제(D119 로 06 하단 「6가지 컨설팅」 블록을 걷어 참조 없음) */
.jb-root .cs_desc span{ background-color:var(--jb-danger) !important; }   /* 「무료」 배지 */
.jb-root .thumb{ border-radius:var(--jb-r-box) !important; }
.jb-root .thumb.cs1{ background-color:var(--jb-brand) !important; }
.jb-root .thumb.cs2{ background-color:var(--jb-brand-light) !important; }
.jb-root .thumb.cs3{ background-color:var(--jb-brand-soft) !important; }
.jb-root .thumb.cs4{ background-color:var(--jb-brand-deep) !important; }
.jb-root .thumb.cs5{ background-color:var(--jb-brand-hover) !important; }
.jb-root .thumb.cs6{ background-color:var(--jb-brand-darker) !important; }
.jb-root .bti_sub_title_small_red_bg{ background-color:var(--jb-danger) !important; font-size:var(--jb-fs-2xs) !important; }

/* 🔴 `jb-preset__link`(D35 관심조건 프리셋)도 운영 갈색으로 렌더됐다 — 상태까지 붙여 되돌린다 */
.jb-root a.jb-preset__link:link, .jb-root a.jb-preset__link:visited,
.jb-root a.jb-preset__link:hover, .jb-root a.jb-preset__link:active{ color:var(--jb-brand); }
/* 🔴 기업채용 목록 — **공고 제목**(`div.rctit > a`)이 푸터 갈색(#3e332e)으로 렌더됐다.
   글자가 있어 눈에 바로 보이는 건이다(91-B 와 같은 원인 · 상태까지 붙인다). */
.jb-root .rctit a:link, .jb-root .rctit a:visited,
.jb-root .rctit a:hover, .jb-root .rctit a:active{ color:var(--jb-ink); }

/* ══ 91-B 일반화 — 운영 `import.css` 의 `a:link,a:visited,a:hover,a:active{color:#3e332e}` 되돌리기 ═══
   개별 컨테이너를 하나씩 잡다 보니 화면마다 새로 나온다(공고 제목 · 교육 제목 · 페이징 …).
   근본은 하나 — **`a:link`(0,1,1) 가 본문 앵커의 색 상속을 끊는 것**이다. 한 규칙으로 되돌린다.

   ★ 특정도를 (0,2,1) 로 **정확히** 맞춘다 — `:where()` 는 특정도 0 이다.
     · 운영 `a:link`(0,1,1) 보다 높다        → 갈색을 이긴다
     · 운영의 **의도된** 앵커 색(`a.xxx:link` (0,2,1) · 뒤에 로드)과는 동률 → 소스 순서로 운영이 이긴다
       (파란 버튼 흰 글자 같은 것을 건드리지 않는다)
     · `jb-` 앵커는 `:where(:not(...))` 로 빼서 components.css 의 자기 색을 지킨다 */
.jb-root a:where(:not([class*="jb-"])):link,
.jb-root a:where(:not([class*="jb-"])):visited,
.jb-root a:where(:not([class*="jb-"])):hover,
.jb-root a:where(:not([class*="jb-"])):active{ color:inherit; }

/* ══ 07 기업채용 상세 — 운영 표·게이지·버튼 잔여값 (2026-09-16 실측 17종) ═══════════════
   이 화면도 페이지 전용 운영 시트가 `legacy-bridge.css` 뒤에 로드된다 → 시각 속성에 `!important`. */
.jb-root p.cate, .jb-root p.cate *,
.jb-root .gTable span, .jb-root .gTable02 span,
.jb-root .gTable > div, .jb-root .gTable02 > div{ color:var(--jb-muted-weak) !important; }
/* 🔴 R28 잔여 — 「지원하기」 버튼이 레거시 하늘색(#00A8CD)이다 */
.jb-root .btn_apply, .jb-root .bottom button{ color:var(--jb-brand) !important;
  border-color:var(--jb-brand) !important; border-radius:var(--jb-r-sm) !important;
  font-family:var(--jb-font-body) !important; }
.jb-root button.like{ color:var(--jb-muted) !important; }   /* 「관심공고 등록」 글자가 푸터 갈색이었다 */
.jb-root .gTable, .jb-root .gTable02{ border-color:var(--jb-util-brand) !important; }
.jb-root .gTable > div, .jb-root .gTable02 > div,
.jb-root .gTable > div > div, .jb-root .gTable02 > div > div{ border-color:var(--jb-border) !important; }
/* 항목명 칸의 옅은 파랑(#E5F2FF) → 브랜드 약배경 */
.jb-root .gTable > div[class*="tit"], .jb-root .gTable02 > div[class*="tit"],
.jb-root .gTable > div:nth-child(odd), .jb-root .gTable02 > div:nth-child(odd){
  background-color:var(--jb-brand-weak) !important; }
.jb-root .bar-bg, .jb-root .bar-color{ border-radius:var(--jb-r-pill) !important; }
.jb-root .bar-bg{ background-color:var(--jb-border-weak) !important; }
/* 채용조건·근무환경 값 글자(#787878) — 클래스 없는 span 이라 컨테이너로 잡는다
   🔴 2026-09-18 정정 — `.jb-root dl dd span` 이 너무 넓어 «jb- 컴포넌트 span» 까지 덮었다.
      우측 접수 요약(dl.jb-sidesum > dd > … > span.jb-badge)의 근무지역 배지 글자가 --jb-muted-weak 로 흐려졌다(05 · 07).
      겨냥은 «운영의 클래스 없는 span» 이므로 jb- 클래스를 단 span 은 뺀다(제목 굵기 결함 148cf2a6f 와 같은 해법). */
.jb-root .gTable dd span, .jb-root .gTable02 dd span,
.jb-root dl dd span:not([class*="jb-"]), .jb-root .li_tit + dl dd span:not([class*="jb-"]){ color:var(--jb-muted-weak) !important; }
.jb-root hr.ex_line{ border-color:var(--jb-border) !important; color:var(--jb-border) !important; }
.jb-root .ci_cont, .jb-root .review-wrap{ border-color:var(--jb-border-weak) !important; }
.jb-root .bottom{ border-color:var(--jb-border) !important; }
.jb-root .ci_cont_view, .jb-root .border_round{ border-radius:var(--jb-r-box) !important; }
.jb-root li.date.end{ color:var(--jb-danger) !important; }
/* 상세 「다른 채용공고」 탭은 채용관 시트(`exhb.css`)를 함께 쓴다 — 값 글자 #787878 */
.jb-root .open_other_list .etc span{ color:var(--jb-muted-weak) !important; }


/* ══ 18단계 · 마이페이지 — 탭이 있는 화면의 «중복 제목» 접기 (2026-09-18) ═════
   확정 퍼블 4벌이 전부 `jb-tabbar` 를 콘텐츠 최상단에 두고 제목이 없다. 탭이 곧 제목이다.
   dev 는 `h3.tit` 이 «활성 탭과 같은 글자»라 제목이 두 번 보이고 있었다.
   → 레이아웃이 `.myTitle` 에 `hidden` 을 붙인다(지우지 «않는다» — `aiMatchBanner.jsp` 의
     `mountAboveTitle()` 이 `.contentsBox > .myTitle` 을 «삽입 기준점»으로 쓴다. 지우면 AI 배너가 사라진다).
   ⚠️ 그런데 운영 `mypage.css:113` 의 `.myContents .myTitle{display:flex}` (0,2,0) 가
      UA 의 `[hidden]{display:none}` 를 이겨 «접히지 않는다» — D57 과 같은 구조다.
      특정도를 (0,3,0) 으로 한 칸 올려 이긴다. `!important` 는 쓰지 않는다(레이아웃 속성). */
.jb-root .myTitle[hidden]{ display:none; }

/* ══ 라디오·체크 «표시»가 운영 CSS 에 진다 — 전 화면 공통 (2026-09-18) ═══════
   `resource/css/new/style.css` L31~42 가 헤더 9종에서 로드돼 모든 new2025 화면에 깔린다.
     input[type=checkbox] + span::after{ content:""; position:absolute; left:0; }
     input[type=radio]    + span::after{ width:20px; height:20px; top:0; }
   특정도가 **(0,1,3)** 이라 규격 `.jb-check__mark::after`·`.jb-radio__mark::after` **(0,1,1)** 을 이긴다.
   → 체크 표시가 5×9 체크마크가 아니라 **18×18 네모**로, 라디오 흰 점이 `inset 5px·8×8` 이 아니라
     **20×20** 으로 나와 초승달처럼 잘려 보인다.
   ⚠️ **이미 배포된 화면들도 깨져 있었다** — 04 공공채용 목록 체크박스 실측 `18px x 18px left0 top2`
      (기대 `5x9 · left50% · top46%`). 마이페이지만의 문제가 아니다.
   ⚠️ 레이아웃 속성이라 `!important` 를 쓰지 않는다 — 특정도를 (0,3,3) 으로 올려 이긴다. */
.jb-root .jb-check input[type="checkbox"] + .jb-check__mark::after{
  left:50%; top:46%; right:auto; bottom:auto; width:5px; height:9px; }
.jb-root .jb-radio input[type="radio"] + .jb-radio__mark::after{
  inset:5px; width:auto; height:auto; }

/* ▲ D122 · 04 4차 A1 (D57) — 「04 공공채용 목록 — 모바일 좌우 여백 16px」(D110 ③) 규칙 2줄
     (`.jb-root.public_job .innerSection` · `.pbj_list .job_content`)을 걷었다. 04 가 운영 래퍼(.innerSection · .job_content)를 떼고
     정본 `.jb-container`(base.css · ≤768 좌우 16)로 바뀌어 매칭 대상이 없다 — 여백은 정본 규격이 준다. */

/* ▼ D122 · 04 4차 — 추천 띠 넘기기 화살표의 «끝 쪽(disabled)» 모양을 정본과 같게 (2026-09-18)
   운영 resource/css/new/style.css:14 `button:disabled{ background:#eee !important; color:#333 !important; border:1px solid #cecece }`(0,1,1)가
   `.jb-iconbtn`(0,1,0 · 흰 면 · 1px --jb-border)을 이겨, 첫 화면의 「이전 공고 보기」가 회색 면 · 짙은 테두리로 보였다(로컬 1440 실측 #EEE/#CECECE · 정본 #FFF/#DDD).
   ➡️ 면 · 테두리만 규격으로 되돌린다(흐림은 components.css `.jb-reco-strip__nav .jb-iconbtn[disabled]{opacity:.35}` 그대로).
   ⚠️ 범위 = 개편 블록 전체(`.jb-root`) — 06 기업채용 추천 띠도 같은 증상이었다(06 4차 로컬 실측 #EEE/#CECECE). 처음 04 범위로 넣었다가 넓혔다.
   ⚠️ 시각 속성만 · 배경 · 글자색은 운영이 !important 라 !important 로 맞선다(브릿지 원칙).
   ▲ 글자(아이콘)색 — D127 ② 로 규격 `.jb-iconbtn{color:var(--jb-ink)}` 이 생겼다. 운영 `color:#333 !important` 가 비활성 화살표만 이겨 #333 이었다 → 규격값으로. */
.jb-root .jb-reco-strip__nav .jb-iconbtn[disabled]{
  background-color:var(--jb-surface) !important; border-color:var(--jb-border); color:var(--jb-ink) !important; }

/* ▼ D122 · A8 · 20 2차 #1 — 개편 헤더 · 드로어 · 통합검색 버튼의 운영 포커스 테두리 무력화 (2026-09-18) ══════════
   운영 resource/css/new/import.css `button:focus{ border:1px solid #5a86a7 }`(0,1,1)가 «클릭한» 헤더 버튼에 파란 테두리를 남겼다
   (헤더 검색 · 햄버거 · 드로어 닫기 · 아코디언 화살표 · 통합검색 닫기 · 추천 칩 · 검색 실행). 컴포넌트 규칙(0,1,0)이 진다.
   ➡️ 각 컴포넌트의 «원래 테두리»로 되돌린다 — 시각 속성만 · 범위 = 개편 헤더(#newHeader) · 오버레이(#jbHeaderOverlay: 드로어 · 통합검색).
      id 로 특정도를 올려 !important 없이 이긴다.
   ★ 키보드 포커스 링은 base.css `.jb-root :where(…):focus-visible{ outline … !important }` 가 그대로 그린다(border 가 아니라 outline). */
#newHeader .jb-search-btn:focus,
#jbHeaderOverlay .jb-drawer__close:focus,
#jbHeaderOverlay .jb-drawer__arrow:focus,
#jbHeaderOverlay .jb-iconbtn--plain:focus{ border:0; }
#newHeader .jb-menu-btn:focus,
#jbHeaderOverlay .jb-chip--outline:focus{ border:1px solid var(--jb-border); }
#jbHeaderOverlay .jb-btn--primary:focus{ border:1px solid var(--jb-brand); }

/* ▼ A8 범위 확대 — 개편 블록(.jb-root) 안 «버튼 전부» (2026-09-18 · 01 공통 A8 갱신 · QA 06 2부 #15) ══════════
   위 헤더 규칙만으로는 본문 부품이 남았다 — 06 시트를 열면 첫 포커스가 가는 초기화 아이콘(.jb-iconbtn--plain)에 #5A86A7 테두리.
   운영 두 규칙:  button{ border:1px solid transparent }(0,0,1) · button:focus{ border:1px solid #5a86a7 }(0,1,1)
   ① 기본 — 개편 블록의 jb- 버튼은 포커스여도 운영 «기본값»(1px solid transparent)으로 둔다. (0,2,1) · 테두리 규칙이 없는 부품(chip__x · 슬라이더 정지 등)용.
   ② 부품 — DS CSS(base · components · page-list · page-detail · page-mypage · page-hub)에서 «버튼 부품의 테두리 선언»만 기계적으로 옮겨
      `:focus:focus` 를 붙였다. 원래 셀렉터보다 (0,2,0) 높아 ①과 운영 규칙을 이기고, 부품끼리의 순서 · 특정도 차이는 그대로라 상태(선택 · 호버) 값도 같다.
      ⚠️ DS CSS 의 버튼 테두리를 바꾸면 여기도 같이 바꾼다(흡수 시점에 이 블록째 없어진다 — 운영 button:focus 를 고치면 끝).
   ★ 시각 속성(border)만 · !important 없음 · 키보드 포커스 링(base.css :focus-visible outline)은 그대로다. */
/* ① 은 `:where(.jb-root)` 로 쓴다 — `.jb-root button[class*=…]:focus` 는 속성 선택자까지 (0,3,1) 이라 ②의 (0,3,0) 부품 규칙을 이겨
   초기화 아이콘이 포커스 때 1px 커졌다(로컬 실측 28 → 30px). (0,2,1) 이면 운영(0,1,1)은 이기고 ②에는 진다. */
:where(.jb-root) button[class*="jb-"]:focus{ border:1px solid transparent; }
.jb-btn:focus:focus{ border:1px solid transparent; }
.jb-btn--primary:focus:focus{ border-color:var(--jb-brand); }
.jb-btn--primary:hover:focus:focus{ border-color:var(--jb-brand-hover); }
.jb-btn--secondary:focus:focus{ border-color:var(--jb-border); }
.jb-btn--outline:focus:focus{ border-color:var(--jb-brand); }
.jb-btn--onbrand:focus:focus{ border:2px solid var(--jb-brand-soft); }
.jb-btn--dashed:focus:focus{ border-style:dashed; }
.jb-btn--dashed:hover:focus:focus{ border-color:var(--jb-brand); }
.jb-btn[disabled]:focus:focus, .jb-btn.is-disabled:focus:focus{ border-color:var(--jb-border); }
.jb-chip:focus:focus{ border:1px solid transparent; }
.jb-chip--outline:focus:focus{ border-color:var(--jb-border); }
.jb-chip[aria-selected="true"]:focus:focus, .jb-chip[aria-pressed="true"]:focus:focus, .jb-chip.is-active:focus:focus{ border-color:var(--jb-inverse); }
.jb-tabbar__item:focus:focus{ border:0; border-bottom:2px solid transparent; }
.jb-tabbar__item[aria-current="page"]:focus:focus, .jb-tabbar__item[aria-selected="true"]:focus:focus, .jb-tabbar__item.is-active:focus:focus{ border-bottom-color:var(--jb-brand); }
.jb-modal__backdrop:focus:focus{ border:0; }
.jb-modal__close:focus:focus{ border:0; }
.jb-jobcat__item:focus:focus{ border:1px solid var(--jb-border); }
.jb-jobcat__item:hover:focus:focus{ border-color:var(--jb-brand); }
.jb-jobcat__item[aria-pressed="true"]:focus:focus{ border-color:var(--jb-brand); }
.jb-searchbar__toggle:focus:focus{ border:1px solid var(--jb-border); }
.jb-searchbar__toggle:hover:focus:focus{ border-color:var(--jb-brand); }
.jb-iconbtn:focus:focus{ border:1px solid var(--jb-border); }
.jb-iconbtn:hover:focus:focus{ border-color:var(--jb-brand); }
.jb-iconbtn--plain:focus:focus{ border:0; }
.jb-iconbtn--plain:hover:focus:focus{ border:0; }
.jb-filter__more:focus:focus{ border:1px dashed var(--jb-border); }
.jb-filter__more[aria-expanded="true"]:focus:focus{ border-style:solid; }
.jb-sorttabs__item:focus:focus{ border:0; border-bottom:2px solid transparent; }
.jb-sorttabs__item[aria-selected="true"]:focus:focus, .jb-sorttabs__item.is-active:focus:focus{ border-bottom-color:var(--jb-brand); }
.jb-actbtn:focus:focus{ border:1px solid var(--jb-border); }
.jb-actbtn:hover:focus:focus{ border-color:var(--jb-brand); }
.jb-actbtn[aria-pressed="true"]:focus:focus, .jb-actbtn.on:focus:focus{ border-color:var(--jb-brand); }
.jb-more:focus:focus{ border:1px solid var(--jb-border); }
.jb-more:hover:focus:focus{ border-color:var(--jb-brand); }
.jb-chip__x:focus:focus{ border:0; }
.jb-pagination__item:focus:focus{ border:1px solid transparent; }
.jb-pagination__item[aria-current="page"]:focus:focus{ border-color:var(--jb-brand); }
.jb-polcard__degr-btn:focus:focus{ border:1px solid var(--jb-border); }
.jb-polcard__degr-btn:hover:focus:focus{ border-color:var(--jb-brand); }
.jb-preset .jb-chip:focus:focus{ border-color:var(--jb-border); }
.jb-detailtoolbar__share .jb-iconbtn--facebook:focus:focus{ border:0; }

/* ══ 운영 import.css `a:link, a:visited, a:hover, a:active{color:#3e332e}`(0,1,1) 대응 — jb- 링크 · 카드형 앵커 글자색 (2026-09-18 D130 4-0 · components.css 에서 이동) ══
   DS 파일(components.css)에는 운영 대응 규칙을 두지 않는다. 셀렉터 · 값은 옮기기 전 그대로(특정도 (0,2,1) 동일 · 동작 변화 없음).
   `a.jb-sumcard` 는 참조 0 이라 옮기면서 뺐다(D130 4-4). */
/* 링크형 버튼(<a class="jb-btn …">) 글자색 — 운영 레이아웃의 import.css `a:link, a:visited, a:hover, a:active{color:#3e332e}`
   (0,1,1) 이 위 변형 규칙(0,1,0)을 이겨 청록 버튼 위 글자가 갈색이 됐다(단위테스트01 · R55 · 「간편가입 · 로그인」).
   가상클래스까지 붙여 (0,2,1) 로 선언한다. 따로 색을 준 조합(소형 보조 · 비활성)도 같은 방식으로 한 단계 올린다. */
a.jb-btn--primary:link, a.jb-btn--primary:visited, a.jb-btn--primary:hover, a.jb-btn--primary:active{ color:var(--jb-on-brand); }
/* 🔴 2026-09-24 D186 ① — 보조 버튼 = 아웃라인 하나로 통일(D169)에 맞춰 --jb-inverse → --jb-brand.
   ⚠️ components.css 만 고치면 «앵커(<a>) 버튼»은 안 바뀐다 — 이 규칙이 (0,2,1) 로 이긴다.
      실측 — 15 허브·상세 보조버튼은 <a> 라 #666 이 남아 있었고(rgb(102,102,102)),
      관심·알림 「해제」는 <button> 이라 바로 브랜드색이 됐다. */
a.jb-btn--secondary:link, a.jb-btn--secondary:visited, a.jb-btn--secondary:hover, a.jb-btn--secondary:active{ color:var(--jb-brand); }
a.jb-btn--outline:link, a.jb-btn--outline:visited, a.jb-btn--outline:hover, a.jb-btn--outline:active{ color:var(--jb-brand); }
a.jb-btn--ghost:link, a.jb-btn--ghost:visited{ color:var(--jb-muted); }
a.jb-btn--ghost:hover, a.jb-btn--ghost:active{ color:var(--jb-ink); }
a.jb-btn--onbrand:link, a.jb-btn--onbrand:visited, a.jb-btn--onbrand:hover, a.jb-btn--onbrand:active{ color:var(--jb-ink); }
/* 🔴 2026-09-24 D186 ① — 삭제. components.css 의 `.jb-btn--sm.jb-btn--secondary{color:#666}` 을 따라가던 줄인데
   그 규칙이 D169 로 없어졌다. 소형이라고 글자색이 달라질 이유가 없다(크기만 다르다).
   이 줄이 상세 「취업진단 시작」(stdLinks.jsp · D187 ②) · 15 허브 보조버튼을 회색으로 만들고 있었다. */
a.jb-btn.is-disabled:link, a.jb-btn.is-disabled:visited{ color:var(--jb-disabled); }

/* ── 🔴 jb- 카드형 앵커의 글자색 상속 복원 (2026-09-16 · 디자인시스템 점검 ② 축) ──
   운영 레이아웃의 `import.css` `a:link, a:visited, a:hover, a:active{ color:#3e332e }`(0,1,1) 이
   **앵커의 색 상속 자체를 끊는다.** 카드·타일형 컴포넌트는 색을 따로 선언하지 않고 컨테이너에서
   상속받도록 만들어져 있어, 그 안의 글자가 전부 운영 갈색으로 렌더됐다.
   로컬 실측 2026-09-16 — 메인 **106건**(`jb-part` 54 · `jb-card-media` 20 · `jb-qk` 16 · `jb-slide` 5 …),
   마이페이지 14건. `jb-btn` · `jb-link` 은 이미 같은 방식으로 처리돼 있었고 나머지가 빠져 있었다.
   ★ 색을 새로 정하지 않는다 — `inherit` 로 **원래 의도(상속)** 를 되돌릴 뿐이다.
   ★ 가상클래스를 붙여 (0,2,1) 로 올린다. `!important` 는 쓰지 않는다.
   ★ 자기 색을 가진 컴포넌트(`jb-btn` 변형 · `jb-link` · `jb-chip` · `jb-preset__link`)는 건드리지 않는다. */
a.jb-part:link, a.jb-part:visited, a.jb-part:hover, a.jb-part:active,
a.jb-card-media:link, a.jb-card-media:visited, a.jb-card-media:hover, a.jb-card-media:active,
a.jb-qk:link, a.jb-qk:visited, a.jb-qk:hover, a.jb-qk:active,
a.jb-slide:link, a.jb-slide:visited, a.jb-slide:hover, a.jb-slide:active,
a.jb-policycard:link, a.jb-policycard:visited, a.jb-policycard:hover, a.jb-policycard:active,
a.jb-jobcard:link, a.jb-jobcard:visited, a.jb-jobcard:hover, a.jb-jobcard:active,
a.jb-mycard:link, a.jb-mycard:visited, a.jb-mycard:hover, a.jb-mycard:active,
a.jb-reco-card:link, a.jb-reco-card:visited, a.jb-reco-card:hover, a.jb-reco-card:active,
a.jb-recocard:link, a.jb-recocard:visited, a.jb-recocard:hover, a.jb-recocard:active,
a.jb-sidebox:link, a.jb-sidebox:visited, a.jb-sidebox:hover, a.jb-sidebox:active,
a.jb-sidebanner:link, a.jb-sidebanner:visited, a.jb-sidebanner:hover, a.jb-sidebanner:active,
a.jb-ddaylist__link:link, a.jb-ddaylist__link:visited, a.jb-ddaylist__link:hover, a.jb-ddaylist__link:active,
a.jb-anchortabs__item:link, a.jb-anchortabs__item:visited, a.jb-anchortabs__item:hover, a.jb-anchortabs__item:active,
a.jb-tabbar__item:link, a.jb-tabbar__item:visited, a.jb-tabbar__item:hover, a.jb-tabbar__item:active,
a.jb-tgrow__ext:link, a.jb-tgrow__ext:visited, a.jb-tgrow__ext:hover, a.jb-tgrow__ext:active,
/* ▼ 2026-09-16 · 마크업 대조로 찾은 누락분 12종.
   「`<a>` 에 쓰이는 `jb-` 클래스」와 「여기서 가상클래스로 색을 선언한 목록」을 맞춰 보니
   아래 12종이 빠져 있었다 — 전부 색 선언 없이 상속에 기대는 카드·링크라 운영 갈색으로 렌더된다.
   (91 재검증 B 와 같은 원인 · 화면별로 하나씩 찾지 말고 목록을 맞춘다) */
a.jb-actcard:link, a.jb-actcard:visited, a.jb-actcard:hover, a.jb-actcard:active,
a.jb-actcard__link:link, a.jb-actcard__link:visited, a.jb-actcard__link:hover, a.jb-actcard__link:active,
a.jb-cont-card:link, a.jb-cont-card:visited, a.jb-cont-card:hover, a.jb-cont-card:active,
a.jb-extcard:link, a.jb-extcard:visited, a.jb-extcard:hover, a.jb-extcard:active,
a.jb-polcard:link, a.jb-polcard:visited, a.jb-polcard:hover, a.jb-polcard:active,
a.jb-polcard__link:link, a.jb-polcard__link:visited, a.jb-polcard__link:hover, a.jb-polcard__link:active,
a.jb-promo__item:link, a.jb-promo__item:visited, a.jb-promo__item:hover, a.jb-promo__item:active,
a.jb-tgarea:link, a.jb-tgarea:visited, a.jb-tgarea:hover, a.jb-tgarea:active,
a.jb-step:link, a.jb-step:visited, a.jb-step:hover, a.jb-step:active,
a.jb-utilbtn:link, a.jb-utilbtn:visited, a.jb-utilbtn:hover, a.jb-utilbtn:active,
a.jb-chip:link, a.jb-chip:visited, a.jb-chip:hover, a.jb-chip:active,
a.jb-mysum__cond:link, a.jb-mysum__cond:visited, a.jb-mysum__cond:hover, a.jb-mysum__cond:active,
a.jb-goon__row:link, a.jb-goon__row:visited, a.jb-goon__row:hover, a.jb-goon__row:active,
a.jb-preset:link, a.jb-preset:visited, a.jb-preset:hover, a.jb-preset:active{ color:inherit; }
/* 운영 import.css `a:link, a:visited{color:#3e332e}`(0,1,1) 이 (0,1,0) 을 이긴다 — 링크형 버튼과 같은 방식으로 상태까지 선언 */
a.jb-link:link, a.jb-link:visited{ color:var(--jb-muted); }
a.jb-link--brand:link, a.jb-link--brand:visited{ color:var(--jb-brand); }
a.jb-link:hover{ color:var(--jb-brand); }
a.jb-link--brand:hover{ color:var(--jb-brand-hover); }

/* ▼ 07 6차 #4 (2026-09-18 · D135) — «꺼진» 버튼 모양. 정본 `.jb-btn[disabled]{background:--jb-bg-subtle; color:--jb-disabled}`(0,2,0) 가
   운영 `resource/css/new/style.css` `button:disabled{background:#eee!important; color:#333!important}` 에 진다(실측 — 글자가 #333 이라 꺼진 버튼으로 안 보인다).
   시각 속성(배경 · 글자색)만 브릿지로 되돌린다. 레이아웃 속성은 건드리지 않는다. */
.jb-root .jb-btn[disabled], .jb-root .jb-btn.is-disabled{ background:var(--jb-bg-subtle) !important; color:var(--jb-disabled) !important; }

/* ▼ D271 (2026-09-27) — «본문이 자기 버튼 행을 가진» 팝업은 공통 「닫기」 푸터를 감춘다.
   대상 = #popupLayerModal (layout 9벌 공유 껍데기) · 표식 = 팝업 본문의 `[data-jb-own-footer]`.
   ★ 자동 복구 — common.js modalLayerPopup 이 «열 때 `.html(data)` 교체 · 닫을 때 `.text("")` 비움»
     이라 표식이 스스로 사라진다. 다른 팝업을 열면 이 규칙은 «저절로» 풀리고 공통 「닫기」가 돌아온다.
     → 되돌리는 JS 가 «없다»(없으므로 빠뜨릴 수도 없다). ㉡(footer 에 append) 을 버린 이유가 이것이다.
   ★ `!important` 를 쓰지 않는다 — (1,1,1) 이라 운영 `.modal-footer`(0,1,0) 를 그냥 이긴다.
     `display` 는 레이아웃 속성이라 브릿지 규칙상 `!important` 금지 대상이기도 하다.
   ⚠️ `:has()` 선례 있음(components.css 3곳). 미지원 브라우저에서는 푸터가 남아 「닫기」가 둘로
     보일 뿐이고 버튼이 사라지지는 않는다 — 안전한 열화. */
#popupLayerModal:has([data-jb-own-footer]) .modal-footer{ display:none; }

/* ▼ D282 (2026-09-27) — 취업진단 본문(#subMain) 컬러 컨셉 · 타이틀 폰트 · 버튼 풀 라운딩.
   개편 «대상 밖» 화면이라 정본 퍼블이 없다. 톤만 맞추고 구조·문구는 건드리지 않는다.
   ★ `.jb-root` 하위가 «아니다» — 이 화면 본문은 전부 .jb-root 밖이다(.jb-root 8곳 = 헤더·푸터·모달).
     선례 = 위 `#popupLayerModal:has(...)`(D271). 새로 만드는 예외가 아니다.
   ★ 범위가 잠긴다 — `id="subMain"` 은 JSP 3벌에 있으나 나머지 2벌(job/consultView ·
     entSupport/supportView)은 «컨트롤러가 주석 처리된 죽은 화면»이다.
   🔴 `!important` 가 «필수»인 이유 — 운영 `submain.css` 는 «<div> 안»에서 로드된다
     (시트 26번 · ownerNode 부모 = DIV). head 의 이 파일(23번)보다 «항상 뒤»라
     동률·저특정도로는 절대 못 이긴다. 색·배경·테두리·라운딩 = 전부 «시각 속성»이라 브릿지 규칙 안이다.
     폰트와 H2 색은 `!important` «없이» 이긴다(실측) — 붙이지 않는다.
   ⚠️ 이미지 2장(ico_sv_goto2.png · ico_recomm.png)은 파란 계열로 «남는다» — CSS 로 색이 안 바뀐다. */
#subMain h2, #subMain h3, #subMain h4{ font-family:var(--jb-font-display); }
#subMain .header.sm01 h2{ color:var(--jb-brand); }
#subMain .header .pg_info strong{ color:var(--jb-brand) !important; }
#subMain .step_wrap .item_wrap > a .dummy_btn{
  background:var(--jb-brand) !important;
  border-radius:var(--jb-r-pill) !important;   /* 운영 4px → pill. 버튼이 155×44 라 실효 22px */
}
#subMain .header .sv_goto{ border-color:var(--jb-brand) !important; }
#subMain .recomm{ background:var(--jb-brand) !important; }

/* ▼ D283 (2026-09-27) — 자소서첨삭 타이틀 폰트 · 「신청하기」 색·라운딩.
   사용자 지시 = 「타이틀 폰트와 신청하기 버튼의 색 및 라운딩 «만»」. 다른 색·다른 버튼은 «일부러» 두었다.
   ★ 본문 = #page-content.coverletter — 🔴 취업진단의 #subMain 이 «아니다»(이 화면엔 #subMain 이 없다).
     화면마다 본문 컨테이너가 다르므로 D282 의 셀렉터를 옮겨 쓰지 않는다.
   ★ 범위 = 자소서첨삭 «4화면»이 이 컨테이너를 공유한다(mainList · introductionPassPage ·
     mainEduceGuideList · mainEduceList). 타이틀 폰트는 4화면에 걸린다 — 같은 서비스라 의도한 범위다.
     버튼(conserting_btn)은 «2화면»뿐이다(둘 다 「신청하기」).
   🟢 `!important` 를 «쓰지 않는다» — D282 와 «반대»다. 경쟁 규칙이 `button{background-color:initial}`
     `button{border-radius:…}` 뿐이라 요소 셀렉터다(실측으로 그냥 이긴다).
     D282 에 !important 가 붙은 것은 submain.css 가 «<div> 안»에서 로드되던 «그 화면의» 사정이었다.
   ⚠️ #_downWriteBtn(「자기소개서 작성하기」)은 «문구가 다른 버튼»이라 파란색·r17px 그대로 둔다. */
#page-content.coverletter h1, #page-content.coverletter h2,
#page-content.coverletter h3, #page-content.coverletter h4,
#page-content.coverletter h5{ font-family:var(--jb-font-display); }
#page-content.coverletter #_upperWriteBtn.conserting_btn{
  background:var(--jb-brand);
  border-color:var(--jb-brand);
  border-radius:var(--jb-r-pill);
}

/* ▼ D285 (2026-09-27) — AI 역량검사 타이틀 폰트 «만». 개편 대상 밖 · 정본 퍼블 없음.
   ★ 본문 = main.aiAbility — 🔴 취업진단 #subMain · 자소서첨삭 #page-content.coverletter 와 «또» 다르다.
     화면마다 반드시 확인한다. main.aiAbility 를 쓰는 JSP 는 aiMainList.jsp «한 곳»(전수 grep).
   🟢 !important 불요(실측). 색·크기는 손대지 않는다 — 폰트만. */
main.aiAbility h1, main.aiAbility h2, main.aiAbility h3,
main.aiAbility h4, main.aiAbility h5{ font-family:var(--jb-font-display); }

/* ▼ D286 (2026-09-27) — 잡학사전 «탭 제목»만. 사용자가 범위를 직접 골랐다.
   ★ 메인 「잡학사전」은 이미지(job_dic_top_tit.png)라 폰트를 못 바꾼다. 그래서 물었고
     「탭 제목만」(정책 꿀팁 · 취업 꿀팁 30px)으로 확정됐다. QUICK SERVICE · 카드 제목은 «범위 밖».
   🔴 button.group_Tab 은 화면에 «6개»다 — 큰 탭 2(.job_dic_tab) + 카테고리 4(.def_tab_new · 20px).
     클래스만으로 걸면 카테고리까지 바뀐다. 조상 .job_dic_tab 이 «반드시» 필요하다.
   ⚠️ 이 화면 카테고리는 기본 폰트가 Spoqa Han Sans 다 — 「그대로」의 기준값이 화면마다 다르다. */
.job_dic_tab .group_Tab, .job_dic_tab .group_Tab span{ font-family:var(--jb-font-display); }

/* ▼ D287 (2026-09-27) — 공지·Q&A·FAQ 탭 폰트.
   🔴 범위 주의 — nav-tabs 는 36벌 · tag_search_wrap 은 23벌이고 «온라인 채용관»을 포함한다.
     채용관은 이벤트와 같은 취급(공통 레이아웃만)이라 «건드리면 안 된다».
     한정자 : nav-tabs «tab-n3» = hpdsk 6벌 전용 · .container.m_layout .tag_search_wrap = hpdsk 5벌.
     채용관은 tab-n3 가 없고 container1 계열이라 둘 다 안 걸린다(전수 grep 확인). */
.nav-tabs.tab-n3 a{ font-family:var(--jb-font-display); }

/* ▼ D288 (2026-09-27) — 이벤트 목록 타이틀.
   ★ h2.ev_tit 는 «이벤트 목록 + 사이트맵» 2벌에 걸린다. eventInfo 캠페인 3벌은 #theme .ev_tit /
     span.ev_tit / lev_tit 이라 «h2.ev_tit 가 아니다» → 범위 밖 캠페인은 안 걸린다.
     사이트맵(「전체서비스」)은 함께 바뀐다 — 같은 h2 라 그대로 둔다(사용자에게 알렸다). */
h2.ev_tit{ font-family:var(--jb-font-display); }

/* ▼ D287 · D288 공통 — 검색/초기화 버튼.
   🔴 `!important` «필수» — 운영 layout.css 가 `.btn_blue{ background·border·border-color … !important }`
     로 «먼저» 선언한다(실측). D283 의 「안 붙인다」를 여기 옮기면 안 된다. 전부 시각 속성이다.
   ★ 위계를 만든다 — 지금은 검색·초기화가 «둘 다 파란 채움»이라 구분이 없다.
     검색 = 브랜드 채움 / 초기화 = 아웃라인. 클래스 이름 btn_blue_line 자체가 «아웃라인» 의도였다.
   🔴 버튼은 컨테이너로 못 좁힌다 — .ct_box.m_layout 이 100벌 넘고, tag_search_wrap 과의 조합에도
     «마이페이지 rqtst·scrap»이 걸린다. 마이페이지는 정본 확정 단계(18)라 바뀌면 정본 1:1 이 깨진다.
     그래서 :has(> h2.ev_tit) 로 «이 화면만» 잡는다. :has 선례 = D281 · D271 · 정본 .jb-ddaylist. */
/* 🔴 D301 (2026-09-27) — 위 셀렉터(`.btn_g .btn.btn_blue`)가 «두 가지»를 놓쳤다.
   ㉠ 상세의 「목록」은 .btn_g «밖»이다.
        ntc/dtl  : div.tag_search_wrap«.view_b_btn» > button.btn.btn_blue.btn-lg.fr
        qna/dtl  : 🔴 div«.board_btn_btm».view_b_btn > button.btn.btn_blue.btn-lg.fr
        ⚠️ 지시서는 둘 다 tag_search_wrap 이라고 봤으나 Q&A 는 board_btn_btm 이다(실측 정정).
        ➡️ 두 벌을 한 번에 잡는 공통 갈고리는 «.view_b_btn» 이다.
   ㉡ Q&A «상세»의 「초기화」는 class 가 `btn` «하나뿐»이다(목록 화면의 초기화는 btn_blue_line).
   ★ 범위 실측 (2026-09-27 · 전수 grep)
        .container.m_layout ∩ tag_search_wrap = hpdsk 5벌 (faq/list · ntc/list · ntc/dtl · qna/list · qna/dtl)
        .container.m_layout ∩ view_b_btn      = hpdsk 2벌 (ntc/dtl · qna/dtl)  ← 「목록」 딱 그 둘
   🔴 view_b_btn 은 전체 5벌이고 «채용관 exhb/qnaDtl · 마이페이지 noticeDtl · 테마 nesDtaDtl»이 섞여 있다.
        .container.m_layout 한정자가 셋을 모두 떨어뜨린다 — 채용관은 container1, 나머지 둘은 m_layout 이 없다.
        (채용관·마이페이지는 각각 범위 밖 · 정본 확정 단계 18 이라 바뀌면 안 된다.)
   ★ 「글쓰기」(qna/list)는 .board_btn_btm.ar 이라 안 걸린다 · 「삭제·수정」(qna/dtl)은 btn_blue 가 없어 안 걸린다. */

/* 1) 라운딩 — 이 영역의 대상 버튼 전부(초기화 두 형태 + 목록 포함) */
.container.m_layout .tag_search_wrap .btn_g .btn,
.container.m_layout .view_b_btn .btn.btn_blue,
.ct_box.m_layout:has(> h2.ev_tit) .tag_search_wrap .btn_g .btn{
  border-radius:var(--jb-r-pill) !important;
}
/* 2) 채움 — 검색 · 조회 · 「목록」
      ★ 「목록」을 채움으로 두는 이유 = 상세에서 목록으로 돌아가는 것이 그 화면의 «주 동작»이고
        종전에도 파란 채움이었다. 아웃라인으로 낮추면 위계가 바뀐다(설계와 합의 · D301). */
.container.m_layout .tag_search_wrap .btn_g .btn.btn_blue,
.container.m_layout .view_b_btn .btn.btn_blue,
.ct_box.m_layout:has(> h2.ev_tit) .tag_search_wrap .btn_g .btn.btn_blue{
  background:var(--jb-brand) !important;
  border-color:var(--jb-brand) !important;
  color:#fff !important;
}
/* 3) 아웃라인 — 초기화 «두 형태»
      ㉠ .btn_blue.btn_blue_line (ntc/list · qna/list · faq/list)
      ㉡ .btn «하나뿐»            (qna/dtl)
      ★ ㉠ 은 2) 와 클래스 수가 같아 «순서»로 이긴다 — 이 블록이 뒤에 있어야 한다. */
.container.m_layout .tag_search_wrap .btn_g .btn.btn_blue.btn_blue_line,
.container.m_layout .tag_search_wrap .btn_g .btn:not(.btn_blue),
.ct_box.m_layout:has(> h2.ev_tit) .tag_search_wrap .btn_g .btn.btn_blue.btn_blue_line,
.ct_box.m_layout:has(> h2.ev_tit) .tag_search_wrap .btn_g .btn:not(.btn_blue){
  background:#fff !important;
  color:var(--jb-brand) !important;
  border-color:var(--jb-brand) !important;
}

