/* 대학 담당자 업무 화면 (/admin) — 2026-10-06 전면 개선.
   종전 페이지 전용 색(#hex 직접 지정·14px)을 사이트 디자인 토큰으로 바꿔 고대비·글자 확대가 함께 동작한다.
   admin.js·form-editor.js·roster.js 가 쓰는 요소 id·클래스 이름은 그대로 (기능 불변). */
:root { --max-w: 1640px; }

.admin-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; margin: 0 0 12px; }
.admin-proxy { margin-left: auto; }
.admin-panel > h2:not(.sr-only) { margin: 0 0 6px; }
.site-header .roster-status { font-weight: 600; font-size: var(--font-sm); max-width: 440px; }

/* ── 신청 관리 (기존 표 — 행 단위 즉시 처리, 조밀) ── */
.manage-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 12px; }
.adm-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 38px; padding: 3px 14px;
  border: 2px solid var(--primary); border-radius: var(--radius-sm); background: var(--surface); color: var(--primary);
  font-size: var(--font-sm); font-weight: 700; text-decoration: none; cursor: pointer; white-space: nowrap;
}
.adm-btn:hover { background: var(--surface-alt); }
.adm-btn--primary { background: var(--primary); color: var(--primary-text); }
.adm-btn--primary:hover { background: var(--primary-hover); border-color: var(--primary-hover); }
.adm-btn--danger { color: var(--danger); border-color: var(--danger); }
.adm-btn--danger:hover { background: var(--tone-issue-bg); }
.adm-btn:disabled { opacity: .45; cursor: default; }

.adm-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 10px; }
.adm-chip {
  min-height: 38px; padding: 3px 14px; border: 1.5px solid var(--border); border-radius: 999px;
  background: var(--surface); color: var(--text); font-size: var(--font-sm); font-weight: 800; cursor: pointer;
}
.adm-chip:hover { border-color: var(--primary); }
.adm-chip[aria-pressed="true"] { background: var(--primary); color: var(--primary-text); border-color: var(--primary); }
.adm-search { margin: 0 0 10px; }
.adm-search input { max-width: 480px; }

.adm-bulk {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 18px; margin: 0 0 10px; padding: 8px 12px;
  background: var(--surface-alt); border: 1px solid var(--border); border-radius: var(--radius-sm);
}
.adm-bulk-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.adm-bulk-row label { display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; font-weight: 700; font-size: var(--font-sm); }
.adm-bulk select, #bulk-book-reason { min-height: 38px; width: auto; max-width: 100%; padding: 2px 8px; font-size: var(--font-sm); }
#bulk-book-reason { width: 230px; }

