
@layer tokens, base, layout, components, features, utilities;

@layer tokens {
:root{
  /* ── 그래파이트 소프트 v1.0 (2026-09-03 대표 확정 · 시안 1c) ── */
  /* 지면 */
  --bg:#F4F4F2; --bg2:#EAE9E5; --bg3:#EDEBE6; --bg4:#F2F1EC;
  --surface:#FFFFFF; --dark:#1C1C1B;
  /* 글자 */
  --tx:#1A1A1A; --tx2:#3B3A36; --tx3:#767469; --tx4:#918E86;
  --tx-on-dark:#F0EFEC; --tx-on-dark-2:#B9B7B0;
  /* 선 */
  --line:#EDEBE6; --line2:#CFCDC5; --line-dark:#34342F;
  --ink:#1C1C1B;
  /* 브랜드 — 액센트 전용. 화면당 골드 채움 2~3곳 이내 */
  --gold:#C9A961; --gold-d:#8C7A3F; --gold-l:#E4C97E; --gold-bg:#F7EFD9;
  --brand:var(--gold);
  --blue:#8C7A3F; --ylw:#C9A961; --grn:#8C7A3F; --mag:#B39448;
  --cyn:#8C7A3F; --vio:#A08A55; --org:#C9A961; --red:#A8442E;
  /* 상태 — 시안 1c 확정값. 골드와 충돌 없이 식별용(대표 지시: 시안 우선) */
  --st-draft:#7A7870;  --st-draft-bg:#EFEEEA;
  --st-open:#2F6B4A;   --st-open-bg:#E4EFE8;
  --st-closed:#A8442E; --st-closed-bg:#F6E7E3;
  --st-filled:#2F5D8F; --st-filled-bg:#E6EDF5;
  --st-urg:#B5651D;    --st-urg-bg:#F8EEDF;
  /* 형태 */
  --r:6px; --r-card:8px; --r-pill:999px;
  --sp:12px; --fs:13.5px;
  --shadow-card:0 12px 36px rgba(20,20,15,.10);
  /* v6.51 신호색 — 판단이 갈리는 축에만 쓴다. 장식용 사용 금지.
     골드 단색으로는 상태·등급 식별이 불가하다는 v6.16 판단을 색 단계만 낮춰 되살린다. */
  --sig-ok:#2F6B4A;     --sig-ok-bg:#E4EFE8;
  --sig-info:#2F5D8F;   --sig-info-bg:#E6EDF5;
  --sig-warn:#B5651D;   --sig-warn-bg:#F8EEDF;
  --sig-danger:#A8442E; --sig-danger-bg:#F6E7E3;
  --sig-mute:#7A7870;   --sig-mute-bg:#EFEEEA;
  /* 셸 */
  --sbw:182px; --rbw:252px; --tbh:48px;
}
}

@layer base {
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{min-height:100%;-webkit-text-size-adjust:100%;text-size-adjust:100%}  /* v6.61.1 — height:100% 는 body 를 스크롤 컨테이너로 만들어 모바일 주소창이 접히지 않고 scrollY 가 늘 0 이었다 */
body{font-family:'JetBrains Mono','Pretendard Variable','Pretendard',ui-monospace,monospace;
  background:var(--bg);color:var(--tx);font-size:var(--fs);line-height:1.65;min-height:100dvh;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;word-break:break-word}
.kr{font-family:'Pretendard Variable','Pretendard',sans-serif}
::selection{background:var(--ylw);color:var(--ink)}
a{color:var(--blue);text-underline-offset:3px}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-track{background:var(--bg3)}
::-webkit-scrollbar-thumb{background:var(--line2);border:2px solid var(--bg3)}
::-webkit-scrollbar-thumb:hover{background:var(--tx3)}
}

