/* board.css(원본 디자인 그대로) 위에 얹는 추가 화면 스타일: 로그인, 사용자 관리, 대화상자 */
html{background:var(--bg)}
/* body 여백은 원본과 같게 브라우저 기본값(8px) 유지 */
[hidden]{display:none !important}

/* 헤더 사용자 정보 */
.who{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--ink-2);flex-wrap:wrap}
.who b{color:var(--ink);font-weight:600}
.btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;padding:6px 12px;font:500 13px var(--font);cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.btn:hover{border-color:var(--ink-3)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.primary:hover{filter:brightness(1.08)}
.btn.danger{color:var(--late);border-color:color-mix(in srgb,var(--late) 45%,transparent)}
.btn.sm{padding:3px 9px;font-size:12px}
.btn[disabled]{opacity:.55;cursor:default}
a.btn:focus-visible,.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* 로그인 카드 */
.auth-wrap{min-height:calc(100vh - 70px);display:grid;place-items:start center;padding:48px 16px}
.auth-card{width:100%;max-width:400px}
.auth-card h2{margin:0 0 6px;font-size:18px}
.auth-card p.desc{margin:0 0 16px;color:var(--ink-2);font-size:13px}
.field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.field label{font-size:12px;font-weight:600;color:var(--ink-2)}
.field input,.field select,.inline-in{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;padding:9px 10px;font:14px var(--font);min-width:0}
.inline-in{padding:5px 8px;font-size:13px;width:100%}
.field small{color:var(--ink-3);font-size:12px}
.msg{font-size:13px;border-radius:6px;padding:9px 12px;margin:0 0 12px}
.msg.err{background:var(--late-soft);color:var(--late)}
.msg.ok{background:var(--done-soft);color:var(--done)}
.msg.info{background:var(--warn-soft);color:var(--ink)}
.auth-card .btn.primary{width:100%;justify-content:center;padding:10px}
.auth-foot{margin-top:14px;font-size:12px;color:var(--ink-3)}

/* 사용자 관리 */
.users-add{display:grid;grid-template-columns:2fr 1.4fr 1fr 1fr auto;gap:8px;align-items:end;margin-bottom:14px}
.users-add .field{margin:0}
.users-add input,.users-add select{padding:7px 9px;font-size:13px}
td .chip{margin-right:4px}
td.act{white-space:nowrap;text-align:right}
td.act .btn{margin-left:4px}
.muted-sm{color:var(--ink-3);font-size:12px}
@media (max-width:820px){.users-add{grid-template-columns:1fr 1fr}.users-add .btn{grid-column:1/-1}}

/* 임시 비밀번호 대화상자 */
dialog{border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);padding:20px;max-width:420px;width:calc(100% - 32px)}
dialog::backdrop{background:rgba(0,0,0,.45)}
dialog h3{margin:0 0 8px;font-size:16px}
.temp-pw{display:flex;gap:8px;align-items:center;margin:12px 0}
.temp-pw code{flex:1;font:600 18px var(--mono);letter-spacing:.04em;background:var(--sunk);border-radius:6px;padding:8px 10px;user-select:all;word-break:break-all}
.dlg-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:12px}

/* RACI (최종 파일 구조: 역할 최대 14칸) */
.raci2 th.rc-h{word-break:keep-all;font-size:10.5px;text-align:center;white-space:normal;min-width:62px;max-width:96px;line-height:1.3;vertical-align:bottom}
.raci2 td.rc{width:auto;min-width:44px}
.raci2 td.rmk{min-width:200px;max-width:340px;font-size:12px;white-space:normal}
.raci2 small.cat-sm{display:block;margin-bottom:2px}
.raci2 details{margin-top:4px}
.raci2 details summary{cursor:pointer;color:var(--accent);font-size:11.5px}
.raci2 details p{margin:4px 0 0;color:var(--ink-2)}
.raci2 th:first-child,.raci2 td:first-child{min-width:240px}
.raci2 td.dt{min-width:64px}
.raci2 details.gov summary{display:inline-block;margin-top:4px;padding:1px 8px;border:1px solid color-mix(in srgb,var(--accent) 40%,transparent);border-radius:999px;background:var(--accent-soft);list-style:none}
.raci2 details.gov summary::-webkit-details-marker{display:none}
.raci2 details.gov summary::before{content:"▸ "}
.raci2 details.gov[open] summary::before{content:"▾ "}
.raci2 details.gov p{max-width:520px;font-size:12px;line-height:1.5}