.table-scroll { overflow-x: auto; border: 1px solid var(--border); border-radius: var(--radius-sm); }
.adm-table { width: 100%; border-collapse: collapse; background: var(--surface); font-size: calc(15 * var(--u)); }
.adm-table th, .adm-table td { border: 1px solid var(--border); padding: 6px 8px; vertical-align: middle; text-align: left; }
.adm-table thead th {
  position: sticky; top: 0; z-index: 5; white-space: nowrap; font-size: calc(14 * var(--u));
  background: var(--primary); color: var(--primary-text);
}
tr.req-row td { background: var(--surface-alt); font-weight: 700; border-top: 3px solid var(--primary); }
tr.book-row.is-reject td { background: var(--tone-issue-bg); }
tr.book-row.is-provided td { background: var(--tone-done-bg); }
tr.book-row.is-cancel td { background: var(--tone-closed-bg); }
tr.req-row.is-selected td, tr.book-row.is-selected td { background: var(--tone-progress-bg); }
tr.req-row td:first-child, tr.book-row td:first-child { text-align: center; }
.adm-table select, .adm-table input[type="text"] {
  min-height: 34px; width: 100%; padding: 2px 6px; font-size: calc(14 * var(--u));
  border: 1.5px solid var(--border); border-radius: 5px; background: var(--surface); color: var(--text);
}
.adm-table .cell-tight { white-space: nowrap; }
.adm-table .muted { color: var(--text-muted); font-weight: 500; }
.adm-table .ok-text { color: var(--success); }
.bulk-check, .book-check, #bulk-all { width: 20px; height: 20px; }
/* 상태 = 점 + 콤보박스 한 줄, 그 아래 세부 단계(제작 협업) */
.stat-cell { display: flex; align-items: center; gap: 6px; }
.stat-cell select { flex: 1 1 auto; min-width: 0; width: auto; }
.status-dot { flex: 0 0 auto; display: inline-block; width: 10px; height: 10px; border-radius: 50%; background: var(--text-muted); }
.dot-접수대기 { background: var(--tone-attention-bd); }
.dot-접수완료 { background: var(--tone-progress-bd); }
.dot-제공완료 { background: var(--tone-done-bd); }
.dot-제작불가 { background: var(--tone-issue-bd); }
.dot-신청취소 { background: var(--tone-closed-bd); }
.book-stage { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; margin-top: 5px; }
.book-stage .stage { font-size: calc(12.5 * var(--u)); padding: 1px 9px; }
.due-weeks { font-weight: 700; white-space: nowrap; }
.due-date { color: var(--text-muted); font-weight: 400; font-size: calc(13 * var(--u)); white-space: nowrap; }
.adm-empty { padding: 26px; text-align: center; color: var(--text-muted); background: var(--surface); border: 1px solid var(--border); }
.proxy-tag {
  display: inline-block; padding: 0 8px; border-radius: 4px; font-size: calc(12.5 * var(--u)); font-weight: 700;
  background: var(--tone-progress-bg); color: var(--tone-progress-fg);
}
.roster-ok { color: var(--success); font-weight: 600; font-size: calc(13 * var(--u)); }
.roster-bad { color: var(--danger); font-weight: 700; }

/* 휴지통 */
.trash-panel {
  margin: 0 0 14px; padding: 14px 16px; background: var(--surface);
  border: 1.5px solid var(--border); border-radius: var(--radius);
}
.trash-panel h2 { margin: 0 0 4px; font-size: 1.1rem; }
.trash-panel > p { margin: 0 0 10px; color: var(--text-muted); font-size: var(--font-sm); }