@layer components {
.btn{font-family:inherit;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
  border:1.5px solid var(--ink);background:var(--bg);color:var(--ink);
  padding:11px 16px;min-height:44px;border-radius:var(--r);cursor:pointer;transition:.1s}
.btn:hover{background:var(--ink);color:#fff}
.btn:disabled{opacity:.35;cursor:not-allowed}
.btn:disabled:hover{background:var(--bg);color:var(--ink)}
.btn.pri{background:var(--blue);border-color:var(--blue);color:#fff;font-weight:800}
.btn.pri:hover{background:#75632F;border-color:#75632F}
.btn.ok{background:var(--grn);border-color:var(--grn);color:#fff}
.btn.ok:hover{background:#2B2B2B;border-color:#2B2B2B}
.btn.sm{padding:7px 11px;min-height:36px;font-size:11px;border-width:1px}
#tlStats .stat.clickable{cursor:pointer;transition:.12s} #tlStats .stat.clickable:hover{border-color:var(--ink);transform:translateY(-1px)}
#tlStats .stat.on{border:2px solid var(--ink);box-shadow:0 0 0 2px var(--gold) inset}
#tlSeg .btn.on,#gmiGrades .btn.on,#ntfGrades .btn.on{background:var(--ink,#111);color:#fff;border-color:var(--ink,#111)}
.gmi-row{display:flex;align-items:center;gap:9px;padding:7px 2px;border-bottom:1px solid var(--line);font-size:12.5px}
.gmi-row:last-child{border-bottom:0} .gmi-row .nm{font-weight:700} .gmi-row .sub{font-size:11px;color:var(--tx3)}
.gmi-row.done{opacity:.55}
.btn.wide{width:100%}
.btn.danger{border-color:var(--red);color:var(--red)}
.btn.danger:hover{background:var(--red);color:#fff}
.btn.ghost{border-color:transparent;background:transparent;color:var(--tx3);text-transform:none;
  letter-spacing:0;text-decoration:underline;padding:8px 4px;min-height:36px}
.btn.ghost:hover{background:transparent;color:var(--blue)}

.fld{margin-bottom:15px}
.fld label{display:block;font-size:11px;font-weight:700;color:var(--tx2);
  letter-spacing:.13em;margin-bottom:5px;text-transform:uppercase}
.fld label::before{content:'> ';color:var(--blue)}
.fld label .kr{letter-spacing:.02em;text-transform:none}
.req{color:var(--red)}
.inp{width:100%;font-family:inherit;font-size:16px;padding:11px 12px;min-height:44px;
  border:1.5px solid var(--line2);border-radius:var(--r);background:var(--bg);color:var(--tx);transition:.1s}
.inp:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(201,169,97,.22)}
.inp::placeholder{color:var(--tx4)}
/* --- v6.7.3 비밀번호 보기 --- */
.pw-wrap{position:relative}
.pw-wrap .inp{padding-right:62px}
.pw-eye{position:absolute;right:1.5px;top:1.5px;bottom:1.5px;width:58px;
  border:0;background:none;cursor:pointer;font-family:inherit;font-size:11.5px;
  letter-spacing:.02em;color:var(--tx3);border-left:1px solid var(--line);
  border-radius:0 var(--r) var(--r) 0}
.pw-eye:hover{color:var(--tx);background:var(--bg3)}
.pw-eye:focus-visible{outline:2px solid var(--gold-d);outline-offset:-2px}
.pw-eye.on{color:var(--gold-d);font-weight:700}
/* --- v6.8 현재 접속자 --- */
.on-wrap{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.on-card{display:flex;align-items:center;gap:9px;border:1px solid var(--line);
  border-radius:var(--r);background:var(--bg2);padding:9px 12px;min-width:0}
.on-card .dot{width:8px;height:8px;border-radius:50%;background:var(--gold-d);
  box-shadow:0 0 0 3px rgba(201,169,97,.22);flex:none}
.on-card .dot.idle{background:var(--tx4);box-shadow:0 0 0 3px rgba(184,184,176,.2)}
.on-card .nm{font-size:12.5px;font-weight:700;word-break:break-all}
.on-card .rl{font-size:10px;letter-spacing:.06em;color:var(--tx3)}
.on-card .ag{font-size:11px;color:var(--tx3);font-variant-numeric:tabular-nums;white-space:nowrap}
.on-empty{font-size:12px;color:var(--tx3);padding:14px 2px}
@media (max-width:640px){.on-card{width:100%}}
textarea.inp{resize:vertical;min-height:96px;line-height:1.7}
select.inp{cursor:pointer}
input[type=file].inp{padding:9px 11px;font-size:16px}
.hint{font-size:11px;color:var(--tx3);margin-top:5px;line-height:1.6}
/* v6.44 — 참여 요청 카드 본문. 인라인 font-size 를 걷어내고 뷰포트별로 키운다 */
.rq-meta{font-size:13px;margin-bottom:4px}
.rq-msg{font-size:12px;line-height:1.7;white-space:pre-wrap;color:var(--tx3)}

.box{border:1.5px solid var(--ink);background:var(--bg);border-radius:var(--r);padding:20px;position:relative}
.box.lbl::before{content:attr(data-lbl);position:absolute;top:-9px;left:13px;background:var(--bg);
  padding:0 8px;font-size:10px;letter-spacing:.16em;color:var(--blue);font-weight:800;text-transform:uppercase}

.msg{padding:10px 13px;border-radius:var(--r);font-size:13px;margin-bottom:14px;display:none;
  line-height:1.6;border-left:4px solid;background:var(--bg3)}
.msg.show{display:block}
.msg.err{color:#8C3722;border-color:var(--red);background:#FAEDE9}
.msg.ok{color:#6B5B2E;border-color:var(--grn);background:#F5EFDD}
.msg.info{color:var(--tx2);border-color:var(--blue);background:var(--gold-bg)}
.msg.warn{color:#7A4412;border-color:var(--sig-warn);background:var(--sig-warn-bg)}
.msg::before{content:'[ ! ] ';font-weight:800}
.msg.ok::before{content:'[ OK ] '}
.msg.err::before{content:'[ ERR ] '}
/* v6.54 — 하단 토스트 알림. 모달(9990) 위에 뜬다. */
#toastHost{position:fixed;left:0;right:0;bottom:calc(14px + env(safe-area-inset-bottom));z-index:99999;
  display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none;padding:0 12px}
.toast{pointer-events:auto;max-width:560px;width:100%;box-sizing:border-box;padding:12px 16px;border-radius:12px;
  font-size:14px;line-height:1.5;font-weight:700;color:#fff;background:#2B2B2B;
  box-shadow:0 8px 24px rgba(0,0,0,.28);opacity:0;transform:translateY(12px);transition:opacity .18s,transform .18s;
  word-break:keep-all}
.toast.in{opacity:1;transform:translateY(0)}
.toast.ok{background:#8C7A3F}
.toast.err{background:#B3402C}
.toast.info{background:#2B2B2B}
.toast::before{font-weight:800;margin-right:8px}
.toast.ok::before{content:'OK'}
.toast.err::before{content:'!'}
.inp-err{outline:2px solid var(--red)!important;outline-offset:2px;border-color:var(--red)!important}
.fld .ck::before{content:none}

.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:var(--r);
  font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#fff}
.badge.ft{background:var(--ink)} .badge.dn{background:var(--gold-d)}
.badge.st-new{background:var(--gold);color:var(--ink)} .badge.st-review{background:var(--gold-d)}
.badge.st-shortlist{background:var(--gold-l);color:var(--ink)} .badge.st-hired{background:var(--ink)}
.badge.st-rejected{background:var(--tx3)} .badge.st-withdrawn{background:var(--tx4);color:var(--ink)}
.badge.on{background:var(--ink)} .badge.off{background:var(--tx3)}
.badge.src{background:var(--gold-d)}
/* v6.65.0 — 계약주체 머리표. 정산 경로(원천징수 vs 세금계산서)가 갈리는 축이므로
   기존 신호색을 재사용한다. 신규 색 추가 0건(§20 제로섬). 등급 배지(골드)와 축이 다르다. */
.badge.ent-lab{background:var(--sig-info-bg);color:var(--sig-info);border:1px solid var(--sig-info-bg)}
.badge.ent-cop{background:var(--sig-ok-bg);color:var(--sig-ok);border:1px solid var(--sig-ok-bg)}
.badge.line{background:transparent;color:var(--ink);border:1px solid var(--ink)}
}

@layer layout {
.screen{display:none}
.screen.show{display:block}

/* ── 로그인 ── */
.auth-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:30px 16px}
.auth-card{width:100%;max-width:460px;border:2px solid var(--ink);background:var(--bg);
  border-radius:var(--r);padding:28px 26px;box-shadow:7px 7px 0 var(--ink)}
.term-hd{border-bottom:1.5px solid var(--ink);padding-bottom:11px;margin-bottom:18px;
  display:flex;align-items:center;gap:7px;font-size:11px;color:var(--tx2);letter-spacing:.1em;font-weight:700}
.term-hd .dot{width:9px;height:9px;border-radius:50%;background:var(--grn);flex-shrink:0}
.term-hd .dot.y{background:var(--ylw)}
.ascii{font-size:11px;line-height:1.3;white-space:pre;margin-bottom:15px;overflow-x:auto;font-weight:700}
.ascii .c1{color:var(--gold-d)} .ascii .c2{color:var(--gold)}
.ascii .c3{color:var(--gold-l)} .ascii .c4{color:var(--ink)}
h1{font-size:19px;font-weight:800;letter-spacing:.05em;margin-bottom:7px;text-transform:uppercase}
h1::after{content:'';animation:bl 1.1s step-end infinite;margin-left:2px;color:var(--blue)}
@keyframes bl{50%{opacity:0}}
.sub{font-size:12px;color:var(--tx3);margin-bottom:20px;line-height:1.75}
/* ══ v6.90.0 — 첫 화면 등록 CTA 상단 배치 (대표 승인 2026-09-13) ══ */
.auth-cta{margin:14px 0 4px;padding:14px;border:1.5px solid var(--gold-d);border-radius:10px;background:var(--gold-bg)}
.auth-cta .ac-lead{margin:0 0 10px;font-size:13.5px;font-weight:700;line-height:1.55;color:var(--tx);text-align:center}
.auth-cta .ac-note{margin:9px 0 0;font-size:11.5px;line-height:1.6;color:var(--tx2);text-align:center}
.auth-div{display:flex;align-items:center;gap:10px;margin:18px 0 12px;font-size:11.5px;font-weight:600;color:var(--tx3)}
.auth-div::before,.auth-div::after{content:"";flex:1 1 auto;height:1px;background:var(--line)}
.auth-foot{margin-top:16px;padding-top:14px;border-top:1px solid var(--line);
  display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap}

/* ── 앱 셸 ── */
.topbar{position:fixed;top:0;left:0;right:0;z-index:40;background:var(--bg);
  border-bottom:2px solid var(--ink);padding:0 16px;height:var(--tbh);display:flex;align-items:center;gap:12px}
.topbar .logo{font-weight:800;font-size:14px;letter-spacing:.14em;white-space:nowrap}
.topbar .logo .b{color:var(--gold-d)}.topbar .logo .r{color:var(--gold)}
.topbar .ver{font-size:10px;color:var(--tx4)}
.topbar .sp{flex:1}
.topbar .who{font-size:11px;color:var(--tx2);display:flex;align-items:center;gap:7px;white-space:nowrap}
.topbar .who .nm{max-width:150px;overflow:hidden;text-overflow:ellipsis}
.hamb{display:none}

.shell{display:grid;grid-template-columns:var(--sbw) minmax(0,1fr) var(--rbw);
  min-height:100dvh;padding-top:var(--tbh)}

/* 사이드바 */
.sidebar{border-right:2px solid var(--ink);background:var(--bg2);position:sticky;top:var(--tbh);
  height:calc(100dvh - var(--tbh));display:flex;flex-direction:column;overflow:hidden}
.nav{flex:1;overflow-y:auto;padding:14px 0}
.nav-h{font-size:9px;letter-spacing:.18em;color:var(--tx4);font-weight:800;padding:0 16px 7px;text-transform:uppercase}
.nt{display:flex;align-items:center;gap:11px;width:100%;padding:11px 16px;min-height:44px;
  font-family:inherit;font-size:13px;font-weight:600;color:var(--tx2);background:none;border:0;
  border-left:4px solid transparent;cursor:pointer;text-align:left;transition:.1s}
.nt:hover{background:var(--bg3);color:var(--tx)}
.nt.on{background:var(--bg);color:var(--ink);font-weight:800;border-left-color:var(--gold)}
.nt .ic{width:18px;text-align:center;font-size:14px;flex-shrink:0;color:var(--tx3)}
.nt.on .ic{color:var(--gold-d)}
.nt .ct{margin-left:auto;font-size:10px;font-weight:800;padding:1px 6px;border-radius:var(--r);
  background:var(--gold);color:var(--ink)}
.nt .ct:empty{display:none}

.sb-online{border-top:1px solid var(--line);padding:10px 14px 9px;background:var(--bg)}
.sbo-h{display:flex;align-items:center;justify-content:space-between;font-size:9px;letter-spacing:.18em;font-weight:800;color:var(--tx4);text-transform:uppercase;margin-bottom:6px}
.sbo-n{font-size:11px;color:var(--ink);background:var(--gold);border-radius:10px;padding:0 7px;line-height:16px;font-variant-numeric:tabular-nums}
.sbo-list{display:flex;flex-direction:column;gap:4px;max-height:118px;overflow:auto}
/* v6.64.6 — 이름 잘림 시정(대표 적출 "이…" "박…"). v6.64.5 에서 경과 문구가 길어지며
   가로 1줄 배치의 남는 폭을 잡아먹었다. 이름 행과 시각 행을 세로로 분리한다. */
.sbo-it{display:grid;grid-template-columns:7px 1fr;column-gap:7px;row-gap:1px;align-items:center;font-size:11.5px;line-height:1.35;min-width:0}
.sbo-it .dot{width:7px;height:7px;border-radius:50%;background:var(--gold-d);flex:none;box-shadow:0 0 0 2px rgba(201,169,97,.22)}
.sbo-it .dot.idle{background:var(--tx4);box-shadow:none}
.sbo-it .dot.me{background:#1F5F45}
.sbo-it .nm{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.sbo-it .ag{grid-column:2;font-size:9.5px;color:var(--tx3);white-space:nowrap;font-variant-numeric:tabular-nums}
.sbo-it.sbo-tk{cursor:pointer;border-radius:6px;margin:0 -4px;padding:3px 4px}
.sbo-it.sbo-tk:hover{background:var(--bg2)}
.sbo-empty{font-size:11px;color:var(--tx3)}
.sb-server{border-top:1.5px solid var(--ink);padding:11px 14px;font-size:11px;background:var(--bg)}
.srv-row{display:flex;align-items:center;gap:8px}
.srv-dot{width:9px;height:9px;border-radius:50%;background:var(--gold);flex-shrink:0;
  box-shadow:0 0 0 3px rgba(201,169,97,.24)}
.srv-dot.wait{background:var(--gold-l);box-shadow:0 0 0 3px rgba(228,201,126,.30)}
.srv-dot.off{background:var(--red);box-shadow:0 0 0 3px rgba(168,68,46,.20)}
.srv-t{font-weight:700;font-size:11px}
.srv-s{font-size:10px;color:var(--tx3);margin-top:3px;padding-left:17px}

/* 우측바 */
.rightbar{border-left:2px solid var(--ink);background:var(--bg2);position:sticky;top:var(--tbh);
  height:calc(100dvh - var(--tbh));overflow-y:auto;padding:16px 15px;display:flex;flex-direction:column;gap:14px}
/* v6.82.3 — 우측 패널: 알림이 여러 건이면 아래 패널(심사 요약·활동 기록)이 눌리거나 화면 밖으로 밀려 클릭이 안 되던 문제.
   패널은 절대 압축되지 않게(flex:none) 하고, 알림 목록만 자체 스크롤(최대 44dvh) — 아래 패널은 항상 손이 닿는 위치에 남는다. */
.rightbar > .panel{flex:0 0 auto}
#alertBox{max-height:44dvh;overflow-y:auto;overscroll-behavior:contain;padding-right:2px}
#alertBox .alert-item:last-child{margin-bottom:2px}
.panel{border:1.5px solid var(--ink);background:var(--bg);border-radius:var(--r)}
.panel-h{font-size:9px;letter-spacing:.18em;font-weight:800;text-transform:uppercase;
  padding:8px 12px;border-bottom:1px solid var(--line);color:var(--tx2);display:flex;
  align-items:center;justify-content:space-between;gap:8px}
.panel-b{padding:13px 12px}

.clockbig{font-size:31px;font-weight:800;letter-spacing:.02em;font-variant-numeric:tabular-nums;line-height:1.15}
.clockbig .s{font-size:17px;color:var(--tx3)}
.datebig{font-size:11px;color:var(--tx3);margin-top:3px;letter-spacing:.05em}

.wx{display:flex;align-items:center;gap:12px;margin-top:12px;padding-top:12px;border-top:1px dashed var(--line2)}
.wx-ic{font-size:27px;line-height:1;width:34px;text-align:center}
.wx-t{font-size:23px;font-weight:800;font-variant-numeric:tabular-nums}
.wx-d{font-size:11px;color:var(--tx3);line-height:1.5}
.wx-x{margin-left:auto;text-align:right;font-size:10px;color:var(--tx3);line-height:1.6}

.mini{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.mini .m{border:1px solid var(--line2);border-radius:var(--r);padding:9px 10px;border-left-width:4px}
.mini .m.a{border-left-color:var(--ylw)} .mini .m.b{border-left-color:var(--blue)}
.mini .m.c{border-left-color:var(--mag)} .mini .m.d{border-left-color:var(--gold-l)}
.mini .n{font-size:19px;font-weight:800;font-variant-numeric:tabular-nums;line-height:1.2}
.mini .l{font-size:9px;color:var(--tx3);letter-spacing:.1em;text-transform:uppercase}

.logbox{max-height:250px;overflow-y:auto;font-size:11px}
.lg{padding:7px 12px;border-bottom:1px solid var(--line);display:flex;gap:8px;align-items:flex-start}
.lg:last-child{border-bottom:0}
.lg .t{color:var(--tx4);font-size:10px;flex-shrink:0;font-variant-numeric:tabular-nums}
.lg .m{color:var(--tx2);line-height:1.5}
.lg.info .m{color:var(--tx2)} .lg.ok .m{color:#6B5B2E}
.lg.warn .m{color:#7A6A33} .lg.err .m{color:#8C3722}
.lg .k{font-weight:800;font-size:9px;letter-spacing:.08em;flex-shrink:0}
.lg.info .k{color:var(--blue)} .lg.ok .k{color:var(--grn)}
.lg.warn .k{color:var(--ylw)} .lg.err .k{color:var(--red)}

.main{padding:22px 24px 60px;overflow-x:hidden}
@media (min-width:1920px){.main{padding:26px 34px 70px}}
.sec{display:none}
.sec.on{display:block}
.sec.readable{max-width:860px}
.sec h2{font-size:16px;font-weight:800;letter-spacing:.1em;margin-bottom:5px;text-transform:uppercase}
.sec h2::before{content:' ';color:var(--blue)}
.sec .desc{font-size:12px;color:var(--tx3);margin-bottom:20px;line-height:1.7}
.grid{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}
.row2{display:grid;gap:0 14px;grid-template-columns:1fr 1fr}
.row3{display:grid;gap:0 14px;grid-template-columns:1fr 1fr 1fr}

/* 반응형 */
@media (max-width:1400px){ :root{--rbw:262px} }

@media (max-width:860px){
  :root{--sbw:0px}
  .shell{grid-template-columns:minmax(0,1fr)}
  .hamb{display:inline-flex}
  .sidebar{position:fixed;left:0;top:var(--tbh);width:238px;z-index:39;
    transform:translateX(-100%);transition:transform .18s ease;border-right-width:2px}
  .sidebar.open{transform:translateX(0);box-shadow:8px 0 24px rgba(13,13,13,.16)}
  .scrim{position:fixed;inset:var(--tbh) 0 0 0;background:rgba(13,13,13,.4);z-index:38;display:none}
  .scrim.show{display:block}
  .row3{grid-template-columns:1fr 1fr}
  .main{padding:18px 14px 56px}
}
@media (max-width:640px){
  .row2,.row3{grid-template-columns:1fr}
  .main{padding:16px 12px 52px}
  .topbar{padding:0 11px;gap:9px}
  .topbar .who .nm{max-width:74px}
  .topbar .ver{display:none}
  /* v6.84.0 실측(520~640): 버튼이 flex 로 줄어들며 글자가 옆 버튼 위로 넘쳐 "새로고참계정"처럼 보였다(대표 실기기 보고). 버튼은 줄이지 않고 로고·이름이 양보한다. */
  .topbar button{flex:0 0 auto;padding:0 8px;font-size:11.5px}
  .topbar .logo{font-size:12px;letter-spacing:.06em;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
  .topbar .who{min-width:0;overflow:hidden}
  .auth-card{padding:20px 15px;box-shadow:4px 4px 0 var(--ink)}
}
@media (max-width:380px){.ascii{display:none}}
}

@layer features {
.post{border:1.5px solid var(--ink);background:var(--bg);border-radius:var(--r);padding:16px;
  display:flex;flex-direction:column;gap:8px;transition:.1s}
.post:hover{box-shadow:4px 4px 0 var(--gold)}
.post h3{font-size:15px;font-weight:700}
.post .meta{font-size:11px;color:var(--tx3)}
.post .body{font-size:13px;color:var(--tx2);line-height:1.75;white-space:pre-wrap}

.item{border:1px solid var(--line2);background:var(--bg);border-radius:var(--r);padding:14px 16px;margin-bottom:10px}
.item:hover{border-color:var(--ink)}
.item .hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.item .ttl{font-size:14px;font-weight:700}
.item .sub2{font-size:11px;color:var(--tx3)}

.tbl-wrap{overflow-x:auto;border:1.5px solid var(--ink);border-radius:var(--r);background:var(--bg)}
table{width:100%;border-collapse:collapse;font-size:12px;min-width:800px}
th{background:var(--ink);color:#fff;text-align:left;padding:10px 12px;font-size:10px;font-weight:800;
  letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}
td{padding:10px 12px;border-bottom:1px solid var(--line);color:var(--tx2)}
tbody tr:last-child td{border-bottom:0}
tbody tr{cursor:pointer;transition:.08s}
tbody tr:hover{background:var(--gold-bg)}
tbody tr:hover td{color:var(--tx)}
.filters{display:flex;gap:9px;flex-wrap:wrap;margin-bottom:16px;align-items:center}
.filters .inp{width:auto;min-width:135px}
.stat-row{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));margin-bottom:18px}
.adm-bar{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:14px}
.adm-b{border:1.5px solid var(--ink);border-radius:var(--r);padding:10px 13px;background:var(--ink);color:var(--bg)}
.adm-b .t{font-size:10px;letter-spacing:.1em;text-transform:uppercase;opacity:.72}
.adm-b .v{font-size:19px;font-weight:800;font-variant-numeric:tabular-nums;margin-top:3px}
.adm-b .s{font-size:11px;opacity:.78;margin-top:2px;line-height:1.45}
.adm-b.warn{border-left-width:5px;border-left-color:var(--ylw)}
.stat{border:1.5px solid var(--ink);background:var(--bg);border-radius:var(--r);padding:11px 13px;border-left-width:5px}
.stat:nth-child(1){border-left-color:var(--ink)} .stat:nth-child(2){border-left-color:var(--ylw)}
.stat:nth-child(3){border-left-color:var(--blue)} .stat:nth-child(4){border-left-color:var(--mag)}
.stat:nth-child(5){border-left-color:var(--gold-l)}
.stat .n{font-size:21px;font-weight:800;font-variant-numeric:tabular-nums}
.stat .l{font-size:10px;color:var(--tx3);letter-spacing:.06em;white-space:nowrap}

.modal{position:fixed;inset:0;z-index:9990;background:rgba(13,13,13,.55);display:none;
  align-items:flex-start;justify-content:center;padding:26px 14px;overflow-y:auto}
.modal.show{display:flex}
.modal-card{background:var(--bg);border:2px solid var(--ink);border-radius:var(--r);
  width:100%;max-width:680px;padding:24px;box-shadow:8px 8px 0 rgba(13,13,13,.25)}
.dl{display:grid;grid-template-columns:100px 1fr;gap:8px 14px;font-size:12px;margin:15px 0}
.dl dt{color:var(--blue);font-size:11px;letter-spacing:.06em;font-weight:700}
.dl dd{color:var(--tx);word-break:break-all}
.modal-foot{display:flex;gap:9px;justify-content:flex-end;flex-wrap:wrap;
  border-top:1px solid var(--line);padding-top:15px;margin-top:8px}

.consent{border:1.5px solid var(--line2);border-radius:var(--r);padding:12px 14px;margin-bottom:8px;
  cursor:pointer;transition:.1s;display:flex;gap:11px;align-items:flex-start;min-height:44px}
.consent:hover{border-color:var(--tx2)}
.consent.on{border-color:var(--blue);background:var(--gold-bg)}
.consent input{margin-top:4px;accent-color:var(--blue);flex-shrink:0;width:16px;height:16px}
.consent .t{display:block;font-size:13px;font-weight:700;margin-bottom:3px}
.consent .d{display:block;font-size:12px;color:var(--tx3);line-height:1.6}
.lgl{background:none;border:none;padding:0;font-family:inherit;font-size:11px;
  color:var(--blue);text-decoration:underline;cursor:pointer}

.upd{position:fixed;left:14px;right:14px;bottom:14px;z-index:9995;display:none;max-width:600px;margin:0 auto;
  border:2px solid var(--ink);background:var(--gold);border-radius:var(--r);padding:13px 15px;
  box-shadow:5px 5px 0 var(--ink);align-items:center;gap:11px;flex-wrap:wrap}
.upd.show{display:flex}
/* v6.17 §5 M4 터치타겟 44px + §5 M7 safe-area — G-UPD1 게이트 */
.upd{bottom:calc(14px + env(safe-area-inset-bottom,0px))}
.upd .btn{min-height:44px;min-width:44px;padding:11px 15px;font-size:12px}
.upd .t{flex:1;font-size:12px;color:var(--ink);min-width:170px;font-weight:600}

.empty,.loading{text-align:center;padding:44px 18px;color:var(--tx3);font-size:12px;letter-spacing:.05em}
.loading::after{content:'';animation:bl 1.1s step-end infinite;color:var(--blue)}

/* --- 현장 일정 캘린더 --- */
.cal-head{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}
.cal-mon{font-size:19px;font-weight:800;letter-spacing:.04em;min-width:132px}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;
  background:var(--line);border:1.5px solid var(--ink)}
.cal-dow{background:var(--bg3);text-align:center;padding:8px 2px;font-size:11px;
  font-weight:700;letter-spacing:.1em;color:var(--tx2)}
.cal-dow.sun{color:var(--red)} .cal-dow.sat{color:var(--gold-d)}
.cal-cell{background:var(--bg);min-height:96px;padding:5px 5px 7px;display:flex;flex-direction:column;gap:3px}
.cal-cell.out{background:var(--bg2)} .cal-cell.out .cal-d{color:var(--tx4)}
.cal-cell.today{background:var(--gold-bg)}
.cal-d{font-size:12px;font-weight:700;color:var(--tx2);line-height:1.2}
.cal-cell.today .cal-d{color:var(--gold-d)}
.cal-d.sun{color:var(--red)} .cal-d.sat{color:var(--gold-d)}

/* --- v6.7 월간 막대 캘린더 --- */
.cal-dows{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;
  background:var(--line);border:1px solid var(--ink);border-bottom:0;
  border-radius:var(--r) var(--r) 0 0;overflow:hidden}
.cal-weeks{border:1px solid var(--ink);border-top:0;border-radius:0 0 var(--r) var(--r);
  overflow:hidden;background:var(--bg)}
.cal-wk{position:relative;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));
  grid-auto-rows:min-content;align-content:start;min-height:96px;
  border-top:1px solid var(--line);padding-bottom:6px}
.cal-wk:first-child{border-top:0}
.cal-hit{position:absolute;inset:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));z-index:0}
.cal-hit>div{border-left:1px solid var(--line)}
.cal-hit>div:first-child{border-left:0}
.cal-hit>div.out{background:var(--bg2)}
.cal-hit>div.today{background:var(--gold-bg)}
.cal-wk .cal-d{position:relative;z-index:1;grid-row:1;padding:5px 0 3px;text-align:center;
  font-size:12px;font-weight:700;line-height:1.2}
.cal-wk .cal-d.out{color:var(--tx4)}
.gig-bar{position:relative;z-index:1;margin:1.5px 3px;padding:3px 7px;border-radius:var(--r);
  font-size:11px;line-height:1.4;text-align:left;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;cursor:pointer;border:1px solid var(--ink);background:var(--bg2);
  font-family:inherit;color:var(--tx);display:block;width:calc(100% - 6px)}
.gig-bar:hover{background:var(--gold);border-color:var(--gold-d)}
.gig-bar .rc{color:var(--tx2);font-variant-numeric:tabular-nums}
.gig-bar.mine{box-shadow:inset 0 0 0 2px var(--gold-d)}
.gig-bar.full{opacity:.55}
/* v6.16 — 상태를 좌측 원색 바 + 옅은 배경 틴트로 구분 */
.gig-bar.st-draft{border-style:dashed;border-left:6px solid var(--st-draft);background:var(--st-draft-bg);color:var(--tx2)}
.gig-bar.st-open{border-left:6px solid var(--st-open);background:var(--st-open-bg);font-weight:700}
.gig-bar.st-closed{border-left:6px solid var(--st-closed);background:var(--st-closed-bg);opacity:.75}
.gig-bar.st-filled{border-left:6px solid var(--st-filled);background:var(--st-filled-bg)}
.gig-bar.urg{border-left:6px solid var(--st-urg)!important;background:var(--st-urg-bg)!important}
.gig-bar.urg .rc{color:var(--st-urg);font-weight:800}
.badge.gs-draft{background:var(--st-draft);color:#fff}
.badge.gs-open{background:var(--st-open);color:#fff}
.badge.gs-closed{background:var(--st-closed);color:#fff}
.badge.gs-filled{background:var(--st-filled);color:#fff}
/* v6.20 가용 시간대 · 계정 상태 */
.badge.av-full{background:var(--st-open);color:#fff}
.badge.av-am{background:#0E7490;color:#fff}
.badge.av-pm{background:#7C3AED;color:#fff}
.badge.av-night{background:#334155;color:#fff}
/* v6.72.0 — 접속 로그에서 지원자 행·카드를 눌러 인재 상세로 간다 */
.rw-lnk{cursor:pointer;transition:background .1s}
.rw-lnk:hover{background:var(--bg2)}
.rw-lnk .nm-lnk{color:var(--blue);text-decoration:underline;text-underline-offset:2px}
.on-card.rw-lnk:hover{background:var(--bg2)}
.badge.ac-pending{background:var(--st-urg);color:#fff}
.badge.ac-approved{background:var(--st-open);color:#fff}
.badge.ac-rejected{background:var(--st-closed);color:#fff}
.badge.ac-suspended{background:var(--st-draft);color:#fff}
.cal-cell .avm{display:block;margin-top:2px;font-size:10px;font-weight:800;border-radius:3px;
  padding:2px 4px;text-align:center;letter-spacing:.02em}
.avm.full{background:var(--st-open-bg);color:var(--st-open);border:1px solid var(--st-open)}
.avm.am{background:#E0F2FE;color:#0E7490;border:1px solid #0E7490}
.avm.pm{background:#EDE9FE;color:#7C3AED;border:1px solid #7C3AED}
.avm.night{background:#E2E8F0;color:#334155;border:1px solid #334155}
.avm.fix{background:var(--st-filled-bg);color:var(--st-filled);border:1px solid var(--st-filled)}
.pend-wrap{max-width:600px;margin:40px auto;text-align:center;padding:0 18px}
.pend-ic{font-size:44px;line-height:1;margin-bottom:16px;color:var(--st-urg)}
.rq-it{border:1px solid var(--line2);border-left:6px solid var(--st-urg);border-radius:var(--r);
  padding:12px 14px;margin-bottom:10px;background:var(--bg)}
.rq-it.done{border-left-color:var(--st-open);opacity:.8}
.rq-it.no{border-left-color:var(--st-draft);opacity:.7}
.av-it{border:1px solid var(--line2);border-radius:var(--r);padding:11px 13px;margin-bottom:9px;
  display:flex;gap:11px;align-items:flex-start;background:var(--bg)}
.av-sc{flex:0 0 52px;text-align:center}
.av-sc .n{font-size:19px;font-weight:800;line-height:1}
.av-sc .g{font-size:10px;color:var(--tx3);letter-spacing:.06em}

.gv-list{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.gv-it{border:1px solid var(--line2);border-left:6px solid var(--tx3);border-radius:var(--r);
  padding:10px 12px;cursor:pointer;background:var(--bg);text-align:left;width:100%;font-family:inherit;color:var(--tx)}
.gv-it:hover{background:var(--bg2)}
.gv-it.st-draft{border-left-color:var(--st-draft)}
.gv-it.st-open{border-left-color:var(--st-open)}
.gv-it.st-closed{border-left-color:var(--st-closed)}
.gv-it.st-filled{border-left-color:var(--st-filled)}
.gv-it.urg{border-left-color:var(--st-urg)}
.gv-h{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:4px}
.gv-t{font-weight:800;font-size:13px}
.gv-s{font-size:12px;color:var(--tx2);line-height:1.6}
.gv-r{font-size:11px;color:var(--tx3);margin-top:4px;white-space:pre-wrap;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gig-bar.cl{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0;
  width:calc(100% - 3px);border-left-style:dotted}
.gig-bar.cr{border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0;
  width:calc(100% - 3px);border-right-style:dotted}
.cal-more{position:relative;z-index:1;font-size:10px;color:var(--tx3);text-align:center;
  padding:1px 0;cursor:default}
/* --- v6.7 연간 스트립 --- */
.cal-strip{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:3px;margin-bottom:12px}
.cal-strip button{border:1px solid var(--line2);border-radius:var(--r);padding:5px 1px 6px;
  background:var(--bg);cursor:pointer;font-family:inherit;text-align:center;position:relative}
.cal-strip button:hover{border-color:var(--gold-d)}
.cal-strip .yy{display:block;font-size:9px;color:var(--tx4);line-height:1.2}
.cal-strip .mm{display:block;font-size:12px;font-weight:700;color:var(--tx2);line-height:1.3}
.cal-strip .nn{display:block;font-size:10px;color:var(--tx4);line-height:1.3;min-height:13px;
  font-variant-numeric:tabular-nums}
.cal-strip .has .nn{color:var(--gold-d);font-weight:700}
.cal-strip .cur{background:var(--ink);border-color:var(--ink)}
.cal-strip .cur .yy,.cal-strip .cur .mm,.cal-strip .cur .nn{color:var(--bg)}
.cal-strip .urg::after{content:"";position:absolute;top:3px;right:3px;width:5px;height:5px;
  border-radius:50%;background:var(--red)}
.cal-strip .cur.urg::after{background:var(--gold-l)}
@media (max-width:900px){
  .cal-strip{grid-auto-flow:column;grid-auto-columns:58px;grid-template-columns:none;
    overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;
    -webkit-overflow-scrolling:touch;padding-bottom:4px;
    scrollbar-width:none;-ms-overflow-style:none}
  .cal-strip::-webkit-scrollbar{display:none}
  .cal-strip button{scroll-snap-align:center;min-height:46px}
}
.btn.sm.on{background:var(--ink);color:#fff}
@media (max-width:760px){
  .cal-wk{min-height:64px;padding-bottom:3px}
  .cal-wk .cal-d{font-size:11px;padding:3px 0 2px}
  .gig-bar{font-size:9.5px;padding:2px 3px;margin:1px 1.5px;width:calc(100% - 3px);
    border-radius:2px;line-height:1.3}
  .gig-bar .rc{display:none}
  .gig-bar.cl,.gig-bar.cr{width:calc(100% - 1.5px)}
  .cal-more{font-size:9px}
  .cal-dow{padding:6px 1px;font-size:10px}
  .cal-head{gap:7px}
  .cal-mon{font-size:16px;min-width:96px}
  .cal-head .btn.sm{min-height:38px;min-width:38px}
}
@media (max-width:400px){
  .cal-wk{min-height:56px}
  .gig-bar{font-size:8.5px;padding:1.5px 2px}
  .cal-wk .cal-d{font-size:10px}
  .cal-strip{grid-auto-columns:52px}
}
/* iOS 노치·홈바 대응 */
@supports (padding:env(safe-area-inset-bottom)){
  @media (max-width:900px){
    body{padding-bottom:env(safe-area-inset-bottom)}
  }
}

/* --- 파일 관리 --- */
.ph-grid{display:flex;flex-wrap:wrap;gap:8px}
.ph-it{position:relative;width:96px;height:96px;border-radius:var(--r);overflow:hidden;border:1px solid var(--line);background:var(--bg3)}
.ph-it img{width:100%;height:100%;object-fit:cover;display:block;cursor:zoom-in}
.ph-it .del{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;font-size:13px;line-height:22px;cursor:pointer;padding:0}
.ph-it.main{border:2px solid var(--gold)}
/* v6.86.1 — 본인 사진 썸네일 위아래 잘림 보정(대표 적출): 증명사진은 3:4 세로 타일 + 상단 정렬.
   정사각 96px + cover 는 세로 사진의 이마·턱을 잘라 가운데 띠만 보였다. 클릭(원본) 정상과 증상 일치 */
.ph-it.main{width:96px;height:128px}
.ph-it.main img{object-position:center top}
.file-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--line);
  border-radius:var(--r);background:var(--bg2);margin-bottom:7px;flex-wrap:wrap}
.file-row .fn{flex:1;font-size:12px;min-width:150px;word-break:break-all}
.file-row .fs{font-size:11px;color:var(--tx3)}
.file-slot{border:1.5px dashed var(--line2);border-radius:var(--r);padding:16px;
  text-align:center;margin-bottom:7px}
.file-slot .lb{font-size:11px;color:var(--tx3);letter-spacing:.08em;margin-bottom:9px}

/* --- 알림 (승인·반려) --- */
.alert-item{border:1px solid var(--line);border-left:3px solid var(--gold);
  border-radius:var(--r);background:var(--bg2);padding:9px 10px;margin-bottom:7px}
.alert-item.gig{border-left-color:var(--gold-d)}
.alert-item .ai-h{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:3px}
.alert-item .ai-t{font-size:12.5px;font-weight:700;flex:1 1 120px;min-width:0;word-break:break-all}
/* v6.82.1 — 우측 알림 카드 반응형: 긴 배지가 제목을 세로로 찌그러뜨리던 문제. 제목은 최소 120px 확보 후 배지가 줄바꿈, 코드는 한 줄 유지, 버튼 줄바꿈 금지 */
.alert-item .ai-t.ai-code{word-break:normal;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.alert-item .ai-h .badge{flex:0 0 auto;white-space:nowrap}
.alert-item .ai-b{flex-wrap:wrap}
.alert-item .ai-b .btn{white-space:nowrap}
.alert-item .ai-s{font-size:10.5px;color:var(--tx3);line-height:1.45;margin-bottom:7px}
.alert-item .ai-b{display:flex;gap:5px}
.alert-item .ai-b .btn{flex:1;min-height:30px;padding:5px 6px;font-size:10px;letter-spacing:.04em}
.alert-done{text-align:center;padding:22px 10px;color:var(--tx3);font-size:11px;letter-spacing:.05em}
.nt .ct.alert{background:var(--gold);color:var(--ink);font-weight:800}

/* --- 선택 칩 --- */
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{font-family:inherit;font-size:12px;padding:7px 12px;min-height:34px;
  border:1.5px solid var(--line2);background:var(--bg);color:var(--tx2);
  border-radius:var(--r);cursor:pointer;transition:.1s}
.chip:hover{border-color:var(--ink);color:var(--ink)}
.chip.on{background:var(--gold);border-color:var(--gold-d);color:var(--ink);font-weight:700}
.chip:disabled{opacity:.3;cursor:not-allowed}

/* --- 대시보드 --- */
.dash-grid{display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(340px,1fr))}
.dash-col{min-width:0}
.dash-item{display:flex;align-items:center;gap:10px;padding:11px 13px;border:1px solid var(--line);
  border-radius:var(--r);background:var(--bg2);margin-bottom:7px;flex-wrap:wrap;
  cursor:pointer;transition:.1s;width:100%;text-align:left;font-family:inherit;font-size:13px}
.dash-item:hover{background:var(--gold-bg);border-color:var(--gold-d)}
.dash-item .nm{flex:1;min-width:130px;font-weight:600}
.dash-item .sub{font-size:11px;color:var(--tx3);display:block;font-weight:400}
.dash-item.plain{cursor:default}
.dash-item.plain:hover{background:var(--bg2);border-color:var(--line)}

/* --- 등급 뱃지 --- */
.badge.gr-S{background:var(--ink)} .badge.gr-A{background:var(--gold-d)}
.badge.gr-B{background:var(--gold);color:var(--ink)}
.badge.gr-C{background:var(--tx3)} .badge.gr-X{background:var(--red)}
.badge.gr-N{background:transparent;color:var(--tx3);border:1px solid var(--line2)}
.badge.ok{background:var(--grn);color:#fff}
.badge.ga-applied{background:var(--gold);color:var(--ink)}
.ga-invited{background:var(--gold-bg);color:var(--gold-d);border-color:var(--gold-d)}
.badge.ga-accepted{background:var(--ink)}
.badge.ga-rejected{background:var(--tx3)} .badge.ga-cancelled{background:var(--tx4);color:var(--ink)}
/* .badge.gs-* 색상은 v6.16 상태 원색 팔레트에서 일괄 정의 */
}

@layer utilities {
.hide{display:none !important}
.mt16{margin-top:16px}.mb16{margin-bottom:16px}
.fx{display:flex;gap:9px;align-items:center;flex-wrap:wrap}
}

/* v6.29 — 소통 채널 · 알림 · 협력사 등록 */
.tk-wrap{display:flex;flex-direction:column;gap:10px;max-height:52vh;overflow-y:auto;
  padding:14px;background:var(--bg2,#faf9f7);border:1px solid var(--ln,#e6e2da);border-radius:12px}
.tk-b{max-width:78%;padding:10px 13px;border-radius:14px;font-size:14px;line-height:1.65;
  word-break:break-word;white-space:pre-wrap}
.tk-me{align-self:flex-end;background:#8C7A3F;color:#fff;border-bottom-right-radius:4px}
.tk-you{align-self:flex-start;background:#fff;border:1px solid var(--ln,#e6e2da);border-bottom-left-radius:4px}
.tk-t{font-size:11px;opacity:.62;margin-top:5px}
.md-sec{margin:14px 0 0;padding-top:12px;border-top:1px solid rgba(128,128,128,.28)}
.md-sec-h{font-size:12px;font-weight:700;opacity:.7;margin-bottom:8px;letter-spacing:.02em}
.md-list{font-size:12.5px;line-height:1.75}
.md-list .row{padding:5px 0;border-bottom:1px dashed rgba(128,128,128,.2)}
.md-list .row:last-child{border-bottom:0}
.md-list .t{opacity:.6;font-size:11px}
.md-none{opacity:.55;font-size:12px}
.tk-gig{font-size:11px;opacity:.75;margin-bottom:4px;padding-bottom:3px;border-bottom:1px solid rgba(128,128,128,.25)}
.tk-day{align-self:center;font-size:11px;opacity:.55;padding:3px 12px;background:#fff;
  border:1px solid var(--ln,#e6e2da);border-radius:999px}
.tk-send{display:grid;gap:8px;margin-top:12px;grid-template-columns:1fr auto}
.tk-send>div{grid-column:1/-1}
.tk-send button{align-self:stretch;min-width:92px}
.tk-send textarea{min-height:104px;max-height:260px;resize:vertical;line-height:1.6}
.tk-thread{cursor:pointer}
.tk-thread:hover{border-color:#8C7A3F}
/* ══ v6.58.1 — 문의 대화 목록 한 줄 압축 + 공지 구분 카드 (대표 지시) ══ */
#tkaList .tk-thread{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 14px;margin-bottom:6px}
#tkaList .tk-thread .hd{margin-bottom:0;flex-wrap:nowrap;white-space:nowrap}
#tkaList .tk-thread .tk-prev{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px}
#tkaList .tk-thread .tk-when{white-space:nowrap}
@media (max-width:640px){
  #tkaList .tk-thread{grid-template-columns:auto minmax(0,1fr);row-gap:3px}
  #tkaList .tk-thread .tk-when{grid-column:1 / -1;font-size:10.5px}
}
.tk-ntc{background:var(--bg);border:1px solid var(--line2);border-left:3px solid #8C7A3F;border-radius:8px;padding:10px 12px;margin:8px auto;max-width:560px;font-size:13.5px;line-height:1.7}
.tk-ntc .ntc-l{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.12em;color:#8C7A3F;border:1px solid #8C7A3F;border-radius:4px;padding:1px 6px;margin-right:8px;vertical-align:1px}
.tk-ntc .tk-t{margin-top:5px;font-size:10px;color:var(--tx4)}
/* ══ v6.58.4 — 사진 인앱 라이트박스: 새 창 대신 앱 안에서 크게 보기 (대표 지시: 앱 이탈 방지) ══ */
#lbOverlay{position:fixed;inset:0;z-index:9999;background:rgba(10,10,10,.92);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:18px}
#lbOverlay.hide{display:none}
#lbOverlay img{max-width:94vw;max-height:82vh;object-fit:contain;border-radius:8px;background:#111}
#dvOverlay{position:fixed;inset:0;z-index:9999;background:rgba(10,10,10,.92);
  display:flex;flex-direction:column;gap:10px;padding:14px}
#dvOverlay.hide{display:none}
#dvBar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
#dvBar .btn{background:var(--bg);min-height:40px}
#dvName{flex:1;min-width:0;color:#fff;font-size:12.5px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#dvFrame{flex:1;width:100%;border:0;border-radius:8px;background:#fff}
@media (max-width:600px){ #dvName{flex-basis:100%;order:-1} }
#lbBar{display:flex;gap:10px}
#lbBar .btn{background:var(--bg);min-height:44px}
.tk-new{background:#c0392b;color:#fff;border-radius:999px;padding:1px 8px;font-size:11px;font-weight:700}
/* v6.81.5 — 담당자 문의 대화 목록 미읽음 강조(카카오톡식) */
.tk-thread.tk-unread{border-left:3px solid #c0392b;background:#fffaf8}
.tk-thread.tk-unread .ttl{font-weight:800}
.tk-thread.tk-unread .tk-prev{font-weight:700;color:var(--ink,#222)}
.tk-unread-lbl{color:#c0392b;font-weight:800}
.sidebar .nt .ct.ct-red,.nt .ct.ct-red{background:#c0392b!important;color:#fff!important}
.ev-line{display:flex;gap:9px;align-items:flex-start;font-size:13px;padding:5px 0}
.ev-dot{width:7px;height:7px;border-radius:50%;background:#8C7A3F;margin-top:6px;flex:0 0 auto}
.ev-t{font-size:11px;opacity:.6}
.nt-box{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}

/* ══════════ v6.44 — PWA 통합표준 §5 M6 모바일 최적화 ══════════
   실 Chromium 360·390 실측 결과 기반. @layer 밖에 두어 features 레이어 규칙까지 이긴다
   (layout 레이어에 두었을 때 components·features 에 밀려 전량 무효였다).
   강제 축소(transform·zoom)는 쓰지 않고 값 자체를 올린다. */
/* 서랍형 UI 전환점(860px)과 동일한 경계를 쓴다. 768 태블릿도 터치 기기다 */
@media (max-width:860px){
  /* M6-1 본문 가독성 — 읽어야 하는 정보는 14px 이상 */
  .sec .desc{font-size:14px;line-height:1.75}
  .rq-meta{font-size:14px}
  .rq-msg{font-size:14px}
  .file-row .fn{font-size:14px}
  .file-row .fs{font-size:13px}
  .file-row .fn .hint{font-size:13px}
  .cal-head .badge{font-size:13px}

  /* M6-2 터치 타깃 — 높이 44 를 전역 보장.
     상단바는 360px 에 5요소가 들어가 min-width 44 를 일괄 적용하면 폭을 넘긴다(실측).
     따라서 폭은 padding 으로 확보하고, 단독 아이콘 버튼만 44 폭을 강제한다. */
  .topbar button{min-height:44px;padding:0 11px;white-space:nowrap}
  #btnHamb{min-width:44px}
  .btn.sm{min-height:44px;padding:9px 13px;font-size:12px}
  .cal-head .btn.sm{min-width:44px}

  /* M6-3 달력 셀 — 6주 격자가 세로로 과도해지지 않게 */
  .cal-cell{min-height:74px}

  /* M6-4 동의 체크박스 터치 여유. 라벨 전체가 클릭 영역이나 표적 자체도 키운다 */
  .consent input{width:20px;height:20px}
}
/* M6-5 360px 상단바는 햄버거·로고·이름·계정·Notes·로그아웃 6요소를 감당하지 못한다.
   실측에서 버튼 글자가 세로로 쪼개져 높이 90px 로 늘고 로그아웃이 화면 밖으로 나갔다.
   이름·역할 배지는 사이드바 머리(navHead)에 이미 있으므로 좁은 폭에서는 상단바에서 내린다. */
@media (max-width:680px){
  /* v6.84.0 — 680px 이하에서 이름·[로그아웃]을 내려 로고를 지킨다(로그아웃은 사이드바에 있음). 종전 480 기준을 680으로 상향 */
  .topbar .who{display:none}
  .topbar #btnLogout{display:none}
}
@media (max-width:480px){
  .topbar .who{display:none}
  .topbar #btnLogout{display:none}   /* 사이드바 [로그아웃]으로 대체 */
  .topbar button{padding:0 8px;font-size:12px;flex:0 0 auto}
  .topbar{gap:6px}
  /* v6.82.4 실측(360·390 헤드리스): 로고 자간 .14em 이 170px 를 먹어 [새로고침]·[계정]·[Notes] 가 겹쳤다. 로고를 줄이고 넘치면 말줄임. */
  .topbar .logo{font-size:12px;letter-spacing:.06em;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}
}
@media (max-width:400px){
  .topbar .logo{font-size:11px;letter-spacing:.03em}
  .topbar #btnPatch{display:none}   /* Notes 는 사이드바 하단 버전 표기 → 계정 화면에서 열람 가능 */
}
/* M6-6 폼 라벨·보조 설명이 11px 로 모바일에서 과도하게 작았다 */
@media (max-width:860px){
  .fld > label{font-size:13px}
  .hint{font-size:12.5px}
  .empty{font-size:13.5px}
  #navHead{font-size:11px}
}

/* ══ v6.48 모바일 컴팩트 — 현장 일정 한 화면 (PWA 표준 §5: 본문 14px 하한·터치 44px 유지) ══ */
.gsec{margin-top:26px}
@media (max-width:640px){
  /* 상단바: 375px 폭에서 버튼 잘림 방지 */
  .topbar{padding:0 8px;gap:6px}
  .topbar .logo{font-size:13px;letter-spacing:.06em}
  .topbar button{padding:0 7px;font-size:11.5px;min-width:0}
  .topbar #btnSync{padding:0 6px}
  .main{padding:10px 10px 40px}
  /* 섹션 머리 */
  #secGigs h2{font-size:14px;margin-bottom:2px}
  #secGigs>.desc{font-size:12px;line-height:1.5;margin-bottom:8px}
  #secGigs .gsec{margin-top:12px}
  #secGigs .gsec+.desc{display:none}
  /* 달력 컨트롤: 한 줄 */
  #secGigs .cal-head{gap:5px;margin-bottom:8px;flex-wrap:nowrap}
  #secGigs .cal-mon{font-size:15px;min-width:0;flex:1;text-align:center}
  #secGigs .cal-head .btn.sm{min-height:40px;min-width:40px;padding:0 8px}
  #secGigs .cal-head .badge{font-size:11px;padding:3px 7px;white-space:nowrap}
  /* 월 스트립 */
  #secGigs .cal-strip{margin-bottom:8px;grid-auto-columns:48px}
  #secGigs .cal-strip button{min-height:40px;padding:3px 1px 4px}
  #secGigs .cal-strip .yy{font-size:8px}
  #secGigs .cal-strip .mm{font-size:11px}
  #secGigs .cal-strip .nn{font-size:9px;min-height:11px}
  /* 달력 본체: 주 높이 44 → 5주 220px */
  #secGigs .cal-dow{padding:4px 1px;font-size:10px}
  #secGigs .cal-wk{min-height:44px;padding-bottom:2px}
  #secGigs .cal-wk .cal-d{font-size:11px;padding:3px 0 1px}
  #secGigs .cal-cell{min-height:44px;padding:3px 3px 4px}
  #secGigs .cal-cell .avm{font-size:9px;padding:1px 3px;margin-top:1px}
  #secGigs .cal-more{font-size:9px}
  /* 범례 */
  #secGigs .cal-grid+.fx{margin-top:6px;gap:5px}
  #secGigs .cal-grid+.fx .badge{font-size:10px;padding:2px 6px}
  /* 3섹션 빈 상태: 한 줄 */
  #reqList .empty,#gigPend .empty,#gigMine .empty,
  #reqList .loading,#gigPend .loading,#gigMine .loading{padding:9px 10px;font-size:12px;line-height:1.5;text-align:left}
}
@media (max-width:640px) and (max-height:760px){
  /* 짧은 화면: 한 단계 더 */
  #secGigs>.desc{display:none}
  #secGigs .cal-wk,#secGigs .cal-cell{min-height:40px}
  #secGigs .cal-strip{display:none}
}

/* ══════════════════════════════════════════════════════════════
   @layer theme — 그래파이트 소프트 (시안 1c, 2026-09-03 대표 확정)
   기존 layout/components 정의를 지우지 않고 외형만 덮는다.
   레이어 순서상 마지막이므로 여기 선언이 최종 승자다.
   ══════════════════════════════════════════════════════════════ */
/* ── 그래파이트 소프트 최종 오버라이드 (레이어 밖 = 캐스케이드 최우선) ── */
/* ── 대시보드 지표 · 달력 · 리스트 ── */
.stat-row{gap:9px;margin-bottom:18px}
.stat{border:0;background:var(--surface);border-radius:var(--r-card);
  padding:11px 13px;border-left-width:0;box-shadow:none}
.stat .n,.stat b,.stat strong{font-family:'JetBrains Mono',monospace;
  font-size:22px;color:var(--tx);font-weight:500;letter-spacing:-.02em}
.stat .l,.stat small,.stat span{font-size:10.5px;color:var(--tx4)}
.stat.hi{background:var(--dark)}
.stat.hi .n,.stat.hi b,.stat.hi strong{color:var(--gold-l)}
.stat.hi .l,.stat.hi small,.stat.hi span{color:var(--tx-on-dark-2)}
.dash-item{border:0;background:var(--surface);border-radius:var(--r-card);
  padding:11px 13px;margin-bottom:8px}
.dash-item:hover{background:#FAFAF8}
.adm-bar{gap:9px}
.adm-bar>*{border:0;border-radius:var(--r-card);background:var(--dark);box-shadow:none}

.cal-wrap,#dsCalWrap{background:var(--surface);border:0;border-radius:var(--r-card);
  padding:14px;box-shadow:none}
.cal-grid,.cal-dows,.cal-weeks{border:0;border-radius:0;background:var(--line)}
.cal-weeks{border-radius:0 0 var(--r-card) var(--r-card);overflow:hidden}
.cal-dows{border-radius:var(--r-card) var(--r-card) 0 0;overflow:hidden}
.cal-dow{background:var(--bg4);letter-spacing:0;font-size:11px;
  font-weight:600;color:var(--tx3);padding:8px 2px}
.cal-cell{background:var(--surface)}
.cal-head{margin-bottom:12px}
.cal-mon{font-family:'JetBrains Mono',monospace;font-size:19px;
  font-weight:700;letter-spacing:-.01em;color:var(--tx)}

/* ── 섹션 제목 마커 잔여 공백 제거 ── */
.sec h2::before{content:none}

/* ── 사이드바 아이콘 제거 (스펙 §7-1) ── */
.nt .ic,.sb-out .ic{display:none}
.nt{padding-left:12px}
#navHead{font-family:'JetBrains Mono',monospace;font-size:9px;
  letter-spacing:.22em;color:var(--tx4);padding:0 8px 8px;text-transform:uppercase}

/* ── 우측 패널 라벨: 대문자 자간 해제 ── */
.panel-h,[data-lbl]::before{text-transform:none;letter-spacing:0}
[data-lbl]::before{font-size:10.5px;color:var(--tx4);font-weight:600}



  /* ── 지면 ── */
  body{background:var(--bg);color:var(--tx);font-size:var(--fs)}

  /* ── 굵은 검정 테두리 일괄 해제 (구 터미널 외형의 핵심) ── */
  .topbar,.sidebar,.rightbar,.panel,.tbl,.card,.box,.modal-card,
  .mini .m,.sec,.wrap{border-color:var(--line)}

  /* ── 상단바 ── */
  .topbar{background:var(--dark);color:var(--tx-on-dark);
    border-bottom:0;height:var(--tbh);padding:0 18px;gap:14px;box-shadow:none}
  .topbar .logo{font-family:'JetBrains Mono',monospace;font-size:12px;
    font-weight:700;letter-spacing:.18em;color:var(--tx-on-dark)}
  .topbar .logo .gold,.topbar .logo b{color:var(--gold);font-weight:700}
  .topbar .ver,.topbar .sub{color:var(--tx-on-dark-2);font-size:10.5px;
    font-family:'JetBrains Mono',monospace;letter-spacing:.04em}
  .topbar .who,.topbar .whoName,.topbar span{color:var(--tx-on-dark-2)}
  .topbar .btn{font-size:11.5px;color:var(--tx-on-dark-2);
    border:1px solid var(--line-dark);border-radius:5px;padding:5px 10px;
    background:transparent;min-height:0}
  .topbar .btn:hover{background:#2A2A27;color:var(--tx-on-dark)}
  .topbar .btn.danger{color:#D8B77A;border-color:var(--line-dark)}
  .topbar .badge,.badge.role,.badge.ft,.badge.dn{background:var(--gold);
    color:var(--dark);border-radius:3px;padding:2px 7px;font-size:9px;
    font-weight:700;font-family:'JetBrains Mono',monospace;border:0}

  /* ── 셸 ── */
  .shell{grid-template-columns:var(--sbw) minmax(0,1fr) var(--rbw)}
  .main{padding:20px 22px 56px;display:flex;flex-direction:column;gap:14px;
    background:var(--bg)}

  /* ── 사이드바 ── */
  .sidebar{background:var(--bg2);border-right:0;padding:14px 10px;gap:2px}
  .nav{padding:0}
  .nav-h{font-family:'JetBrains Mono',monospace;font-size:9px;
    letter-spacing:.22em;color:var(--tx4);padding:0 8px 8px;border:0;background:none}
  .nt{padding:8px 10px;font-size:13px;color:var(--tx2);border-radius:var(--r);
    min-height:36px;border:0;background:none;font-weight:500}
  .nt:hover{background:#F4F4F2}
  .nt.on{background:var(--dark);color:var(--tx-on-dark);font-weight:700}
  .nt .ct{margin-left:auto;background:var(--gold);color:var(--dark);
    border-radius:var(--r-pill);padding:0 6px;font-weight:700;font-size:10px;
    font-family:'JetBrains Mono',monospace;min-width:18px;text-align:center}
  .nt.on .ct{background:var(--gold-l)}
  .sb-server{margin-top:auto;background:var(--bg);border-radius:var(--r);
    padding:10px 11px;gap:8px;border:0;
    font-family:'JetBrains Mono',monospace;font-size:10px;color:#5A584F}
  .srv-dot{width:6px;height:6px;border-radius:50%;background:var(--gold-d)}

  /* ── 버튼 ── */
  .btn{font-family:inherit;font-size:11.5px;border-radius:var(--r);
    padding:8px 13px;min-height:36px;border:1px solid var(--line2);
    background:var(--surface);color:var(--tx2);font-weight:600;box-shadow:none}
  .btn:hover{background:#FAFAF8;border-color:var(--tx4)}
  .btn.pri{background:var(--gold);border-color:var(--gold);
    color:var(--dark);font-weight:700}
  .btn.pri:hover{background:var(--gold-l);border-color:var(--gold-l)}
  .btn.dark{background:var(--dark);border-color:var(--dark);color:var(--tx-on-dark)}
  .btn.wide{width:100%;min-height:44px;font-size:13px;font-weight:800;
    border-radius:7px;padding:14px 0}
  .btn.danger{border-color:var(--red);color:var(--red);background:var(--surface)}
  .btn.sm{min-height:30px;padding:5px 10px;font-size:11px}

  /* ── 지표 카드 ── */
  .mini{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
  .mini .m{background:var(--surface);border-radius:var(--r-card);
    padding:11px 13px;border:0;box-shadow:none}
  .mini .m.hi{background:var(--dark)}
  .mini .n{font-family:'JetBrains Mono',monospace;font-size:22px;
    color:var(--tx);font-weight:500;letter-spacing:-.02em}
  .mini .m.hi .n{color:var(--gold-l)}
  .mini .l{font-size:10.5px;color:var(--tx4);letter-spacing:0}
  .mini .m.hi .l{color:var(--tx-on-dark-2)}

  /* ── 목록 = 테이블 ── */
  .tbl{background:var(--surface);border-radius:var(--r-card);
    overflow:hidden;border:0;box-shadow:none}
  .tbl .hd{font-family:'JetBrains Mono',monospace;font-size:9px;
    letter-spacing:.14em;color:var(--tx4);padding:9px 14px;
    border-bottom:1px solid var(--line);background:var(--surface);font-weight:500}
  .tbl .row{padding:11px 14px;border-bottom:1px solid var(--bg4);background:none}
  .tbl .row:last-child{border-bottom:0}
  .tbl .row:hover{background:#FAFAF8}
  .tbl .t{font-size:13.5px;font-weight:600;color:var(--tx);letter-spacing:-.01em}
  .tbl .s{font-size:11px;color:var(--tx4)}
  .num{font-family:'JetBrains Mono',monospace;font-size:13px;text-align:right;
    color:var(--tx2)}

  /* ── 상태 배지 ── */
  .badge{font-size:10px;font-weight:700;border-radius:4px;padding:3px 7px;border:0}
  .badge.urg{background:var(--st-urg-bg);color:var(--st-urg)}
  .badge.open{background:var(--st-open-bg);color:var(--st-open)}
  .badge.closed{background:var(--st-closed-bg);color:var(--st-closed)}
  .badge.draft{background:var(--st-draft-bg);color:var(--st-draft)}
  .badge.filled{background:var(--st-filled-bg);color:var(--st-filled)}
  .badge.line{background:var(--bg3);color:var(--tx3)}
  .badge.ok{background:var(--st-open-bg);color:var(--st-open)}

  /* ── 입력 ── */
  .fld label,.fld>label{font-size:11px;color:var(--tx4);margin-bottom:5px;
    display:block;letter-spacing:0;text-transform:none}
  .inp,input[type=text],input[type=email],input[type=password],
  input[type=number],input[type=date],select,textarea{
    width:100%;font-family:inherit;font-size:16px;padding:11px 12px;min-height:44px;
    background:var(--bg);border:1px solid transparent;border-radius:7px;color:var(--tx)}
  .inp:focus,input:focus,select:focus,textarea:focus{outline:none;
    background:var(--surface);border-color:var(--gold);
    box-shadow:0 0 0 3px rgba(201,169,97,.2)}

  /* ── 우측바 · 패널 ── */
  .rightbar{background:var(--bg2);border-left:0;padding:16px 14px;gap:11px}
  .panel,.box{background:var(--surface);border-radius:var(--r-card);
    overflow:hidden;border:0;box-shadow:none}
  .panel-h{font-size:10.5px;color:var(--tx4);padding:9px 13px;
    border-bottom:1px solid var(--line);letter-spacing:0;
    background:var(--surface);font-weight:600}
  .panel-b{padding:11px 13px}
  .clockbig{font-family:'JetBrains Mono',monospace;font-size:29px;
    line-height:1;color:var(--tx);letter-spacing:-.02em}
  .clockbig .s{font-size:16px;color:var(--tx4)}
  .lg{gap:9px;padding:8px 13px;font-size:11.5px;border-bottom:1px solid #F5F4F0}
  .lg .t{font-family:'JetBrains Mono',monospace;font-size:10px;color:#B0AEA6}
  .lg.gold .m{color:var(--gold-d)}

  /* ── 모달 — 흰 카드 1단 그림자 ── */
  .modal-card{background:var(--surface);border:0;border-radius:12px;
    box-shadow:var(--shadow-card)}
  .modal-foot{border-top:1px solid var(--line);background:var(--surface)}
  .term-hd{background:var(--surface);border-bottom:1px solid var(--line);
    color:var(--tx3);font-size:10.5px;letter-spacing:0;font-weight:600}

  /* ── 로그인 ── */
  .auth-card,#scAuth .card{background:var(--surface);border:0;border-radius:12px;
    box-shadow:var(--shadow-card);padding:28px 26px;max-width:420px}

  /* ── 반응형 ── */

  @media (max-width:860px){
    .shell{grid-template-columns:minmax(0,1fr)}
    .sidebar{position:fixed;inset:var(--tbh) auto 0 0;width:238px;z-index:39;
      transform:translateX(-100%);transition:transform .18s ease}
    .sidebar.open{transform:none;box-shadow:8px 0 24px rgba(20,20,15,.18)}
    .main{padding:16px 14px 56px}
    .mini{grid-template-columns:repeat(2,1fr)}
    .tbl{background:none}
    .tbl .hd{display:none}
    .tbl .row{display:block;background:var(--surface);
      border-radius:var(--r-card);padding:11px 13px;border:0;margin-bottom:8px}
  }
  @media (max-width:520px){
    .topbar .logo{font-size:11px;letter-spacing:.08em}
    .main{padding:14px 12px 56px}
    .mini{grid-template-columns:repeat(2,1fr);gap:8px}
  }
  /* ── 시안 1c 정합 보강 ── */

  /* 목록 = 흰 카드 위 표. 검정 헤더 폐지 */
  .tbl-wrap{border:0;border-radius:var(--r-card);background:var(--surface);
    overflow:hidden;box-shadow:none}
  table{font-size:13px}
  thead th{background:var(--surface);color:var(--tx4);
    font-family:'JetBrains Mono',monospace;font-size:9px;font-weight:500;
    letter-spacing:.14em;text-transform:uppercase;padding:9px 14px;
    border-bottom:1px solid var(--line);white-space:nowrap}
  tbody td{padding:11px 14px;border-bottom:1px solid var(--bg4);
    color:var(--tx2);font-size:13px}
  tbody tr:last-child td{border-bottom:0}
  tbody tr:hover{background:#FAFAF8}
  tbody tr:hover td{color:var(--tx)}
  tbody td:first-child{color:var(--tx);font-weight:600;letter-spacing:-.01em}
  tbody td .num,td.num{font-family:'JetBrains Mono',monospace;text-align:right}

  /* 섹션 제목 */
  .sec>h1,.sec>h2{font-size:19px;font-weight:800;letter-spacing:-.02em;
    color:var(--tx);margin-bottom:3px}
  .sec>.desc{font-size:12.5px;color:var(--tx3);margin-bottom:14px}

  /* 상단바 워드마크 */
  .topbar .logo{letter-spacing:.14em;white-space:nowrap}
  .topbar .logo .r{color:var(--tx-on-dark)}
  .topbar .logo .sl{color:var(--gold);margin:0 1px}
  .topbar .logo .b{color:var(--tx-on-dark)}

  /* 로그인 카드 로고 (구 ASCII 아트 대체) */
  .authmark{display:flex;align-items:center;gap:10px;margin-bottom:18px}
  .authmark .sq{width:26px;height:26px;border-radius:7px;background:var(--dark);
    color:var(--gold);font-family:'JetBrains Mono',monospace;font-weight:700;
    font-size:13px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
  .authmark .wm{font-family:'JetBrains Mono',monospace;font-size:11.5px;
    font-weight:700;letter-spacing:.16em;color:var(--tx2)}
  #vLogin>h1,#vSignup>h1,#vReset>h1,#vNewPw>h1{font-size:22px;font-weight:800;
    letter-spacing:-.02em;margin-bottom:6px}
  #vLogin .sub,#vSignup .sub,#vReset .sub{font-size:12.5px;color:var(--tx3);
    line-height:1.65;margin-bottom:18px}
  .auth-foot{display:flex;gap:14px;justify-content:center;margin-top:14px}
  .auth-foot .btn.ghost{border:0;background:none;color:var(--gold-d);
    font-size:12px;min-height:0;padding:4px 2px;font-weight:600}
  .auth-foot .btn.ghost:hover{color:var(--gold);background:none}

  /* 카드·박스 흰 지면화 */
  .card,.sec>.box,.tbl-wrap,.cal-wrap{background:var(--surface);border:0;
    border-radius:var(--r-card)}



/* ══ 최종 확정 오버라이드 (특정성 상향) ══════════════════════════
   앞선 빌드에서 .topbar 배경이 반영되지 않아 상위 컨테이너를 붙여 못박는다. */
#scApp > .topbar,
div.topbar{
  background:var(--dark);
  color:var(--tx-on-dark);
  border-bottom:0;
  box-shadow:none;
  height:var(--tbh);
  padding:0 18px;
}
#scApp > .topbar .logo,div.topbar .logo{color:var(--tx-on-dark)}
#scApp > .topbar .logo .r,div.topbar .logo .r{color:var(--tx-on-dark)}
#scApp > .topbar .logo .b,div.topbar .logo .b{color:var(--tx-on-dark)}
#scApp > .topbar .logo .sl,div.topbar .logo .sl{color:var(--gold)}
#scApp > .topbar .ver,div.topbar .ver{color:var(--tx-on-dark-2)}
#scApp > .topbar .who,div.topbar .who{color:var(--tx-on-dark-2)}
#scApp > .topbar .btn,div.topbar .btn{
  background:transparent;color:var(--tx-on-dark-2);
  border:1px solid var(--line-dark);border-radius:5px}
#scApp > .topbar .btn:hover,div.topbar .btn:hover{background:#2A2A27;color:var(--tx-on-dark)}
#scApp > .topbar .btn.danger,div.topbar .btn.danger{color:#D8B77A}
#scApp > .topbar .hamb,div.topbar .hamb{color:var(--tx-on-dark-2)}

aside.rightbar,.shell > .rightbar{background:var(--bg2)}
nav.sidebar,.shell > .sidebar{background:var(--bg2)}

/* ── 달력: 날짜 칸 경계를 다시 또렷하게 ──
   격자선을 --line(#EDEBE6)으로 두었더니 흰 셀과 붙어 구분이 사라졌다.
   선 색을 한 단계 진하게 올리고 셀 배경을 흰색으로 확정한다. */
.cal-grid,.cal-dows,.cal-weeks{background:var(--line2);gap:1px}
.cal-weeks .cal-grid,.cal-dows{gap:1px}
.cal-cell{background:var(--surface)}
.cal-cell.out{background:var(--bg4)}
.cal-cell.out .cal-d{color:var(--tx4)}
.cal-cell.today{background:var(--gold-bg)}
.cal-cell.today .cal-d{color:var(--gold-d);font-weight:800}
.cal-dow{background:var(--bg3);color:var(--tx3);font-weight:600}
.cal-dow.sun{color:var(--red)}
.cal-dow.sat{color:var(--gold-d)}
.cal-d{font-family:'JetBrains Mono',monospace;font-size:12px;color:var(--tx2)}

/* ══ 반응형 최적화 v6.50 ══════════════════════════════════════════
   §5 M6 대상 뷰포트 360 / 390 / 768. 겹침·잘림·가로스크롤 0 이 목표. */

/* 데스크톱: 표가 넓으면 래퍼 안에서만 가로 스크롤 (직전 빌드에서 overflow:hidden 으로
   덮여 표 우측이 잘려 있었다. 복구한다.) */
.tbl-wrap{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch}

@media (max-width:1180px){
  .shell{grid-template-columns:var(--sbw) minmax(0,1fr)}
}

@media (max-width:860px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .main{padding:16px 14px 64px}

  /* 표 → 카드 */
  .tbl-wrap{overflow:visible;background:none;border-radius:0;box-shadow:none}
  .tbl-wrap table{min-width:0;width:100%;border-collapse:separate;border-spacing:0}
  .tbl-wrap thead{display:none}
  .tbl-wrap tbody,.tbl-wrap tr,.tbl-wrap td{display:block;width:auto}
  .tbl-wrap tr{background:var(--surface);border-radius:var(--r-card);
    padding:12px 14px;margin-bottom:9px}
  .tbl-wrap tr:hover{background:var(--surface)}
  .tbl-wrap td{border:0;padding:5px 0;font-size:13.5px;color:var(--tx2);
    display:grid;grid-template-columns:76px minmax(0,1fr);gap:10px;align-items:baseline}
  .tbl-wrap td::before{content:attr(data-l);color:var(--tx4);font-size:10px;
    font-family:'JetBrains Mono',monospace;letter-spacing:.08em;
    text-transform:uppercase;white-space:nowrap}
  .tbl-wrap td:first-child{grid-template-columns:minmax(0,1fr);font-size:15px;
    font-weight:700;color:var(--tx);padding:0 0 9px;margin-bottom:5px;
    border-bottom:1px solid var(--bg4)}
  .tbl-wrap td:first-child::before{display:none}
  .tbl-wrap td[colspan]{grid-template-columns:minmax(0,1fr);text-align:left}
  .tbl-wrap td[colspan]::before{display:none}

  /* 지표 2열 */
  .stat-row,.mini{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .adm-bar{grid-template-columns:minmax(0,1fr);display:grid;gap:8px}

  /* 필터·검색 세로 */
  .filters{gap:8px}
  .filters>select,.filters>input,.filters>.inp{width:100%;min-width:0}
  .filters>.btn{width:100%}

  /* 달력 */
  .cal-cell{min-height:56px}
  .cal-d{font-size:11px}
}

@media (max-width:640px){
  .main{padding:14px 12px 64px}
  /* 모달을 바닥에서 올라오는 시트로 */
  .modal{align-items:flex-end;padding:0}
  .modal-card{max-width:100%;width:100%;border-radius:14px 14px 0 0;
    max-height:92dvh;overflow-y:auto;padding:20px 16px calc(20px + env(safe-area-inset-bottom))}
  .modal-foot{position:sticky;bottom:0;background:var(--surface);
    padding:12px 0 4px;margin-top:8px}
  .modal-foot .btn{flex:1;min-height:46px}
  .tbl-wrap td{grid-template-columns:70px minmax(0,1fr)}
}

@media (max-width:400px){
  .main{padding:12px 10px 64px}
  .stat-row,.mini{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
  .tbl-wrap tr{padding:11px 12px}
  .tbl-wrap td{grid-template-columns:64px minmax(0,1fr);gap:8px;font-size:13px}
  .cal-cell{min-height:44px}
}

/* ══ v6.58.3 모바일 최적화 — 라벨 없는 셀의 빈 왼쪽 거터(64~76px) 회수.
   전 테이블 카드가 라벨 자리를 비워둔 채 들여쓰기만 되던 낭비 제거 (대표 지시: 빈칸 축소) ══ */
@media (max-width:860px){
  .tbl-wrap td:not([data-l]){grid-template-columns:minmax(0,1fr)}
  .tbl-wrap td:not([data-l])::before{display:none}
}
@media (max-width:640px){
  /* 인라인 min-width(120~170px)가 좁은 화면에서 스타일시트를 이기는 문제 차단 */
  input.inp,select.inp{min-width:0 !important}
}
.tk-ntc{overflow-wrap:anywhere}
.tk-who{font-size:10px;letter-spacing:.06em;opacity:.72;margin-bottom:3px;font-weight:700}
/* v6.59 — 미충원 현장 강조: 좌측 붉은 띠 + 굵은 테두리 */
.gig-bar.lack{box-shadow:inset 3px 0 0 #A3452F}
#dsCalBar .btn.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
#dsCalDay .dash-item{display:flex;gap:9px;align-items:center;padding:9px 11px;
  border:1px solid var(--line2);border-radius:var(--r);background:var(--bg);width:100%}
/* ══ v6.58 모바일 인재 등급 아코디언 — 기본은 이름·등급 한 줄, 누르면 펼침 (대표 지시) ══ */
@media (max-width:860px){
  #secTalent .tbl-wrap tr{padding:11px 14px}
  #secTalent .tbl-wrap tr:not(.xp) td{display:none}
  #secTalent .tbl-wrap tr:not(.xp) td:first-child{display:grid;border-bottom:0;padding:0;margin-bottom:0}
  #secTalent .tbl-wrap tr:not(.xp) td:first-child::after{content:'▾';float:right;color:var(--tx4);font-size:12px}
  #secTalent .tbl-wrap tr:not(.xp) td:last-child{display:grid;grid-template-columns:minmax(0,1fr);padding:3px 0 0}
  #secTalent .tbl-wrap tr:not(.xp) td:last-child::before{display:none}
  #secTalent .tbl-wrap tr:not(.xp) td[colspan]{display:grid}
  #secTalent .tbl-wrap tr.xp td:first-child::after{content:'▴';float:right;color:var(--tx4);font-size:12px}
}

/* 터치 환경 공통 — PWA 표준 §5 */
@media (hover:none){
  .btn,.nt,button{min-height:44px}
  .btn.sm{min-height:36px}
  input,select,textarea,.inp{font-size:16px}
}

/* 날씨 지역 선택 — 패널 헤더 안에 조용히 들어간다 */
.wx-sel{appearance:none;-webkit-appearance:none;background:transparent;border:0;
  padding:0 14px 0 4px;min-height:0;height:auto;width:auto;
  font-family:inherit;font-size:10.5px;color:var(--tx4);text-align:right;
  cursor:pointer;border-radius:4px;
  background-image:linear-gradient(45deg,transparent 50%,var(--tx4) 50%),
                   linear-gradient(135deg,var(--tx4) 50%,transparent 50%);
  background-position:calc(100% - 6px) center,calc(100% - 3px) center;
  background-size:3px 3px,3px 3px;background-repeat:no-repeat}
.wx-sel:hover{color:var(--tx2)}
.wx-sel:focus{outline:none;box-shadow:0 0 0 2px rgba(201,169,97,.35)}
@media (hover:none){ .wx-sel{font-size:12px;min-height:32px} }

/* ── 라벨 달린 박스: 제목이 테두리 위에 걸치는 구조라 overflow 를 잘라선 안 된다
   (직전 빌드에서 .box{overflow:hidden} 으로 제목이 잘렸다) ── */
.box{overflow:visible}
.panel{overflow:hidden}
.box.lbl,.lbl{position:relative}
.box.lbl::before,.lbl::before{
  background:var(--surface);color:var(--tx3);
  letter-spacing:0;font-size:10.5px;font-weight:700;
  top:-8px;left:14px;padding:0 7px}
.box{padding:22px 18px 18px}

/* ══ 구분선 복구 ══════════════════════════════════════════════════
   스펙 §4 의 입력칸(회색 채움 + 투명 테두리)은 "흰 카드 안"을 전제한 규칙이다.
   이 앱은 필터·검색이 지면 위에 바로 놓이는 화면이 있어, 지면(--bg)과 입력칸이
   같은 색이 되면서 칸 자체가 사라졌다. 문맥에 따라 나눈다. */

/* 지면 위 — 흰 바탕 + 실선 */
.inp,
input[type=text],input[type=email],input[type=password],
input[type=number],input[type=date],input[type=search],
input[type=tel],input[type=url],select,textarea{
  background:var(--surface);
  border:1px solid var(--line2);
  border-radius:7px}

/* 흰 카드 안 — 스펙 §4 그대로 회색 채움 */
.box .inp,.box input,.box select,.box textarea,
.modal-card .inp,.modal-card input,.modal-card select,.modal-card textarea,
.panel .inp,.panel input,.panel select,
#scAuth .inp,#scAuth input,#scAuth select{
  background:var(--bg);
  border-color:transparent}
.box .wx-sel,.panel .wx-sel{background:transparent;border:0}

.inp:focus,input:focus,select:focus,textarea:focus{
  outline:none;background:var(--surface);
  border-color:var(--gold);box-shadow:0 0 0 3px rgba(201,169,97,.2)}

/* 섹션 사이 경계 — 한 화면에 여러 묶음이 이어질 때 */
.sec > h2 ~ h2,
.sec > .gsec > h2{
  border-top:1px solid var(--line2);
  padding-top:26px;margin-top:32px}

/* 필터 묶음 아래 경계 */
.filters{padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:18px}

/* 빈 상태·로딩도 지면에 떠 있지 않게 */
.sec > .empty,.sec > .loading,
.dash-col > div > .empty,.dash-col > div > .loading{
  background:var(--surface);border-radius:var(--r-card);
  padding:28px 16px;text-align:center;color:var(--tx4)}
.tbl-wrap .empty,.tbl-wrap .loading,td .empty,td .loading{
  background:none;padding:22px 14px}

/* 날짜 입력의 달력 아이콘이 옅어 안 보이던 문제 */
input[type=date]::-webkit-calendar-picker-indicator{opacity:.55;cursor:pointer}
input[type=date]::-webkit-calendar-picker-indicator:hover{opacity:1}

/* ══ 달력 실제 구조 정합 ══════════════════════════════════════════
   이 앱의 달력은 .cal-cell 이 아니라 .cal-wk > .cal-hit > div 구조다.
   날짜 칸에 배경이 없어 부모 격자색이 그대로 비쳐 전체가 회색으로 보였다. */
.cal-weeks{background:var(--surface)}
.cal-hit>div{background:var(--surface);border-left:1px solid var(--line)}
.cal-hit>div:first-child{border-left:0}
.cal-hit>div.out{background:var(--bg4)}
.cal-hit>div.today{background:var(--gold-bg)}
.cal-hit>div[data-cd]{cursor:pointer;transition:background .1s}
.cal-hit>div[data-cd]:hover{background:#F6F5F1}
.cal-hit>div.today[data-cd]:hover{background:var(--gold-l)}
.cal-wk{border-top:1px solid var(--line)}
.cal-wk:first-child{border-top:0}
.cal-wk .cal-d{color:var(--tx2);font-weight:600}
.cal-wk .cal-d.out{color:var(--tx4)}

/* 날짜 팝업 안 현장 항목 */
#dayBody .dash-item{display:flex;align-items:center;gap:10px;margin-bottom:8px;
  border:1px solid var(--line);background:var(--surface)}
#dayBody .dash-item:hover{background:#FAFAF8;border-color:var(--line2)}

/* ══ 표 밀도·줄바꿈 최적화 ══════════════════════════════════════════
   인재 등급 목록은 10컬럼이라 기본 밀도로는 폭이 모자란다.
   한글이 낱자로 쪼개지는(예: 동탄 → 동/탄) 것이 가독성을 가장 크게 해쳤다.
   word-break:keep-all 로 단어 단위 줄바꿈을 강제하고, 글자·여백을 단계적으로 줄인다. */
.tbl-wrap table{min-width:700px}
thead th{padding:8px 9px;font-size:8.5px;letter-spacing:.1em}
tbody td{padding:9px 9px;font-size:12.5px;line-height:1.45;
  word-break:keep-all;overflow-wrap:break-word}
tbody td:first-child{font-size:13px}
tbody td .badge,tbody td .num,tbody td .btn{white-space:nowrap}
tbody td .btn.sm{padding:4px 8px;font-size:10.5px;min-height:28px}

/* 우측바를 조금 더 일찍 접어 중앙 폭을 확보한다 */


@media (max-width:1500px){
  thead th{padding:7px 7px;font-size:8px}
  tbody td{padding:8px 7px;font-size:12px}
  tbody td:first-child{font-size:12.5px}
}
@media (max-width:1280px){
  tbody td{padding:7px 6px;font-size:11.5px;line-height:1.4}
  tbody td:first-child{font-size:12px}
  tbody td .badge{font-size:9.5px;padding:2px 5px}
  tbody td .btn.sm{padding:3px 7px;font-size:10px;min-height:26px}
}
@media (max-width:1080px){
  .main{padding:16px 14px 56px}
  tbody td{font-size:11px;padding:6px 5px}
}
/* 모바일 카드 전환 구간에서는 밀도를 다시 풀어 읽기 편하게 되돌린다 */
@media (max-width:860px){
  .tbl-wrap td{font-size:13.5px;padding:5px 0;line-height:1.5}
  .tbl-wrap td:first-child{font-size:15px}
  .tbl-wrap td .btn.sm{min-height:36px;padding:6px 12px;font-size:12px}
}

/* ══ 신호색 적용 ══════════════════════════════════════════════════
   원칙: 판단이 갈리는 축(등급·상태·승인)에만 원색. 정보성 태그(해외·구분)는 회색 유지. */

/* 등급 — 서열이 읽히면서 서로 구분되게 */
.badge.gr-S{background:#1F5F45;color:#fff;border:0}
.badge.gr-A,.badge[class*="gr-A"]{background:var(--sig-info);color:#fff;border:0}
.badge.gr-B,.badge[class*="gr-B"]{background:var(--gold);color:var(--dark);border:0;font-weight:800}
.badge.gr-C{background:var(--sig-warn-bg);color:var(--sig-warn);border:1px solid var(--sig-warn)}
.badge.gr-N{background:transparent;color:var(--tx4);border:1px dashed var(--line2)}
.badge.gr-X{background:var(--sig-danger);color:#fff;border:0}

/* 현장 상태 */
.badge.gs-draft{background:var(--sig-mute-bg);color:var(--sig-mute);border:1px solid var(--line2)}
.badge.gs-open{background:var(--sig-ok);color:#fff;border:0}
.badge.gs-closed{background:var(--sig-danger);color:#fff;border:0}
.badge.gs-filled{background:var(--sig-info);color:#fff;border:0}

/* 계정 승인 상태 */
.badge.ac-pending{background:var(--sig-warn);color:#fff;border:0}
.badge.ac-approved{background:var(--sig-ok);color:#fff;border:0}
.badge.ac-rejected{background:var(--sig-danger);color:#fff;border:0}
.badge.ac-suspended{background:var(--sig-mute);color:#fff;border:0}

/* 지원서 상태 */
.badge.st-new{background:var(--sig-warn);color:#fff;border:0}
.badge.st-review{background:var(--sig-info);color:#fff;border:0}
.badge.st-shortlist{background:var(--gold);color:var(--dark);border:0;font-weight:800}
.badge.st-hired{background:var(--sig-ok);color:#fff;border:0}
.badge.st-rejected{background:var(--sig-danger-bg);color:var(--sig-danger);border:1px solid var(--sig-danger)}
.badge.st-withdrawn{background:var(--sig-mute-bg);color:var(--sig-mute);border:1px solid var(--line2)}

/* 현장 신청 상태 */
.badge.ga-invited{background:var(--sig-warn);color:#fff;border:0}
.badge.ga-applied{background:var(--sig-info-bg);color:var(--sig-info);border:1px solid var(--sig-info)}
.badge.ga-accepted{background:var(--sig-ok);color:#fff;border:0}
.badge.ga-rejected{background:var(--sig-danger-bg);color:var(--sig-danger);border:1px solid var(--sig-danger)}
.badge.ga-cancelled{background:var(--sig-mute-bg);color:var(--sig-mute);border:1px solid var(--line2)}

/* theme 계열(달력 범례 등) */
.badge.urg{background:var(--sig-warn-bg);color:var(--sig-warn);border:1px solid var(--sig-warn)}
.badge.open{background:var(--sig-ok-bg);color:var(--sig-ok);border:1px solid var(--sig-ok)}
.badge.closed{background:var(--sig-danger-bg);color:var(--sig-danger);border:1px solid var(--sig-danger)}
.badge.filled{background:var(--sig-info-bg);color:var(--sig-info);border:1px solid var(--sig-info)}
.badge.draft{background:var(--sig-mute-bg);color:var(--sig-mute);border:1px solid var(--line2)}
.badge.ok{background:var(--sig-ok);color:#fff;border:0}

/* 정보성 태그는 회색 유지 — 여기에 색을 주면 신호가 묻힌다 */
.badge.line,.badge.src,.badge.ft,.badge.dn,.badge.ent-lab,.badge.ent-cop{font-weight:600}
.badge.src{background:var(--bg3);color:var(--tx3);border:1px solid var(--line2)}

/* 지표: 0 은 흐리게, 값이 있으면 진하게 — 눈이 갈 곳을 정한다 */
.stat.zero .n,.mini .m.zero .n{color:var(--tx4);font-weight:400}
.stat:not(.zero) .n,.mini .m:not(.zero) .n{color:var(--tx);font-weight:600}
.stat.hi .n{color:var(--gold-l)}
.stat.alert .n{color:var(--sig-warn)}

/* 달력 막대 — 상태가 색으로 갈린다 */
.gig-bar.st-open{border-left-color:var(--sig-ok);background:var(--sig-ok-bg)}
.gig-bar.st-closed{border-left-color:var(--sig-danger);background:var(--sig-danger-bg)}
.gig-bar.st-filled{border-left-color:var(--sig-info);background:var(--sig-info-bg)}
.gig-bar.st-draft{border-left-color:var(--sig-mute);background:var(--sig-mute-bg)}
.gig-bar.urg{box-shadow:inset 0 0 0 1px var(--sig-warn)}

/* ══ 반응형 최종 정리 (소스 최후미 — 큰 폭 → 작은 폭 순서 고정) ═══════
   [사고] v6.51 에서 @media(max-width:1360px) 를 파일 끝에 추가했는데,
   그 앞에 있던 860px 규칙보다 뒤라 360px 화면에서 1360px 규칙이 이겼다.
   사이드바 자리(182px)가 남은 채 본문이 찌그러져 글자가 세로로 한 자씩 나왔다.
   이후 어떤 규칙이 추가되어도 순서가 깨지지 않도록 여기서 폭 순으로 다시 확정한다. */

/* ══ v6.61.7 — 넓은 화면에서 우측바가 본문 아래로 내려가던 문제 (대표 지시) ══
   종전 임계값 1360px 는 과보수적이었다. 3열 유지에 실제로 필요한 폭은
   사이드바 182 + 본문 768(표 min-width 700 + main padding 68) + 우측바 이므로,
   우측바를 216px 로 좁히면 1166px 부터 3열이 성립한다. 실측 근거로 하단 흘림
   임계값을 1360 → 1120 으로 내리고, 그 사이 구간은 3열을 유지한다.
   앞쪽 1180px 규칙(2열)이 이 구간을 가로채므로 여기서 3열을 명시적으로 복원한다. */
@media (max-width:1360px){
  :root{--rbw:216px}
  .shell{grid-template-columns:var(--sbw) minmax(0,1fr) var(--rbw)}
}

@media (max-width:1120px){
  /* v6.58.8 — 종전에는 우측바를 통째로 숨겨(display:none) 알림·요약을 볼 수 없었다.
     이제 숨기지 않고 본문 아래 가로 카드 줄로 흘려보낸다 (대표 지시) */
  .shell{grid-template-columns:var(--sbw) minmax(0,1fr)}
  .rightbar{grid-column:1 / -1;position:static;height:auto;overflow:visible;
    border-left:0;border-top:2px solid var(--ink);
    display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;
    padding:16px 22px 40px;align-items:start}
  .rightbar .panel{margin:0}
  .rightbar .logbox{max-height:150px}
  #alertBox{max-height:none;overflow:visible}
}
@media (max-width:860px){
  .shell{grid-template-columns:minmax(0,1fr)}
  .rightbar{padding:14px 14px 48px;grid-template-columns:minmax(0,1fr);border-top-width:1px}
  .main{padding:16px 14px 64px;min-width:0}
  .sec{min-width:0}
  .sidebar{position:fixed;inset:var(--tbh) auto 0 0;width:238px;z-index:39;
    transform:translateX(-100%);transition:transform .18s ease}
  .sidebar.open{transform:none;box-shadow:8px 0 24px rgba(20,20,15,.18)}
  .hamb{display:inline-flex}
}
@media (max-width:640px){
  .main{padding:14px 12px 64px}
}
@media (max-width:400px){
  .main{padding:12px 10px 64px}
}

/* 가로 넘침 원천 봉쇄 — 어떤 화면에서도 본문이 컨테이너보다 커지지 않게 */
html,body{max-width:100%;overflow-x:hidden}
.shell,.main,.sec,.tbl-wrap,.box,.panel{min-width:0}
.main>*{max-width:100%}
/* ══ v6.56.3 — 모바일 최적화 (대표 지시: 폰트 축소 포함) ══
   원칙: ① 입력창 16px 유지(iOS 포커스 자동 확대 방지) ② 주 버튼 44px 터치 타깃 유지
        ③ 폭 강제(nowrap·고정 min-width) 신설 금지 — 축소·여백 절감만 한다 */
@media (max-width:640px){
  :root{--fs:12.5px;--sp:10px}
  h2{font-size:17px}
  .desc{font-size:11.5px;line-height:1.6}
  .btn{font-size:11px;padding:10px 13px;letter-spacing:.05em}
  .btn.sm{font-size:10.5px;padding:6px 10px}
  .badge{font-size:9px;padding:2px 6px}
  .hint{font-size:10.5px}
  .dl{grid-template-columns:82px 1fr;gap:6px 10px;font-size:11.5px;margin:12px 0}
  .dl dt{font-size:9.5px}
  table{font-size:11px}
  th{padding:8px 7px;font-size:9px}
  td{padding:8px 7px}
  .box{padding:13px 11px}
  .box.lbl::before{font-size:9px}
  .av-it{padding:9px 10px;gap:8px}
  .post{padding:12px;gap:6px}
  .stat{padding:9px 10px}
  .stat .n{font-size:16px}
  .stat .l{font-size:9.5px}
  .adm-b .v{font-size:19px}
  .adm-b .t,.adm-b .s{font-size:10px}
  .modal-card{padding:16px 13px;border-width:1.5px;box-shadow:5px 5px 0 rgba(13,13,13,.25)}
  .msg{font-size:11.5px;padding:8px 10px}
  .filters{gap:6px}
  .fld label{font-size:10.5px}
  .toast{font-size:12.5px;padding:10px 13px}
}
@media (max-width:400px){
  :root{--fs:12px}
  h2{font-size:15.5px}
  .dl{grid-template-columns:74px 1fr}
  .badge{letter-spacing:0}
}

/* ══ v6.61.1 모바일 압축 (대표 지시: 화면 구성 비효율·스크롤 과다) — 파일 최후미, 폭 내림차순 ══
   원칙: 강제 축소 없음(§5), 입력 16px 유지, 터치 44px 유지. 값 자체를 줄이고 자리를 회수한다 */
@media (max-width:860px){
  /* R1 우측바 시계·날씨 패널 — 폰이 이미 갖고 있다. 알림·내 현황은 유지(v6.58.8 대표 지시) */
  .rightbar > .panel:first-child{display:none}
  .rightbar{padding:10px 12px 40px;gap:9px}
  .rightbar .logbox{max-height:96px}
  /* R2 섹션 상단 인라인 메시지 — 토스트가 대신한다. 메시지가 끼어들며 본문을 밀던 현상 제거 */
  .main .sec > .msg:not(#capBanner):not(#missBanner){display:none!important}
  /* R3 폼 밀도 */
  .fld{margin-bottom:11px}
  .box.lbl{padding-top:14px}
  .sec .desc{margin-bottom:12px}
  .file-slot{padding:10px 10px 9px;text-align:left}
  .file-slot .lb{margin-bottom:6px}
  .file-slot input[type=file].inp{display:none}   /* 네이티브 파일칸 숨김 — [올리기] 버튼이 선택창을 연다 */
  .file-slot .btn{margin-top:0!important}
  .file-slot .fx{margin-top:0!important}
  .file-slot .file-slot{margin-top:6px!important}
  #secProfile .empty,#secApply .empty{padding:9px 10px!important}
  #navInstall{border-top:1px solid var(--line)}
}
/* ══ v6.61.2 모바일 카드형 표 — 셀을 grid 에서 flex 로 (대표 지시: 인재 등급 배지가 폭으로 늘어남).
   grid 셀은 자식 배지·버튼을 열 폭으로 늘리고(justify-items 기본 stretch) float 화살표를 별도 줄로 떨어뜨렸다.
   flex 는 자식이 내용 폭을 유지하고 라벨 뒤에 자연스럽게 흐른다. 라벨 폭·글자 크기는 기존 값 유지 ══ */
@media (max-width:860px){
  /* 표 최소폭 700px(1256행, 미디어쿼리 밖)가 860px 카드 규칙(1071행)보다 뒤에 있어 모바일에서 표가 700px 로 벌어져
     오른쪽이 잘렸다(대표 스크린샷의 배지가 화면 밖까지 이어진 원인). 카드 구간에서는 100% 로 되돌린다 */
  .tbl-wrap table{min-width:0!important;width:100%}
  .tbl-wrap tr{width:auto;max-width:100%}
  .tbl-wrap td{display:flex;flex-wrap:wrap;align-items:center;gap:3px 8px}
  .tbl-wrap td::before{flex:0 0 68px;align-self:center}
  .tbl-wrap td:first-child,.tbl-wrap td:not([data-l]),.tbl-wrap td[colspan]{display:flex}
  .tbl-wrap td .badge,.tbl-wrap td .btn{flex:0 0 auto;width:auto}
  .tbl-wrap td br{display:none}
  /* 인재 등급 접힌 행: [이름 · 해외 · 등급 ▾] 한 줄 */
  #secTalent .tbl-wrap tr:not(.xp){display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
  #secTalent .tbl-wrap tr:not(.xp) td:first-child{display:flex;flex:1 1 auto;min-width:0;padding:0;margin:0;border:0}
  #secTalent .tbl-wrap tr:not(.xp) td:first-child::after{content:none}
  #secTalent .tbl-wrap tr:not(.xp) td:last-child{display:flex;flex:0 0 auto;padding:0;gap:6px}
  #secTalent .tbl-wrap tr:not(.xp) td:last-child::after{content:'\203A';color:var(--tx4);font-size:14px}
  #secTalent .tbl-wrap tr:not(.xp) td:last-child .fs{display:none}
  #secTalent .tbl-wrap tr.xp td:first-child{display:flex}
  #secTalent .tbl-wrap tr.xp td:first-child::after{float:none;margin-left:auto;order:99}
  /* 숫자 카드 5장: 2열(3줄) → 3열(2줄) */
  #tlStats.stat-row,#rvStats.stat-row{grid-template-columns:repeat(3,minmax(0,1fr))}
}
/* ══ v6.61.4 인재 목록 모바일 — 접힌 카드 1줄 요약 + 카드 1탭 = 등급·상세 (대표 지시)
   v6.61.3 의 펼침/접힘 토글과 [등급·상세 열기] 버튼은 중간 단계라 폐지했다 ══ */
.tl-sum{display:none}
@media (max-width:860px){
  #secTalent .tbl-wrap tr:not(.xp){align-items:flex-start}
  #secTalent .tbl-wrap tr:not(.xp) td:first-child{flex:1 1 0%;min-width:0;flex-wrap:wrap;gap:4px 6px}
  #secTalent .tbl-wrap tr:not(.xp) td:last-child{padding-top:2px}
  #secTalent .tbl-wrap tr:not(.xp) .tl-sum{display:block;flex:0 0 100%;font-size:12.5px;font-weight:400;color:var(--tx3);line-height:1.5;word-break:keep-all}
}
@media (max-width:640px){
  /* R4 짧은 칸은 두 칸씩 — 프로필·지원서 한정. 사진·긴 글은 .stack 으로 1열 유지 */
  #secProfile .row2:not(.stack),#secApply .row2:not(.stack){grid-template-columns:1fr 1fr;gap:0 10px}
  #secProfile .row3{grid-template-columns:1fr 1fr 1fr;gap:0 8px}
  #secProfile .row3 .inp,#secProfile .row2:not(.stack) .inp{padding-left:9px;padding-right:9px}
  .nt-box .hint{display:none}   /* 알림 박스 보조 설명 — 제목·버튼만 */
}
/* ══ v6.61.5 — 자동 산정 등급 배지. 담당자가 확정한 등급과 한눈에 갈린다(대표 지시) ══ */
.badge.auto{opacity:.55}
/* ══ v6.61.7 — 목록 정렬·검색 범위 탭 (대표 지시) ══════════════════════════
   표 머리를 눌러 정렬한다. 카드 모드에서는 머리가 숨으므로 정렬 바를 따로 둔다. */
th.srt{cursor:pointer;user-select:none;white-space:nowrap}
th.srt:hover{color:var(--tx2)}
th.srt .ar{margin-left:3px;color:var(--gold-d);font-size:9px}
th.srt.on{color:var(--tx)}
.qscope{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:8px}
.qscope .btn.sm{font-size:10.5px;padding:5px 10px}
.sortbar{display:none;gap:6px;align-items:center;margin-bottom:8px}
.sortbar .inp{min-width:0;flex:1 1 auto}
.sortbar .btn{flex:0 0 auto}
@media (max-width:860px){ .sortbar{display:flex} }
/* == v6.61.8 - 필수 항목 누락 표시 == */
.fld-bad > label,.consent.fld-bad .t{color:var(--red)}
.fld-err{margin:5px 0 0;font-size:11px;line-height:1.55;color:var(--red);
  letter-spacing:-.01em;text-decoration:none;font-weight:600}
.consent.fld-bad + .fld-err{margin:6px 0 12px}
.consent.fld-bad{outline:2px solid var(--red);outline-offset:3px;border-radius:8px}
.chips.inp-err{outline:2px solid var(--red);outline-offset:3px;border-radius:8px}
/* ══ v6.62.0 — 지원자 홈: 공지·대화 두 칸 (대표 지시) ══ */
.home-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin-bottom:18px}
.home-it{padding:9px 0;border-bottom:1px solid var(--bg4);font-size:13px}
.home-it:last-child{border-bottom:0;padding-bottom:0}
.home-it .hint{margin-top:3px}
@media (max-width:640px){ .home-2{grid-template-columns:minmax(0,1fr);gap:10px} }
/* ══ v6.63.1 — 달력 다중 선택 + 모바일 상단바 (대표 지시) ══ */
.cal-cell.pick{background:var(--gold-bg);box-shadow:inset 0 0 0 2px var(--gold-d)}
.cal-cell.pick .cal-d{color:var(--gold-d);font-weight:800}
.pickbar .badge{background:var(--bg3);color:var(--tx2);font-weight:700}
.pickbar{position:sticky;bottom:0;z-index:5;background:var(--bg);
  padding:9px 0;border-top:1px solid var(--line2);align-items:center}
.pickbar.hide{display:none}

/* 지원자 상단바는 ≤480px 에서 [새로고침][계정][등급 안내] 3개가 폭을 넘겨
   가로로 잘렸다(360·375 실측 barScroll=true). 라벨을 줄여 한 줄에 담는다. */
@media (max-width:480px){
  .topbar{gap:4px;padding-left:8px;padding-right:8px}
  .topbar .btn.sm{padding:8px 9px;letter-spacing:0}
  #btnSync{font-size:0}
  #btnSync::after{content:'\21BB';font-size:15px;line-height:1}
  #btnPatch{max-width:74px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}
@media (max-width:400px){
  .cal-tools .btn.sm,.pickbar .btn.sm{font-size:10.5px;padding:7px 9px}
}
/* ══ v6.63.2 — 지원자 알림 목록 ══ */
.al-it{padding:11px 13px;border:1px solid var(--line2);border-radius:var(--r);
  background:var(--surface);margin-bottom:8px;cursor:pointer}
.al-it:hover{border-color:var(--gold-d)}
.al-it.un{box-shadow:inset 3px 0 0 var(--gold-d)}
.al-it b{overflow-wrap:anywhere}
@media (max-width:640px){ .al-it{padding:10px 11px} }

/* v6.72.0 등급 일괄 편집 */

/* v6.72.0 순위 칩 */
.chip .rk{display:inline-block;font-size:10px;padding:1px 6px;border-radius:9px;background:var(--gold);color:#2b2410;margin-right:4px}

/* v6.72.0 대화 삭제·이모티콘 */
.tk-x{background:none;border:0;padding:0;font:inherit;font-size:11px;color:inherit;opacity:.7;cursor:pointer;text-decoration:underline}
.tk-b.tk-del{opacity:.75}
.emo-bar{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 6px}
.emo{font-size:18px;line-height:1;padding:4px 6px;border:1px solid var(--line2);border-radius:6px;background:var(--bg2,transparent);cursor:pointer}
.emo:hover{border-color:var(--gold-d)}

/* ══ v6.72.0 모바일 최적화 (대표 지시: 휴대폰 이용자 다수) — PWA 표준 §5 본문 14px·터치 44px ══ */
@media (max-width:860px){
  /* 칩(공종 순위·특기·지역·제공 사항): 손가락 표적 44px, 글자 13px, 줄 간격 */
  .chips{gap:8px}
  .chip{min-height:44px;font-size:13.5px;padding:9px 13px;line-height:1.3}
  .chip .rk{font-size:11px;padding:2px 7px}
  /* 이모티콘 바: 한 줄 가로 스크롤, 표적 44px */
  .emo-bar{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:4px;scrollbar-width:none}
  .emo-bar::-webkit-scrollbar{display:none}
  .emo{font-size:22px;min-width:44px;min-height:44px;padding:6px 8px;flex:none}
  /* 대화 입력: 세로 배치 */
  .tk-send{flex-direction:column;align-items:stretch}
  .tk-send .btn{width:100%;min-height:48px}
  .tk-b{max-width:88%;font-size:14.5px}
  .tk-x{font-size:12px;padding:6px 4px;margin:-6px 0}
  /* 서류·사진 업로드: 버튼 전체 폭 */
  .fld .fx .btn.sm{flex:1 1 auto;min-height:46px}
  .file-row{flex-wrap:wrap}
  /* 모달: 아래에서 올라오는 시트 */
  .modal{padding:0;align-items:flex-end}
  .modal-card{max-width:none;border-radius:16px 16px 0 0;max-height:92vh;overflow-y:auto;
    padding:18px 16px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -8px 24px rgba(13,13,13,.18)}
  .modal-foot{position:sticky;bottom:0;padding-top:10px;margin-top:10px}
  .modal-foot .btn{min-height:48px;flex:1 1 auto}
  /* 프로필 저장 버튼: 화면 아래 고정 */
  #btnPfSave{position:sticky;bottom:calc(10px + env(safe-area-inset-bottom));z-index:5;min-height:52px;
    box-shadow:0 6px 18px rgba(13,13,13,.22)}
  /* 요청·제안 카드 버튼 */
  .rq-it .btn.sm{min-height:46px;flex:1 1 auto}
  .rq-it b.kr{font-size:15px}
  /* 일정 관리 select·긴 옵션 */
  #gmWf,#gmMinGrade{font-size:15px}
  /* 대시보드 워크플로우 표는 카드로 (data-l 사용) */
  .badge{font-size:11.5px;padding:3px 8px}
}
@media (max-width:480px){
  .chip{flex:1 1 calc(50% - 8px);text-align:center}
  #pfRoles .chip,#gmPerks .chip{flex:1 1 calc(50% - 8px)}
  #pfPrefRegions .chip{flex:1 1 calc(33.33% - 8px)}
  .modal-card h1{font-size:16px}
}

/* v6.72.0 지원자 접기 섹션 */
details.fold{border:1px solid var(--line2);border-radius:var(--r-card,10px);background:var(--surface,var(--bg));margin:0 0 14px}
details.fold>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:8px;padding:12px 14px;font-weight:800;font-size:14px;min-height:46px}
details.fold>summary::-webkit-details-marker{display:none}
details.fold>summary::before{content:'▸';font-size:12px;color:var(--tx3);transition:transform .15s}
details.fold[open]>summary::before{transform:rotate(90deg)}
details.fold>summary .ct{margin-left:auto;font-size:11px;padding:2px 8px;border-radius:9px;background:var(--gold);color:#2b2410;font-weight:800}
details.fold>summary .ct:empty{display:none}
details.fold>.sub-sec{display:block;padding:0 14px 14px}
details.fold>.sub-sec>.desc{margin-top:0}

/* ══ v6.72.1 인재 목록 좌측 본인 사진 (대표 지시) — 사진 없으면 이니셜 원 ══ */
#secTalent .tl-av{display:inline-flex;align-items:center;justify-content:center;flex:0 0 36px;width:36px;height:36px;border-radius:50%;overflow:hidden;
  background:var(--bg3);border:1px solid var(--line);color:var(--tx3);font-size:14px;font-weight:700;vertical-align:middle;margin-right:8px}
#secTalent .tl-av img{width:100%;height:100%;object-fit:cover;display:block}
#secTalent .tl-tx{vertical-align:middle}
#secTalent .tbl-wrap tr[data-tal] td:first-child{white-space:normal}
@media (max-width:860px){
  #secTalent .tbl-wrap tr:not(.xp) td:first-child{flex-wrap:nowrap;align-items:flex-start;gap:0 10px}
  #secTalent .tl-av{flex:0 0 44px;width:44px;height:44px;margin:0;font-size:16px}
  #secTalent .tl-tx{flex:1 1 0%;min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px}
  #secTalent .tbl-wrap tr:not(.xp) .tl-tx .tl-sum{display:block;flex:0 0 100%}
}
/* 라이트박스 — 하단 시트 모달(z 9990) 위에 확실히 올린다 */
#lbOverlay,#dvOverlay{z-index:99990}

/* ══ v6.72.2 처리·평가 이력 카드화 — 모바일 최적화 (대표 지시) ══ */
.hist{display:grid;gap:8px}
.hist-it{border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;background:var(--bg2,var(--bg))}
.hist-hd{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px}
.hist-t{font-size:11px;color:var(--tx4);white-space:nowrap;font-variant-numeric:tabular-nums}
.hist-by{margin-left:auto;font-size:11px;color:var(--tx4);white-space:nowrap}
.hist-bd{line-height:1.55;word-break:keep-all;overflow-wrap:anywhere}
.hist-bd .hc{display:flex;flex-wrap:wrap;gap:2px 6px;align-items:baseline;padding:2px 0}
.hist-bd .hc+.hc{border-top:1px dashed var(--line)}
.hist-bd .hc-f{flex:0 0 100%;font-size:11px;color:var(--blue);font-weight:700;letter-spacing:.04em}
.hist-bd .hc-o{color:var(--tx3);text-decoration:line-through;text-decoration-color:var(--tx4)}
.hist-bd .hc-ar{color:var(--tx4)}
.hist-bd .hc-n{color:var(--tx)}
@media (max-width:860px){
  /* 이력 칸은 dt 폭에 갇히지 않게 전폭으로 */
  #tdBody dt:has(+ dd#tdHist){grid-column:1/-1;margin-top:4px}
  #tdBody dd#tdHist{grid-column:1/-1;word-break:normal}
  .hist-it{padding:9px 11px}
  .hist-hd{gap:6px}
  .hist-t{font-size:11.5px}
}

/* ══ v6.73.0 지원자 8메뉴 (대표 승인) — 홈 요약 카드 · 탭 · 모바일 하단 탭 ══ */
.home-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:14px 0 4px}
.hc-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 14px 12px;border:1px solid var(--line);border-radius:var(--r);
  background:var(--surface,var(--bg));cursor:pointer;text-align:left;font-family:inherit;min-height:44px}
.hc-card:hover{border-color:var(--gold)}
.hc-card .n{font-size:24px;font-weight:800;line-height:1;color:var(--tx)}
.hc-card .l{font-size:11.5px;color:var(--tx3)}
.seg-tabs .btn .ct:empty{display:none}
.seg-tabs .btn .ct{margin-left:4px;font-size:10px;padding:1px 6px;border-radius:9px;background:var(--gold);color:#2b2410;font-weight:800}
.btab{display:none}
@media (max-width:860px){
  .home-cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .hc-card{padding:12px 12px 10px}
  .hc-card .n{font-size:22px}
  .btab{position:fixed;left:0;right:0;bottom:0;z-index:45;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));
    background:var(--bg);border-top:1px solid var(--line);padding:4px 4px calc(4px + env(safe-area-inset-bottom))}
  .btab.hide{display:none}
  .btab .bt{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:50px;
    border:0;background:transparent;color:var(--tx3);font-family:inherit;font-size:10.5px;cursor:pointer;border-radius:8px}
  .btab .bt .ic{font-size:17px;line-height:1}
  .btab .bt.on{color:var(--tx);font-weight:800}
  .btab .bt.on .ic{color:var(--gold-d,var(--gold))}
  .btab .bt .ct:empty{display:none}
  .btab .bt .ct{position:absolute;top:4px;right:calc(50% - 22px);font-size:9.5px;padding:1px 5px;border-radius:8px;background:var(--gold);color:#2b2410;font-weight:800}
  body.has-btab{padding-bottom:calc(64px + env(safe-area-inset-bottom))}
  body.has-btab #toastHost{bottom:calc(72px + env(safe-area-inset-bottom))}
  body.has-btab .modal-foot{padding-bottom:calc(10px + env(safe-area-inset-bottom))}
  body.has-btab #btnPfSave{bottom:calc(66px + env(safe-area-inset-bottom))}
}

/* ══ v6.72.3 인재 목록 요약 칩 + PC 사진 확대 (대표 지시) ══ */
#secTalent .tl-gr{display:none}
#secTalent .tl-av{flex-basis:40px;width:40px;height:40px;font-size:15px}
@media (max-width:860px){
  #secTalent .tl-gr{display:inline-flex;margin-left:auto}
  #secTalent .tl-av{flex-basis:48px;width:48px;height:48px;font-size:17px}
  #secTalent .tbl-wrap tr:not(.xp) .tl-tx .tl-sum{display:flex;flex-wrap:wrap;gap:4px 5px;margin-top:3px;font-size:12px;line-height:1.3}
  .ts{display:inline-flex;align-items:center;padding:3px 8px;border-radius:999px;background:var(--bg3);color:var(--tx2);font-weight:500;white-space:nowrap}
  .ts-ent{background:var(--ink,#1a1a1a);color:#fff;font-weight:600}
  .ts-loc{background:#E8EEF5;color:#2F4F73}
  .ts-lv{background:#E6EFE8;color:#2E5A3A;font-weight:600}
  .ts-snr{background:#F3EDE4;color:#5C4A36;font-weight:700;border:1px solid #A8947B}   /* v6.101.0 시니어 — 브랜드 Natural Beige */
  .ts-snr.ok{background:#7E6D5C;color:#fff;border-color:#7E6D5C}
  .ts-pay{background:var(--gold-bg);color:#6B5B2E;font-weight:800;border:1px solid var(--gold-l)}
  .ts-doc{background:transparent;border:1px solid var(--line);color:var(--tx3)}
  .ts-none{background:transparent;color:var(--tx4);font-style:italic}
}

/* ══ v6.74.0 사전 모집 ══ */
.pool-form{margin-top:10px;padding:10px;border:1px dashed var(--line);border-radius:var(--r);background:var(--bg3)}
.pool-form .row2{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}
@media (max-width:640px){ .pool-form .row2{grid-template-columns:1fr} }

/* v6.74.2 — 하단 탭 아이콘 제거(대표 지시), 글자만 */
.btab .bt{min-height:52px;gap:0}
.btab .bt .l{font-size:12.5px;font-weight:700;letter-spacing:-.01em}
.btab .bt.on .l{color:var(--gold-d,#8a6d1f)}

/* ══ v6.75.0 홈 캘린더 — 5상태 ══ */
.hc-legend{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:11.5px;color:var(--tx3);margin-bottom:8px}
.hc-legend span{display:inline-flex;align-items:center;gap:4px}
.hc-legend .hm{display:inline-block;width:12px;height:12px;border-radius:3px;border:1px solid var(--line)}
.hm-av,.avm.hm-av{background:#E0F2FE;color:#0E7490;border-color:#0E7490}
.hm-open,.avm.hm-open{background:transparent;color:#993C1D;border:1.5px solid #D85A30}
.hm-app,.avm.hm-app{background:#FAEEDA;color:#854F0B;border-color:#BA7517}
.hm-req,.avm.hm-req{background:#EEEDFE;color:#3C3489;border-color:#7F77DD}
.hm-fix,.avm.hm-fix{background:var(--gold);color:#2b2410;border-color:var(--gold-d)}
.avm.hm-more{background:var(--bg3);color:var(--tx3);border:1px solid var(--line)}
.badge.hm-av{background:#E0F2FE;color:#0E7490;border:1px solid #0E7490}
.badge.hm-open{background:#FAECE7;color:#993C1D;border:1px solid #D85A30}
.badge.hm-app{background:#FAEEDA;color:#854F0B;border:1px solid #BA7517}
.badge.hm-req{background:#EEEDFE;color:#3C3489;border:1px solid #7F77DD}
.badge.hm-fix{background:var(--gold);color:#2b2410;border:1px solid var(--gold-d)}

/* v6.83.0 마감 · 기록 */
.badge.hm-past{background:var(--bg3);color:var(--tx3);border:1px solid var(--line2)}
.hd-it.past{opacity:.82}
.file-row.past{opacity:.85}
.hc-grid .cal-cell{min-height:74px;cursor:pointer;text-align:left;border:0;font:inherit}
.hc-grid .cal-cell.sel{outline:2px solid var(--ink);outline-offset:-2px}
.hc-grid .cal-cell.has .cal-d{font-weight:800}
.hc-grid .cal-cell:disabled{cursor:default;opacity:.55}
.hc-day{margin-top:10px;border-top:1px solid var(--line);padding-top:10px}
.hd-title{font-size:12px;font-weight:700;color:var(--tx3);margin-bottom:6px}
.hd-it{border:1px solid var(--line);border-radius:var(--r);padding:9px 11px;margin-bottom:8px;background:var(--surface)}
.hd-it.fix{border-color:var(--gold-d)} .hd-it.open{border-color:#D85A30;border-style:dashed}
.hd-hd{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:3px}
@media (max-width:640px){ .hc-grid .cal-cell{min-height:64px;padding:4px 3px 5px} .hc-grid .cal-cell .avm{font-size:9.5px;padding:1px 3px} .hc-legend{gap:4px 9px;font-size:11px} }

/* ══════════════════════════════════════════════════════════════════
   v6.76.0 — 달력 재설계 + 글래스모피즘 (대표 승인 2026-09-06)
   · 홈 달력 = 보는 달력(색 점) / 출근 가능일 = 칠하는 달력(칸 전체 색)
   · 레트로 잔재 제거: 잉크 테두리·오프셋 그림자·12개월 스트립·텍스트 칩·◀▶ 문자 버튼
   · 이 블록이 앞선 .cal-* 3겹을 최종 덮어쓴다. 미디어쿼리는 내림차순으로 파일 끝에 둔다.
   ══════════════════════════════════════════════════════════════════ */
:root{
  --glass-bg:rgba(255,255,255,.58); --glass-line:rgba(255,255,255,.72); --glass-shadow:0 10px 30px rgba(28,28,27,.07);
  --av-full-bg:#E1F5EE; --av-full-tx:#085041; --av-full-ln:#1D9E75;
  --av-am-bg:#E6F1FB;   --av-am-tx:#0C447C;   --av-am-ln:#378ADD;
  --av-pm-bg:#FAEEDA;   --av-pm-tx:#412402;   --av-pm-ln:#EF9F27;
  --av-night-bg:#E2E8F0;--av-night-tx:#1E293B;--av-night-ln:#475569;
  --av-fix-bg:var(--gold-bg); --av-fix-tx:#5C4A1E; --av-fix-ln:var(--gold-d);
}
/* 배경 앰비언트 — 글래스가 "유리"로 읽히려면 뒤에 색이 있어야 한다. 정적 그라데이션 2개, 애니메이션 없음 */
#scApp{background:
  radial-gradient(720px 420px at 88% -8%, rgba(201,169,97,.20), transparent 62%),
  radial-gradient(560px 560px at -12% 46%, rgba(29,158,117,.11), transparent 60%),
  radial-gradient(420px 380px at 70% 110%, rgba(55,138,221,.09), transparent 60%),
  var(--bg)}
.glass{background:var(--glass-bg);-webkit-backdrop-filter:blur(18px) saturate(150%);backdrop-filter:blur(18px) saturate(150%);
  border:1px solid var(--glass-line);box-shadow:var(--glass-shadow),inset 0 1px 0 rgba(255,255,255,.75);border-radius:16px}
@supports not (backdrop-filter:blur(1px)){ .glass{background:rgba(255,255,255,.88)} }
.cal-box{padding:14px 14px 12px}
.cal-box .msg:empty{display:none}
/* 머리 */
.cal-head{display:flex;align-items:center;gap:8px;margin:0 0 10px;flex-wrap:wrap}
.cal-mon{font-size:18px;font-weight:800;letter-spacing:.02em;min-width:0;font-variant-numeric:tabular-nums}
.cal-count{font-size:12px;color:var(--tx3)}
.ico-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:12px;border:1px solid var(--line2);
  background:var(--surface);color:var(--tx);cursor:pointer;padding:0;font:inherit}
.ico-btn:hover{border-color:var(--gold-d);background:var(--gold-bg)}
.ico-btn svg{display:block}
/* 격자 — 잉크 테두리·1px 배경선 제거, 카드형 칸 */
.cal-grid,.hc-grid,.av-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px;background:transparent;border:0;padding:0}
.cal-grid .cal-dow{background:transparent;padding:4px 0 6px;font-size:11.5px;font-weight:600;letter-spacing:.02em;color:var(--tx3)}
.cal-grid .cal-dow.sun{color:#A32D2D} .cal-grid .cal-dow.sat{color:var(--gold-d)}
.cal-grid .cal-cell{background:var(--surface);border:1px solid var(--line);border-radius:12px;min-height:48px;padding:0;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font:inherit;cursor:pointer;
  transition:transform .08s,background .12s,border-color .12s;-webkit-tap-highlight-color:transparent}
.cal-grid .cal-cell:active{transform:scale(.96)}
.cal-grid .cal-cell.out{background:transparent;border-color:transparent;cursor:default}
.cal-grid .cal-cell:disabled{cursor:default}
.cal-grid .cal-cell.out .cal-d{color:var(--tx4)}
.cal-grid .cal-d{font-size:14px;font-weight:600;color:var(--tx);line-height:1}
.cal-grid .cal-cell.today{border-color:var(--gold-d);box-shadow:inset 0 0 0 1px var(--gold-d)}
.cal-grid .cal-cell.today .cal-d{color:var(--gold-d);font-weight:800}
/* 범례(점) */
.cal-legend{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:11.5px;color:var(--tx3);margin:0 0 10px}
.cal-legend span{display:inline-flex;align-items:center;gap:5px}
.dt{display:inline-block;width:7px;height:7px;border-radius:50%;flex:none}
.dt.hm-av{background:var(--av-full-ln)} .dt.hm-open{background:#D85A30} .dt.hm-app{background:#EF9F27} .dt.hm-req{background:#7F77DD} .dt.hm-fix{background:var(--gold-d)} .dt.hm-past{background:var(--tx4)}
.dt.av-full{background:var(--av-full-ln)} .dt.av-am{background:var(--av-am-ln)} .dt.av-pm{background:var(--av-pm-ln)} .dt.av-night{background:var(--av-night-ln)} .dt.av-fix{background:var(--av-fix-ln)}
/* ── 홈: 보는 달력 ── */
.hc-grid .cal-cell{min-height:52px;text-align:center;border:1px solid var(--line)}
.hc-grid .cal-cell .dots{display:flex;gap:3px;height:7px;align-items:center}
.hc-grid .cal-cell.has .cal-d{font-weight:800}
.hc-grid .cal-cell.fix{background:var(--av-fix-bg);border-color:var(--av-fix-ln)}
.hc-grid .cal-cell.sel{outline:2px solid var(--ink);outline-offset:-2px;background:var(--bg3)}
.hc-grid .cal-cell:disabled{opacity:.45}
.hc-day{margin-top:10px;padding:12px 12px 6px;border-top:0}
.hd-title{font-size:12px;font-weight:700;color:var(--tx3);margin-bottom:8px}
.hd-it{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:8px;background:rgba(255,255,255,.7)}
.hd-it.fix{border-color:var(--gold-d)} .hd-it.open{border-color:#D85A30;border-style:dashed}
/* ── 출근 가능일: 칠하는 달력 ── */
.av-seg{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;padding:4px;border-radius:14px;background:rgba(28,28,27,.05);margin:0 0 12px}
.av-seg button{min-height:44px;border:0;border-radius:10px;background:transparent;font:inherit;font-size:13px;font-weight:600;color:var(--tx2);cursor:pointer;-webkit-tap-highlight-color:transparent}
.av-seg button.on{background:var(--surface);color:var(--tx);box-shadow:0 2px 8px rgba(28,28,27,.10)}
.av-seg button[data-slot=full].on{color:var(--av-full-tx);box-shadow:inset 0 0 0 1.5px var(--av-full-ln),0 2px 8px rgba(28,28,27,.08)}
.av-seg button[data-slot=am].on{color:var(--av-am-tx);box-shadow:inset 0 0 0 1.5px var(--av-am-ln),0 2px 8px rgba(28,28,27,.08)}
.av-seg button[data-slot=pm].on{color:var(--av-pm-tx);box-shadow:inset 0 0 0 1.5px var(--av-pm-ln),0 2px 8px rgba(28,28,27,.08)}
.av-seg button[data-slot=night].on{color:var(--av-night-tx);box-shadow:inset 0 0 0 1.5px var(--av-night-ln),0 2px 8px rgba(28,28,27,.08)}
.av-seg button[data-slot=erase].on{color:#A32D2D;box-shadow:inset 0 0 0 1.5px #E24B4A,0 2px 8px rgba(28,28,27,.08)}
.av-grid .cal-cell{min-height:54px;height:clamp(54px,11vw,66px)}
.av-grid .cal-cell .cal-d{font-size:15px}
.av-grid .av-full{background:var(--av-full-bg);border-color:var(--av-full-ln)} .av-grid .av-full .cal-d{color:var(--av-full-tx);font-weight:800}
.av-grid .av-am{background:var(--av-am-bg);border-color:var(--av-am-ln)}     .av-grid .av-am .cal-d{color:var(--av-am-tx);font-weight:800}
.av-grid .av-pm{background:var(--av-pm-bg);border-color:var(--av-pm-ln)}     .av-grid .av-pm .cal-d{color:var(--av-pm-tx);font-weight:800}
.av-grid .av-night{background:var(--av-night-bg);border-color:var(--av-night-ln)} .av-grid .av-night .cal-d{color:var(--av-night-tx);font-weight:800}
.av-grid .av-fix{background:var(--av-fix-bg);border-color:var(--av-fix-ln);cursor:not-allowed} .av-grid .av-fix .cal-d{color:var(--av-fix-tx);font-weight:800}
.av-grid .av-fix::after{content:"확정";font-size:9.5px;font-weight:700;color:var(--av-fix-tx);letter-spacing:.02em}
.av-grid .has-note::before{content:"";position:absolute;top:6px;right:6px;width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.55}
.av-grid .cal-cell{position:relative}
.av-grid.erase .cal-cell:not(.out):not(:disabled):not(.av-fix){cursor:cell}
.av-grid.erase .av-full,.av-grid.erase .av-am,.av-grid.erase .av-pm,.av-grid.erase .av-night{border-style:dashed}
/* 글래스 적용 면: 모바일 하단 탭 · 모달 · 업데이트 배너 */
.btab{background:rgba(255,255,255,.72)!important;-webkit-backdrop-filter:blur(18px) saturate(150%);backdrop-filter:blur(18px) saturate(150%);border-top:1px solid rgba(255,255,255,.7);box-shadow:0 -6px 24px rgba(28,28,27,.06)}
.modal-card{background:rgba(255,255,255,.86)!important;-webkit-backdrop-filter:blur(22px) saturate(150%);backdrop-filter:blur(22px) saturate(150%);border:1px solid rgba(255,255,255,.8)!important;border-radius:16px!important;box-shadow:0 20px 60px rgba(28,28,27,.18)!important}
.modal{background:rgba(28,28,27,.32)!important;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
/* v6.83.0 — 글래스 모달 안의 불투명 흰 띠 제거: term-hd(APPLICANTS 헤더)·modal-foot(하단 버튼줄)이 반투명 카드 위에 흰 띠로 떠 보이던 결함. 모바일 시트에서는 sticky 푸터가 내용을 가려야 하므로 반투명+블러로 대체 */
.modal-card .term-hd{background:transparent!important;border-bottom-color:rgba(28,28,27,.1)!important}
.modal-card .modal-foot{background:transparent!important;border-top-color:rgba(28,28,27,.1)!important}
@media (max-width:640px){ .modal-card .modal-foot{background:rgba(255,255,255,.9)!important;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)} }
/* 초대 인재 목록 — 스크롤 경계에서 행이 반쯤 잘리던 표시를 하단 페이드로 완화 */
#gmiList{-webkit-mask-image:linear-gradient(#000 calc(100% - 22px),transparent);mask-image:linear-gradient(#000 calc(100% - 22px),transparent);padding-bottom:16px!important}
/* 반응형 — 내림차순 */
@media (max-width:860px){
  .cal-box{padding:12px 10px 10px}
  .hc-grid .cal-cell{min-height:48px}
  .av-grid .cal-cell{min-height:48px;height:clamp(48px,12.5vw,60px)}
  /* 구 #secGigs id 규칙(v6.4x 모바일 압축) 무력화 */
  #secGigs .cal-head{gap:6px;margin-bottom:10px;flex-wrap:wrap}
  #secGigs .cal-mon{font-size:16px;flex:0 0 auto;text-align:left;min-width:0}
  #secGigs .cal-dow{padding:4px 0 6px;font-size:11px}
  #secGigs .cal-cell{min-height:48px;padding:0}
  #secGigs .cal-grid+.fx{margin-top:0}
}
@media (max-width:640px){
  .cal-grid,.hc-grid,.av-grid{gap:4px}
  .cal-head{gap:6px}
  .cal-mon{font-size:16px}
  .ico-btn{width:40px;height:44px}
  .av-seg button{font-size:12.5px}
  .cal-legend{gap:4px 9px;font-size:11px}
}
@media (max-width:400px){
  .cal-grid,.hc-grid,.av-grid{gap:3px}
  .cal-grid .cal-d{font-size:13px}
  .av-grid .cal-cell .cal-d{font-size:14px}
  .av-seg{gap:3px;padding:3px}
  .av-seg button{font-size:12px;letter-spacing:-.01em}
  #calToday,#hcToday{padding:0 8px}
}

/* v6.76.1 — 순환 탭: 세그먼트 제거, 순서 안내 띠 + 칸 안 시간대 글자 */
.av-cycle{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:0 0 12px;font-size:12px;color:var(--tx3)}
.av-cycle .c{padding:4px 9px;border-radius:999px;font-weight:700;font-size:12px;border:1px solid transparent}
.av-cycle .c.av-full{background:var(--av-full-bg);color:var(--av-full-tx);border-color:var(--av-full-ln)}
.av-cycle .c.av-am{background:var(--av-am-bg);color:var(--av-am-tx);border-color:var(--av-am-ln)}
.av-cycle .c.av-pm{background:var(--av-pm-bg);color:var(--av-pm-tx);border-color:var(--av-pm-ln)}
.av-cycle .c.av-night{background:var(--av-night-bg);color:var(--av-night-tx);border-color:var(--av-night-ln)}
.av-cycle .c.off{background:transparent;color:var(--tx3);border-color:var(--line2);border-style:dashed}
.av-cycle i{font-style:normal;color:var(--tx4)}
.av-grid .cal-cell{gap:2px}
.av-grid .cal-s{font-size:10.5px;font-weight:700;line-height:1;letter-spacing:-.01em;color:inherit}
.av-grid .av-full .cal-s{color:var(--av-full-tx)} .av-grid .av-am .cal-s{color:var(--av-am-tx)}
.av-grid .av-pm .cal-s{color:var(--av-pm-tx)} .av-grid .av-night .cal-s{color:var(--av-night-tx)}
@media (max-width:400px){ .av-cycle{gap:4px;font-size:11px} .av-cycle .c{padding:3px 7px;font-size:11px} .av-grid .cal-s{font-size:10px} }

/* ══ v6.76.3 — 글래스모피즘 2단계(대표 지시: 더 보이게) ══
   앰비언트를 진하게 올리고, 컨테이너급(상단바·사이드바·박스·패널·하단 탭)에 블러, 작은 카드는 반투명만(모바일 GPU 보호). */
#scApp{background:
  radial-gradient(760px 460px at 90% -6%, rgba(201,169,97,.34), transparent 60%),
  radial-gradient(640px 640px at -10% 40%, rgba(29,158,117,.20), transparent 58%),
  radial-gradient(520px 440px at 72% 108%, rgba(55,138,221,.18), transparent 60%),
  radial-gradient(380px 380px at 30% 90%, rgba(216,90,48,.10), transparent 60%),
  var(--bg)}
.glass{background:rgba(255,255,255,.46);border:1px solid rgba(255,255,255,.78);
  box-shadow:0 12px 36px rgba(28,28,27,.08),inset 0 1px 0 rgba(255,255,255,.85),inset 0 -1px 0 rgba(255,255,255,.35)}
.box,.panel,.stat:not(.hi),.dash-item,.tbl-wrap,.tk-wrap{background:rgba(255,255,255,.52)!important;border:1px solid rgba(255,255,255,.78)!important;
  border-radius:16px!important;-webkit-backdrop-filter:blur(16px) saturate(150%);backdrop-filter:blur(16px) saturate(150%);
  box-shadow:0 10px 30px rgba(28,28,27,.07),inset 0 1px 0 rgba(255,255,255,.85)!important}
.box.lbl::before{background:rgba(255,255,255,.9);border-radius:999px;padding:2px 8px}
.hc-card,.rq-it,.av-it,.al-it,.hd-it,.pool-it,.gig-it,.tl-row,.tk-you{background:rgba(255,255,255,.62)!important;border-color:rgba(255,255,255,.85)!important;border-radius:14px!important;
  box-shadow:0 4px 14px rgba(28,28,27,.05)}
.hc-card:hover,.rq-it:hover,.hd-it:hover{background:rgba(255,255,255,.8)!important}
.hc-card.on,.hc-card:active{background:rgba(255,255,255,.9)!important}
.inp,select.inp,textarea.inp{background:rgba(255,255,255,.7)!important;border-color:rgba(28,28,27,.14)!important;border-radius:12px!important}
.inp:focus{background:rgba(255,255,255,.95)!important;border-color:var(--gold-d)!important;box-shadow:0 0 0 3px rgba(201,169,97,.25)}
.btn{border-radius:12px!important}
.btn.pri{background:var(--gold)!important;border-color:var(--gold)!important;color:#2b2410!important;font-weight:800;box-shadow:0 4px 14px rgba(201,169,97,.35)}
.btn.pri:hover{background:var(--gold-l)!important;border-color:var(--gold-d)!important}
.btn.pri:disabled{opacity:.5;box-shadow:none}
#scApp > .topbar,div.topbar{background:rgba(28,28,27,.74)!important;-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);
  border-bottom:1px solid rgba(255,255,255,.08)!important;box-shadow:0 6px 24px rgba(28,28,27,.10)}
.sidebar{background:rgba(255,255,255,.42)!important;-webkit-backdrop-filter:blur(20px) saturate(150%);backdrop-filter:blur(20px) saturate(150%);
  border-right:1px solid rgba(255,255,255,.7)!important}
.sidebar .nt.on{background:rgba(255,255,255,.88);box-shadow:0 2px 10px rgba(28,28,27,.08),inset 0 0 0 1.5px var(--gold);border-radius:12px;color:var(--ink)!important;font-weight:800}
.sidebar .nt.on .ic,.sidebar .nt.on .nt-text,.sidebar .nt.on span{color:var(--ink)}
.sidebar .nt.on .ic{color:var(--gold-d)}
.sidebar .nt.on .ct{background:var(--gold);color:#2b2410}
.sidebar .nt:hover{background:rgba(255,255,255,.6);color:var(--ink)}
.btab{background:rgba(255,255,255,.62)!important}
.toast,#toastHost .toast{background:rgba(28,28,27,.82)!important;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.12);border-radius:14px}
.cal-grid .cal-cell{background:rgba(255,255,255,.66);border-color:rgba(255,255,255,.9)}
.cal-grid .cal-cell.out{background:transparent;border-color:transparent}
@supports not (backdrop-filter:blur(1px)){
  .box,.panel,.stat,.dash-item,.tbl-wrap,.tk-wrap{background:rgba(255,255,255,.9)!important}
  .sidebar{background:rgba(255,255,255,.94)!important}
  .btab{background:rgba(255,255,255,.94)!important}
}
@media (prefers-reduced-transparency:reduce){
  .glass,.box,.panel,.stat,.sidebar,.btab{-webkit-backdrop-filter:none;backdrop-filter:none;background:rgba(255,255,255,.94)!important}
}

/* v6.76.4 — 사이드바 선택 항목: v6.76.3 글래스가 배경만 밝게 바꿔 글자(--tx-on-dark)가 안 보였다(대표 적출). 잉크 글자 + 금색 테두리로 확정 */
.sidebar .nt.on,.sidebar .nt.on *{color:var(--ink)!important}
.sidebar .nt.on .ic{color:var(--gold-d)!important}
.sidebar .nt.on .ct{background:var(--gold)!important;color:#2b2410!important}

/* v6.76.5 — 주 버튼(등록·저장): v6.76.3 다크 글래스가 라이트 모달에서 너무 어두웠다(대표 적출) → 브랜드 금색 + 잉크 글자 */
.btn.pri,.modal-foot .btn.pri,#avdSave{background:var(--gold)!important;border-color:var(--gold)!important;color:#2b2410!important;-webkit-backdrop-filter:none;backdrop-filter:none}

/* ══════════════════════════════════════════════════════════════════
   v6.77.0 — 타이포·버튼·대비 전수 정리 (대표 지시 "버튼·폰트 전수 검사")
   원인: 본문 기본 글꼴이 JetBrains Mono(터미널 레트로)라 .kr 이 안 붙은 글자(버튼·셀렉트·라벨)가 전부 고정폭으로 벌어졌고,
   버튼 12px 대문자·자간 .08em, 8~10px 라벨 다수, 글래스 위 다크 카드(.stat.hi 등) 글자 비가시.
   ══════════════════════════════════════════════════════════════════ */
body,.inp,select,textarea,button,.btn,.chip,.nt,.badge,.fld label,.hint,.desc,.tbl td,.tbl th,.modal-card,.toast{font-family:'Pretendard Variable','Pretendard',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif!important}
.mono,.num,.stat .n,.stat b,.stat strong,.mini .n,.clockbig,.topbar .ver,.ver,code,kbd,.sb-server .t,.tbl .num,.cal-mon,.hc-card .n{font-family:'JetBrains Mono',ui-monospace,monospace!important;font-variant-numeric:tabular-nums}
body{font-size:14px;letter-spacing:0}
/* 버튼 */
.btn{font-size:14px!important;font-weight:700;letter-spacing:0!important;text-transform:none!important;padding:10px 16px;min-height:44px}
.btn.sm{font-size:13px!important;padding:8px 12px;min-height:40px}
@media (pointer:coarse){ .btn.sm{min-height:44px} }
.btn:hover{background:var(--ink);color:#fff}
.btn.pri:hover{color:#2b2410!important}
.chip{font-size:13px;min-height:36px;padding:7px 12px}
.ico-btn{font-size:14px}
/* 글자 크기 하한 — 배지·힌트·라벨·표머리 */
.fld label{font-size:12.5px;letter-spacing:.02em;text-transform:none}
.fld label::before{content:'';color:var(--blue)}
.hint{font-size:12.5px}
.sec .desc{font-size:13.5px;line-height:1.7}
.badge{font-size:11.5px;padding:3px 9px;letter-spacing:0;text-transform:none}
.nav-h,#navHead{font-size:10.5px;letter-spacing:.14em}
th,.tbl .hd{font-size:11.5px!important;letter-spacing:.04em}
.stat .l,.stat small,.stat span,.mini .l,.hc-card .l{font-size:12px}
.nt{font-size:14px}
.tk-b{font-size:14.5px}
h1{font-size:19px;letter-spacing:0;text-transform:none}
.sec h2{font-size:17px;letter-spacing:0;text-transform:none}
.cal-legend,.av-cycle{font-size:12px}
.cal-grid .cal-dow{font-size:12px}
.hd-title{font-size:12.5px}
/* 글래스 위 다크 카드 — 배경만 밝아져 글자가 사라지는 축 전부 다크 글래스로 고정 */
.stat.hi,.mini .m.hi,.adm-bar>*,.adm-b,.ts-ent{background:rgba(28,28,27,.86)!important;color:var(--tx-on-dark)!important;border:1px solid rgba(255,255,255,.1)!important;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.stat.hi .n,.mini .m.hi .n{color:var(--gold-l)!important}
.stat.hi .l,.stat.hi small,.stat.hi span,.mini .m.hi .l{color:var(--tx-on-dark-2)!important}
th{background:rgba(28,28,27,.9)!important;color:#fff!important}
#tlSeg .btn.on,#gmiGrades .btn.on,#ntfGrades .btn.on,.btn.sm.on,#dsCalBar .btn.on{background:var(--ink)!important;color:#fff!important;border-color:var(--ink)!important}
.seg-tabs .btn.on{background:var(--ink)!important;color:#fff!important}
/* 입력 */
.inp,select.inp,textarea.inp{font-size:16px;letter-spacing:0}
select.inp option{font-family:'Pretendard Variable','Pretendard',sans-serif}
/* 반응형 — 내림차순 */
@media (max-width:640px){ .btn{font-size:13.5px!important} .nt{font-size:13.5px} }
@media (max-width:400px){ .btn{font-size:13px!important;padding:9px 12px} .btn.sm{font-size:12.5px!important} .badge{font-size:11px} }
/* 모달 머리(터미널풍 대문자 코드) — 작고 차분하게, 글꼴 통일 */
.term-hd{font-family:'Pretendard Variable','Pretendard',sans-serif!important;font-size:11.5px;letter-spacing:.12em;color:var(--tx3);text-transform:uppercase}
.term-hd .dot{width:8px;height:8px}

/* ══ v6.77.1 — 관리자 모바일 적출 2건 (대표 스크린샷) ══ */
/* ① 월간 막대 달력: "출근 가능 N" 칩(hit 레이어 절대배치)이 막대와 겹침 + 2줄 줄바꿈.
      주 행 하단에 칩 띠(26px)를 예약해 막대가 그 위에서 멈추고, 칩은 한 줄 고정 */
.cal-wk{padding-bottom:28px}
.cal-hit>div>button.kr{white-space:nowrap;font-size:10.5px!important;padding:1px 6px!important;max-width:calc(100% - 6px);overflow:hidden;text-overflow:ellipsis;line-height:1.7!important}
.gig-bar{z-index:1}
.gig-bar+.cal-more{z-index:1}
@media (max-width:640px){
  .cal-wk{padding-bottom:24px;min-height:84px}
  .cal-hit>div>button.kr{font-size:10px!important;padding:0 5px!important;left:2px!important;bottom:2px!important}
  .gig-bar{font-size:10.5px;padding:2px 5px;margin:1px 2px;width:calc(100% - 4px)}
  .gig-bar .rc{display:none}
}
/* ② 모바일 사이드바: 메뉴 내부 스크롤 대신 사이드바 전체 1스크롤, 항목 압축, 시스템 메뉴 합류, 유리 불투명도 상향 */
@media (max-width:860px){
  .sidebar{display:flex;flex-direction:column;overflow-y:auto;-webkit-overflow-scrolling:touch;background:rgba(255,255,255,.86)!important;padding:8px 8px 12px}
  .sidebar .nav{flex:none;overflow:visible;padding:6px 0 2px}
  .sidebar .nt{font-size:13.5px;padding:7px 10px;min-height:38px;line-height:1.3}
  .sidebar .nav-h{font-size:10px;padding:0 8px 4px}
  #navSys .nav-h{padding-top:6px}
  .sb-online,.sb-server{margin-top:6px;padding:8px 10px;font-size:11.5px;border-radius:12px}
  .sb-online .row,.sb-online div{line-height:1.35}
  .sb-server .t{font-size:11px}
}

/* ══ v6.77.2 — 관리자 달력 겹침 재정정 (대표 재적출). 원인 확정: 모바일 공통 `button{min-height:44px}`(터치 규칙)이
   달력 안의 칩·막대(둘 다 <button>)까지 44px 로 키워 칸을 가득 채웠고, 그래서 막대와 칩이 다시 포개졌다. 달력 내부 버튼은 예외. */
.cal-hit>div>button,.cal-hit>div>button.kr{min-height:0!important;height:20px!important;line-height:18px!important;padding:0 6px!important;
  font-size:10.5px!important;white-space:nowrap;max-width:calc(100% - 4px);overflow:hidden;text-overflow:ellipsis;left:2px!important;bottom:3px!important;border-radius:8px!important}
.gig-bar{min-height:0!important;height:auto!important;line-height:1.35!important}
.cal-wk{padding-bottom:28px;min-height:88px}
@media (max-width:860px){
  .cal-hit>div>button,.cal-hit>div>button.kr{height:18px!important;line-height:16px!important;font-size:10px!important;padding:0 5px!important}
  .gig-bar{font-size:10.5px!important;padding:2px 5px!important;margin:1px 2px!important;width:calc(100% - 4px)!important}
  .gig-bar .rc{display:none}
  .cal-wk{padding-bottom:26px;min-height:80px}
  .cal-wk .cal-d{padding:4px 0 2px;font-size:12px}
}
@media (max-width:400px){
  .cal-hit>div>button,.cal-hit>div>button.kr{font-size:9.5px!important;padding:0 4px!important}
  .cal-wk{min-height:76px}
}

/* ══ v6.77.3 — 채용 공고·사전 모집 카드 반응형 (대표 적출) ══
   .post 는 flex column 이라 자식 min-width:auto → 사전 모집 폼 안의 date 입력 고유 폭이 카드 밖으로 넘쳤다. 레트로 테두리·오프셋 그림자도 정리 */
.post{border:1px solid rgba(255,255,255,.85)!important;background:rgba(255,255,255,.6)!important;border-radius:16px!important;box-shadow:0 8px 24px rgba(28,28,27,.06);min-width:0;max-width:100%}
.post:hover{box-shadow:0 10px 30px rgba(28,28,27,.09)}
.post>*{min-width:0;max-width:100%}
.post h3{font-size:16px} .post .meta{font-size:12.5px} .post .body{font-size:14px}
.pool-form{min-width:0;max-width:100%;border:1px solid rgba(28,28,27,.08);background:rgba(255,255,255,.5);border-radius:14px;padding:12px}
.pool-form .row2{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.pool-form .row2>.fld,.pool-form .fld{min-width:0}
.pool-form .inp,.pool-form input[type=date]{min-width:0;width:100%;max-width:100%}
.pool-form .fld{margin-bottom:10px}
@media (max-width:640px){ .pool-form .row2{grid-template-columns:1fr} .pool-form{padding:10px} }


/* v6.78.0 — 사전 모집 카드 안 등록자 미리보기 칩 */
.pl-mem-strip{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.pl-chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;line-height:1;padding:5px 8px;border-radius:999px;border:1px solid var(--line);background:var(--bg2);cursor:pointer;max-width:100%}
.pl-chip b{font-weight:600;font-size:11px;padding:1px 5px;border-radius:6px;background:var(--bg3)}
.pl-chip i{font-style:normal;font-size:11px;padding:1px 5px;border-radius:999px;background:var(--warn-bg,#f5e6c8);color:var(--warn-tx,#7a5200)}
.pl-chip i.ok{background:var(--ok-bg,#dfeee4);color:var(--ok-tx,#1f5a34)}
.pl-chip.ok{border-color:var(--ok-bd,#9fc9ad)}

/* v6.79.0 — 통합 [모집] */
.subsec{display:none}
.subsec.open{display:block;margin-top:18px;padding-top:18px;border-top:1px solid var(--line2)}
.rc-bar{align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.rc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.rc-card{background:var(--bg4);border:1px solid var(--line);border-radius:14px;padding:14px 16px;cursor:pointer;transition:border-color .15s,transform .15s}
.rc-card:hover{border-color:var(--line2);transform:translateY(-1px)}
.rc-card.cur{border-color:var(--line-dark);box-shadow:0 0 0 1px var(--line-dark) inset}
.rc-top{display:flex;align-items:center;gap:6px;margin-bottom:8px}
.rc-top .sp{flex:1}
.rc-n{font-size:12px;color:var(--tx3)}
.rc-title{font-size:16px;font-weight:600;line-height:1.35;margin-bottom:4px}
.rc-sub{font-size:13px;color:var(--tx3);margin-bottom:8px}
.rc-meta{display:flex;gap:12px;font-size:13px;color:var(--tx2)}
.badge.rc-post{background:#EEEDFE;color:#3C3489}
.badge.rc-pool{background:#E1F5EE;color:#085041}
.badge.rc-gig{background:#FAEEDA;color:#633806}
.rc-detail{margin-top:16px}
.rc-dhead{display:flex;align-items:center;gap:6px;margin-bottom:8px}
.rc-dhead .sp{flex:1}
.rc-detail h3{font-size:18px;margin:0 0 10px}
.rc-kv{display:flex;gap:12px;font-size:14px;padding:4px 0}
.rc-kv span:first-child{color:var(--tx3);min-width:44px}
.rc-body{margin-top:10px;padding:12px;background:var(--bg3);border-radius:10px;font-size:14px;line-height:1.65}
.rc-act{gap:6px;flex-wrap:wrap;margin:14px 0 6px}
.rc-h4{font-size:14px;margin:14px 0 8px}
.rc-people{display:flex;flex-direction:column;gap:6px}
.rc-person{display:flex;align-items:center;gap:8px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--bg4);cursor:pointer;flex-wrap:wrap}
.rc-person .nm{font-weight:600}
.rc-person .sp{flex:1}
.rc-person .at{font-size:12px;color:var(--tx4)}
.rc-person b{font-size:11px;padding:2px 6px;border-radius:6px;background:var(--bg3)}
@media (max-width:480px){ .rc-grid{grid-template-columns:1fr} .rc-bar{align-items:flex-start} }

/* v6.79.2 — 뒤로가기 종료 안내 시트 */
.back-sheet{position:fixed;left:12px;right:12px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:9999;background:var(--bg);border:1px solid var(--line2);border-radius:16px;padding:14px 16px;box-shadow:0 10px 30px rgba(0,0,0,.18);display:none;align-items:center;gap:12px;flex-wrap:wrap}
.back-sheet.show{display:flex}
.back-sheet .bs-t{font-weight:600;font-size:15px}
.back-sheet .bs-d{font-size:13px;color:var(--tx3);flex:1 1 100%}

/* v6.79.3 — 긴 목록 접기 */
tr.fold-hide{display:none !important}
tr.fold-more td{padding:8px 0 4px;border:0;background:transparent}
tr.fold-more::before{display:none !important}
.fold-btn{width:100%}

/* v6.80.0 — 대표 프로젝트 */
.proj-row{border:1px solid var(--line);border-radius:10px;padding:10px;margin-bottom:8px;background:var(--bg4)}
.proj-row .row2{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:8px}
.proj-row .proj-del{font-size:12px}
@media (max-width:480px){ .proj-row .row2{grid-template-columns:1fr} }
.proj-list{margin:0;padding-left:18px;line-height:1.7}
.av-it.av-click{cursor:pointer}
.av-it.av-click:hover{border-color:var(--line-dark)}

/* v6.81.2 — 공지 → 공고 바로가기 */
.tk-ntc-go{cursor:pointer}
.tk-ntc-go:hover{border-color:var(--line-dark)}
.ntc-cta{margin-top:8px;font-weight:700;color:var(--gold-d,#8a6d1f);font-size:14px}
.post-hi{outline:2px solid var(--gold);outline-offset:2px;transition:outline-color .6s}

/* v6.81.2 알림 카드 링크 */
.ai-link{cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}
.ai-link:hover{color:var(--gold-d)}

/* v6.82.2 — 일정 관리 폼 지원자 화면 미리보기 (대표 지시: 관리자 전용 칸과 지원자 노출 칸 분리 시각화) */
.gm-prev{border:1px dashed var(--gold);border-radius:12px;padding:12px 14px;background:#fffdf8}
.gm-prev .gp-h{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.gm-prev .gp-t{font-size:15px;font-weight:800}
.gm-prev .gp-kv{display:flex;gap:10px;font-size:12.5px;line-height:1.7}
.gm-prev .gp-kv span:first-child{color:var(--tx3);min-width:44px;flex:0 0 auto}
.gm-prev .gp-body{margin-top:6px;font-size:12.5px;line-height:1.6;white-space:pre-wrap;word-break:break-word}
.gm-prev .gp-empty{color:var(--tx3);font-size:12.5px}
.gm-prev .chips{margin-top:6px}

/* v6.84.0 — 관리자 단톡방(secAdminRoom). 기존 .box/.badge/.btn 을 재사용하고
   상태 배지·본문 줄바꿈·고정 표시만 최소로 얹는다. 모달 없음(글래스 흰 띠 이슈 무관). */
.ar-item{margin-bottom:10px}
.ar-item.ar-pin{border-color:var(--ink)}
.ar-body{font-size:13px;line-height:1.75;word-break:break-word;overflow-wrap:anywhere;white-space:normal}
.ar-st{color:#fff;border:1px solid transparent}
.ar-st-open{background:#8a6d1f}
.ar-st-doing{background:#185fa5}
.ar-st-done{background:#3b6d11}
.ar-st-hold{background:#5f5e5a}
.ar-st-drop{background:#5f5e5a;opacity:.7}
.ar-st-late{background:#a32d2d;color:#fff}
.ar-act{border-top:1px dashed rgba(128,128,128,.25);padding-top:8px}
#arFilt .btn.sm.on{background:var(--ink);color:#fff}
@media (max-width:480px){
  .ar-item .ar-act .btn.sm{flex:1 1 auto;min-width:0}
  .ar-body{font-size:13.5px}
}

/* v6.84.0 — 현장 조회 모달 조건 요약(#gmdCond). 글래스 모달 하위이므로 불투명 배경을 주지 않는다
   (v6.83.x 흰 띠 재발 방지). 점선 구분만 쓴다. */
.gmd-cond{margin:0 0 14px;padding:10px 0;border-top:1px dashed rgba(128,128,128,.28);border-bottom:1px dashed rgba(128,128,128,.28)}
.gmd-cond > div{display:grid;grid-template-columns:88px minmax(0,1fr);gap:4px 10px;padding:3px 0;align-items:start}
.gmd-cond dt{font-size:11px;letter-spacing:.04em;color:var(--tx3);padding-top:1px}
.gmd-cond dd{margin:0;font-size:13px;line-height:1.7;color:var(--tx1,inherit);word-break:break-word;overflow-wrap:anywhere}
@media (max-width:480px){
  .gmd-cond > div{grid-template-columns:1fr;gap:1px}
  .gmd-cond dd{font-size:13.5px}
}


/* ══ v6.86.6 모바일 최적화 — 인재관리 신규 UI (역량평가·문의 대화 요약) ══ */
#tdCompSliders input[type=range]{min-height:34px;touch-action:pan-y}
#tdCompSave{min-height:40px}
#tdCompList .fx{flex-wrap:wrap}
#tdCompList .fx span:last-child{white-space:normal}
@media (max-width:860px){
  .tbl-wrap td.comp-empty{display:none}   /* 평가 없는 인재 카드의 '역량 —' 줄 제거 */
}
@media (max-width:640px){
  #tdCompWrap .fx{gap:10px}
  #tdCompSvg{margin:0 auto;display:block}
  #tdCompWrap .fx>div{min-width:0;flex-basis:100%}
  #tdCompNew .fx>.inp{flex-basis:100%}
  #tdCompSave{width:100%;min-height:44px}
  #tkaWhoInfo{gap:6px}
  #tkaWhoOpen{width:100%;min-height:42px}
}
@media (max-width:400px){
  #tdCompSliders .fx span.fs.kr{width:30px}
  #tdCompSvg{width:160px}
}

/* ══ v6.88.0 — 홈 공고 리스트 · 현장 리스트 · 달력 건수 배지 (대표 지시 2026-09-13) ══ */
.hc-grid .cal-cell .dots{flex-wrap:wrap;justify-content:center;height:auto;min-height:7px;max-width:100%;row-gap:2px}
.cal-n{font-size:12px;font-weight:800;line-height:1;color:var(--tx3);margin:0;letter-spacing:-.02em}
.cal-n.hm-open{color:#993C1D} .cal-n.hm-app{color:#8A5A0C} .cal-n.hm-req{color:#443BA3} .cal-n.hm-fix{color:var(--gold-d)} .cal-n.hm-past{color:var(--tx4)}
/* v6.89.0 홈 상단 공고 1줄 — 배지 + 제목, 넘치면 말줄임 */
.hp-it.hp-1{display:flex;align-items:center;gap:6px;min-width:0}
.hp-it.hp-1 .badge{flex:0 0 auto}
.hp-it.hp-1 .hp-t{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hp-it,.hg-it{cursor:pointer;transition:background .15s,border-color .15s}
.hp-it:hover,.hg-it:hover,.hp-it:focus-visible,.hg-it:focus-visible{background:var(--bg3);border-color:var(--ink);outline:none}
.hg-it.hg-dim{opacity:.6}
#hgBox .hg-filt .btn.on,#hpBox .btn.on{background:var(--ink);color:var(--bg1);border-color:var(--ink)}
#hgList .home-it+.home-it,#hpList .home-it+.home-it,#msOpenList .home-it+.home-it{margin-top:8px}

/* ══ v6.88.1 — 지원 진행 타임라인 (대표 승인 2026-09-13) ══ */
.ap-prog{margin-top:10px;padding:11px 12px;border:1px solid var(--ln);border-radius:10px;background:var(--bg2)}
.ap-steps{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.ap-st{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--tx3)}
.ap-st i{width:9px;height:9px;border-radius:50%;background:var(--ln);flex:none;display:inline-block}
.ap-st.done i{background:var(--tx3)}
.ap-st.on i{background:var(--ink);box-shadow:0 0 0 3px var(--bg3)}
.ap-st.on b{color:var(--ink);font-weight:800}
.ap-st.done b{color:var(--tx3);font-weight:600}
.ap-bar{flex:1;min-width:10px;height:1px;background:var(--ln)}
.ap-todo{margin-top:9px;padding-top:9px;border-top:1px solid var(--ln);font-size:11px;color:var(--tx3);display:flex;gap:6px;flex-wrap:wrap;align-items:center}


/* ══ v6.92.0 모집 관리 — 데스크톱 표 / 모바일 리스트 + 상세 팝업 (대표 지시 2026-09-14) ══
   종전에는 860px 이하에서 표가 카드로 펼쳐져 한 건이 8줄을 먹었다(4건 = 한 화면 초과).
   이제 한 건을 2줄 리스트로 줄이고 상세는 기존 지원자 팝업(gmModal)에서 본다. */
.tbl-mob{display:none}
.rowlist .rl-row{display:flex;align-items:center;gap:10px;padding:11px 12px;
  border:1px solid var(--line);border-radius:var(--r);background:var(--surface,var(--bg));
  margin-bottom:7px;cursor:pointer;min-height:56px}
.rowlist .rl-row:hover,.rowlist .rl-row:focus-visible{border-color:var(--gold);outline:none}
.rowlist .rl-m{flex:1;min-width:0}
.rowlist .rl-t{font-size:14px;font-weight:700;color:var(--tx);line-height:1.35;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rowlist .rl-s{font-size:11.5px;color:var(--tx3);line-height:1.5;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rowlist .rl-res{color:var(--tx2);font-weight:600}
.rowlist .rl-res.warn{color:var(--st-urg)}
.rowlist .rl-r{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.rowlist .rl-n{font-size:11px;color:var(--tx3);font-family:'JetBrains Mono',monospace}
.badge.gm-warn{background:transparent;color:var(--st-urg);border:1px solid var(--st-urg);margin-left:5px}
@media (max-width:860px){
  .tbl-desk{display:none}
  .tbl-mob{display:block}
}

/* ══ v6.93.0 로그·이력 표 — 모바일 2열 컴팩트 ══
   접속 기록·처리 이력은 건수가 많은데(처리 이력 618건) 한 건이 칸 수만큼 세로로 늘어났다.
   상세 팝업이 없는 읽기 전용 표이므로 리스트 전환 대신 칸을 2열로 접어 높이를 줄인다. */
@media (max-width:860px){
  .tbl-compact tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:10px;padding:10px 12px}
  .tbl-compact td{padding:3px 0;font-size:12.5px;grid-template-columns:52px minmax(0,1fr);gap:7px}
  .tbl-compact td:first-child{grid-column:1 / -1;font-size:13.5px;padding:0 0 7px;margin-bottom:4px}
  .tbl-compact td[colspan]{grid-column:1 / -1}
  .tbl-compact td::before{font-size:9.5px}
}

/* ══════════════════════════════════════════════════════════════════
   v6.94.0 — 글래스 3단계 + 달력 막대·워크플로우 카드 재설계
   (대표 지시: "프로젝트 표시가 촌스럽다 / 녹색띠는 뭐냐 / 글래스모피즘을 더 강화")

   1) 앰비언트를 2026 브랜드 키컬러(Natural Beige #A8947B · Earth Brown #7E6D5C)로 정리했다.
      종전 v6.76.3 은 금색·초록·파랑·주황 4색 방사형이 겹쳐 배경 자체가 알록달록했고,
      그 위에 파스텔 상태색 막대가 얹히면서 화면이 촌스러워졌다. 배경은 브랜드 2색 + 금색 1점으로 줄인다.
   2) 달력 막대(.gig-bar)는 파스텔 면색 블록 → 흰 유리 알약 + 3px 상태 레일 + 상태 칩.
      대표가 "녹색띠는 뭐야?"라 물은 원인은 면색만 있고 그게 무엇인지 적힌 칩이 없어서다.
      상태 칩(모집중·마감·충원완료·임시)을 막대 맨 앞에 고정한다.
   3) 막대에 backdrop-filter 는 쓰지 않는다 — 한 화면에 수십 개가 깔리므로 v6.76.3 원칙
      ("컨테이너급만 블러, 작은 카드는 반투명만")을 그대로 지킨다.
   4) 규칙 순서: 기본 → @media 내림차순(1360 → 860 → 640 → 400). 파일 끝 순서 규약 유지.
   ══════════════════════════════════════════════════════════════════ */
:root{
  --brand-beige:#A8947B; --brand-earth:#7E6D5C;
  --glass-bg:rgba(255,255,255,.50); --glass-line:rgba(255,255,255,.82);
  --glass-shadow:0 14px 40px rgba(28,28,27,.09);
}
#scApp{background:
  radial-gradient(860px 540px at 92% -12%, rgba(168,148,123,.40), transparent 62%),
  radial-gradient(720px 720px at -14% 36%, rgba(126,109,92,.22), transparent 60%),
  radial-gradient(540px 480px at 76% 112%, rgba(201,169,97,.24), transparent 62%),
  var(--bg)}
.glass{background:var(--glass-bg);border:1px solid var(--glass-line);
  -webkit-backdrop-filter:blur(22px) saturate(160%);backdrop-filter:blur(22px) saturate(160%);
  box-shadow:var(--glass-shadow),inset 0 1px 0 rgba(255,255,255,.9),inset 0 -1px 0 rgba(255,255,255,.4)}
.box,.panel,.stat:not(.hi),.dash-item,.tbl-wrap,.tk-wrap{
  background:rgba(255,255,255,.46)!important;border:1px solid rgba(255,255,255,.82)!important;
  -webkit-backdrop-filter:blur(20px) saturate(158%);backdrop-filter:blur(20px) saturate(158%);
  box-shadow:0 12px 34px rgba(28,28,27,.08),inset 0 1px 0 rgba(255,255,255,.9)!important}
.dash-item:hover{background:rgba(255,255,255,.76)!important;border-color:var(--gold-d)!important}
.cal-grid .cal-cell{background:rgba(255,255,255,.58);border-color:rgba(255,255,255,.92)}
.cal-grid .cal-cell:hover{background:rgba(255,255,255,.82)}

/* ── 자동 채움 표시 — 프로젝트를 고르면 앱이 채운 칸에 금색 테두리가 남는다 ── */
.inp.wf-auto,select.inp.wf-auto{border-color:var(--gold-d)!important;background:rgba(201,169,97,.10)!important;
  box-shadow:0 0 0 3px rgba(201,169,97,.16)}

/* ── 신청 대기 배지 — 확정(0/3)만 보이던 자리에 "아직 사람이 서 있다"는 신호를 준다 ── */
.badge.wait{background:var(--gold);color:#2b2410;border:0;font-weight:800}

/* ── 달력 현장 막대 ── */
.gig-bar{display:flex;align-items:center;gap:5px;overflow:hidden;
  padding:3px 7px 3px 5px;border-radius:10px;
  background:rgba(255,255,255,.72)!important;border:1px solid rgba(255,255,255,.9)!important;
  border-left-width:1px!important;border-style:solid!important;
  box-shadow:0 2px 9px rgba(28,28,27,.07),inset 0 1px 0 rgba(255,255,255,.9);
  color:var(--tx);font-weight:600}
.gig-bar::before{content:'';flex:0 0 3px;align-self:stretch;min-height:13px;border-radius:3px;
  background:var(--gb-c,var(--sig-mute))}
.gig-bar:hover{background:rgba(255,255,255,.95)!important;border-color:var(--gold-d)!important;
  box-shadow:0 4px 14px rgba(28,28,27,.12)}
.gig-bar .gb-s{flex:0 0 auto;font-size:9.5px;font-weight:800;letter-spacing:.01em;
  padding:1px 5px;border-radius:999px;background:var(--gb-c,var(--sig-mute));color:#fff;line-height:1.55}
.gig-bar .gb-t{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gig-bar .rc{flex:0 0 auto;color:var(--tx3);font-weight:500;font-variant-numeric:tabular-nums}
.gig-bar .gb-w{flex:0 0 auto;font-size:9.5px;font-weight:800;padding:1px 5px;border-radius:999px;
  background:var(--gold);color:#2b2410;line-height:1.55}
.gig-bar.st-open{--gb-c:var(--sig-ok)}
.gig-bar.st-closed{--gb-c:var(--sig-danger);opacity:.7}
.gig-bar.st-filled{--gb-c:var(--sig-info)}
.gig-bar.st-draft{--gb-c:var(--sig-mute);border-style:dashed!important;opacity:.85}
.gig-bar.urg{--gb-c:var(--st-urg);border-left-width:1px!important;
  background:rgba(255,255,255,.82)!important;box-shadow:0 0 0 1.5px var(--st-urg) inset}
.gig-bar.lack{box-shadow:0 2px 9px rgba(28,28,27,.07),inset 0 0 0 1px rgba(163,69,47,.28)}
.gig-bar.haswait{border-color:var(--gold)!important}
.gig-bar.full{opacity:.6}
.gig-bar.cl{border-top-left-radius:0;border-bottom-left-radius:0}
.gig-bar.cr{border-top-right-radius:0;border-bottom-right-radius:0}
.gig-bar.cl::before{display:none}

/* ── 워크플로우 프로젝트 — 표를 카드로 ── */
.wf-list{display:grid;gap:8px}
.wf-card{position:relative;display:flex;align-items:center;gap:12px;overflow:hidden;
  padding:11px 12px 11px 15px;border-radius:14px;cursor:pointer;
  background:rgba(255,255,255,.58);border:1px solid rgba(255,255,255,.88);
  box-shadow:0 5px 18px rgba(28,28,27,.06),inset 0 1px 0 rgba(255,255,255,.9);
  transition:background .12s,box-shadow .12s}
.wf-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--wf-c,var(--line2))}
.wf-card:hover{background:rgba(255,255,255,.86);box-shadow:0 8px 24px rgba(28,28,27,.10)}
.wf-card.st-contracted{--wf-c:var(--sig-ok)}
.wf-card.st-construct{--wf-c:var(--sig-info)}
.wf-card.st-inquiry{--wf-c:var(--sig-warn)}
.wf-card.st-design{--wf-c:var(--gold-d)}
.wf-card.st-done{--wf-c:var(--sig-mute)}
.wf-d{flex:0 0 66px;text-align:center;line-height:1.25;
  font-family:'JetBrains Mono',ui-monospace,monospace;font-variant-numeric:tabular-nums}
.wf-d b{display:block;font-size:15px;font-weight:700;color:var(--tx)}
.wf-d span{display:block;font-size:10.5px;color:var(--tx3)}
.wf-m{flex:1 1 auto;min-width:0}
.wf-n{font-size:13.5px;font-weight:700;color:var(--tx);line-height:1.4;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wf-c{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.chip-x{font-size:10.5px;line-height:1.7;padding:1px 7px;border-radius:999px;
  background:rgba(28,28,27,.05);color:var(--tx3);border:1px solid rgba(28,28,27,.07);
  max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chip-x.code{font-family:'JetBrains Mono',ui-monospace,monospace;font-size:10px;color:var(--tx2)}
.chip-x.stage{background:var(--gold-bg);border-color:var(--gold-d);color:#6B5B2E;font-weight:700}
.chip-x.warn{background:var(--sig-warn-bg);border-color:var(--sig-warn);color:var(--sig-warn);font-weight:700}
.wf-a{flex:0 0 auto;display:flex;gap:6px;align-items:center}

@supports not (backdrop-filter:blur(1px)){
  .box,.panel,.stat,.dash-item,.tbl-wrap,.tk-wrap,.glass{background:rgba(255,255,255,.93)!important}
  .wf-card,.gig-bar{background:rgba(255,255,255,.95)!important}
}
@media (prefers-reduced-transparency:reduce){
  .glass,.box,.panel,.stat,.dash-item,.wf-card,.gig-bar{-webkit-backdrop-filter:none;backdrop-filter:none;
    background:rgba(255,255,255,.95)!important}
}

@media (max-width:860px){
  .wf-card{flex-wrap:wrap;gap:8px;padding:11px 12px 11px 15px}
  .wf-d{flex:0 0 auto;display:flex;gap:5px;align-items:baseline;text-align:left}
  .wf-d b{font-size:13px} .wf-d span{font-size:10.5px}
  .wf-m{flex:1 1 100%;order:3}
  .wf-a{margin-left:auto}
}
@media (max-width:640px){
  .gig-bar{gap:4px;padding:2px 4px 2px 3px;border-radius:8px}
  .gig-bar .gb-s{display:none}
  .gig-bar .rc{display:none}
  .gig-bar .gb-w{font-size:8.5px;padding:0 4px}
  .wf-a{flex:1 1 100%;margin-left:0}
  .wf-a .btn{flex:1 1 0;min-width:0}
}
@media (max-width:400px){
  .gig-bar{font-size:8.5px;padding:2px 3px 2px 2px}
  .gig-bar::before{flex-basis:2px}
  .wf-n{font-size:12.5px}
}

/* ── v6.94.0 등급 동반 일당 표기 (대표 지시 "등급 일당은 항상 따라다녀야 한다")
   RATE()/GRADE_RATE() 가 뱉는 한 덩어리. 등급 배지 바로 뒤에 붙는다.
   금색 = 인재가 부른 희망가가 권고가보다 높아 협의가 필요한 건. ── */
.rate{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;
  font-size:10.5px;line-height:1.7;padding:1px 7px;border-radius:999px;font-variant-numeric:tabular-nums;
  background:rgba(28,28,27,.05);border:1px solid rgba(28,28,27,.08);color:var(--tx2);font-weight:700}
.rate i{font-style:normal;color:var(--tx4);font-weight:400}
.rate.gap{background:var(--gold-bg);border-color:var(--gold-d);color:#6B5B2E}
.rate.none{background:transparent;border-color:var(--line2);color:var(--tx4);font-weight:400}
.gmi-row .rate,.file-row .rate{flex:0 0 auto}
/* 초대 목록은 칸이 5개(체크·등급·이름·요약·일당)라 좁은 폭에서 서로를 눌러 글자가 세로로 깨졌다.
   일당을 넣으며 한 칸 늘었으므로 줄바꿈을 허용하고, 등급·이름·일당은 줄이지 않는다. */
.gmi-row{flex-wrap:wrap;row-gap:4px}
.gmi-row>.badge,.gmi-row>.nm,.gmi-row>.rate,.gmi-row>input{flex:0 0 auto;white-space:nowrap}
.gmi-row>.sub{flex:1 1 auto;min-width:0}
.tbl td .rate{font-size:11px}
@media (max-width:640px){ .rate{font-size:10px;padding:0 6px} }

/* ══════════════════════════════════════════════════════════════════
   v6.94.1 — 달력 가독성 정정 (대표 적출 "컬러가 비슷해서 복잡하다 / 프로젝트 이름이 안 보인다")

   [원인 1] v6.94.0 에서 배경 앰비언트를 베이지로 진하게 깔았는데, 그 위의 [출근 가능 N]
            배지도 금색 4단계였다. 배경·배지·막대가 모두 같은 계열이라 달력이 한 색 덩어리로 읽혔다.
            → 앰비언트 채도를 내리고, 가용 인원 배지는 무채색으로 내린다(JS tone). 색은 현장 막대만 쓴다.
   [원인 2] 막대 한 줄에 상태칩·이름·직무·인원·부족·신청을 전부 넣어 2칸 막대에서 이름이 "대.."로 잘렸다.
            → 이름을 1순위로 고정(굵게·잉크색), 나머지는 폭(seg.span)에 여유가 있을 때만 붙인다.
   [원인 3] 상태를 1px 레일로 표시해 신호가 약했다. → 레일 4px + 흰 바탕으로 대비를 올린다.
   규칙 순서: 기본 → @media 내림차순. 파일 끝 순서 규약 유지.
   ══════════════════════════════════════════════════════════════════ */
#scApp{background:
  radial-gradient(880px 520px at 94% -14%, rgba(168,148,123,.20), transparent 62%),
  radial-gradient(720px 720px at -16% 34%, rgba(126,109,92,.11), transparent 60%),
  radial-gradient(520px 460px at 78% 114%, rgba(201,169,97,.12), transparent 62%),
  var(--bg)}

/* 달력 칸은 배경에서 확실히 떠 있어야 한다 — 막대가 얹힐 바탕 */
.cal-grid .cal-cell{background:rgba(255,255,255,.72);border-color:rgba(255,255,255,.95)}

/* ── 현장 막대 ── */
.gig-bar{gap:6px;padding:3px 7px 3px 0;min-height:19px;
  background:rgba(255,255,255,.93)!important;border:1px solid rgba(28,28,27,.10)!important;
  box-shadow:0 1px 4px rgba(28,28,27,.10)}
.gig-bar::before{flex:0 0 4px;border-radius:0 3px 3px 0;min-height:17px;background:var(--gb-c,var(--sig-mute))}
.gig-bar .gb-t{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-weight:800;color:var(--tx);letter-spacing:-.01em}
.gig-bar .rc{flex:0 1 auto;min-width:0;overflow:hidden;white-space:nowrap;
  color:var(--tx3);font-weight:600;font-variant-numeric:tabular-nums}
.gig-bar .gb-s{flex:0 0 auto;background:transparent;color:var(--gb-c,var(--tx3));
  border:1px solid var(--gb-c,var(--line2));font-weight:700;padding:0 5px}
.gig-bar .gb-w{flex:0 0 auto}
.gig-bar:hover{background:#fff!important;border-color:var(--gb-c,var(--gold-d))!important;
  box-shadow:0 4px 14px rgba(28,28,27,.16)}
.gig-bar.lack{box-shadow:0 1px 4px rgba(28,28,27,.10)}
.gig-bar.haswait{border-color:var(--gold)!important;box-shadow:0 1px 6px rgba(201,169,97,.35)}
.gig-bar.st-closed{opacity:.62}
.gig-bar.st-draft{border-style:dashed!important;opacity:.8}
.gig-bar.cl::before{display:none}
.gig-bar.cl{padding-left:6px}

/* 가용 인원 배지는 참고 수치 — 달력의 주인공(현장 막대)보다 앞에 나오지 않게 낮춘다 */
.cal-hit>div[data-cd]>button{opacity:.9}

@media (max-width:640px){
  .gig-bar{gap:3px;padding:2px 4px 2px 0;min-height:15px}
  .gig-bar::before{flex-basis:3px;min-height:13px}
  .gig-bar .gb-t{font-weight:700}
  .gig-bar .gb-s{display:none}
  .gig-bar .rc{display:none}
}
.gig-bar .gb-w em{font-style:normal;margin-right:3px}
@media (max-width:640px){ .gig-bar .gb-w em{display:none} .gig-bar .gb-w{padding:0 4px} }

/* ── v6.94.2 출근 가능 인재 행 (대표 적출 "정보가 이상하게 보인다") ──
   가능일 47개를 그대로 뿌리던 자리를 요약 한 줄로 바꿨다. 버튼은 세로 가운데에 떠 있지 않고
   행 위쪽에 고정한다 — 긴 카드에서 버튼이 허공에 뜨는 것처럼 보였다. ── */
.av-row{align-items:flex-start}
.av-row .fn{word-break:keep-all}
.av-row .btn,.av-row>.badge{margin-top:2px}
.av-row .av-sum{display:inline-block;line-height:1.55;color:var(--tx2);font-weight:600;cursor:help}
.av-row.is-done{opacity:.62;background:transparent}
.chip-x.ok{background:var(--sig-ok-bg);border-color:var(--sig-ok);color:var(--sig-ok);font-weight:700}

/* ── v6.94.3 지원자 상세 진입 (대표 지시 "지원자는 클릭하면 상세가 팝업으로") ──
   인재 상세(#tlModal)는 DOM 상 현장 신청자 창(#gmModal)보다 앞에 있어, 같은 z-index(9990)면
   뒤에 깔려 열려도 보이지 않는다. 한 단계만 올린다 — 9992 이상 창(반려 확인 등)은 그대로 위에 둔다. ── */
#tlModal{z-index:9991}
.file-row.tal-click{cursor:pointer;transition:background .12s,border-color .12s}
.file-row.tal-click:hover{background:#fff;border-color:var(--gold-d);
  box-shadow:0 3px 12px rgba(28,28,27,.10)}
.file-row.tal-click:hover .fn>b{text-decoration:underline;text-underline-offset:2px}
.file-row.tal-click:active{transform:translateY(1px)}
.tal-hint{font-size:10.5px;color:var(--tx4);margin:0 0 7px 2px}


/* v6.95.0 — 보수 표기: 단위 선택 + 금액 + 추가 안내 */
.pay-row{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 10px;align-items:center;margin-bottom:8px}
.pay-unit{flex-wrap:nowrap}
.pay-unit .chip{min-width:62px;min-height:44px;text-align:center}   /* 금액 칸(44px)과 같은 높이 · 터치 44px */
.pay-amt{position:relative;min-width:0}
.pay-amt .inp{width:100%;min-width:0;padding-right:38px;text-align:right;font-variant-numeric:tabular-nums}
.pay-amt .inp:disabled{opacity:.45;cursor:not-allowed}
.pay-won{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:14px;color:var(--tx3);pointer-events:none}
#gmPayHint.warn{color:var(--sig-warn);font-weight:600}
@media (max-width:640px){ .pay-row{grid-template-columns:1fr} #gmPayUnit .chip,#gmPayAmt,#gmPayMemo{min-height:44px} }   /* PWA §5 터치 44px */
@media (max-width:480px){ #gmPayUnit .chip{flex:1 1 0;min-width:0} }

/* ══ v6.96.0 인재관리 분야(공종 1·2순위) 필터·칩·열 (대표 지시 2026-09-17) ══ */
.filters .fl-field{display:inline-flex;gap:6px;align-items:center}
.filters .fl-field #fTlRole{min-width:180px}
.filters .fl-field #fTlRank{min-width:0;width:auto}
#tlFieldSum{flex:0 0 100%;font-size:14px;line-height:1.45;color:var(--tx3);word-break:keep-all}
#tlFieldSum:empty{display:none}
#secTalent td.tl-field{white-space:nowrap}
#secTalent .rk{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-right:4px;border-radius:50%;
  background:#7E6D5C;color:#fff;font-size:10px;font-weight:700;line-height:1;vertical-align:1px;font-family:'IBM Plex Mono',monospace}
#secTalent .rk.rk2{background:transparent;color:#7E6D5C;border:1px solid #A8947B;width:14px;height:14px}
@media (max-width:860px){
  .filters .fl-field{display:grid;grid-template-columns:minmax(0,1fr) auto;flex:0 0 100%;width:100%}
  .filters .fl-field #fTlRole{min-width:0;width:100%}
  .filters .fl-field #fTlRank{width:auto;min-width:96px}
  .ts-r1{background:#EFE8DF;color:#4F4236;font-weight:700;border:1px solid #C9B9A4}
  .ts-r2{background:transparent;color:#6A5B4D;font-weight:500;border:1px solid #D8CCBD}
}

/* ══ v6.97.0 계정 정지·해제 (대표 지시 2026-09-17) ══ */
.td-acct-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
#tdAcctTx{flex:1 1 220px;min-width:0;font-size:14px;line-height:1.6;color:var(--tx2);overflow-wrap:anywhere}
.td-acct-row .btn{min-height:44px;flex:0 0 auto}
@media (max-width:860px){
  .ts-sus-up{background:#FBEBDD;color:#7F4414;font-weight:700;border:1px solid #E3B48A}
}

/* ══ v6.97.1 PC 인재 표 — 가로 스크롤 막대를 화면 안에, 머리줄·이름 칸 고정 (대표 지시 2026-09-17) ══
   표 컨테이너 높이를 화면 높이로 제한해 가로 막대가 늘 보이게 하고, 세로 스크롤도 표 안에서 한다.
   고정 칸은 뒤 행이 비치지 않도록 불투명 배경(컨테이너 반투명 흰색 × 본문 배경 합성값)을 준다 */
@media (min-width:861px){
  #secTalent .tbl-wrap{max-height:calc(100vh - 72px);max-height:calc(100dvh - 72px);overflow:auto;overscroll-behavior-x:contain}
  #secTalent .tbl-wrap thead th{position:sticky;top:0;z-index:3;background:#323231!important}   /* 2020행 th 반투명 !important 를 고정 칸에서만 불투명으로 */
  #secTalent .tbl-wrap thead th:first-child{left:0;z-index:5}
  #secTalent .tbl-wrap tbody td:first-child{position:sticky;left:0;z-index:2;background:#F9F9F8;box-shadow:inset -1px 0 0 var(--line2)}
  #secTalent .tbl-wrap tbody tr:hover td:first-child{background:#FAFAF8}
  .filters .fl-field #fTlRank{min-width:118px}
}

/* v6.102.0 — 인재 본인 수정 알림(대표 지시 2026-09-30). 브랜드 Earth Brown 계열, 행 배지 + 상세 박스 + 통계 카드 */
.badge.tl-chg{background:#7E6D5C;color:#fff;border:0;font-weight:700}
#tlStats .stat.stat-chg{border-left-color:var(--tx4)}
#tlStats .stat.stat-chg.has{border-left-color:#7E6D5C}
#tlStats .stat.stat-chg.has .n{color:#7E6D5C}
.td-chg{border:1.5px solid #A8947B;border-left:5px solid #7E6D5C;background:#F7F2EB;border-radius:var(--r);padding:10px 12px;margin:0 0 14px}
.td-chg-hd{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.td-chg-hd b{font-size:14px;color:#5C4A36}
.td-chg-hd .btn{min-height:40px}
#tdChgList .hc{display:flex;flex-wrap:wrap;gap:2px 6px;align-items:baseline;padding:4px 0;font-size:14px;min-width:0}
#tdChgList .hc+.hc{border-top:1px dashed var(--line)}
#tdChgList .hc-t{font-size:11px;color:var(--tx4);font-variant-numeric:tabular-nums}
#tdChgList .hc-f{font-size:12px;color:#7E6D5C;font-weight:700}
#tdChgList .hc-o{color:var(--tx3);text-decoration:line-through;text-decoration-color:var(--tx4);overflow-wrap:anywhere}
#tdChgList .hc-ar{color:var(--tx4)}
#tdChgList .hc-n{color:var(--tx);overflow-wrap:anywhere}

/* v6.103.0 — 가입 유형 3분기 · 공종 선택 (대표 지시 2026-09-30). 브랜드 Natural Beige #A8947B / Earth Brown #7E6D5C */
.su-type{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 16px}
.su-t{display:flex;flex-direction:column;align-items:flex-start;gap:3px;min-height:64px;padding:10px 11px;border:1.5px solid var(--line);border-radius:var(--r);background:var(--bg);color:var(--tx);text-align:left;cursor:pointer;min-width:0}
.su-t b{font-size:14px;line-height:1.25;word-break:keep-all}
.su-t small{font-size:12px;line-height:1.35;color:var(--tx3);word-break:keep-all}
.su-t.on{border-color:#7E6D5C;background:#F7F2EB;box-shadow:inset 0 0 0 1px #7E6D5C}
.su-t.on b{color:#5C4A36}
.su-caps{display:flex;flex-wrap:wrap;gap:6px}
.su-cap{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:0 12px;border:1.5px solid var(--line);border-radius:999px;font-size:14px;cursor:pointer;background:var(--bg)}
.su-cap input{margin:0;accent-color:#7E6D5C}
.su-cap:has(input:checked){border-color:#7E6D5C;background:#F7F2EB;color:#5C4A36;font-weight:700}
@media (max-width:420px){ .su-type{grid-template-columns:1fr} .su-t{min-height:52px;flex-direction:row;align-items:baseline;gap:8px;flex-wrap:wrap} }
/* v6.103.0 — 전역 label·input 규칙 덮어쓰기(공종 칩) */
.su-caps label.su-cap{display:inline-flex;flex-direction:row;align-items:center;margin:0;letter-spacing:0;font-weight:500;color:var(--tx);text-transform:none;line-height:1}
.su-caps label.su-cap input[type=checkbox]{width:18px;height:18px;min-height:0;flex:0 0 18px;padding:0;border:0;box-shadow:none;appearance:auto;-webkit-appearance:checkbox;position:static}
.su-caps label.su-cap span{font-size:14px}

/* v6.104.0 사전 모집 링크 */
.pl-land{display:block;margin:0 0 14px;padding:11px 13px;border:1px solid var(--gold);border-radius:var(--r,10px);background:var(--gold-bg);font-size:12.5px;line-height:1.65;color:var(--ink);word-break:keep-all;overflow-wrap:anywhere}
.pl-land b{display:block;color:var(--gold-d);margin-bottom:3px;font-size:13px}
.pl-land.hide{display:none}
.post.pl-hit{outline:2px solid var(--gold);outline-offset:2px}
.pl-share{margin:10px 0 4px;padding:12px;border:1px solid var(--line);border-radius:var(--r,10px);background:var(--bg2);display:flex;flex-direction:column;gap:8px;min-width:0}
.pl-share.hide{display:none}
.pl-share .pl-h{font-weight:700;font-size:13px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pl-share .pl-n{font-weight:500;font-size:12px;color:var(--tx4)}
.pl-share .pl-chs{display:flex;gap:6px;flex-wrap:wrap}
.pl-share .pl-chs .btn.on{border-color:var(--gold);color:var(--gold-d)}
.pl-share .pl-url{width:100%;min-width:0;font-family:'JetBrains Mono',monospace;font-size:11.5px}
.badge.pl-in{background:var(--gold-bg);color:var(--gold-d);border:1px solid var(--gold)}

/* v6.105.0 등록 진행 현황 (지원자·협력업체 본인용). 신호색 토큰만 쓴다 — 골드 채움 추가 없음 */
.jr-card{min-width:0;display:block}
.jr-card.hide{display:none}
.jr-card.box.lbl{padding-top:16px}
.jr-gate{margin:18px auto 4px;max-width:460px;text-align:left;padding:14px;border:1px solid var(--line2);border-radius:var(--r-card,8px);background:var(--surface)}
.jr-hd{min-width:0}
.jr-hl{display:flex;justify-content:space-between;align-items:baseline;gap:10px;min-width:0}
.jr-hl b{font-size:14.5px;line-height:1.5;min-width:0;overflow-wrap:anywhere;word-break:keep-all}
.jr-n{flex:0 0 auto;font-size:12px;color:var(--tx3);font-variant-numeric:tabular-nums;white-space:nowrap}
.jr-hd.ok .jr-hl b{color:var(--sig-ok)}
.jr-hd.bad .jr-hl b{color:var(--sig-danger)}
.jr-hd.now .jr-hl b{color:var(--sig-warn)}
.jr-hd.wait .jr-hl b{color:var(--sig-info)}
.jr-bar{height:8px;border-radius:var(--r-pill,999px);background:var(--bg2);overflow:hidden;margin:8px 0 6px}
.jr-bar i{display:block;height:100%;border-radius:inherit;background:var(--sig-ok);transition:width .4s ease}
.jr-hd.now .jr-bar i{background:var(--sig-warn)}
.jr-hd.wait .jr-bar i{background:var(--sig-info)}
.jr-hd.bad .jr-bar i{background:var(--sig-danger)}
.jr-bar.sub{height:6px}
.jr-bar.sub i{background:var(--tx3)}
.jr-hd-d{font-size:13px;line-height:1.65;color:var(--tx2);overflow-wrap:anywhere;word-break:keep-all}
.jr-list{list-style:none;margin:12px 0 0;padding:0;position:relative}
.jr-st{display:flex;gap:11px;align-items:flex-start;position:relative;padding:0 0 13px;min-width:0}
.jr-st:last-child{padding-bottom:0}
.jr-st::before{content:'';position:absolute;left:13px;top:28px;bottom:2px;width:2px;background:var(--line2)}
.jr-st:last-child::before{display:none}
.jr-st.done::before{background:var(--sig-ok)}
.jr-dot{flex:0 0 28px;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:13px;font-weight:800;border:2px solid var(--line2);background:var(--surface);color:var(--tx3);position:relative;z-index:1;font-variant-numeric:tabular-nums}
.jr-st.done .jr-dot{background:var(--sig-ok);border-color:var(--sig-ok);color:#fff}
.jr-st.now .jr-dot{background:var(--sig-warn-bg);border-color:var(--sig-warn);color:var(--sig-warn)}
.jr-st.wait .jr-dot{background:var(--sig-info-bg);border-color:var(--sig-info);color:var(--sig-info)}
.jr-st.bad .jr-dot{background:var(--sig-danger-bg);border-color:var(--sig-danger);color:var(--sig-danger)}
.jr-b{flex:1 1 auto;min-width:0;padding-top:3px}
.jr-t{font-size:14px;font-weight:700;line-height:1.45;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.jr-st.todo .jr-t{color:var(--tx3)}
.jr-s{font-size:11.5px;font-weight:600;color:var(--tx3);white-space:nowrap}
.jr-st.done .jr-s{color:var(--sig-ok)}
.jr-st.now .jr-s{color:var(--sig-warn)}
.jr-st.wait .jr-s{color:var(--sig-info)}
.jr-st.bad .jr-s{color:var(--sig-danger)}
.jr-d{font-size:13px;line-height:1.6;color:var(--tx2);margin-top:2px;overflow-wrap:anywhere;word-break:keep-all}
.jr-act{margin-top:8px;min-height:36px}
.jr-fold{margin-top:8px}
.jr-fold summary{cursor:pointer;font-size:12.5px;color:var(--tx3);min-height:32px;display:flex;align-items:center}
.jr-ex{margin-top:14px;padding-top:12px;border-top:1px dashed var(--line2);min-width:0}
.jr-ex .jr-hl b{font-size:13.5px}
.jr-flash{outline:2px solid var(--sig-warn);outline-offset:3px;border-radius:var(--r,6px);transition:outline-color .3s}
@media (max-width:480px){
  .jr-gate{padding:12px}
  .jr-hl{flex-wrap:wrap;gap:2px 10px}
  .jr-act{width:100%;min-height:44px}
}