/* 5단계: 관리자 수정 */
.btn.xs{padding:0 6px;font-size:11px;line-height:18px;border-radius:4px}
.row-acts{margin-left:auto;display:inline-flex;gap:4px;flex:none;padding-left:4px}
.view-tools{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap;margin-bottom:10px}
.view-tools:empty{display:none}
.tool-grp{display:inline-flex;gap:8px;flex-wrap:wrap}
td.act{white-space:nowrap;text-align:right;width:1%}
dialog.drawer{position:fixed;inset:0 0 0 auto;margin:0;height:100%;max-height:100%;width:100%;max-width:520px;border-radius:0;border-width:0 0 0 1px;padding:20px 20px 32px;overflow-y:auto}
dialog.drawer h3{font-size:17px}
.ed-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.field textarea.ta{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;padding:8px 10px;font:13px/1.5 var(--font);resize:vertical;min-height:52px}
.field select:disabled{opacity:.7}
.dlg-actions .spacer{flex:1}
.hist{margin-top:22px;border-top:1px solid var(--line);padding-top:14px}
.hist h4{margin:0 0 10px;font-size:14px}
.hist-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.hist-list>li{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--bg)}
.hist-meta{display:flex;gap:10px;flex-wrap:wrap;align-items:baseline;font-size:12px;color:var(--ink-2)}
.hist-meta .dt{font-family:var(--mono);font-size:11.5px}
.hist-req{margin-top:6px;font-size:12px;color:var(--ink-2)}
.hist-list ul{margin:6px 0 0;padding-left:16px;font-size:12.5px}
.hist-list ul li{margin:2px 0}
.hist-f{font-weight:600}
.hist-list .old{color:var(--ink-3);text-decoration:line-through}
.hist-list .new{color:var(--ink);font-weight:500}
.hidden-list{list-style:none;margin:0;padding:0}
.hidden-list li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;border-top:1px solid var(--line)}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:9px 16px;border-radius:8px;font-size:13px;z-index:50;box-shadow:0 4px 16px rgba(0,0,0,.2)}
@media (max-width:520px){.ed-grid{grid-template-columns:1fr}}

/* 6단계: 수정요청 */
.gantt.wide{min-width:1100px}
.gantt.wide .g-head,.gantt.wide .g-row{grid-template-columns:var(--lab) minmax(0,1fr)}
.req-acts{display:inline-flex;gap:4px;align-items:center}
.chip.pend{font-size:10.5px;padding:1px 6px}
.badge{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--late);color:#fff;font:600 11px var(--mono);vertical-align:1px}
.rq-filter{margin-bottom:12px}
.rq-card{margin-bottom:14px}
.rq-card.pending{border-color:color-mix(in srgb,var(--warn) 55%,var(--line))}
.rq-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;font-size:14px}
.rq-meta{font-size:12px;color:var(--ink-2);margin-top:4px}
.rq-reason{margin:10px 0;font-size:13px;white-space:pre-wrap;word-break:break-word}
table.cmp{width:auto;min-width:min(100%,560px);margin:10px 0;font-size:12.5px;border:1px solid var(--line);border-radius:6px}
table.cmp th,table.cmp td{padding:6px 10px;white-space:pre-wrap;word-break:break-word;max-width:320px}
table.cmp tbody th{font-weight:600;color:var(--ink-2);background:var(--sunk);text-align:left}
table.cmp td.chg{background:var(--warn-soft);color:var(--ink);font-weight:600;box-shadow:inset 3px 0 0 var(--warn)}
.rq-act{margin-top:10px;border-top:1px dashed var(--line);padding-top:10px}
.rq-act summary{cursor:pointer;font-size:13px;font-weight:600;margin-bottom:8px}
.ed-grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 12px}
#my-list .panel.muted,#rq-list .panel.muted{padding:20px}
@media (max-width:620px){.ed-grid3{grid-template-columns:1fr}}

