/* ===== common.css — 공통 base(원문 계승) + 상호이동 헤더바 + 대문 + 제정(자주) ===== */
* { margin:0; padding:0; box-sizing:border-box; font-family:'Malgun Gothic','Segoe UI',sans-serif; }
  body { background:#f0f2f7; color:#222; }

  header {
    background:var(--docs); color:#fff; padding:14px 20px;
    display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px;
  }
  header h1 { font-size:18px; }
  header h1 small { font-weight:normal; font-size:12px; opacity:.8; margin-left:8px; }
  .userbox { display:flex; align-items:center; gap:10px; font-size:13px; }
  .role-badge { background:#e8b931; color:var(--ink); font-weight:bold; padding:2px 10px; border-radius:12px; font-size:12px; }
  .role-badge.general { background:#aebcd6; }
  #logoutBtn {
    background:transparent; border:1px solid rgba(255,255,255,.5); color:#fff;
    padding:4px 12px; border-radius:6px; cursor:pointer; font-size:12px;
  }
  #logoutBtn:hover { background:rgba(255,255,255,.15); }
  #pwBtn, #logBtn {
    background:transparent; border:1px solid rgba(255,255,255,.5); color:#fff;
    padding:4px 12px; border-radius:6px; cursor:pointer; font-size:12px;
  }
  #pwBtn:hover, #logBtn:hover { background:rgba(255,255,255,.15); }
  .role-badge.approver { background:#9ad0a0; color:var(--ink); }
  .role-badge.reviewer { background:#a9c4ee; color:var(--ink); }

  /* 결재선 미리보기 */
  .apv-line {
    font-size:12px; color:var(--ink); background:#eef3fb; border-radius:7px;
    padding:8px 11px; margin-top:10px; line-height:1.5;
  }
  .apv-line b { font-weight:bold; }

  /* 비밀번호 변경 모달 */
  #pwModal { display:none; position:fixed; inset:0; z-index:1300; background:rgba(15,25,45,.6); padding:6vh 4vw; }
  #pwModal.open { display:flex; align-items:flex-start; justify-content:center; }
  .pw-box { background:#fff; border-radius:12px; width:100%; max-width:420px; box-shadow:0 18px 60px rgba(0,0,0,.4); }
  .pw-head { background:var(--docs); color:#fff; padding:13px 18px; border-radius:12px 12px 0 0; display:flex; justify-content:space-between; align-items:center; }
  .pw-head h3 { font-size:15px; }
  .pw-head button { background:transparent; border:1px solid rgba(255,255,255,.6); color:#fff; border-radius:6px; padding:3px 12px; cursor:pointer; }
  .pw-body { padding:18px; }
  .pw-body label { display:block; font-size:13px; color:#444; font-weight:bold; margin:12px 0 5px; }
  .pw-body input { width:100%; padding:10px 12px; border:1.5px solid #d5dbe7; border-radius:7px; font-size:14px; outline:none; }
  .pw-body input:focus { border-color:var(--docs); }
  /* C절 보기 토글 — nav 버튼 계열은 어두운 헤더용이라 흰 모달 위에서 대비가 1 이 됩니다.
     명시도 2 로 씁니다 — 뒤쪽 nav 규칙과 클래스 1개끼리는 순서로 져서 무효가 됩니다.
     기존 값만 씁니다: 테두리는 위 입력칸과 같은 값, 글자는 본문 먹색 토큰. 새 색·새 토큰 0.
     판정 20260818_08 §1 */
  .nav-btn.pw-eye { background:#fff; border:1.5px solid #d5dbe7; color:var(--ink); }
  .nav-btn.pw-eye:hover { background:#eef1f6; }
  .pw-note { font-size:12px; color:#777; margin-top:10px; line-height:1.5; }
  .pw-msg { font-size:12px; margin-top:10px; min-height:15px; }
  .pw-msg.err { color:#c0392b; } .pw-msg.ok { color:#2e7d32; }
  .pw-submit { width:100%; margin-top:16px; background:var(--docs); color:#fff; border:none; padding:11px; border-radius:8px; font-size:15px; font-weight:bold; cursor:pointer; }
  .pw-submit:disabled { background:#9aa7bd; cursor:wait; }

  /* CFSPS 일괄 상신 */
  #cfspsBulkPanel { border-top:4px solid #2e7d32; }
  .cfsps-tabs { display:flex; gap:6px; margin:4px 0 12px; border-bottom:2px solid #eef1f6; }
  .cfsps-tab { background:none; border:none; padding:8px 16px; font-size:14px; color:#888; cursor:pointer; border-bottom:3px solid transparent; margin-bottom:-2px; }
  .cfsps-tab.active { color:var(--ink); font-weight:bold; border-bottom-color:var(--docs); }
  #cfspsRows input[type=file] { font-size:11px; max-width:160px; }
  #cfspsMulti { font-size:12px; }

  /* 공지사항 */
  #noticeModal { display:none; position:fixed; inset:0; z-index:1300; background:rgba(15,25,45,.6); padding:6vh 4vw; overflow:auto; }
  #noticeModal.open { display:flex; align-items:flex-start; justify-content:center; }
  #noticePanel { border-top:4px solid #c0392b; }
  #noticeNewBtn { float:right; background:var(--docs); color:#fff; border:none; padding:5px 14px; border-radius:6px; font-size:13px; cursor:pointer; margin-left:8px; }
  #noticeNewBtn:hover { background:#16294a; }
  #noticeRefresh { float:right; font-size:12px; padding:3px 10px; cursor:pointer; }
  .notice-card { border:1px solid #eef1f6; border-left:4px solid #aebcd6; border-radius:8px; padding:11px 14px; margin-bottom:9px; background:#fafbfd; }
  .notice-card.pinned { background:#fff8f6; border-left-color:#c0392b; }
  .notice-top { display:flex; align-items:center; gap:8px; flex-wrap:wrap; cursor:pointer; }
  .notice-top .nt-title { font-size:14px; font-weight:bold; color:var(--ink); }
  .nlv { font-size:11px; padding:1px 8px; border-radius:10px; font-weight:bold; }
  .nlv-일반 { background:#e8edf5; color:#5a6b86; }
  .nlv-중요 { background:#fde3c4; color:#b9560a; }
  .nlv-긴급 { background:#fbd5d1; color:#c0392b; }
  .npin { font-size:12px; color:#c0392b; }
  .notice-meta { font-size:11px; color:#999; margin-left:auto; }
  .notice-body { font-size:13px; color:#333; line-height:1.6; margin-top:8px; white-space:pre-wrap; display:none; }
  .notice-body.open { display:block; }
  .notice-rel { font-size:12px; margin-top:6px; }
  .notice-rel a { color:var(--ink); cursor:pointer; text-decoration:underline; }
  .notice-admin { margin-top:8px; display:flex; gap:6px; }
  .notice-admin button { font-size:11px; padding:3px 9px; border-radius:5px; cursor:pointer; border:1px solid #d5dbe7; background:#fff; }
  .notice-inactive { opacity:.55; }

  /* 권한 위임(개정/권한) */
  .rev-btn { background:var(--docs); color:#fff; border:none; padding:4px 12px; border-radius:6px; font-size:12px; cursor:pointer; }
  .rev-btn:hover { background:#16294a; }
  .greq-btn { background:#fff; color:#b07d00; border:1.5px solid #e8b931; padding:4px 11px; border-radius:6px; font-size:12px; cursor:pointer; white-space:nowrap; }
  .greq-btn:hover { background:#fdf6e3; }
  .grant-badge { font-size:10px; background:#e3efe3; color:#2e7d32; padding:1px 6px; border-radius:8px; white-space:nowrap; margin-left:4px; }
  .deny-note { font-size:11px; color:#c0392b; white-space:nowrap; }
  .req-note { font-size:11px; color:#999; white-space:nowrap; }
  #grantAdminPanel { border-top:4px solid #e8b931; }
  .ga-sub { font-size:13px; color:var(--ink); font-weight:bold; margin:14px 0 6px; }
  .ga-form { display:flex; gap:8px; flex-wrap:wrap; align-items:center; font-size:13px; margin:4px 0 10px; }
  .ga-form select, .ga-form input { padding:7px 9px; border:1.5px solid #d5dbe7; border-radius:7px; font-size:13px; }
  .ga-form button { background:var(--docs); color:#fff; border:none; padding:7px 14px; border-radius:7px; font-size:13px; cursor:pointer; }
  #grantModal { display:none; position:fixed; inset:0; z-index:1300; background:rgba(15,25,45,.6); padding:6vh 4vw; }
  #grantModal.open { display:flex; align-items:flex-start; justify-content:center; }
  /* [DR-080 CR] 공용 사유 입력 모달 */
  #reasonModal { display:none; position:fixed; inset:0; z-index:1400; background:rgba(15,25,45,.6); padding:6vh 4vw; }
  #reasonModal.open { display:flex; align-items:flex-start; justify-content:center; }
  /* V0.4 - 주입 모달 2종 숨김 규칙. 이것이 없어 처음부터 그려졌고 사람이 갇혔습니다.
     값은 위 비밀번호 모달과 같습니다 - 새 색 0. 층 번호만 위로 올립니다(경고가 가려지면 안 됩니다).
     판정 MST2-20260818_19 §4 · 상신 MK-20260818_16 §3-1 */
  #reauthModal { display:none; position:fixed; inset:0; z-index:1400; background:rgba(15,25,45,.6); padding:6vh 4vw; }
  #reauthModal.open { display:flex; align-items:flex-start; justify-content:center; }
  #idleModal { display:none; position:fixed; inset:0; z-index:1500; background:rgba(15,25,45,.6); padding:6vh 4vw; }
  #idleModal.open { display:flex; align-items:flex-start; justify-content:center; }

  /* 인앱 알림 종 */
  .bell-wrap { position:relative; }
  #bell { position:relative; background:transparent; border:none; font-size:19px; cursor:pointer; line-height:1; padding:2px 4px; }
  #bellBadge {
    position:absolute; top:-6px; right:-6px; background:#e8b931; color:var(--ink);
    font-size:11px; font-weight:bold; min-width:17px; height:17px; border-radius:9px;
    padding:0 4px; display:flex; align-items:center; justify-content:center; box-sizing:border-box;
  }
  #bellMenu {
    display:none; position:absolute; right:0; top:34px; width:300px; max-width:86vw;
    max-height:60vh; overflow:auto; background:#fff; color:#222; border-radius:10px;
    box-shadow:0 12px 36px rgba(0,0,0,.28); z-index:1200;
  }
  #bellMenu.open { display:block; }
  .bell-head { font-size:13px; font-weight:bold; color:var(--ink); padding:10px 14px; border-bottom:1px solid #eef1f6; display:flex; justify-content:space-between; align-items:center; }
  #bellReadAll { font-size:11px; font-weight:normal; background:#eef3fb; color:var(--ink); border:1px solid #c3cfe2; border-radius:5px; padding:2px 8px; cursor:pointer; }
  #bellReadAll:hover { background:#dde8f7; }
  .bell-item { display:flex; gap:9px; align-items:flex-start; padding:9px 14px; border-bottom:1px solid #f2f4f8; }
  .bell-item .bi-body { display:flex; gap:9px; align-items:flex-start; flex:1; cursor:pointer; min-width:0; }
  .bell-x { flex-shrink:0; background:none; border:none; color:#bbb; font-size:15px; cursor:pointer; line-height:1; padding:0 2px; }
  .bell-x:hover { color:#c0392b; }
  .bell-item:hover { background:#f5f8fd; }
  .bi-ic { font-size:15px; flex-shrink:0; }
  .bi-l { font-size:13px; color:#222; }
  .bi-s { font-size:11px; color:#888; margin-top:1px; }
  .bell-empty { font-size:13px; color:#aaa; padding:16px 14px; text-align:center; }

  main { max-width:1100px; margin:0 auto; padding:20px 16px 60px; }

  .cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:14px; margin-bottom:20px; }  /* [기록보관소] 카드 4→5개 대응: auto-fit */
  .card {
    background:#fff; border-radius:12px; padding:18px; box-shadow:0 2px 8px rgba(31,56,100,.08);
    border-top:4px solid var(--docs);
  }
  .card .label { font-size:12px; color:#777; margin-bottom:8px; }
  .card .value { font-size:26px; font-weight:bold; color:var(--ink); }
  .card .sub { font-size:11px; color:#999; margin-top:6px; }

  .panel {
    background:#fff; border-radius:12px; padding:20px; box-shadow:0 2px 8px rgba(31,56,100,.08);
    margin-bottom:20px;
  }
  .panel h2 { font-size:15px; color:var(--ink); margin-bottom:14px; }
  .chart-wrap { position:relative; height:260px; }

  .filters { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:14px; }
  .filters input, .filters select {
    padding:9px 12px; border:1.5px solid #d5dbe7; border-radius:8px; font-size:14px; outline:none;
  }
  .filters input { flex:1; min-width:180px; }
  .filters input:focus, .filters select:focus { border-color:var(--docs); }
  .count-info { font-size:12px; color:#888; margin-bottom:8px; }

  .table-wrap { overflow-x:auto; }
  table { width:100%; border-collapse:collapse; font-size:13px; }
  th {
    background:var(--docs); color:#fff; padding:9px 10px; text-align:left;
    position:sticky; top:0; white-space:nowrap;
  }
  td { padding:8px 10px; border-bottom:1px solid #eef1f6; white-space:nowrap; }
  td.title-cell { white-space:normal; min-width:180px; }
  tr:hover td { background:#f5f8fd; }
  /* 표준문서 목록 — 잘림 방지: 고정 레이아웃 + 말줄임 */
  .doc-table { table-layout:fixed; width:100%; }
  .doc-table th, .doc-table td { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; padding:8px 7px; }
  .doc-table td.title-cell { white-space:nowrap; min-width:0; }
  .doc-table .vw-btn, .doc-table .dl-btn, .doc-table .rev-btn, .doc-table .greq-btn,
  .doc-table .rq-btn, .doc-table .wait-btn, .doc-table .cf-btn { padding:3px 7px; font-size:11px; }
  @media (max-width:1000px) { .doc-table { min-width:1130px; } }  /* 좁은 화면은 가로 스크롤로 다운로드 열 접근(개정일 1열 추가분 +90px) */
  .doc-sort .arw { font-size:10px; opacity:.85; margin-left:2px; }
  .date-new { font-size:9px; background:#e8b931; color:var(--ink); font-weight:bold; padding:0 4px; border-radius:6px; margin-left:3px; vertical-align:middle; }
  /* 표준문서 목록 — 제목행(헤더) 고정 + 가로 스크롤 상단 배치 */
  #docPanel .table-wrap { max-height:70vh; overflow:auto; border:1px solid #e3e8f0; border-radius:8px; }
  #docPanel .doc-table thead th { position:sticky; top:0; z-index:3; box-shadow:0 1px 0 #16294a; }
  #docPanel .doc-table tbody tr { cursor:pointer; }
  #docPanel .doc-table tbody tr:hover td { background:#eef3fb; }
  /* 헤더 바로 위(상단)에 항상 보이는 가로 스크롤바 — 아래로 내려가도 옆으로 이동 가능 */
  #docTopScroll { overflow-x:auto; overflow-y:hidden; height:14px; margin-bottom:2px; }
  #docTopScroll::-webkit-scrollbar { height:11px; }
  #docTopScroll::-webkit-scrollbar-thumb { background:#9aa7bd; border-radius:6px; }
  #docTopScroll::-webkit-scrollbar-track { background:#eef1f6; }
  #docTopScrollInner { height:1px; }

  /* 문서 상세 모달 (행 클릭) */
  #docDetailModal { display:none; position:fixed; inset:0; z-index:1060; background:rgba(15,25,45,.6); padding:4vh 3vw; overflow:auto; }
  #docDetailModal.open { display:flex; align-items:flex-start; justify-content:center; }
  .dd-box { background:#fff; border-radius:12px; width:100%; max-width:760px; box-shadow:0 18px 60px rgba(0,0,0,.4); }
  .dd-head { background:var(--docs); color:#fff; padding:13px 18px; border-radius:12px 12px 0 0; display:flex; justify-content:space-between; align-items:center; gap:10px; }
  .dd-head .t { font-size:14px; font-weight:bold; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .dd-head .t small { font-weight:normal; opacity:.85; margin-right:8px; }
  .dd-head button { background:transparent; border:1px solid rgba(255,255,255,.6); color:#fff; border-radius:6px; padding:3px 12px; cursor:pointer; flex-shrink:0; }
  .dd-head button:hover { background:rgba(255,255,255,.15); }
  .dd-body { padding:16px 18px; }
  .dd-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 18px; margin-bottom:14px; }
  .dd-row { display:flex; gap:10px; padding:7px 2px; border-bottom:1px solid #eef1f6; font-size:13px; }
  .dd-row .k { color:#888; flex:0 0 84px; }
  .dd-row .v { color:var(--ink); font-weight:600; word-break:break-all; }
  .dd-actions { display:flex; gap:8px; flex-wrap:wrap; margin:4px 0 14px; }
  .dd-sec { font-size:13px; font-weight:bold; color:var(--ink); margin:12px 0 7px; }
  @media (max-width:620px) { .dd-grid { grid-template-columns:1fr; } }
  .conf-tag { font-size:11px; padding:1px 7px; border-radius:10px; }
  .conf-일반 { background:#e3efe3; color:#2e7d32; }
  .conf-대외비 { background:#fdf0d5; color:#b07d00; }
  .conf-기밀 { background:#fbe2e0; color:#c0392b; }
  .dl-btn {
    background:var(--docs); color:#fff; border:none; padding:4px 12px;
    border-radius:6px; font-size:12px; cursor:pointer;
  }
  .dl-btn:hover { background:#16294a; }
  .dl-btn:disabled { background:#9aa7bd; cursor:wait; }
  .dl-lock { font-size:11px; color:#999; white-space:nowrap; }
  .rq-btn {
    background:#fff; color:#b07d00; border:1.5px solid #e8b931; padding:3px 11px;
    border-radius:6px; font-size:12px; cursor:pointer; white-space:nowrap;
  }
  .rq-btn:hover { background:#fdf6e3; }
  .cf-btn {
    background:#2e7d32; color:#fff; border:none; padding:4px 12px;
    border-radius:6px; font-size:12px; cursor:pointer; white-space:nowrap;
  }
  .cf-btn:hover { background:#246428; }
  .wait-btn {
    background:#eceff4; color:#888; border:1.5px solid #d5dbe7; padding:3px 11px;
    border-radius:6px; font-size:12px; white-space:nowrap; cursor:default;
  }
  .ok-note { font-size:11px; color:#2e7d32; margin-left:6px; white-space:nowrap; }

  /* 대표 승인함 */
  #approvalPanel { border-top:4px solid #e8b931; }
  .ap-row {
    display:flex; align-items:center; justify-content:space-between; gap:10px;
    padding:10px 4px; border-bottom:1px solid #eef1f6; flex-wrap:wrap;
  }
  .ap-info { font-size:13px; line-height:1.5; }
  .ap-info b { color:var(--ink); }
  .ap-info small { color:#888; }
  .ap-actions { display:flex; gap:8px; flex-shrink:0; }
  .ap-ok {
    background:#2e7d32; color:#fff; border:none; padding:6px 16px;
    border-radius:6px; font-size:13px; cursor:pointer;
  }
  .ap-no {
    background:#fff; color:#c0392b; border:1.5px solid #c0392b; padding:6px 16px;
    border-radius:6px; font-size:13px; cursor:pointer;
  }
  .ap-empty { font-size:13px; color:#888; padding:6px 0; }
  .vw-btn {
    background:#fff; color:var(--ink); border:1.5px solid var(--docs); padding:3px 11px;
    border-radius:6px; font-size:12px; cursor:pointer; white-space:nowrap;
  }
  .vw-btn:hover { background:#eef3fb; }
  .vw-btn:disabled { opacity:.5; cursor:wait; }

  /* PDF 열람 모달 */
  #viewModal {
    display:none; position:fixed; inset:0; z-index:1000;
    background:rgba(15,25,45,.65); padding:2vh 2vw;
  }
  #viewModal.open { display:flex; }
  .modal-box {
    background:#fff; border-radius:12px; width:100%; height:100%;
    display:flex; flex-direction:column; overflow:hidden;
    box-shadow:0 18px 60px rgba(0,0,0,.4);
  }
  .modal-head {
    background:var(--docs); color:#fff; padding:10px 16px;
    display:flex; align-items:center; justify-content:space-between; gap:10px;
  }
  .modal-head .t { font-size:14px; font-weight:bold; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .modal-head .t small { font-weight:normal; opacity:.8; margin-right:8px; }
  #modalClose {
    background:transparent; border:1px solid rgba(255,255,255,.6); color:#fff;
    border-radius:6px; padding:4px 14px; font-size:14px; cursor:pointer; flex-shrink:0;
  }
  #modalClose:hover { background:rgba(255,255,255,.15); }
  #modalFrame { flex:1; border:none; width:100%; background:#525659; }

  .notice { font-size:12px; color:#888; margin-top:10px; line-height:1.6; }

  footer { text-align:center; padding:20px; }
  footer a {
    display:inline-block; background:#fff; color:var(--ink); border:1.5px solid var(--docs);
    padding:10px 22px; border-radius:8px; text-decoration:none; font-size:14px; font-weight:bold;
  }
  footer a:hover { background:var(--docs); color:#fff; }
  footer p { font-size:11px; color:#aaa; margin-top:10px; }

  #loading { text-align:center; padding:60px 0; color:var(--ink); font-size:15px; }

  /* 결재함 */
  #apvPanel { border-top:4px solid #2d4f8a; }
  #newDocBtn {
    float:right; background:var(--docs); color:#fff; border:none; padding:5px 14px;
    border-radius:6px; font-size:13px; cursor:pointer; margin-left:8px;
  }
  #newDocBtn:hover { background:#16294a; }
  #apvRefresh { float:right; font-size:12px; padding:3px 10px; cursor:pointer; }
  .apv-sub { font-size:13px; color:var(--ink); font-weight:bold; margin:14px 0 6px; }
  .apv-row {
    display:flex; align-items:center; justify-content:space-between; gap:10px;
    padding:9px 4px; border-bottom:1px solid #eef1f6; flex-wrap:wrap;
  }
  .apv-info { font-size:13px; line-height:1.5; flex:1; min-width:200px; }
  .apv-info b { color:var(--ink); }
  .apv-info small { color:#888; }
  .apv-actions { display:flex; gap:6px; flex-shrink:0; }
  .apv-ok { background:#2e7d32; color:#fff; border:none; padding:5px 13px; border-radius:6px; font-size:12px; cursor:pointer; }
  .apv-no { background:#fff; color:#c0392b; border:1.5px solid #c0392b; padding:5px 13px; border-radius:6px; font-size:12px; cursor:pointer; }
  .apv-empty { font-size:13px; color:#aaa; padding:4px 0; }
  .st-tag { font-size:11px; padding:1px 8px; border-radius:10px; white-space:nowrap; }
  .st-작성중 { background:#eceff4; color:#666; }
  .st-검토중 { background:#e3eefc; color:var(--ink); }
  .st-승인대기 { background:#fdf0d5; color:#b07d00; }
  .st-승인완료 { background:#e3efe3; color:#2e7d32; }
  /* ★글자만 어둡게(지시 20260816_13 §1) — 배경 무변경이라 문서·제정 화면의 「반려」도 함께 좋아진다.
     대비 4.4172(미달 −0.0828) → ★4.8083(여유 +0.3083). 값역이 하나뿐인 클래스라 분리 불요. */
  .st-반려 { background:#fbe2e0; color:#b63628; }
  .st-취소 { background:#e3e6ea; color:#777; }
  .st-보류 { background:#fdecc8; color:#9a6700; }
  .apv-hold { background:#fff; color:#9a6700; border:1.5px solid #e8b931; padding:5px 13px; border-radius:6px; font-size:12px; cursor:pointer; }
  .apv-arch { background:#eceff4; color:#555; border:1px solid #d5dbe7; padding:5px 13px; border-radius:6px; font-size:12px; cursor:pointer; }
  .apv-view { background:#fff; color:var(--ink); border:1.5px solid var(--docs); padding:5px 11px; border-radius:6px; font-size:12px; cursor:pointer; white-space:nowrap; }
  .apv-view:hover { background:#eef3fb; }
  #apvClear, #apvArchiveBtn, #logBtn { font-size:12px; padding:3px 10px; cursor:pointer; margin-left:6px; }
  /* 보관함·이력 공용 큰 모달 */
  #archiveModal, #logModal { display:none; position:fixed; inset:0; z-index:1100; background:rgba(15,25,45,.6); padding:4vh 3vw; overflow:auto; }
  #archiveModal.open, #logModal.open { display:flex; align-items:flex-start; justify-content:center; }
  #tempModal { display:none; position:fixed; inset:0; z-index:1100; background:rgba(15,25,45,.6); padding:4vh 3vw; overflow:auto; }
  #tempModal.open { display:flex; align-items:flex-start; justify-content:center; }
  .big-box { background:#fff; border-radius:12px; width:100%; max-width:920px; box-shadow:0 18px 60px rgba(0,0,0,.4); }
  .big-head { background:var(--docs); color:#fff; padding:13px 18px; border-radius:12px 12px 0 0; display:flex; justify-content:space-between; align-items:center; }
  .big-head h3 { font-size:15px; }
  .big-head button { background:transparent; border:1px solid rgba(255,255,255,.6); color:#fff; border-radius:6px; padding:3px 12px; cursor:pointer; }
  .big-body { padding:16px 18px; }
  .log-filters { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:12px; }
  .log-filters input, .log-filters select { padding:7px 9px; border:1.5px solid #d5dbe7; border-radius:7px; font-size:13px; }
  .log-table { width:100%; border-collapse:collapse; font-size:12px; }
  .log-table th { background:#2d4f8a; color:#fff; padding:7px 8px; text-align:left; white-space:nowrap; position:sticky; top:0; }
  .log-table td { padding:6px 8px; border-bottom:1px solid #eef1f6; white-space:nowrap; }
  .apv-status-table { width:100%; border-collapse:collapse; font-size:12px; margin-top:4px; }
  .apv-status-table th { background:#2d4f8a; color:#fff; padding:7px 8px; text-align:left; white-space:nowrap; }
  .apv-status-table td { padding:6px 8px; border-bottom:1px solid #eef1f6; }

  /* 새 문서 작성 폼 모달 */
  #formModal { display:none; position:fixed; inset:0; z-index:1100; background:rgba(15,25,45,.6); padding:3vh 3vw; overflow:auto; }
  #formModal.open { display:flex; align-items:flex-start; justify-content:center; }
  .form-box { background:#fff; border-radius:12px; width:100%; max-width:560px; padding:0 0 20px; box-shadow:0 18px 60px rgba(0,0,0,.4); }
  .form-head { background:var(--docs); color:#fff; padding:14px 20px; border-radius:12px 12px 0 0; display:flex; justify-content:space-between; align-items:center; }
  .form-head h3 { font-size:16px; }
  .form-head button { background:transparent; border:1px solid rgba(255,255,255,.6); color:#fff; border-radius:6px; padding:3px 12px; cursor:pointer; }
  .form-body { padding:18px 20px; }
  .form-body label { display:block; font-size:13px; color:#444; font-weight:bold; margin:12px 0 5px; }
  .form-body input, .form-body select, .form-body textarea {
    width:100%; padding:9px 11px; border:1.5px solid #d5dbe7; border-radius:7px; font-size:14px; outline:none; font-family:inherit;
  }
  .form-body input:focus, .form-body select:focus, .form-body textarea:focus { border-color:var(--docs); }
  .form-body textarea { min-height:60px; resize:vertical; }
  .radio-row { display:flex; gap:18px; margin-top:4px; }
  .radio-row label { display:flex; align-items:center; gap:5px; font-weight:normal; margin:0; cursor:pointer; }
  .radio-row input { width:auto; }
  .num-row { display:flex; gap:8px; }
  .num-row input { flex:1; }
  .num-row button { flex-shrink:0; background:#eef3fb; color:var(--ink); border:1.5px solid var(--docs); border-radius:7px; padding:0 12px; font-size:12px; cursor:pointer; }
  .form-msg { font-size:12px; margin-top:10px; min-height:16px; }
  .form-msg.err { color:#c0392b; }
  .form-msg.ok { color:#2e7d32; }
  .form-submit { width:100%; margin-top:18px; background:var(--docs); color:#fff; border:none; padding:12px; border-radius:8px; font-size:15px; font-weight:bold; cursor:pointer; }
  .form-submit:disabled { background:#9aa7bd; cursor:wait; }
  .grid2 { display:grid; grid-template-columns:1fr 1fr; gap:0 12px; }

  /* 발번 도우미 */
  .num-note { font-size:12px; color:#666; background:#f0f3f9; border-radius:7px; padding:9px 11px; line-height:1.5; margin-top:4px; }
  .num-warn { font-size:12px; margin-top:5px; min-height:15px; }
  .num-warn.err { color:#c0392b; font-weight:bold; }
  .num-warn.ok { color:#2e7d32; }
  .prefix-hint { font-size:12px; color:var(--ink); margin-top:6px; }
  .prefix-hint b { font-family:monospace; font-size:13px; }
  .used-list { margin-top:10px; max-height:160px; overflow:auto; border:1px solid #e3e8f0; border-radius:7px; padding:8px 10px; background:#fafbfd; }
  .used-h { font-size:12px; color:var(--ink); font-weight:bold; margin-bottom:5px; }
  .used-row { font-size:12px; padding:2px 0; border-bottom:1px solid #f0f2f7; }
  .used-row b { font-family:monospace; color:var(--ink); }
  .used-empty { font-size:12px; color:#888; }

  /* 버전·개정이력 */
  .ver-link { background:none; border:none; color:var(--ink); font-size:13px; cursor:pointer; text-decoration:underline; padding:0; font-family:inherit; }
  .ver-link:hover { color:#16294a; }
  .hist-btn { background:#fff; color:var(--ink); border:1px solid #c3cfe2; border-radius:5px; font-size:11px; padding:2px 7px; cursor:pointer; margin-left:5px; white-space:nowrap; }
  .hist-btn:hover { background:#eef3fb; }

  #histModal { display:none; position:fixed; inset:0; z-index:1050; background:rgba(15,25,45,.6); padding:4vh 3vw; overflow:auto; }
  #histModal.open { display:flex; align-items:flex-start; justify-content:center; }
  .hist-box { background:#fff; border-radius:12px; width:100%; max-width:720px; box-shadow:0 18px 60px rgba(0,0,0,.4); }
  .hist-head { background:var(--docs); color:#fff; padding:13px 18px; border-radius:12px 12px 0 0; display:flex; justify-content:space-between; align-items:center; gap:10px; }
  .hist-head .t { font-size:14px; font-weight:bold; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .hist-head .t small { font-weight:normal; opacity:.85; margin-right:8px; }
  .hist-head button { background:transparent; border:1px solid rgba(255,255,255,.6); color:#fff; border-radius:6px; padding:3px 12px; cursor:pointer; flex-shrink:0; }
  .hist-head button:hover { background:rgba(255,255,255,.15); }
  .hist-body { padding:16px 18px; }
  .hist-table { width:100%; border-collapse:collapse; font-size:13px; }
  .hist-table th { background:#f0f3f9; color:var(--ink); padding:8px 9px; text-align:left; white-space:nowrap; border-bottom:2px solid #d5dbe7; }
  .hist-table td { padding:8px 9px; border-bottom:1px solid #eef1f6; vertical-align:top; white-space:nowrap; }
  .hist-table td.chg { white-space:normal; min-width:160px; }
  .hist-empty { color:#888; font-size:13px; padding:10px 0; }

  @media (max-width:768px) {
    .cards { grid-template-columns:repeat(2,1fr); }
    header h1 { font-size:15px; }
    .card .value { font-size:21px; }
  }
  /* 대시보드 카드 클릭 → 관련 문서/뷰 이동 */
  .cards .card { cursor:pointer; transition:box-shadow .12s, transform .12s; }
  .cards .card:hover { box-shadow:0 4px 14px rgba(31,56,100,.18); transform:translateY(-1px); }
  .cards .card:active { transform:translateY(0); }
  .card-clear { margin-left:8px; background:var(--docs); color:#fff; border:none; border-radius:12px; font-size:11px; padding:2px 9px; cursor:pointer; vertical-align:middle; }
  .card-clear:hover { background:#16294a; }

  /* ══════════ [기록보관소·배포] 신설 화면 스타일 (화면설계 V0.1) ══════════ */
  /* 등급 배지 P1~P4 (색+텍스트 병행 — 색각이상 대응) */
  .plv { font-size:11px; padding:1px 7px; border-radius:10px; font-weight:bold; white-space:nowrap; }
  .plv-1 { background:#e8edf5; color:#5a6b86; }
  .plv-2 { background:#e3efe3; color:#2e7d32; }
  .plv-3 { background:#fde3c4; color:#b9560a; }
  .plv-4 { background:#fbd5d1; color:#c0392b; }
  /* 기록 상태/배포 상태 배지 */
  .rst { font-size:11px; padding:1px 8px; border-radius:10px; white-space:nowrap; }
  .rst-유효 { background:#e3efe3; color:#2e7d32; }
  .rst-대체됨 { background:#e3eefc; color:var(--ink); }
  .rst-폐기 { background:#e3e6ea; color:#777; }
  .site-badge { font-size:10px; background:#eef1f6; color:#5a6b86; padding:1px 7px; border-radius:8px; white-space:nowrap; }
  .rec-lock { font-size:11px; color:#999; white-space:nowrap; }
  .rec-masked { color:#999; font-style:italic; }
  tr.rec-void td { background:#f6f7f9; color:#999; }

  /* 기록보관소 2단 레이아웃 */
  #recordPanel { border-top:4px solid var(--recs); }
  .rec-layout { display:flex; gap:16px; align-items:flex-start; }
  #recTree { flex:0 0 260px; max-height:60vh; overflow:auto; border:1px solid #e3e8f0; border-radius:8px; padding:8px; background:#fafbfd; font-size:13px; }
  #recListWrap { flex:1; min-width:0; }
  .rt-node { padding:4px 7px; border-radius:6px; cursor:pointer; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  .rt-node:hover { background:#eef3fb; }
  .rt-node[aria-selected="true"] { background:#dbe7f7; font-weight:bold; }
  .rt-dept { font-weight:bold; color:var(--ink); margin-top:6px; }
  .rt-folder { margin-left:14px; color:#3a4a67; }
  .rt-cnt { color:#8894a8; font-weight:normal; font-size:11px; }
  .rec-filters { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:10px; }
  .rec-filters input, .rec-filters select { padding:8px 10px; border:1.5px solid #d5dbe7; border-radius:8px; font-size:13px; outline:none; }
  .rec-filters input:focus, .rec-filters select:focus { border-color:var(--recs); }
  .rec-toolbar { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:8px; }
  .rec-toolbar label { font-size:12px; color:#555; display:flex; align-items:center; gap:5px; cursor:pointer; }
  .rec-btn { background:var(--recs); color:#fff; border:none; padding:6px 13px; border-radius:7px; font-size:13px; cursor:pointer; }
  .rec-btn:hover { background:var(--recs-d); }
  .rec-btn.ghost { background:#fff; color:var(--ink); border:1.5px solid var(--recs); }
  .rec-btn.ghost:hover { background:#eef3fb; }
  .rec-detail-btn { background:#fff; color:var(--ink); border:1.5px solid var(--recs); padding:3px 11px; border-radius:6px; font-size:12px; cursor:pointer; white-space:nowrap; }
  .rec-detail-btn:hover { background:#eef3fb; }
  .rec-empty { font-size:13px; color:#888; padding:16px 4px; }
  #recTable th { position:sticky; top:0; }
  #recTableWrap { max-height:56vh; overflow:auto; border:1px solid #e3e8f0; border-radius:8px; }

  /* 배포 패널 공통 */
  #distApprovalPanel { border-top:4px solid #b9560a; }
  #distMinePanel { border-top:4px solid #2d4f8a; }
  #distLedgerPanel { border-top:4px solid #5a6b86; }
  .dist-sub { font-size:13px; color:var(--ink); font-weight:bold; margin:14px 0 6px; }
  .dist-row { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; padding:10px 4px; border-bottom:1px solid #eef1f6; flex-wrap:wrap; }
  .dist-info { font-size:13px; line-height:1.55; flex:1; min-width:220px; }
  .dist-info b { color:var(--ink); }
  .dist-info small { color:#888; }
  .dist-actions { display:flex; gap:6px; flex-shrink:0; flex-wrap:wrap; }
  .dist-ok { background:#2e7d32; color:#fff; border:none; padding:5px 13px; border-radius:6px; font-size:12px; cursor:pointer; }
  .dist-ok:disabled { background:#9aa7bd; cursor:not-allowed; }
  .dist-no { background:#fff; color:#c0392b; border:1.5px solid #c0392b; padding:5px 13px; border-radius:6px; font-size:12px; cursor:pointer; }
  .dist-view { background:#fff; color:var(--ink); border:1.5px solid var(--docs); padding:5px 11px; border-radius:6px; font-size:12px; cursor:pointer; white-space:nowrap; }
  .dist-empty { font-size:13px; color:#aaa; padding:6px 0; }
  .dist-check { font-size:11px; color:#555; margin-top:4px; line-height:1.5; }
  /* 배포 상태 배지 */
  .dstat { font-size:11px; padding:1px 8px; border-radius:10px; white-space:nowrap; font-weight:bold; }
  .dstat-gray { background:#eceff4; color:#666; }
  .dstat-blue { background:#e3eefc; color:var(--ink); }
  .dstat-green { background:#e3efe3; color:#2e7d32; }
  .dstat-green2 { background:#c8e6c9; color:#1b5e20; }
  .dstat-orange { background:#fdecc8; color:#9a6700; }
  .dstat-red { background:#fbe2e0; color:#c0392b; }
  .warn-banner { background:#fdf0d5; border:1px solid #e8b931; border-radius:8px; padding:9px 12px; font-size:12px; color:#8a5a00; line-height:1.5; margin:8px 0; }
  .warn-banner.crit { background:#fbe2e0; border-color:#c0392b; color:#a02419; }
  .info-banner { background:#eef3fb; border:1px solid #c3cfe2; border-radius:8px; padding:9px 12px; font-size:12px; color:var(--ink); line-height:1.5; margin:8px 0; }

  /* 신설 폼/상세 모달 (기존 form-box·dd-box 패턴 재사용) */
  #recDetailModal, #recRegModal, #recSupModal, #distReqModal, #distDetailModal {
    display:none; position:fixed; inset:0; z-index:1200; background:rgba(15,25,45,.6); padding:4vh 3vw; overflow:auto;
  }
  #recDetailModal.open, #recRegModal.open, #recSupModal.open, #distReqModal.open, #distDetailModal.open {
    display:flex; align-items:flex-start; justify-content:center;
  }
  .rec-inline-confirm { background:#fff8f6; border:1px solid #e8b931; border-radius:8px; padding:10px 12px; margin-top:10px; font-size:13px; color:#8a5a00; }
  .chip-row { display:flex; gap:6px; flex-wrap:wrap; margin:6px 0; }
  .preset-chip { font-size:12px; background:#eef3fb; color:var(--ink); border:1px solid #c3cfe2; border-radius:14px; padding:3px 11px; cursor:pointer; }
  .preset-chip.on { background:var(--docs); color:#fff; }

  @media (max-width:900px) {
    .rec-layout { flex-direction:column; }
    #recTree { flex:0 0 auto; width:100%; max-height:none; }
  }
  @media (max-width:768px) {
    .rec-btn, .dist-ok, .dist-no, .dist-view, .rec-detail-btn { padding:9px 14px; }
  }

  /* ══════════ [기록보관소 v2] 대문·SVG 아이콘·12열 표준목록·부서추가 ══════════ */
  /* SVG 단색 아이콘 — 기록보관소 청록 계열 통일 (이모지 대체) */
  .rec-ico { width:16px; height:16px; vertical-align:-3px; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; flex-shrink:0; }
  h2 .rec-ico, h3 .rec-ico { width:18px; height:18px; vertical-align:-4px; margin-right:6px; color:#1c5c4f; }
  .rec-btn .rec-ico, .rec-detail-btn .rec-ico, .dist-ok .rec-ico, .dist-no .rec-ico, .dist-view .rec-ico, .dl-btn .rec-ico, .rq-btn .rec-ico, .rev-btn .rec-ico { width:13px; height:13px; vertical-align:-2px; margin-right:3px; }
  .rec-ico.warn { color:#b9560a; } .rec-ico.crit { color:#c0392b; } .rec-ico.lock { color:#999; }

  /* 기록보관소 독립 대문 (청록) */
  #recGatePanel { border-top:4px solid #1c5c4f; }
  .rec-hero { background:linear-gradient(135deg,#1c5c4f,#154438); color:#fff; border-radius:12px; padding:20px 22px; margin-bottom:16px; }
  .rec-hero h3 { font-size:19px; margin-bottom:6px; display:flex; align-items:center; gap:8px; }
  .rec-hero h3 .rec-ico { color:#fff; width:22px; height:22px; }
  .rec-hero p { font-size:13px; opacity:.92; line-height:1.6; }
  .rec-tiles { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:12px; }
  .rec-tile { background:#fff; border:1px solid #e3e8f0; border-left:5px solid #1c5c4f; border-radius:10px; padding:14px; cursor:pointer; text-align:left; font:inherit; }
  .rec-tile:hover { box-shadow:0 4px 14px rgba(28,92,79,.18); }
  .rec-tile:disabled, .rec-tile.disabled { opacity:.5; cursor:not-allowed; border-left-color:#bbb; }
  .rec-tile .tt { font-size:14px; font-weight:bold; color:var(--ink); margin:2px 0 3px; display:flex; align-items:center; gap:6px; }
  .rec-tile .tt .rec-ico { color:#1c5c4f; }
  .rec-tile .td { font-size:12px; color:#777; line-height:1.5; }
  .rec-tile .tlock { font-size:11px; color:#c0392b; margin-top:5px; }

  /* 12열 표준목록 — 기존 문서목록 표준 계승 + 상·하단 스크롤바 + 식별자 2열 고정 */
  .rec-xscroll { overflow-x:auto; overflow-y:hidden; height:14px; }
  .rec-xscroll::-webkit-scrollbar { height:11px; }
  .rec-xscroll::-webkit-scrollbar-thumb { background:#9aa7bd; border-radius:6px; }
  .rec-xscroll::-webkit-scrollbar-track { background:#eef1f6; }
  .rec-xscroll-inner { height:1px; }
  #recTableWrap2 { overflow:auto; max-height:56vh; border:1px solid #e3e8f0; border-radius:8px; }
  table.rec-std { width:100%; border-collapse:collapse; font-size:13px; table-layout:fixed; min-width:1120px; }
  /* ★기록 축으로 교체(B절 ① · 판정 20260816_18 §1) — rec- 접두인데 문서 파랑이었다 */
  table.rec-std th { background:var(--recs); color:#fff; padding:9px 8px; text-align:left; white-space:nowrap; position:sticky; top:0; z-index:3; box-shadow:0 1px 0 #16294a; overflow:hidden; text-overflow:ellipsis; }
  table.rec-std td { padding:8px 8px; border-bottom:1px solid #eef1f6; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
  table.rec-std tbody tr:hover td { background:#eef3fb; }
  table.rec-std th.stick, table.rec-std td.stick { position:sticky; background:#fff; z-index:2; }
  table.rec-std th.stick { background:var(--recs); z-index:4; }
  table.rec-std .c1 { left:0; }
  table.rec-std tr.rec-void td { background:#f6f7f9; color:#999; }

  /* 부서·관리함 추가 (관리자) */
  #recDeptPanel { border-top:4px solid #1c5c4f; }
  .rec-sec { font-size:13px; font-weight:bold; color:var(--ink); margin:14px 0 7px; }
  .rec-form-grid { display:grid; grid-template-columns:1fr 1fr; gap:0 14px; }
  #recDeptTree { border:1px solid #e3e8f0; border-radius:8px; padding:10px; background:#fafbfd; font-size:13px; max-height:44vh; overflow:auto; }

  @media (max-width:480px) {
    table.rec-std { min-width:760px; }
    .rec-form-grid { grid-template-columns:1fr; }
    .rec-tiles { grid-template-columns:1fr; }
  }

/* ═══════ [3타일 분리 v2] 상호이동 헤더바 · 대문 · 제정(자주) — 신규 ═══════ */
:root { --docs:#4578BC; --docs-d:#233E61; --recs:#1c5c4f; --recs-d:#154438; --est:#7a2e5e; --est-d:#5c2247; --gate:#26324a; }
/* ★색 회차 §A·B (판정 20260816_05 §1 · 20260816_06 §2·§5) — 신설 토큰 10개
   --ink 먹색: 파랑을 「글자색」으로 쓰던 47개소 + PDF 워터마크 1개소가 이 토큰을 본다.
   나머지 9개는 .rec-write-* 가 쓰던 리터럴을 토큰으로 올린 것(중성색·기록 연녹 틴트). */
/* ★단계 표시기 중성 토큰(A-2 · 판정 20260816_15 §1) — ★값은 현행 그대로 옮긴 것이다.
   establish 화면 색이 바뀌면 안 되므로(지시 §C-7) 값을 손대지 않았다.
   --step-idle 은 아직 자주 계열 tint 다 — 축 중립 값 판정은 별건(회신 §확인하지 못한 것). */
:root { --step-idle:#e6e0ec; --step-arrow:#c3b0bf; }
:root { --ink:#2A2824; --ink-soft:#4a5568; --surface:#fff; --bg-soft:#f4f6fa;
        --line:#dde3ee; --line-2:#e6ebf2; --field:#d5dbe7; --dash:#cfd8e3;
        --recs-tint:#f2f8f6; --recs-line:#cfe0da; }
header.edms-nav { color:#fff; padding:12px 18px; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px; }
header.edms-nav.docs { background:var(--docs); } header.edms-nav.recs { background:var(--recs); } header.edms-nav.est { background:var(--est); } header.edms-nav.gate { background:var(--gate); }
.edms-nav .nav-left { display:flex; align-items:center; gap:10px; min-width:0; }
.edms-nav .brand { font-size:12px; opacity:.75; }
.edms-nav h1 { font-size:17px; display:flex; align-items:center; gap:8px; }
.edms-nav h1 .ico { width:20px; height:20px; }
.edms-nav .nav-right { display:flex; align-items:center; gap:8px; font-size:13px; flex-wrap:wrap; }
.nav-btn { background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.55); color:#fff; padding:5px 12px; border-radius:7px; cursor:pointer; font-size:12px; display:inline-flex; align-items:center; gap:5px; text-decoration:none; }
.nav-btn:hover { background:rgba(255,255,255,.24); }
.nav-btn .ico { width:14px; height:14px; }
.nav-btn.sw-docs { background:var(--docs); border-color:#3a5da0; font-weight:bold; }
/* ★577행 — 배경은 토큰인데 테두리만 폐기색이었다(통지 20260816_12 §3). 같은 축 어두운 끝으로 */
.nav-btn.sw-recs { background:var(--recs); border-color:var(--recs-d); font-weight:bold; }
.nav-btn.sw-est { background:var(--est); border-color:#a24d86; font-weight:bold; }
.ico { width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:1.9; stroke-linecap:round; stroke-linejoin:round; }
.role-badge.author { background:#e3c2dd; color:#5c2247; }

/* 대문 */
.gate-hero { background:linear-gradient(135deg,#26324a,#1a2334); color:#fff; border-radius:14px; padding:26px 24px; margin-bottom:20px; text-align:center; }
.gate-hero .top { font-size:13px; letter-spacing:2px; opacity:.8; }
.gate-hero h1 { font-size:28px; margin:6px 0 8px; }
.gate-hero p { font-size:13px; opacity:.9; line-height:1.6; }
.gate-tiles { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.gate-tile { border-radius:14px; padding:24px 20px; color:#fff; cursor:pointer; border:none; text-align:left; font:inherit; display:block; text-decoration:none; box-shadow:0 4px 16px rgba(31,56,100,.12); position:relative; }
.gate-tile.docs { background:linear-gradient(135deg,var(--docs),var(--docs-d)); }
.gate-tile.recs { background:linear-gradient(135deg,#1c5c4f,#154438); }
.gate-tile.est { background:linear-gradient(135deg,#7a2e5e,#5c2247); }
/* ★프로젝트관리 — 노랑 (판정 MST2-20260831-003 · 부대표 확정 2026-08-31)
   ★CI 화면표준 V1.1 이 정본이다. 프로젝트관리 = #E2AD33 노랑 + #2A2824 먹색.
   ★대문 타일과 안쪽 머리 띠가 같은 색이어야 한다 — X0(pm-entry.html)가 이미 노랑이다.
   ★.est 를 고치지 않고 ★새 갈래를 더한다 — .gate-tile.est 는 docs-gate.html:55
     (문서양식 제정 타일)도 쓴다. 그 규칙을 고치면 그 타일까지 노랑이 된다.
   ★노랑 위에는 먹색만 쓴다 — 흰 글자는 2.05:1 로 읽히지 않는다(SHALL NOT). */
.gate-tile.prj { background:linear-gradient(135deg,#E2AD33,#C9932A); color:#2A2824; }
.gate-tile.prj .t-title, .gate-tile.prj .t-desc,
.gate-tile.prj .t-go,    .gate-tile.prj .t-lock { color:#2A2824; }
.gate-tile.prj .t-lock { background:rgba(42,40,36,.18); }
.gate-tile:hover { transform:translateY(-2px); box-shadow:0 8px 24px rgba(31,56,100,.22); }
.gate-tile.locked { opacity:.62; cursor:not-allowed; } .gate-tile.locked:hover { transform:none; }
.gate-tile .t-ico { width:36px; height:36px; }
.gate-tile .t-title { font-size:19px; font-weight:bold; margin:12px 0 6px; }
.gate-tile .t-desc { font-size:12.5px; opacity:.92; line-height:1.55; }
.gate-tile .t-go { font-size:12px; margin-top:14px; opacity:.9; display:inline-flex; align-items:center; gap:5px; }
.gate-tile .t-lock { position:absolute; top:16px; right:16px; font-size:11px; background:rgba(0,0,0,.28); border-radius:12px; padding:3px 10px; display:inline-flex; align-items:center; gap:5px; }
.gate-info { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:14px; margin-top:20px; }
.gate-card { background:#fff; border-radius:12px; padding:16px; box-shadow:0 2px 8px rgba(31,56,100,.08); }
.gate-card .label { font-size:12px; color:#777; margin-bottom:6px; } .gate-card .value { font-size:22px; font-weight:bold; color:#26324a; }
.gate-card.docs { border-top:4px solid var(--docs); } .gate-card.recs { border-top:4px solid var(--recs); } .gate-card.est { border-top:4px solid var(--est); }
.mk-note { font-size:11px; color:#8a5a00; background:#fdf6e3; border:1px solid #e8d59a; border-radius:7px; padding:6px 10px; margin-bottom:14px; line-height:1.5; }
.crumbs { font-size:12px; color:#8894a8; margin-bottom:12px; } .crumbs a { color:#26324a; text-decoration:none; } .crumbs b { color:#26324a; } .crumbs .sep { margin:0 6px; }

/* 제정 시스템 — 자주 · 스텝퍼 · 상태 배지 */
#estPanel, .panel.est { border-top:4px solid var(--est); }
/* ★기록 축 패널 상단선(A-3 ② · 판정 20260816_16 §2) — .panel.est 와 같은 꼴, 색만 기록 축 */
.panel.recs { border-top:4px solid var(--recs); }
/* ★기록 상태칩 신설(A-3 ① · M-009 값역) — 작성중·검토중·반려는 틀에 이미 있고 승인·보관만 신설.
   ★문서 결재 값역의 .st-승인완료 를 기록 「승인」에 쓰지 않는다(SHALL NOT) — 값역이 다르다.
   대비 실측: 승인 6.94:1 · 보관 6.53:1 (11px 일반 텍스트 · AA 4.5 통과) */
.st-승인 { background:#eaf4f0; color:var(--recs); }
.st-보관 { background:#eceff4; color:var(--ink-soft); }
.st { font-size:10px; padding:1px 7px; border-radius:8px; font-weight:bold; white-space:nowrap; }
.st-초안 { background:#e3f2fd; color:#0d47a1; } .st-검토중 { background:#fffde7; color:#b28704; } .st-승인대기 { background:#fff3e0; color:#bf360c; } .st-등록완료 { background:#e8f5e9; color:#1b5e20; } .st-폐기 { background:#eceff1; color:#607d8b; }
/* ★기록 축 「검토중」 분리(지시 20260816_14 §1 · 판정 20260816_21 §3 승인) — ★위 두 줄은 무접촉.
   기록 화면의 칩은 세 자리에 있고, ①만 표 안이라 표 셀렉터 하나로는 ②③이 안 덮인다(실측).
     ① table.rec-std#mineTbl 안   ② #flowHead   ③ #flowStep(단계 표시기로 칩을 재사용한 자리)
   ②③이 #panelFlow 안이라 ★화면 마크업을 고치지 않고 id 로 잡는다.
   대비 6.3380(여유 +1.8380) · establish·docs·index·gate·login 무영향 ·
   records.html 은 table.rec-std 를 쓰지만 .st-* 칩을 쓰지 않아 적용 대상 0. */
table.rec-std .st-검토중,
#panelFlow    .st-검토중 { background:#dcebe6; color:var(--recs); }
.stepper { display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin:10px 0 14px; }
.step { display:flex; align-items:center; gap:6px; } .step .dot { width:26px; height:26px; border-radius:50%; background:var(--step-idle); color:var(--ink-soft); display:flex; align-items:center; justify-content:center; font-size:12px; font-weight:bold; }
.step.done .dot { background:#2e7d32; color:#fff; }   /* ★「완료」는 축과 무관한 뜻 — 유지(지시 A-2) */
.step .lbl { font-size:12px; color:#555; } .step-arrow .ico { width:16px; height:16px; color:var(--step-arrow); }
/* ★축 분기 — 종전에는 .stepper 가 문서제개정(--est)에 하드 결합돼 있었다(판정 20260816_15 §1) */
.stepper.est  .step .dot { color:var(--est); }
.stepper.est  .step.on .dot { background:var(--est);  color:#fff; } .stepper.est  .step.on .lbl { color:var(--est);  font-weight:bold; }
.stepper.docs .step.on .dot { background:var(--docs); color:#fff; } .stepper.docs .step.on .lbl { color:var(--docs); font-weight:bold; }
.stepper.recs .step.on .dot { background:var(--recs); color:#fff; } .stepper.recs .step.on .lbl { color:var(--recs); font-weight:bold; }
.est-actions { display:flex; gap:8px; flex-wrap:wrap; margin:6px 0 14px; }
.est-btn { border:none; border-radius:7px; padding:7px 13px; font-size:13px; cursor:pointer; display:inline-flex; align-items:center; gap:5px; }
.est-btn.primary { background:var(--est); color:#fff; } .est-btn.ghost { background:#fff; border:1.5px solid #d9c6d2; color:#5c2247; } .est-btn.temp { background:#8a5a2b; color:#fff; } .est-btn .ico { width:13px; height:13px; }
.est-lock { font-size:11px; color:#999; display:inline-flex; align-items:center; gap:4px; }
.form-preview { border:1px solid #e0d3db; border-radius:8px; background:#fdfbfd; padding:14px; font-size:12px; color:#5c2247; line-height:1.7; }
.form-preview .doc-title { font-size:14px; font-weight:bold; text-align:center; margin-bottom:8px; color:#3a1a2f; }
.tag-fr { font-size:10px; background:#f0e0eb; color:#7a2e5e; border-radius:8px; padding:1px 7px; font-weight:bold; }
.est-empty { text-align:center; padding:30px; border:1px dashed #cdd6e5; border-radius:10px; color:#7a869c; background:#fafbfd; }
.est-grid { display:grid; grid-template-columns:1fr 1fr; gap:0 14px; }
.est-grid label { display:block; font-size:13px; font-weight:bold; color:#444; margin:10px 0 5px; }
.est-inp { width:100%; padding:9px 11px; border:1.5px solid #d5dbe7; border-radius:7px; font-size:14px; font-family:inherit; }
.est-hint { font-size:12px; color:#666; background:#f7f0f5; border-radius:7px; padding:8px 11px; line-height:1.5; margin-top:6px; }
.est-sec { font-size:13px; font-weight:bold; color:#26324a; margin:14px 0 7px; }

@media (max-width:480px) {
  header.edms-nav { padding:10px 12px; } .edms-nav h1 { font-size:15px; } .edms-nav .nav-right { gap:6px; }
  .gate-tiles { grid-template-columns:1fr; } .gate-hero h1 { font-size:22px; } .est-grid { grid-template-columns:1fr; }
  .stepper .lbl { display:none; } .step.on .lbl { display:inline; }
}

/* ═══════════════════════════════════════════════════════════════════════
   [기록작성 시스템] 입력 본문용 — .rec-write-* 7종  ★신설 (2026-08-16)
   근거: 판정 20260816_02 §1(신설 승인 · 제작창 소관) · 발주 20260816_03 §7

   왜 신설하는가 (기록작성창 청구 · 마스터 인정)
     .form-*  모달 폭 560px 전제 — 146칸 입력 본문에 안 맞는다
     .rec-std 목록표 — 입력 본문이 아니다
     → 146칸 입력 본문용이 틀에 없다. 각 창이 만들면 화면마다 제각각이 된다.

   경계 (SHALL / SHALL NOT)
     · ★기존 규칙 무수정 — 이 블록은 파일 끝에 「덧붙이기」만 했다
     · ★폐기색(구 문서 파랑) 사용 0 — 판정 20260816_02 §1. 이 블록에 그 값은 한 번도 나오지 않는다
     · 색은 전부 토큰: var(--recs)=#1c5c4f (판정 §4 확정) · var(--recs-d)=#154438
     · ★새로 만든 클래스 이름은 ★7개뿐. 하위 요소는 클래스가 아니라 ★태그로 잡는다
       (.t/.n/.req 같은 범용 이름을 쓰면 기존 258개 클래스와 섞일 위험이 있다)

   대비 실측 (WCAG 2.1 · 전건 AA 4.5:1 통과)
     흰 글자 on --recs            7.7976      --recs 글자 on 흰            7.7976
     --recs 글자 on #f2f8f6       7.2529      먹색 #2A2824 on #f2f8f6     13.6841
     라벨 #4a5568 on 흰           7.5256      흰 글자 on --recs-d         10.9613
   ═══════════════════════════════════════════════════════════════════════ */

/* ── (1) .rec-write-sec — 구획(섹션) 머리 ───────────────────────────────
   <div class="rec-write-sec"><h3>1. 일반사항</h3><span>12칸</span><em>필수</em></div> */
.rec-write-sec { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap;
  margin:24px 0 10px; padding:0 0 0 11px; border-left:4px solid var(--recs); }
.rec-write-sec > h3 { font-size:15px; font-weight:bold; color:var(--recs); margin:0; }
.rec-write-sec > span { font-size:11px; color:var(--ink-soft); }
.rec-write-sec > em { font-size:11px; font-style:normal; background:var(--recs); color:var(--surface);
  border-radius:10px; padding:2px 9px; }

/* ── (2) .rec-write-kv — 라벨·값 한 쌍 (146칸의 주력) ────────────────────
   ★구조 계약 —  <dl class="rec-write-kv">
                   <div><dt>공사명</dt><dd>...</dd></div>
                   <div data-wide><dt>비고</dt><dd>...</dd></div>
                 </dl>
   ★<div> 으로 한 쌍을 감싸는 것이 ★필수다(HTML5 는 dl 안의 div 를 허용한다).
     감싸지 않고 dt·dd 를 늘어놓으면 grid 가 행 우선으로 채워서
     ★라벨과 값이 서로 다른 칸에 흩어진다(첫 판에서 실제로 그렇게 났다).
   ★auto-fit 이라 칸이 몇 개든 폭에 맞춰 자동 줄바꿈된다. 칸마다 CSS 를 쓰지 않는다. */
.rec-write-kv { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
  gap:2px 18px; background:var(--surface); border:1px solid var(--line); border-radius:10px;
  padding:8px 14px 14px; margin:0; }
.rec-write-kv > div { min-width:0; padding:5px 0; }
.rec-write-kv dt { font-size:12px; color:var(--ink-soft); margin:0 0 4px; }
.rec-write-kv dt[data-required]::after { content:" *"; color:var(--recs); font-weight:bold; }
.rec-write-kv dd { font-size:13.5px; color:var(--ink); margin:0; word-break:break-word; }
.rec-write-kv dd > input, .rec-write-kv dd > select, .rec-write-kv dd > textarea {
  width:100%; padding:8px 10px; border:1.5px solid var(--field); border-radius:7px;
  font-size:13.5px; font-family:inherit; color:var(--ink); background:var(--surface); }
.rec-write-kv dd > input:focus, .rec-write-kv dd > select:focus,
.rec-write-kv dd > textarea:focus { border-color:var(--recs); outline:none; }
.rec-write-kv dd > input[readonly], .rec-write-kv dd > input:disabled {
  background:var(--bg-soft); color:var(--ink-soft); }
.rec-write-kv dd > textarea { min-height:64px; resize:vertical; }
/* 긴 항목 1칸을 전 폭으로 */
.rec-write-kv > div[data-wide] { grid-column:1 / -1; }

/* ── (3) .rec-write-tbl — 반복행 표 (동적 행 추가형) ─────────────────────
   ★구조 계약 — 클래스는 ★감싸는 <div> 에 붙이고 그 안에 <table> 을 둔다.
                 <div class="rec-write-tbl"><table>...</table></div>
   ★기존 .rec-xscroll 로 감싸지 마십시오. 그것은 폭 스크롤 컨테이너가 아니라
     ★높이 14px 의 「가로 스크롤바 막대」(.rec-xscroll-inner 와 짝)입니다.
     첫 판에서 그것으로 감쌌다가 ★표가 14px 로 잘려 안 보였습니다(common.css 531행 실측).
   표는 스스로 스크롤하지 못하므로 감싸는 div 가 필요합니다. 이름은 7종 안에서 씁니다. */
.rec-write-tbl { overflow-x:auto; overflow-y:visible; background:var(--surface);
  border:1px solid var(--line); border-radius:10px; }
.rec-write-tbl > table { width:100%; border-collapse:collapse; font-size:13px; }
.rec-write-tbl thead th { background:var(--recs); color:var(--surface); font-weight:bold; text-align:left;
  padding:9px 10px; white-space:nowrap; position:sticky; top:0; z-index:2; }
.rec-write-tbl tbody td { border-bottom:1px solid var(--line-2); padding:7px 10px;
  color:var(--ink); vertical-align:top; }
.rec-write-tbl tbody tr:last-child td { border-bottom:none; }
.rec-write-tbl tbody td > input, .rec-write-tbl tbody td > select {
  width:100%; min-width:90px; padding:6px 8px; border:1.5px solid var(--field); border-radius:6px;
  font-size:13px; font-family:inherit; color:var(--ink); }
.rec-write-tbl tbody td > input:focus, .rec-write-tbl tbody td > select:focus {
  border-color:var(--recs); outline:none; }
.rec-write-tbl tfoot td { padding:9px 10px; background:var(--recs-tint); font-size:12px;
  color:var(--recs); font-weight:bold; }
.rec-write-tbl caption { caption-side:top; text-align:left; font-size:12px;
  color:var(--ink-soft); padding:8px 10px 6px; }
/* 표 아래 조작 버튼(행 추가 등) — ★지시 20260816_10 §4-3.
   클래스 신설이 아니라 기존 .rec-write-tbl 의 하위 태그로 잡는다(7종 유지). */
.rec-write-tbl tfoot button { font:inherit; font-size:12px; padding:5px 12px; border-radius:7px;
  cursor:pointer; background:var(--surface); color:var(--recs); border:1px solid var(--recs-line); }
.rec-write-tbl tfoot button:hover { background:var(--recs-tint); }

/* ── (4) .rec-write-note — 비고·안내문 ──────────────────────────────────
   ★글자를 먹색으로 둔다(13.6841). 연한 바탕에 색 글자를 얹지 않는다 */
.rec-write-note { background:var(--recs-tint); border:1px solid var(--recs-line); border-left:4px solid var(--recs);
  border-radius:8px; padding:10px 13px; font-size:12.5px; line-height:1.6;
  color:var(--ink); margin:10px 0; }
.rec-write-note > b { color:var(--recs); }
.rec-write-note > ul { margin:5px 0 0 18px; }

/* ── (5) .rec-write-apv — 결재선 표시 ───────────────────────────────────
   결재선 표준(설정 기반 · 기본 2종)을 ★읽어서 렌더하는 자리. 그림을 고정하지 않는다.
   <div class="rec-write-apv"><div><b>작성</b><span>관리팀장</span><i></i></div>...</div> */
.rec-write-apv { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:10px; margin:12px 0; }
.rec-write-apv > div { background:var(--surface); border:1px solid var(--line); border-top:3px solid var(--recs);
  border-radius:9px; padding:9px 11px 11px; text-align:center; }
.rec-write-apv > div > b { display:block; font-size:11px; color:var(--ink-soft);
  font-weight:normal; margin-bottom:3px; }
.rec-write-apv > div > span { display:block; font-size:13px; font-weight:bold; color:var(--recs); }
/* 서명·일자 자리 — 비어 있어도 높이를 지켜 배치가 흔들리지 않게 */
.rec-write-apv > div > i { display:block; height:34px; margin-top:5px; border-top:1px dashed var(--dash);
  font-style:normal; font-size:11px; color:var(--ink-soft); line-height:34px; }
.rec-write-apv > div > i > img { max-height:30px; max-width:100%; vertical-align:middle; }

/* ── (6) .rec-write-store — 저장·제출 영역 ──────────────────────────────
   ★146칸 화면은 길다. 저장 줄이 화면 아래에 붙어 있어야 스크롤을 되돌리지 않는다 */
.rec-write-store { position:sticky; bottom:0; z-index:5;
  display:flex; align-items:center; justify-content:flex-end; gap:9px; flex-wrap:wrap;
  background:var(--surface); border-top:2px solid var(--recs); border-radius:10px 10px 0 0;
  padding:11px 14px; margin-top:18px; box-shadow:0 -4px 14px rgba(28,92,79,.10); }
.rec-write-store > p { margin:0 auto 0 0; font-size:12px; color:var(--ink-soft); }
.rec-write-store > p > b { color:var(--recs); }
.rec-write-store button { font:inherit; font-size:13px; padding:9px 18px; border-radius:8px;
  cursor:pointer; background:var(--surface); color:var(--recs); border:1.5px solid var(--recs); }
.rec-write-store button[type="submit"] { background:var(--recs); color:var(--surface);
  border-color:var(--recs); font-weight:bold; }
.rec-write-store button[type="submit"]:hover { background:var(--recs-d); border-color:var(--recs-d); }
.rec-write-store button:disabled { opacity:.5; cursor:not-allowed; }

/* ── (7) .rec-write-foot — 화면 꼬리(버튼 줄·부기) ───────────────────────*/
.rec-write-foot { display:flex; align-items:center; justify-content:space-between; gap:12px;
  flex-wrap:wrap; border-top:1px solid var(--line-2); margin-top:16px; padding:12px 2px 26px;
  font-size:11.5px; color:var(--ink-soft); }
.rec-write-foot > nav { display:flex; gap:8px; flex-wrap:wrap; }
.rec-write-foot > nav > a, .rec-write-foot > nav > button {
  font:inherit; font-size:12px; padding:5px 12px; border-radius:7px; cursor:pointer;
  text-decoration:none; background:var(--surface); color:var(--recs); border:1px solid var(--recs-line); }

/* ── 좁은 폭(모바일 390) ────────────────────────────────────────────────
   ★이전 회차에서 모바일 390 검수를 빠뜨린 적이 있어 처음부터 넣는다 */
@media (max-width:480px) {
  .rec-write-kv { grid-template-columns:1fr; }
  .rec-write-apv { grid-template-columns:1fr 1fr; }
  .rec-write-store { position:static; border-radius:10px; box-shadow:none; }
  /* 버튼 4개를 flex:1 로 한 줄에 두면 390px 에서 각 폭이 70px 대로 좁아진다.
     ★가로 넘침은 없다(실측 scrollWidth 390 · 넘침 0) — 넘침이 아니라 ★누르기 편하도록
     42% 기준 2개씩 줄바꿈시킨다. 판단 근거는 사용성이고 결함 시정이 아니다. */
  .rec-write-store > p { flex:1 1 100%; margin:0 0 4px; }
  .rec-write-store button { flex:1 1 42%; min-width:0; padding:9px 10px; }
  .rec-write-foot { flex-direction:column; align-items:flex-start; }
}
/* ★그리드·플렉스 칸이 내용 때문에 안 줄어드는 것을 막는다(넘침 방지 공통) */
.rec-write-apv > div, .rec-write-tbl, .rec-write-note { min-width:0; }