/* ── 신청서 편집기 — 별지 제1호 서식 재현(종이 위 편집). 종이는 인쇄 서식 그대로 흰 바탕·검은 글자(테마와 무관) ── */
.fe-overlay {
  position: fixed; inset: 0; z-index: 90; display: flex; align-items: flex-start; justify-content: center;
  overflow-y: auto; padding: 26px 12px; background: rgba(12, 22, 36, .6); color-scheme: light;
}
.fe-overlay[hidden] { display: none; }
.fe-panel {
  width: min(980px, 100%); padding: 14px 16px 16px; border-radius: 12px; font-size: calc(14 * var(--u));
  background: #eef1f5; color: #1c2733; box-shadow: 0 12px 40px rgba(0, 0, 0, .35);
}
.fe-panel .adm-btn { --primary: #0B2E5C; --surface: #ffffff; --surface-alt: #EFF2F6; --primary-text: #ffffff; --danger: #b02a2a; }
.fe-head { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.fe-head h2 { margin: 0; font-size: calc(16 * var(--u)); flex: 1 1 auto; }
.fe-sheetnav { display: flex; align-items: center; gap: 8px; font-weight: 700; }
.fe-hint { margin: 8px 0 10px; font-size: calc(12.5 * var(--u)); color: #46525f; }
.fe-paper { background: #fff; color: #111; border: 1px solid #cfd6de; box-shadow: 0 2px 10px rgba(0, 0, 0, .12); padding: 26px 30px 30px; }
.fe-formtag { margin: 0 0 6px; font-size: calc(12 * var(--u)); color: #333; }
.fe-formtitle { margin: 0 0 14px; text-align: center; font-size: calc(20 * var(--u)); letter-spacing: 1px; text-decoration: underline; text-underline-offset: 5px; }
.fe-paper table { width: 100%; border-collapse: collapse; font-size: calc(13 * var(--u)); }
/* 좁은 폭(휴대폰·브라우저 확대 — 업무 화면은 늘 기본 글자라 크게 보려면 확대)에서 서식 표가 화면 폭에 맞춰 줄어 서명 입력칸이 22px 까지
   좁아졌다(2026-10-09 실측 390·320px). 별지 제1호 표 모양은 그대로, 표에 최소 폭을 주고 넘치면 서식 상자 안에서 옆으로 넘겨 본다
   (표 = 2차원 배치라 WCAG 1.4.10 의 예외). 상자 안에 늘 입력칸이 있어 Tab 으로 닿고, 초점이 간 칸으로 상자가 옮겨진다 */
.fe-paper { overflow-x: auto; }
.fe-paper table { min-width: 40rem; }
.fe-paper th, .fe-paper td { border: 1.2px solid #222; padding: 5px 7px; vertical-align: middle; }
.fe-paper th { background: #f0f0ee; font-weight: 700; text-align: center; white-space: nowrap; }
.fe-info { margin-bottom: 12px; }
.fe-info th { width: 15%; }
.fe-inline { display: flex; align-items: center; flex-wrap: wrap; gap: 4px 8px; }
.fe-inline .fe-input { flex: 1 1 140px; width: auto; min-width: 0; }
.fe-inline .fe-last4 { flex: 0 0 auto; white-space: nowrap; margin-left: 0; }
.fe-input, .fe-paper select, .fe-paper input[type="number"], .fe-paper input[type="date"],
.fe-paper input[type="text"], .fe-paper textarea {
  width: 100%; min-height: 30px; padding: 3px 7px; border: 1px dashed #98a3b0; border-radius: 3px;
  background: #fcfdff; color: #111; font-size: calc(13 * var(--u));
}
.fe-paper textarea { resize: vertical; }
/* :focus-within — 날짜 칸 안의 달력 단추에 초점이 있을 때도 같은 윤곽선 (reset.css 날짜 칸 규칙과 같은 까닭, 감사 발견 15) */
.fe-paper input:focus-within, .fe-paper select:focus, .fe-paper textarea:focus {
  border-style: solid; border-color: #b45309; outline: 2px solid #b45309; outline-offset: 1px;
}
.fe-input--personal { background: #FFF8E1; border-color: #d4a017; }
.fe-input--personal:disabled { background: #f1f1ef; border-color: #c4c9cf; color: #8a939c; }
/* 날짜·ISBN·숫자 칸 — 글자 크기 단추를 따라 함께 넓어진다(기본 100% 에서 84·160px, 2026-10-06) */
.fe-narrow { width: calc(84 * var(--u)) !important; display: inline-block; }
.fe-mid { width: calc(160 * var(--u)) !important; display: inline-block; }
.fe-book-sub td { background: #fafbfd; border-top: none !important; font-size: calc(12 * var(--u)); color: #46525f; }
.fe-sub-tag { font-weight: 700; margin-right: 6px; }
.fe-book-row--empty td { height: 40px; color: #b8bfc7; font-size: calc(12 * var(--u)); text-align: center; }
.fe-note-row textarea { border-style: solid; border-color: #cfd6de; }
.fe-decl { text-align: center; margin: 12px 0 2px; font-size: calc(13.5 * var(--u)); }
.fe-decl--to { font-weight: 800; font-size: calc(16 * var(--u)); margin-top: 12px; letter-spacing: 2px; }
.fe-last4 { display: inline-block; margin-left: 8px; font-size: calc(12 * var(--u)); color: #1e6b46; font-weight: 700; }
.fe-last4--warn { color: #b02a2a; }
.fe-foot { display: flex; align-items: center; gap: 12px; margin-top: 12px; }
.fe-foot #fe-msg { flex: 1; font-weight: 700; color: #b02a2a; }

@media (max-width: 720px) {
  .admin-proxy { margin-left: 0; }
  #bulk-book-reason { width: 100%; }
  /* 좁은 화면 — 일괄 처리 줄의 이름표·선택 상자가 화면 폭 안에서 줄바꿈 (긴 신청자 이름이 가로로 넘치지 않게) */
  .adm-bulk-row, .adm-bulk-row label { flex-wrap: wrap; white-space: normal; min-width: 0; }
  .adm-bulk-row label { width: 100%; }
  .adm-bulk select { width: 100%; }
}