/* ===== 피드백 v1 ===== */
/* [2] 요약 카드: 누를 수 있는 카드(클리닉 오픈·회의) */
button.kpi{border:0;text-align:left;font:inherit;color:inherit;cursor:pointer;border-radius:0}
button.kpi:hover{background:color-mix(in srgb,var(--surface) 88%,var(--accent))}
.kpi .lb{display:flex;justify-content:space-between;align-items:center;gap:6px}
.kpi-more{font-size:15px;line-height:1;color:var(--ink-3)}
.kpi .s.sub{font-size:11px;color:var(--ink-3)}
.kpi .s.strong{color:var(--ink);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#k-open{font-size:22px}

/* [3] 주요 업무 줄 */
.ms{margin-top:14px}
.ms-h{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--ink-2)}
.ms-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px}
.ms-card{background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:6px;min-width:0}
.ms-card.late{border-color:color-mix(in srgb,var(--late) 55%,var(--line))}
.ms-card.done{opacity:.55}
.ms-name{font-weight:600;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ms-row{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:12px;color:var(--ink-2)}
.ms-dd{font:600 13px var(--mono)}
.ms-dd.late{color:var(--late)} .ms-dd.soon{color:var(--warn)}
.ms-pct{font:500 12px var(--mono);font-variant-numeric:tabular-nums}
.ms-card .meter{margin-top:0}

/* [1] 업무 리마인드(옛 챙겨야 할 업무): 마감 지난 행 강조 (라이트/다크 공통 색 변수) */
.todo{overflow-x:hidden}
.todo li.od{background:var(--late-soft);box-shadow:-8px 0 0 var(--late-soft),8px 0 0 var(--late-soft);border-top-color:color-mix(in srgb,var(--late) 22%,var(--late-soft))}
.todo li.od .t div{color:var(--ink)}
.todo li.od .t small{color:var(--ink-2)}

/* [5] 넓은 표: 화면 높이에 맞춘 스크롤 영역, 헤더 행·첫 열 고정, ◀ ▶ 버튼 */
.scroll.fit{max-height:calc(100vh - 150px);max-height:calc(100dvh - 150px);min-height:260px;overflow:auto;overscroll-behavior:contain}
.scroll.fit thead th{position:sticky;top:0;z-index:3}
.scroll.fit table tr>:first-child{position:sticky;left:0;z-index:2;background:var(--surface)}
.scroll.fit thead tr>:first-child{z-index:4;background:var(--sunk)}
.scroll.fit tr.cat>td:first-child{background:var(--sunk)}
.scroll.fit .g-head{z-index:6}
.scroll.fit .g-head .lab,.scroll.fit .g-row .lab{position:sticky;left:0;z-index:4;background:var(--surface)}
.scroll.fit .g-head .lab{z-index:7}
.scroll.fit .g-cat span{position:sticky;left:12px}
.scroll-nav{display:flex;justify-content:flex-end;gap:4px;margin:0 0 6px}
.scroll-nav.off{display:none}
.scroll-nav .btn.xs{padding:2px 10px;font-size:12px}

/* [4] 공지: 종 아이콘·팝업 */
.btn.bell{position:relative;padding:5px 8px}
.btn.bell .badge{position:absolute;top:-7px;right:-7px}
dialog.notice-dlg{max-width:620px;max-height:82vh;overflow:auto}
.nt-list{display:flex;flex-direction:column;gap:10px;margin:8px 0}
.nt-card{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--bg)}
.nt-card.unread{border-color:color-mix(in srgb,var(--warn) 60%,var(--line));background:color-mix(in srgb,var(--warn-soft) 60%,var(--bg))}
.nt-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:13.5px}
.nt-ch{margin:6px 0 4px;padding-left:16px;font-size:12.5px}
.nt-ch .old{color:var(--ink-3);text-decoration:line-through}
.nt-ch .new{font-weight:600}
.nt-meta{font-size:11.5px;color:var(--ink-2)}

/* [2] 클리닉 오픈·공휴일·회의 창 */
.sc-box{border:1px solid var(--line);border-radius:8px;padding:12px;margin:10px 0;background:var(--bg)}
.sc-h{margin:18px 0 6px;font-size:14px}
.chk{display:flex;gap:6px;align-items:center;font-size:13px;margin:2px 0 10px;cursor:pointer}
.chk input{width:16px;height:16px}
.chk-cell{justify-content:flex-end}
.chk.notify{margin-top:6px;padding:8px 10px;border:1px dashed var(--line);border-radius:6px}
.hol-list,.meet-list{list-style:none;margin:0;padding:0}
.hol-list li{display:grid;grid-template-columns:130px minmax(0,1fr) auto auto;gap:8px;align-items:center;padding:7px 0;border-top:1px solid var(--line);font-size:13px}
.hol-list li.muted{display:block}
.hol-list li.exp .hol-name{color:var(--ink-2)}
.hol-acts{display:inline-flex;gap:4px}
.meet-list li{padding:10px 0;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:3px;font-size:13px}
.meet-list li.past{opacity:.6}
.meet-when{display:flex;justify-content:space-between;gap:8px;align-items:center}
.meet-when .dt{font-family:var(--mono);font-size:12px;color:var(--ink-2)}
.meet-t{font-weight:600}
.meet-acts{display:flex;gap:6px;margin-top:4px}
.pre{white-space:pre-wrap}
.dlg-actions.left{justify-content:flex-start;margin:4px 0 0}
@media (max-width:520px){.hol-list li{grid-template-columns:1fr auto}.hol-list .hol-acts{grid-column:1/-1}}

