/* 김교수넷 장고 이식에서만 필요한 보충 규칙.
   base.css · design-tokens.css 는 목업 원본 그대로 두고, 목업이 자바스크립트 이벤트로 하던 일(호버·토스트)과
   <button> 이던 곳을 링크(<a>)로 그리면서 생기는 차이만 여기서 메운다. */
/* ===== 로그인·가입 화면(2단계-B) ===== */
/* 링크 문구 — 목업의 linkBtn(버튼) 모양 */
.kp-auth-link { color: var(--kp-primary-600); font-weight: 700; text-decoration: underline; cursor: pointer; }
.kp-auth-link:hover { color: var(--kp-primary-700); }
.kp-auth-mail { color: var(--kp-primary-600); font-weight: 700; text-decoration: underline; }
.kp-auth-alert-link { color: inherit; font-weight: 700; text-decoration: underline; display: inline-flex; align-items: center; gap: 4px; }
.kp-auth-alert-link:hover { text-decoration: underline; opacity: 0.85; }

/* 회원 유형 탭(일반회원/기관회원) — 목업은 버튼 상태로 그렸고 여기서는 링크의 aria-selected 로 건다 */
a.kp-auth-tab, a.kp-auth-tab:hover { text-decoration: none; }
.kp-auth-tab { background: transparent; color: var(--kp-text-sub); box-shadow: none; line-height: normal; }
.kp-auth-tab[aria-selected="false"]:hover { color: var(--kp-text); }
.kp-auth-tab[aria-selected="true"] { background: #fff; color: var(--kp-primary-600); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06); }
.kp-auth-tab:focus-visible { outline: none; box-shadow: var(--kp-shadow-focus); }

/* 카카오·애플·김박사넷 버튼 */
.kp-auth-social:focus-visible, .kp-auth-sso:focus-visible { outline: 2px solid var(--kp-primary-500); outline-offset: 2px; }
/* 마크업의 cursor: pointer(목업 그대로)보다 이쪽이 이기도록 !important */
.kp-auth-sso[disabled] { opacity: 0.5; cursor: not-allowed !important; }

/* 로그인 오류 상자 안의 '자주 있는 경우' 접힘 도움말 */
.kp-auth-help { margin-top: 8px; font-size: 12px; }
.kp-auth-help > summary { cursor: pointer; font-weight: 700; }
.kp-auth-help > summary:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; border-radius: 2px; }
.kp-auth-help > ul { margin: 6px 0 0; padding-left: 16px; line-height: 1.6; }
.kp-auth-help > ul > li + li { margin-top: 4px; }

/* 회원가입 계열(회색 배경 — auth_flat). 목업의 가입 카드는 좌우 안쪽 여백 32px(로그인은 36px)이고,
   모바일에서는 바깥 여백이 20px 이며 카드가 화면 높이까지 늘어나지 않는다. */
@media (min-width: 641px) {
  .kp-auth-shell-flat .kp-auth-card { padding-left: 32px !important; padding-right: 32px !important; }
  .kp-auth-shell.kp-auth-shell-flat { padding-bottom: 80px !important; }
}
@media (max-width: 640px) {
  .kp-auth-shell.kp-auth-shell-flat { padding: 48px 20px 80px !important; align-items: flex-start !important; }
}

/* 기관회원 가입 단계 표시(4칸) — 번호 상자는 목업 trackSectionHead 의 번호 상자와 같은 모양 */
.kp-steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); margin: 0 0 20px; padding: 0; list-style: none; }
.kp-steps > li { position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; min-width: 0; }
.kp-steps > li::before { content: ""; position: absolute; top: 9px; left: calc(-50% + 16px); right: calc(50% + 16px); height: 2px; background: var(--kp-border); }
.kp-steps > li:first-child::before { display: none; }
.kp-steps > li.is-done::before, .kp-steps > li.is-current::before { background: var(--kp-primary-600); }
.kp-step-no { position: relative; z-index: 1; width: 20px; height: 20px; border-radius: 4px; background: var(--kp-gray-100); color: var(--kp-text-muted); font-size: 11px; font-weight: 800; display: inline-flex; align-items: center; justify-content: center; }
.kp-steps > li.is-done .kp-step-no, .kp-steps > li.is-current .kp-step-no { background: var(--kp-primary-600); color: #fff; }
.kp-step-label { font-size: 11.5px; font-weight: 600; color: var(--kp-text-muted); letter-spacing: -0.02em; }
.kp-steps > li.is-done .kp-step-label { color: var(--kp-text-sub); }
.kp-steps > li.is-current .kp-step-label { color: var(--kp-text); font-weight: 800; }

/* 가입 입력칸 — 오류가 있는 칸 */
.kp-auth-shell .kp-input[aria-invalid="true"] { border-color: var(--kp-danger-500); }
.kp-auth-shell .kp-input[readonly] { cursor: default; }

/* 인증코드 한 칸(영문·숫자 10자리) */
.kp-auth-code { height: 52px; text-align: center; font-size: 20px; font-weight: 700; letter-spacing: 0.28em; font-family: var(--kp-font-mono, ui-monospace, monospace); }
.kp-auth-code::placeholder { letter-spacing: normal; }

/* ===== 공고 등록·수정·미리보기(2단계-B) ===== */
.up-root {
  --up-accent: var(--kp-primary-600);
  --up-on-bg: var(--kp-primary-25);
  --up-on-text: var(--kp-primary-700);
  --up-on-border: var(--kp-primary-600);
}
.up-root.up-academic {
  --up-accent: var(--kp-warning-600);
  --up-on-bg: var(--kp-warning-50);
  --up-on-text: var(--kp-warning-700, #b45309);
  --up-on-border: var(--kp-warning-500);
}

/* 단추처럼 꾸민 라벨은 목업의 <button> 과 같은 줄 높이·자간을 쓴다 */
.up-choice, .up-tab, .up-mode, .up-pill { line-height: normal; letter-spacing: normal; }

/* 채용 구분 · 학술 정보 종류(숨은 라디오를 단추처럼) */
.up-choice { display: block; border: 1px solid var(--kp-border); background: #fff; color: var(--kp-text); }
.up-choice.is-on { border-color: var(--up-on-border); background: var(--up-on-bg); color: var(--up-on-text); }
.up-choice:has(input:checked) { border-color: var(--up-on-border); background: var(--up-on-bg); color: var(--up-on-text); }

/* 내용 두 탭 */
.up-tab { border: 1px solid var(--kp-border); background: #fff; color: var(--kp-text-sub); }
.up-tab.is-on { border-color: var(--up-accent); background: var(--up-on-bg); color: var(--up-accent); }
.up-tab:has(input:checked) { border-color: var(--up-accent); background: var(--up-on-bg); color: var(--up-accent); }

/* 마감 방식 · 지원 대상(고르면 강조색으로 채운다) */
.up-mode, .up-pill { display: inline-block; border: 1px solid var(--kp-border); background: #fff; color: var(--kp-text-sub); }
.up-mode.is-on, .up-pill.is-on { border-color: var(--up-accent); background: var(--up-accent); color: #fff; }
.up-mode:has(input:checked), .up-pill:has(input:checked) { border-color: var(--up-accent); background: var(--up-accent); color: #fff; }

/* 키보드로 고를 때 어디에 있는지 */
.up-choice:has(input:focus-visible), .up-tab:has(input:focus-visible),
.up-mode:has(input:focus-visible), .up-pill:has(input:focus-visible),
.up-drop:has(input:focus-visible) { outline: 2px solid var(--kp-primary-500); outline-offset: 2px; }

/* 첨부 드롭존(목업 KpFileDropzone — 끌어다 놓는 동안 파란 테두리) */
.up-drop { border: 2px dashed var(--kp-border-strong, var(--kp-border)); background: var(--kp-gray-50); }
.up-drop.is-over { border-color: var(--kp-primary-600); background: var(--kp-primary-25, #f6f9ff); }
/* 이미 올린 파일을 '삭제'로 표시하면 이름에 줄을 긋는다(저장할 때 빠진다) */
.up-file-row.is-removing > span:first-of-type { text-decoration: line-through; color: var(--kp-text-muted); }
.up-file-row:has(input[name="remove_file"]:checked) > span:first-of-type { text-decoration: line-through; color: var(--kp-text-muted); }
.up-file-remove input { margin: 0; accent-color: var(--kp-danger-500); }

/* 칸 이름·도움말·카드 제목 */
.up-field { display: flex; flex-direction: column; min-width: 0; }
.up-label { display: block; margin-bottom: 5px; font-size: 11px; font-weight: 700; color: var(--kp-text-sub); letter-spacing: 0.02em; line-height: 1.4; }
.up-req { margin-left: 3px; color: var(--kp-danger-500); }
.up-hint { margin-top: 5px; font-size: 10.5px; line-height: 1.5; color: var(--kp-text-muted); word-break: keep-all; }
.up-card-title { margin: 0 0 14px; font-size: 14px; font-weight: 800; }
.up-note { margin: 0 0 14px; font-size: 12.5px; line-height: 1.6; color: var(--kp-text-sub); word-break: keep-all; }
.up-note strong { color: var(--kp-text); }
.up-note.is-danger { color: var(--kp-danger-600); }
.up-grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; align-items: start; }

/* 칸 아래 오류 문장(서버·화면 검사가 같은 자리를 쓴다) */
.up-error:empty { display: none; }
.up-error p { margin: 5px 0 0; font-size: 11px; line-height: 1.5; font-weight: 600; color: var(--kp-danger-600); word-break: keep-all; }
.up-root .kp-input[aria-invalid="true"] { border-color: var(--kp-danger-500); }
.up-root .kp-input[aria-invalid="true"]:focus { box-shadow: 0 0 0 3px var(--kp-danger-100); }

/* 꺼진 날짜 칸(목업 UpDateTime disabled) */
.up-root input.kp-input:disabled { background: var(--kp-gray-50); color: var(--kp-text-muted); cursor: not-allowed; }

/* 링크로 그린 단계 단추 · 보조 링크 */
a.kp-upload-step-button, a.kp-upload-kind-link { text-decoration: none; }

/* 보내는 중인 단추 */
.up-root [data-up-submit][aria-disabled="true"] { opacity: 0.6; pointer-events: none; }

/* 서버 오류 요약 목록 */
[data-up-error-summary] li + li { margin-top: 2px; }

/* 좁은 화면: '확인할 항목' 줄은 단추 위 한 줄로, 단추 묶음은 오른쪽으로 */
@media (max-width: 640px) {
  .up-root [data-up-missing] { order: -1; flex-basis: 100%; margin-left: 0 !important; text-align: right; }
  .up-root .up-actions { margin-left: auto; }
}

/* ===== 기관 연결·기관회원 안내·가입 완료(2단계-B) ===== */
/* --- 입력칸(목업 orgRegStyles.input) -------------------------------------------------------------------------------- */
.kp-org-control {
  font-family: inherit; font-size: 13px; padding: 10px 12px; border: 1px solid var(--kp-border); border-radius: 5px;
  background: var(--kp-gray-50); color: var(--kp-text); letter-spacing: -0.01em; min-width: 0;
}
.kp-org-control::placeholder { color: var(--kp-text-placeholder); }
.kp-org-control:hover:not(:disabled) { border-color: var(--kp-border-strong); }
.kp-org-control:focus { outline: none; border-color: var(--kp-primary-500); box-shadow: var(--kp-shadow-focus); }
.kp-org-control:disabled { opacity: 0.55; cursor: not-allowed; }
.kp-org-control[aria-invalid="true"] { border-color: var(--kp-danger-500); }
textarea.kp-org-control { min-height: 100px; resize: vertical; line-height: 1.6; }

/* 칸 아래 오류·경고 문장 */
.kp-org-error { font-size: 11.5px; line-height: 1.55; color: var(--kp-danger-600); margin-top: 4px; overflow-wrap: anywhere; }
.kp-org-error > div + div { margin-top: 2px; }
.kp-org-error a { color: inherit; font-weight: 700; text-decoration: underline; }

/* --- 기관 검색 결과(목업은 <button>, 여기는 선택 주소로 가는 <a>) ----------------------------------------------------- */
.kp-org-search-results a.kp-org-result { display: block; color: inherit; text-decoration: none; overflow-wrap: anywhere; }
.kp-org-search-results a.kp-org-result:hover { background: var(--kp-primary-25) !important; text-decoration: none; }
.kp-org-search-results a.kp-org-result:focus-visible { outline: 2px solid var(--kp-primary-500); outline-offset: -2px; }
.kp-org-search-results > a.kp-org-result:last-of-type { border-bottom: none !important; }

/* --- 로고 올리는 칸(목업 FileSlot + KpFileDropzone compact) ---------------------------------------------------------- */
.kp-org-dropzone {
  position: relative; display: block; padding: 12px 14px; border: 2px dashed var(--kp-border-strong, var(--kp-border)); border-radius: 6px;
  text-align: center; cursor: pointer; background: var(--kp-gray-50);
  transition: background 0.12s ease, border-color 0.12s ease;
}
.kp-org-dropzone:hover { border-color: var(--kp-primary-300); }
.kp-org-dropzone:focus-within { border-color: var(--kp-primary-500); box-shadow: var(--kp-shadow-focus); }
.kp-org-dropzone.is-dragover { border-color: var(--kp-primary-600); background: var(--kp-primary-25, #f6f9ff); }
.kp-org-logo-preview > img { width: 100%; height: 100%; border-radius: inherit; display: block; }
.kp-org-file-remove:hover { color: var(--kp-danger-600) !important; }
.kp-org-file-remove:focus-visible { outline: 2px solid var(--kp-primary-500); border-radius: 2px; }

/* 세부 기관 옵션 상자: 체크 상자가 하나뿐이라(세부 기관명 '미표시' 는 두지 않는다) 한 줄을 다 쓴다 */
[data-org-form] .kp-org-unit-options > label:only-child { grid-column: 1 / -1; }

/* 접었다 펼치는 곳의 기본 화살표를 숨긴다(사파리) */
[data-org-form] details > summary { list-style: none; }
[data-org-form] details > summary::-webkit-details-marker { display: none; }
[data-org-form] details > summary:focus-visible { outline: 2px solid var(--kp-primary-500); outline-offset: 2px; border-radius: 3px; }

/* 하단 단추 줄: 좁은 화면에서는 '필수 N개 남음' 줄이 한 줄을 다 쓰고 단추가 아래로 내려온다 */
.kp-org-actions { flex-wrap: wrap; }
@media (max-width: 640px) {
  .kp-org-actions > [data-org-missing] { flex: 1 1 100%; }
}

/* --- 기관회원 안내(목업 OrgMemberAboutPage) ----------------------------------------------------------------------------- */
.kp-org-faq summary { list-style: none; }
.kp-org-faq summary::-webkit-details-marker { display: none; }
.kp-org-faq summary:focus-visible { outline: 2px solid var(--kp-primary-500); outline-offset: 2px; border-radius: 3px; }
.kp-org-faq summary > span:last-child { display: inline-block; transition: transform 0.15s ease; }
.kp-org-faq details[open] > summary > span:last-child { transform: rotate(45deg); }
a.kp-org-feature-link, a.kp-org-feature-link:hover { text-decoration: none; }
.kp-org-feature-link:focus-visible { outline: 2px solid var(--kp-primary-500); outline-offset: 3px; border-radius: 3px; }
a.kp-org-cta, a.kp-org-cta:hover { text-decoration: none; }
a.kp-org-cta:hover { opacity: 0.92; }
a.kp-org-cta:focus-visible { outline: 2px solid #fff; outline-offset: 3px; }

/* ===== 기관회원 정보·세부 기관 수정(2단계-B) ===== */
/* 수정 화면 입력칸(인라인 style 은 목업 orgRegStyles.input 그대로). 목업이 outline: none 이라 초점·마우스 올림·오류 표시는 여기서 준다 */
.oi-control { min-width: 0; }
.oi-control::placeholder { color: var(--kp-text-placeholder); }
.oi-control:hover:not(:disabled) { border-color: var(--kp-border-strong) !important; }
.oi-control:focus { border-color: var(--kp-primary-500) !important; box-shadow: var(--kp-shadow-focus); }
.oi-control:disabled { opacity: 0.55; cursor: not-allowed; }
.oi-control[aria-invalid="true"] { border-color: var(--kp-danger-500) !important; }

/* 기관·세부 기관 상태 표시: 승인은 초록 체크, 검토 중은 글자 배지 */
.kp-orgstat { display: inline-flex; align-items: center; vertical-align: middle; margin-left: 6px; line-height: 1; }

/* 읽기 전용 칸: 긴 주소·이름이 칸을 밀어 가로로 넘치지 않게 */
.oi-ro { overflow-wrap: anywhere; min-width: 0; }
.oi-ro > span:first-child { min-width: 0; }

/* 로고 그림을 못 불러오면(site.js 가 img 를 숨긴다) 자리 글자(원형·가로형)를 보인다 */
.oi-logo-fallback { display: none; }
img[data-hide-on-error][style*="display: none"] + .oi-logo-fallback { display: inline; }

/* 로고 파일 고르기(목업 KpFileDropzone): 숨긴 입력칸에 초점이 오면 상자에 표시, 끌어 놓는 중이면 강조 */
.oi-drop:focus-within { box-shadow: var(--kp-shadow-focus); }
.oi-drop:hover, .oi-drop.is-over { background: var(--kp-primary-25, #f6f9ff) !important; border-color: var(--kp-primary-600) !important; }

/* 세부 기관 로고 접기 — 기본 삼각형 표시를 숨긴다(목업 listStyle: none) */
[data-unit-logos] > summary::-webkit-details-marker { display: none; }

/* 세부 기관 카드 제목 줄: 좁은 화면에서는 '정보 수정' 단추가 다음 줄로 내려간다 */
.oi-unit-head { flex-wrap: wrap; }

/* ===== 마이페이지 공통 틀·등록한 공고(2단계-B) ===== */
/* ---- 등록한 공고(mypage-org-jobs) — 목업 MyPageOrgJobs ----
   행·헤더·모바일 카드 배치는 base.css 의 kp-orgjobs-*·kp-orgrow-* 규칙이 건다. 여기에는 그 규칙이 모르는 두 가지만 보탠다. */

/* 관리 칸(190px)에 단추가 셋 이상 들어가는 행(수정·게시 중단·다시 게시 등)은 칸 밖으로 넘치지 않고 다음 줄로 내린다 */
.kp-orgrow-actions { flex-wrap: wrap; row-gap: 4px; }

/* 복제·다시 게시처럼 POST 라서 <form> 에 담은 단추도 목업의 '.kp-orgrow-actions > .kp-btn' 과 같은 크기·늘어남을 따른다 */
.kp-orgrow-actions > form { display: flex; }
@media (max-width: 1130px) {
  .kp-orgrow-actions > form > .kp-btn { min-height: 32px !important; height: 32px !important; }
}
@media (max-width: 640px) {
  .kp-orgrow-actions > form { flex: 1 1 auto; }
  .kp-orgrow-actions > form > .kp-btn { flex: 1 1 auto; }
}

/* 공개되지 않은 행의 상태 안내 줄(제목 아래, 목업의 '저장된 작성본입니다…' 줄과 같은 모양). 좁은 화면에서는 줄바꿈해 끝까지 읽히게 한다 */
.kp-orgrow-note { display: flex; align-items: center; gap: 4px; margin-top: 2px; font-size: 11px; color: var(--kp-text-muted); }
.kp-orgrow-note > span { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kp-orgrow-note.is-warn { color: var(--kp-warning-700, #b66e08); }
/* 운영 숨김 사유는 길어도 잘리지 않아야 한다(사유를 보고 내용을 고쳐야 하므로) */
.kp-orgrow-note.is-wrap { align-items: flex-start; }
.kp-orgrow-note.is-wrap > span { overflow: visible; white-space: normal; word-break: keep-all; overflow-wrap: anywhere; }
.kp-orgrow-note.is-wrap > svg { margin-top: 2px; }
@media (max-width: 1130px) {
  .kp-orgrow-note { align-items: flex-start; }
  .kp-orgrow-note > svg { margin-top: 2px; }
  .kp-orgrow-note > span { overflow: visible; white-space: normal; word-break: keep-all; overflow-wrap: anywhere; }
}

/* 긴 제목·긴 기관 이름이 좁은 화면에서 칸 밖으로 잘려 나가거나 가로 스크롤을 만들지 않게 한다(띄어쓰기 없는 긴 글자도 줄바꿈) */
.kp-orgjobs-count { max-width: 100%; white-space: normal; text-align: left; }
@media (max-width: 1130px) {
  .kp-orgrow-title { overflow-wrap: anywhere; }
}


[hidden] { display: none !important; }

/* 링크로 그린 버튼·칩·탭 — 기본 밑줄이 끼어들지 않게 */
a.kp-btn, a.kp-btn:hover,
a.kp-chip, a.kp-chip:hover,
a.kp-page, a.kp-page:hover,
a.kp-tab, a.kp-tab:hover,
a.kp-about-link, a.kp-about-link:hover,
a.kp-compact-job-card, a.kp-compact-job-card:hover { text-decoration: none; }
a.kp-page[aria-disabled="true"] { pointer-events: none; }

/* 눌러서 이동하는 행·카드(목업의 onClick). 안쪽 링크가 실제 주소를 가진다. */
[data-href] { cursor: pointer; }
.kp-panel-row:hover { background: var(--kp-gray-50); }
.kp-line-ad-row:hover { background: var(--kp-primary-25); }

/* 헤더 토글 버튼이 열려 있을 때 */
[data-kp-toggle].is-open { background: var(--kp-gray-100) !important; }

/* 토스트(목업 KpToastHost) */
#kp-toast-host {
  position: fixed; right: 20px; bottom: 20px; z-index: 2000;
  display: flex; flex-direction: column; align-items: flex-end; gap: 8px;
  pointer-events: none; max-width: calc(100vw - 40px);
}
.kp-toast {
  background: var(--kp-primary-700); color: #fff; padding: 11px 16px;
  border-radius: var(--kp-radius-md, 6px); max-width: 380px; font-size: 12.5px; font-weight: 600;
  line-height: 1.55; letter-spacing: -0.01em; box-shadow: 0 8px 24px rgba(0, 26, 54, 0.35);
  word-break: keep-all; animation: kpToastIn 160ms ease-out;
}
@keyframes kpToastIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }

/* 목록 위 캐러셀 도트 */
.kp-dot-btn { padding: 10px; background: none; border: none; cursor: pointer; position: relative; display: inline-flex; align-items: center; justify-content: center; }
.kp-dot-btn > span { display: block; width: 5px; height: 5px; border-radius: 3px; background: var(--kp-gray-300); transition: width 200ms; }
.kp-dot-btn.is-active > span { width: 14px; background: var(--kp-primary-600); }
.kp-strip-flat { --kp-strip-radius: 0px; border-top: 1px solid var(--kp-border-light); border-bottom: 1px solid var(--kp-border-light); }
.kp-strip-mb { margin-bottom: 16px; }
.kp-strip-mb14 { margin-bottom: 14px; }
.kp-strip-mt { margin-top: 16px; }
.kp-strip-dots { position: absolute; right: 8px; bottom: 6px; display: flex; align-items: center; padding: 0 3px; border-radius: 10px; background: rgba(0, 0, 0, 0.35); }
.kp-strip-dots .kp-dot-btn { padding: 6px 3px; }
.kp-strip-dots .kp-dot-btn > span { background: rgba(255, 255, 255, 0.55); }
.kp-strip-dots .kp-dot-btn.is-active > span { width: 12px; background: #fff; }
@media (max-width: 1130px) {
  .kp-strip { --kp-strip-radius: 0px; }
  .kp-strip:not(.kp-strip-flat) { margin-inline: calc(-1 * var(--kp-page-padding-x)); }
  .kp-strip-mb { margin-bottom: 0; }
  .kp-strip-mb14 { margin-bottom: 16px; }
  .kp-strip-mt { margin-top: 0; }
}

/* 기관 심볼(목업 OrgMark) — 로고가 없거나 이미지가 열리지 않으면(김박사넷 미디어 404 등) 기관명 앞 두 글자 */
.kp-orgmark {
  display: flex; align-items: center; justify-content: center; flex-shrink: 0; overflow: hidden;
  background: #fff; border: 1px solid var(--kp-border); padding: var(--om-pad, 5px);
}
.kp-orgmark > img { max-width: 100%; max-height: 100%; object-fit: contain; display: block; }
.kp-orgmark.is-circle > img { width: 100%; height: 100%; border-radius: inherit; }
.kp-orgmark.is-fallback {
  background: var(--kp-primary-50); color: var(--kp-primary-600); border-color: var(--kp-primary-100); padding: 0;
  font-size: var(--om-font, 10px); font-weight: 700; font-family: var(--om-family, inherit); letter-spacing: var(--om-tracking, normal); line-height: 1;
}

/* 계정 메뉴(헤더) — 목업 GNB 의 사용자 드롭다운 */
.kp-user-item {
  display: flex; align-items: center; gap: 10px; width: 100%; padding: 10px 16px;
  background: none; border: none; font-size: 12.5px; font-family: inherit; text-align: left;
  cursor: pointer; color: var(--kp-text); text-decoration: none;
}
.kp-user-item:hover { background: var(--kp-gray-50); }
.kp-user-item > span:last-child { flex: 1; }
.kp-user-menu form { margin: 0; }

/* 마이페이지 왼쪽 메뉴 항목(목업 MyPageShell). 목업 실화면의 기준: 행 높이 37px(줄 높이 normal), 활성 항목에 왼쪽 선 없음(소스의 borderLeft 를 뒤따르는 border: none 이 지운다) */
.kp-lnb-item {
  display: flex; align-items: center; gap: 10px; width: 100%; padding: 11px 16px;
  background: transparent; border: none; cursor: pointer;
  font-family: inherit; font-size: 13px; line-height: normal; font-weight: 500; color: var(--kp-text); text-align: left; text-decoration: none;
}
.kp-lnb-item:hover { background: var(--kp-gray-50); }
.kp-lnb-item.is-active { background: var(--kp-warning-50, #fff5e6); color: var(--kp-warning-700, #b66e08); font-weight: 700; }
.kp-lnb-item.is-danger { color: var(--kp-danger-600); }
/* 개인 마이페이지는 기관(주황)과 달리 기본 파랑 계열로 강조한다(목업 MyPageShell isOrg 분기) */
.kp-mypage-individual .kp-lnb-item.is-active { background: var(--kp-primary-25); color: var(--kp-primary-600); }
.kp-mypage-grid form { margin: 0; }

/* 인증 화면(목업 AuthShell) */
.kp-auth-shell { background: linear-gradient(180deg, var(--kp-primary-50) 0%, var(--kp-bg) 60%); }
.kp-auth-shell.kp-auth-shell-flat { background: var(--kp-gray-50); }
.kp-auth-foot { margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--kp-divider); font-size: 12px; color: var(--kp-text-sub); text-align: center; line-height: 1.7; }
.kp-link-btn { background: none; border: none; padding: 0; font: inherit; font-weight: 700; color: var(--kp-primary-600); cursor: pointer; text-decoration: none; }
.kp-link-btn:hover { text-decoration: underline; }

/* 확인 창(목업 DeleteConfirmModal) — 기본 <dialog> 를 쓴다 */
dialog.kp-dialog {
  border: none; padding: 0; border-radius: 6px; width: 440px; max-width: calc(100vw - 32px);
  overflow: hidden; box-shadow: 0 20px 50px rgba(0, 0, 0, 0.25); color: var(--kp-text); font-family: inherit;
}
dialog.kp-dialog::backdrop { background: rgba(0, 0, 0, 0.5); }
dialog.kp-dialog form { margin: 0; }

/* 리디렉션으로 넘어온 안내 문구 */
.kp-flash { display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }

/* 화면에는 보이지 않지만 읽어 주는 요소(라디오·체크 상자를 버튼처럼 꾸밀 때) */
.kp-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }

/* ===== 1:1 문의·신고 제보(3단계) ===== */
/* 문의 유형·제보 분류 카드: 목업은 <button aria-pressed> 였고 여기서는 숨은 라디오를 가진 라벨이다. 고르면 파란 테두리·배경, 아이콘 상자는 채운다.
   :has 를 못 쓰는 브라우저를 위해 support 의 JS(inquiry.js · report.js)가 같은 모양의 is-on 도 켠다. */
.sp-card { border: 2px solid var(--kp-border); background: #fff; color: var(--kp-text); line-height: normal; letter-spacing: normal; }
.sp-card:hover { border-color: var(--kp-primary-300); }
.sp-card .sp-card-icon { background: var(--kp-gray-100); color: var(--kp-text-sub); }
.sp-card .sp-card-label { color: var(--kp-text); }
.sp-card.is-on, .sp-card:has(input:checked) { border-color: var(--kp-primary-600); background: var(--kp-primary-25); }
.sp-card.is-on .sp-card-icon, .sp-card:has(input:checked) .sp-card-icon { background: var(--kp-primary-600); color: #fff; }
.sp-card.is-on .sp-card-label, .sp-card:has(input:checked) .sp-card-label { color: var(--kp-primary-700); }
.sp-card:has(input:focus-visible) { outline: 2px solid var(--kp-primary-500); outline-offset: 2px; }

/* 입력칸: 오류가 있는 칸 */
[data-inquiry-form] .kp-input[aria-invalid="true"], [data-report-form] .kp-input[aria-invalid="true"] { border-color: var(--kp-danger-500); }
[data-inquiry-form] .kp-input[aria-invalid="true"]:focus, [data-report-form] .kp-input[aria-invalid="true"]:focus { box-shadow: 0 0 0 3px var(--kp-danger-100); }
[data-inquiry-form] .up-error:empty, [data-report-form] .up-error:empty { display: none; }

/* 보내는 중인 단추 · 막힌 단추 */
[data-inquiry-submit][aria-disabled="true"], [data-rp-submit][aria-disabled="true"], [data-followup-submit][aria-disabled="true"] { opacity: 0.6; pointer-events: none; }
[data-inquiry-submit][disabled], [data-rp-submit][disabled], [data-followup-submit][disabled] { cursor: not-allowed; }


/* ===== 4단계: 로그인 게이트·약관 동의·가입(accounts) ===== */
/* ===== 4단계: 알림(notifications) — 헤더 종·알림함·알림 설정 ===== */
/* 헤더 종 드롭다운(목업 NotifDropdown): 칩 · 목록 줄 · 바닥 링크. 안 읽음 표시는 서버가 is-unread 로 그리고, '모두 읽음 처리' 때 스크립트가 뗀다. */
.kp-bell-chip { padding: 5px 11px; border: none; border-radius: 999px; background: var(--kp-surface-2, #f1f3f5); color: var(--kp-text-sub); font-size: 11.5px; font-weight: 700; cursor: pointer; font-family: inherit; line-height: normal; letter-spacing: normal; }
.kp-bell-chip[aria-pressed="true"] { background: var(--kp-primary-600); color: #fff; }
a.kp-bell-item, a.kp-bell-item:hover { text-decoration: none; }
.kp-bell-item { background: #fff; }
.kp-bell-item:hover { background: var(--kp-gray-50); }
.kp-bell-item.is-unread { background: var(--kp-primary-50); }
.kp-bell-item.is-unread:hover { background: var(--kp-primary-100); }
.kp-bell-title { font-weight: 600; }
.kp-bell-item.is-unread .kp-bell-title { font-weight: 700; }
a.kp-bell-foot:hover { background: var(--kp-gray-50) !important; text-decoration: none; }
[data-kp-bell-count][data-zero] { color: var(--kp-text-muted) !important; }
[data-kp-bell-panel] form { margin: 0; }

/* 알림 전체 보기 — 탭(목업 MyPageSaved 의 밑줄 탭)과 알림 줄 */
a.kp-notif-tab { display: flex; align-items: center; gap: 6px; padding: 10px 18px; border-bottom: 3px solid transparent; color: var(--kp-text-sub); font-size: 13px; font-weight: 600; text-decoration: none; }
a.kp-notif-tab:hover { color: var(--kp-text); text-decoration: none; }
a.kp-notif-tab[aria-selected="true"] { border-bottom-color: var(--kp-primary-600); color: var(--kp-primary-600); font-weight: 800; }
.kp-notif-tab-count { font-size: 10.5px; padding: 0 6px; background: var(--kp-gray-200); color: var(--kp-text-muted); border-radius: 8px; font-weight: 700; }
.kp-notif-tab[aria-selected="true"] .kp-notif-tab-count { background: var(--kp-primary-600); color: #fff; }
a.kp-notif-row { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border-bottom: 1px solid var(--kp-border-light); background: #fff; color: inherit; text-decoration: none; }
a.kp-notif-row:last-child { border-bottom: none; }
a.kp-notif-row:hover { background: var(--kp-gray-50); text-decoration: none; }
a.kp-notif-row.is-unread { background: var(--kp-primary-25); }
a.kp-notif-row.is-unread:hover { background: var(--kp-primary-50); }
.kp-notif-icon { flex-shrink: 0; width: 32px; height: 32px; border-radius: 50%; background: var(--kp-surface-2, #f1f3f5); display: inline-flex; align-items: center; justify-content: center; }
.kp-notif-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.kp-notif-head { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.kp-notif-title { font-size: 13.5px; font-weight: 600; color: var(--kp-text); line-height: 1.4; }
.kp-notif-row.is-unread .kp-notif-title { font-weight: 800; }
.kp-notif-dot { width: 6px; height: 6px; background: var(--kp-danger-500); border-radius: 50%; flex-shrink: 0; }
.kp-notif-body { font-size: 12.5px; color: var(--kp-text-sub); line-height: 1.55; overflow-wrap: anywhere; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.kp-notif-meta { font-size: 11px; color: var(--kp-text-muted); font-weight: 600; }

/* 알림 설정 — 이메일 스위치(목업은 <button>, 여기서는 체크 상자), 수신 빈도 카드, 미리보기 단추 */
.kp-switch { position: relative; display: inline-block; width: 42px; height: 24px; flex-shrink: 0; margin: 0; cursor: pointer; }
.kp-switch > input { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: pointer; z-index: 1; }
.kp-switch > span { position: absolute; inset: 0; border-radius: 999px; background: var(--kp-gray-300); transition: background 0.15s; }
.kp-switch > span::after { content: ""; position: absolute; top: 2px; left: 2px; width: 20px; height: 20px; border-radius: 50%; background: #fff; transition: left 0.15s; }
.kp-switch > input:checked + span { background: var(--kp-primary-600); }
.kp-switch > input:checked + span::after { left: 20px; }
.kp-switch > input:focus-visible + span { box-shadow: var(--kp-shadow-focus); }
.kp-notif-channel-icon { background: var(--kp-gray-100); color: var(--kp-text-muted); }
.kp-notif-channel[data-on="true"] .kp-notif-channel-icon { background: var(--kp-primary-100); color: var(--kp-primary-600); }
.kp-notif-freq { border: 2px solid var(--kp-border); background: #fff; }
.kp-notif-freq.is-on, .kp-notif-freq:has(input:checked) { border-color: var(--kp-primary-600); background: var(--kp-primary-25); }
.kp-notif-freq:has(input:focus-visible) { outline: 2px solid var(--kp-primary-500); outline-offset: 2px; }
.kp-notif-peek-hint { color: var(--kp-text-muted); }
.kp-notif-peek[aria-expanded="true"] .kp-notif-peek-hint { color: var(--kp-primary-600); }
.kp-notif-peek:focus-visible { outline: 2px solid var(--kp-primary-500); outline-offset: 2px; border-radius: 2px; }
/* ===== 4단계: 스크랩·관심기관(scraps)·마이페이지 대시보드(mypage) ===== */
/* --- 스크랩 버튼(scraps/templatetags/scrap_ui.py) — 상태에 따라 바뀌는 색·채움은 aria-pressed 로 건다. 비로그인용 <a> 도 같은 모양이다 --- */
.kp-scrap { font-family: inherit; }
a.kp-scrap, a.kp-scrap:hover { text-decoration: none; }
a.kp-scrap:not(.kp-btn):not(.kp-premium-save) { display: inline-flex; align-items: center; justify-content: center; }
.kp-scrap-row { background: transparent; border: none; cursor: pointer; color: var(--kp-text-muted); padding: 4px; }
.kp-scrap-plus { color: var(--kp-text-sub); }
.kp-scrap-row[aria-pressed="true"], .kp-scrap-plus[aria-pressed="true"], .kp-scrap.kp-btn-ghost[aria-pressed="true"] { color: var(--kp-primary-600); }
.kp-scrap[aria-pressed="true"] svg path { fill: currentColor; }
.kp-scrap:focus-visible { outline: 2px solid var(--kp-primary-500); outline-offset: 2px; border-radius: 4px; }
.kp-saved-btn:focus-visible { outline: 2px solid var(--kp-primary-500); outline-offset: 2px; }
.kp-scrap[aria-disabled="true"] { cursor: default; }
@media (max-width: 1130px) {
  .kp-joblist-row > :nth-child(6) a.kp-scrap, .kp-academic-row > :nth-child(6) a.kp-scrap {
    display: inline-flex; align-items: center; justify-content: center; min-width: 36px; min-height: 36px; padding: 6px !important; border-radius: 4px;
  }
}

/* --- 관심기관 하트·알림 스위치·칩 --- */
.kp-follow-heart { background: transparent; border: none; padding: 4px; min-height: 0; color: var(--kp-text-muted); cursor: pointer; font-family: inherit; }
a.kp-follow-heart, a.kp-follow-heart:hover { text-decoration: none; }
.kp-follow-heart[aria-pressed="true"] { color: var(--kp-danger-500); }
.kp-follow-heart[aria-pressed="true"] svg path { fill: currentColor; }
.kp-follow-heart:focus-visible, .kp-follow-chip:focus-visible, .kp-follow-switch:focus-visible { outline: 2px solid var(--kp-primary-500); outline-offset: 2px; }
.kp-follow-switch { width: 32px; height: 18px; border-radius: 9px; border: none; padding: 1px; background: var(--kp-gray-300); cursor: pointer; display: inline-flex; align-items: center; justify-content: flex-start; transition: all 150ms; flex-shrink: 0; }
.kp-follow-switch[aria-checked="true"] { background: var(--kp-primary-600); justify-content: flex-end; }
.kp-follow-switch > span { width: 14px; height: 14px; border-radius: 50%; background: #fff; display: block; }
.kp-follow-chip { padding: 3px 8px; font-size: 10px; font-weight: 600; border-radius: 11px; border: 1px solid var(--kp-divider); background: #fff; color: var(--kp-text-muted); cursor: pointer; display: inline-flex; gap: 4px; align-items: center; font-family: inherit; }
.kp-follow-chip[aria-pressed="true"] { border-color: var(--kp-primary-600); background: var(--kp-primary-50); color: var(--kp-primary-600); }

/* --- 스크랩·관심기관 화면 --- */
[data-refresh-area].is-loading { opacity: 0.6; pointer-events: none; }
.kp-saved-tabs { overflow-x: auto; }
.kp-saved-tabs > a { flex-shrink: 0; }
@media (max-width: 640px) {
  .kp-saved-tabs > a { padding: 10px 8px !important; }
}
/* 대시보드 두 패널: 안쪽 머리·줄이 자기 여백을 가지므로 모바일의 .kp-card 여백(16px)이 겹치지 않게 한다 */
.kp-dash-panel { padding: 0 !important; }
.kp-mypage-followed-card:hover { border-color: var(--kp-primary-200) !important; }
[data-undo] button:focus-visible { outline: 2px solid #fff; outline-offset: 2px; }

/* --- 기관 추가 창(목업 OrgUnitPickerModal) — 기본 확인 창(440px)보다 넓고 안쪽이 스크롤된다 --- */
dialog.kp-follow-picker { width: min(680px, calc(100vw - 32px)); max-height: 86vh; }
dialog.kp-follow-picker[open] { display: flex; flex-direction: column; }
.kp-pick-shell { display: flex; flex-direction: column; flex: 1; min-height: 0; max-height: 86vh; }
.kp-pick-body { min-height: 0; }
.kp-pick-uni { display: flex; align-items: center; gap: 12px; padding: 10px 12px; background: #fff; border: 1px solid var(--kp-border); border-radius: 6px; cursor: pointer; text-align: left; font-family: inherit; transition: border-color 120ms, background 120ms; min-width: 0; }
.kp-pick-uni:hover { border-color: var(--kp-primary-600); background: var(--kp-primary-25); }
.kp-pick-whole { width: 100%; display: flex; align-items: center; gap: 12px; padding: 12px 14px; background: var(--kp-primary-25); border: 1px solid var(--kp-primary-200); border-radius: 6px; cursor: pointer; text-align: left; font-family: inherit; margin-bottom: 10px; }
.kp-pick-whole:disabled { background: var(--kp-surface-2, #fafbfc); border-color: var(--kp-border); cursor: not-allowed; opacity: 0.55; }
.kp-pick-whole-badge { width: 32px; height: 32px; border-radius: 6px; background: var(--kp-primary-600); color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: 11px; flex-shrink: 0; }
.kp-pick-unit { width: 100%; display: flex; align-items: center; gap: 10px; padding: 10px 12px; background: #fff; border: 1px solid var(--kp-border); border-radius: 4px; cursor: pointer; text-align: left; font-family: inherit; transition: border-color 120ms, background 120ms; }
.kp-pick-unit:hover:not(:disabled) { border-color: var(--kp-primary-600); background: var(--kp-primary-25); }
.kp-pick-unit:disabled { cursor: not-allowed; opacity: 0.55; }
.kp-pick-unit > .kp-pick-name { font-size: 13px; font-weight: 600; color: var(--kp-text); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.kp-pick-kind { font-size: 9.5px; padding: 2px 6px; background: var(--kp-gray-100); color: var(--kp-text-sub); border-radius: 2px; font-weight: 700; white-space: nowrap; letter-spacing: 0.02em; flex-shrink: 0; }
.kp-pick-crumb { background: #fff; color: var(--kp-text-sub); border: 1px solid var(--kp-border); padding: 4px 10px; border-radius: 11px; font-size: 11.5px; font-weight: 700; cursor: pointer; font-family: inherit; }
.kp-pick-crumb.is-on { background: var(--kp-primary-600); color: #fff; border-color: var(--kp-primary-600); }
.kp-pick-crumb:disabled { color: var(--kp-text-muted); cursor: not-allowed; opacity: 0.6; }
.kp-pick-uni:focus-visible, .kp-pick-unit:focus-visible, .kp-pick-whole:focus-visible, .kp-pick-crumb:focus-visible { outline: 2px solid var(--kp-primary-500); outline-offset: 2px; }
@media (max-width: 640px) {
  .kp-pick-uni-grid { grid-template-columns: minmax(0, 1fr) !important; }
}

/* ===== 5단계: 커뮤니티 — 공통(더 보기 메뉴·행동 단추) ===== */
.kp-cm-menu-toggle { padding: 0; border: none; background: transparent; cursor: pointer; color: var(--kp-text-muted); font-family: inherit; border-radius: 3px; display: inline-flex; align-items: center; justify-content: center; transition: background 0.1s; }
.kp-cm-menu-toggle:hover, .kp-cm-menu-toggle[aria-expanded="true"] { background: var(--kp-gray-100, #f1f3f5); }
.kp-cm-menu-panel { position: absolute; z-index: 60; background: #fff; border: 1px solid var(--kp-border); border-radius: 4px; box-shadow: 0 6px 16px rgba(0, 49, 102, 0.12); min-width: 200px; padding: 4px; }
.kp-cm-menu-panel.is-right { right: 0; }
.kp-cm-menu-panel.is-left { left: 0; }
.kp-cm-menu-panel[hidden] { display: none; }
.kp-cm-menu-item { display: flex; align-items: center; gap: 8px; width: 100%; padding: 8px 12px; border: none; background: transparent; cursor: pointer; font-family: inherit; font-size: 12.5px; color: var(--kp-text); text-align: left; border-radius: 3px; white-space: nowrap; }
.kp-cm-menu-item.is-compact { padding: 7px 10px; font-size: 11.5px; }
.kp-cm-menu-item:hover { background: var(--kp-gray-50); }
.kp-cm-menu-item.is-danger { color: var(--kp-danger-600, #b91c1c); }
.kp-cm-menu-item.is-danger:hover { background: var(--kp-danger-50, #fef2f2); }
.kp-cm-menu-sep { height: 1px; background: var(--kp-divider); margin: 3px 4px; }
/* 비회원의 더 보기(⋯) — 항목은 회색(누를 수 없음)이고 맨 위에 로그인 안내 한 줄 */
.kp-cm-menu-note { display: flex; align-items: center; gap: 6px; padding: 7px 10px 8px; font-size: 11.5px; color: var(--kp-text-sub); border-bottom: 1px solid var(--kp-divider); margin-bottom: 3px; white-space: nowrap; }
.kp-cm-menu-item[aria-disabled="true"] { color: var(--kp-text-muted); cursor: default; opacity: 0.6; }
.kp-cm-menu-item[aria-disabled="true"]:hover { background: transparent; }
.kp-cm-menu-toggle:focus-visible, .kp-cm-menu-item:focus-visible { outline: 2px solid var(--kp-primary-500); outline-offset: 2px; }

/* ===== 5단계: 커뮤니티 — 마이페이지 글·댓글·스크랩 게시글 탭 (목록·상세·글쓰기는 community-list/post/write.css, 운영 화면은 장고 어드민) ===== */
/* 내가 쓴 글 · 댓글의 탭(목업은 <button>, 여기서는 주소 인자 링크) — 좁은 화면에서는 페이지가 아니라 탭 줄 안에서만 넘긴다 */
.kp-mypost-tabs { overflow-x: auto; scrollbar-width: none; }
.kp-mypost-tabs > a { flex-shrink: 0; white-space: nowrap; }
.kp-mypost-tabs > a:focus-visible { outline: 2px solid var(--kp-primary-500); outline-offset: -2px; }
@media (max-width: 640px) {
  .kp-mypost-tabs > a { padding: 10px 10px !important; }
}
/* 안쪽 줄이 자기 여백을 갖는 카드(내 댓글·숨김·차단 카드, 스크랩 게시글 목록) — 모바일의 .kp-card 여백(16px)과 겹치지 않게 한다(대시보드 .kp-dash-panel 과 같은 처리) */
.kp-mypost-card, .kp-saved-post-card { padding: 0 !important; }
/* 댓글 본문에 띄어쓰기 없는 긴 글자(주소 등)가 있어도 칸 밖으로 넘치지 않게 */
.kp-mypost-comment { overflow-wrap: anywhere; }

/* ===== 5단계: 커뮤니티 오른쪽 추천 채용 캐러셀(includes/side_rail_carousel.html, 목업 AdSideRecoPlus) ===== */
/* 카드의 인라인 display:flex 가 hidden 속성을 이기므로 숨김을 따로 건다 */
[data-rail-card][hidden] { display: none !important; }
[data-rail-card]:focus-visible, [data-rail-carousel] button:focus-visible { outline: 2px solid var(--kp-primary-500); outline-offset: -2px; }
.kp-siderail-bar { opacity: 0; }
.kp-siderail-bar.is-running { opacity: 0.85; animation: kp-siderail-progress 5s linear forwards; }
@keyframes kp-siderail-progress { from { width: 0%; } to { width: 100%; } }
@media (prefers-reduced-motion: reduce) { .kp-siderail-bar { display: none; } }

/* ===== 7단계: 교수 정보 연결(professors) — 목업 base.css 의 .kp-professor-* 규칙에 더한 보충 ===== */
/* 검색 결과 줄은 목업의 <button> 대신 다음 단계로 가는 링크(<a>)다 — 링크 기본 밑줄·색이 줄 안 글자에 번지지 않게 */
a.kp-professor-result, a.kp-professor-result:hover { text-decoration: none; color: var(--kp-text); }
/* 폼 안의 입력 칸 사이 간격은 목업이 label 위 여백(16px)으로 두므로, 오류 문장·도움말이 바로 아래에 붙게 */
.kp-professor-flow .kp-input { width: 100%; }
.kp-professor-search .kp-input, .kp-professor-code .kp-input { width: auto; }
.kp-professor-code input[name="code"] { font-variant-numeric: tabular-nums; font-weight: 700; }
/* 한 번 누르면 끝나는 폼(data-once)이 보내는 동안 잠긴 단추 */
.kp-professor-flow button[type="submit"]:disabled { opacity: 0.6; cursor: progress; }
/* 등록 요청 양식의 선택 묶음(직위·PI 페이지·모집 문항) — 라디오 줄은 목업 label 규칙(굵은 블록)을 되돌려 한 줄 글자로 둔다 */
.kp-professor-choice { border: 0; padding: 0; margin: 16px 0 0; min-width: 0; }
.kp-professor-choice legend { font-weight: 700; font-size: 13px; padding: 0; margin-bottom: 8px; }
.kp-professor-radios { display: flex; flex-wrap: wrap; gap: 8px 18px; }
.kp-professor-flow .kp-professor-radios label { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-weight: 500; font-size: 14px; }
.kp-professor-choice [data-professor-status-other] { margin-top: 10px; }
.kp-professor-question { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; padding: 10px 0; border-top: 1px solid var(--kp-divider); font-size: 13px; }
.kp-professor-flow [hidden] { display: none !important; }

/* ===== 공고·학술 상세의 내용(직접 쓴 글 · PDF·이미지 뷰어) ===== */
.kp-notice-text { font-size: 14px; line-height: 1.8; color: var(--kp-text); }
.kp-content-viewer { min-width: 0; }
.kp-pdf-box { height: 85vh; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 8px; border: 1px solid var(--kp-border); border-radius: 4px; background: var(--kp-gray-50); }
.kp-pdf-box.is-failed { height: auto; }
.kp-pdf-pages { display: flex; flex-direction: column; gap: 16px; }
.kp-pdf-page { background: #fff; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12); }
.kp-pdf-page canvas { display: block; width: 100%; height: auto; }
.kp-pdf-status, .kp-pdf-fallback { margin: 0; padding: 24px 8px; text-align: center; font-size: 13px; color: var(--kp-text-sub); }
.kp-pdf-fallback[hidden] { display: none; }
.kp-pdf-fallback a { color: var(--kp-link); text-decoration: underline; }
.kp-pdf-actions { display: flex; align-items: center; justify-content: flex-end; gap: 12px; flex-wrap: wrap; margin-top: 6px; font-size: 12px; }
.kp-pdf-name { margin-right: auto; min-width: 0; overflow-wrap: anywhere; color: var(--kp-text-sub); }
.kp-pdf-actions a { color: var(--kp-link); display: inline-flex; align-items: center; gap: 3px; }
.kp-content-image { display: block; max-width: 100%; height: auto; margin: 0 auto; border: 1px solid var(--kp-divider); border-radius: 4px; }
@media (max-width: 640px) { .kp-pdf-box:not(.is-failed) { height: 80vh; } }

/* 상세: 휴대폰 추천 목록(reco_list_mobile.html) — 5건씩 한 쪽, 옆으로 넘긴다. 넓은 화면에서는 오른쪽 추천 패널이 대신한다 */
.kp-reco-mobile { display: none; }
@media (max-width: 1130px) { .kp-reco-mobile.kp-card { display: block; margin-inline: calc(-1 * var(--kp-page-padding-x)); border-width: 1px 0; border-radius: 0; } }
.kp-reco-mobile-track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; }
.kp-reco-mobile-track::-webkit-scrollbar { display: none; }
.kp-reco-mobile-page { flex: 0 0 100%; min-width: 0; scroll-snap-align: start; }
.kp-reco-mobile-row { display: flex; align-items: center; gap: 10px; padding: 10px 20px; border-bottom: 1px solid var(--kp-divider); cursor: pointer; }
.kp-reco-mobile-page > :last-child { border-bottom: none; }
.kp-reco-mobile-logo { width: 36px; height: 36px; flex-shrink: 0; border: 1px solid var(--kp-divider); border-radius: 6px; background: #fff; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.kp-reco-mobile-logo img { max-width: 100%; max-height: 100%; object-fit: contain; }
.kp-reco-mobile-logo > span { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 11px; font-weight: 800; }
.kp-reco-mobile-text { flex: 1 1 0%; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.kp-reco-mobile-org { font-size: 11px; color: var(--kp-text-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kp-reco-mobile-title { font-size: 13px; font-weight: 700; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.kp-reco-mobile-title a { color: inherit; text-decoration: none; }
.kp-reco-mobile-meta { font-size: 11px; color: var(--kp-text-sub); }
.kp-reco-mobile-dots { display: flex; justify-content: center; gap: 6px; padding: 10px 0 12px; border-top: 1px solid var(--kp-divider); }
.kp-reco-mobile-dots span { width: 6px; height: 6px; border-radius: 3px; background: var(--kp-gray-300); transition: width 150ms; }
.kp-reco-mobile-dots span.is-on { width: 18px; background: var(--kp-primary-600); }

/* 상세: 휴대폰에서 관심기관을 등록하면 뜨는 '신규 공고 알림' 안내(오른쪽 기관 카드가 없는 화면용) */
.kp-follow-pop { position: fixed; left: 12px; right: 12px; top: 72px; z-index: 60; background: #fff; border: 1px solid var(--kp-border); border-radius: 8px; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18); padding: 14px 40px 6px 14px; }
.kp-follow-pop[hidden] { display: none; }
@media (min-width: 1131px) { .kp-follow-pop { display: none !important; } }
.kp-follow-pop-x { position: absolute; top: 6px; right: 8px; width: 28px; height: 28px; border: none; background: transparent; font-size: 20px; line-height: 1; color: var(--kp-text-muted); cursor: pointer; }
.kp-follow-pop [data-follow-alert-row] { border-top: none !important; padding-top: 0 !important; }
.kp-follow-pop[data-scope="org"] [data-follow-alert-row][data-scope="unit"], .kp-follow-pop[data-scope="unit"] [data-follow-alert-row][data-scope="org"] { display: none !important; }

/* 내 문의 내역 목록: PC 는 상태·유형·제목·날짜 한 줄, 휴대폰은 카드(상태·유형 / 제목 두 줄까지 / 날짜) */
.sp-inq-row { display: grid; grid-template-columns: 90px 84px minmax(0, 1fr) 130px; align-items: center; gap: 12px; padding: 10px 16px; border-bottom: 1px solid var(--kp-border-light, var(--kp-divider)); background: #fff; cursor: pointer; }
.sp-inq-row:last-child { border-bottom: none; }
.sp-inq-row:nth-child(even) { background: var(--kp-surface-2, #fafbfc); }
.sp-inq-head { cursor: default; padding: 9px 16px; background: var(--kp-gray-50) !important; border-bottom: 1px solid var(--kp-border); font-size: 10.5px; font-weight: 800; color: var(--kp-text-muted); letter-spacing: 0.05em; }
.sp-inq-head > :last-child { text-align: right; }
.sp-inq-title { min-width: 0; font-size: 13.5px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sp-inq-title a { color: inherit; text-decoration: none; }
.sp-inq-date { text-align: right; font-size: 12px; color: var(--kp-text-sub); font-variant-numeric: tabular-nums; white-space: nowrap; }
@media (max-width: 640px) {
  .kp-list-scroll.sp-inq-list { overflow-x: visible !important; }
  .kp-list-scroll .kp-jobs-row.kp-list-flat.sp-inq-row { min-width: 0 !important; grid-template-columns: auto auto minmax(0, 1fr); gap: 8px 6px; padding: 14px; }
  .sp-inq-head { display: none !important; }
  .sp-inq-row > :nth-child(1) { grid-column: 1; grid-row: 1; }
  .sp-inq-row > :nth-child(2) { grid-column: 2; grid-row: 1; }
  .sp-inq-row > .sp-inq-title { grid-column: 1 / -1; grid-row: 2; white-space: normal; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }
  .sp-inq-row > .sp-inq-date { grid-column: 1 / -1; grid-row: 3; text-align: left; font-size: 11px; color: var(--kp-text-muted); }
}

/* 휴대폰 홈 줄광고: 지역을 빼고 두 줄로 — 첫 줄은 AD 표시와 기관명 세부 기관명, 둘째 줄은 제목(넘치면 …)과 오른쪽 끝 마감 */
@media (max-width: 640px) {
  .kp-line-ad-row { display: grid !important; grid-template-columns: auto minmax(0, 1fr) auto; column-gap: 8px !important; row-gap: 3px; align-items: center !important; }
  .kp-line-ad-row .kp-line-ad-region { display: none; }
  .kp-line-ad-row .kp-line-ad-main { display: contents; }
  .kp-line-ad-row > :first-child { grid-column: 1; grid-row: 1; }
  .kp-line-ad-row .kp-line-ad-org { grid-column: 2 / -1; grid-row: 1; margin: 0 !important; font-size: 11.5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
  .kp-line-ad-row .kp-line-ad-title { grid-column: 1 / 3; grid-row: 2; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
  .kp-line-ad-row .kp-line-ad-deadline { grid-column: 3; grid-row: 2; min-width: 0 !important; white-space: nowrap; }
}

/* 정책 문서: 좁은 화면에서도 목차와 개인정보 보호책임자 칸을 본문 아래에 보인다 */
@media (max-width: 1130px) {
  .kp-layout-2col.kp-policy-layout > :last-child { display: block !important; }
  .kp-policy-layout nav[aria-label="목차"] { position: static !important; }
}