/* 상단 안내 배너: 종류별 색 (주의=기존 주황 / 안내=청록 / 긴급=빨강), 라이트·다크 공통 변수 */
.notice .bn-body{flex:1;min-width:0}
.notice p{white-space:pre-line;word-break:break-word}
.notice .bn-meta{display:block;margin-top:4px;font-size:11px;color:var(--ink-3)}
.notice .bn-meta:empty{display:none}
.notice .bn-acts{flex:none}
.notice.k-info{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 35%,transparent)}
.notice.k-info .tag{color:var(--accent);border-color:var(--accent)}
.notice.k-urgent{background:var(--late-soft);border-color:color-mix(in srgb,var(--late) 45%,transparent)}
.notice.k-urgent .tag{color:var(--late);border-color:var(--late)}
.bn-off{margin-top:16px;padding:8px 12px;border:1px dashed var(--line);border-radius:8px;font-size:12.5px;color:var(--ink-2);display:flex;gap:8px;align-items:center}
.notice.bn-pv{margin-top:8px}

/* ===== 피드백 v2 ===== */
/* [B] 화면 아래에 붙는 보조 가로 스크롤바 (표가 보이는데 표 자체 스크롤바가 화면 밖일 때만) */
.hbar{position:sticky;bottom:0;z-index:8;height:17px;overflow-x:auto;overflow-y:hidden;visibility:hidden;
  background:color-mix(in srgb,var(--surface) 94%,transparent);border:1px solid var(--line);border-top:0;border-radius:0 0 8px 8px}
.hbar.on{visibility:visible}
.hbar-in{height:1px}

/* [C] 국내업무 · 두바이업무 */
.tab-hint{margin:0 0 8px;font-size:12px;color:var(--ink-2)}
.chip.src-chip{font-size:10px;padding:0 6px;background:var(--accent-soft);color:var(--accent);vertical-align:1px}
tr.cat.tbd td{background:color-mix(in srgb,var(--warn-soft) 70%,var(--sunk));color:var(--ink-2)}
.st-nodate{background:var(--plan-soft);color:var(--ink-3);border:1px dashed var(--plan)}
#clinic td:first-child,#dubai td:first-child{min-width:260px}

/* [D] 회의: 참석 대상 고르기 · 링크 */
.att-pick{display:flex;flex-direction:column;gap:8px}
.att-grp{border:1px solid var(--line);border-radius:8px;padding:6px 10px 8px;margin:0;display:flex;flex-wrap:wrap;gap:4px 12px}
.att-grp legend{font-size:12px;font-weight:600;color:var(--ink-2);padding:0 4px}
.att-opt{font-size:12.5px;display:inline-flex;align-items:center;gap:4px;cursor:pointer;white-space:nowrap}
.att-opt.off{color:var(--ink-3);text-decoration:line-through}
.link-rows{display:flex;flex-direction:column;gap:6px;margin-bottom:6px}
.link-row{display:grid;grid-template-columns:110px minmax(0,1fr) minmax(0,1.6fr) auto;gap:6px;align-items:center}
.link-row select,.link-row input{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;padding:6px 8px;font:13px var(--font);min-width:0}
.meet-links{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}
.meet-links .btn.primary{color:#fff}
.att-row{grid-template-columns:minmax(0,1fr) auto auto !important}
.att-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:4px}
@media (max-width:520px){.link-row{grid-template-columns:1fr 1fr}.link-row input[type=url]{grid-column:1/-1}}

/* 로그인: 비밀번호 보기/숨기기 · Caps Lock 경고 */
.pw-wrap{position:relative;display:flex}
.pw-wrap input{flex:1;padding-right:72px;min-width:0}
.pw-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);border:1px solid var(--line);background:var(--sunk);color:var(--ink-2);border-radius:4px;padding:3px 8px;font:500 12px var(--font);cursor:pointer}
.pw-eye[aria-pressed="true"]{background:var(--accent-soft);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 45%,transparent)}
.pw-eye:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.field small.caps-warn,.caps-warn{display:block;margin-top:4px;color:var(--warn);font-size:12px;font-weight:600}

/* 읽기 전용 링크 */
.chip.view-badge{background:var(--warn-soft);color:var(--warn);font-weight:600}
#view-exp{font-size:12px;color:var(--ink-2)}
.vl-add{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:end;margin:8px 0 12px}
.vl-add .field{margin:0}
.vl-url{flex:1;font:13px var(--mono);border:1px solid var(--line);border-radius:6px;padding:8px 10px;background:var(--sunk);color:var(--ink);min-width:0}
dialog.vl-dlg{max-width:620px}
