:root{
  --bg:#F7F7F8; --surface:#FFFFFF; --line:#EBEBEE; --line-2:#DEDFE3; --hover:#F3F4F6;
  --t1:#16171A; --t2:#3C3F46; --t3:#6B6F78; --t4:#9A9EA6;
  --ink:#231F20; --brand:#0B78C1; --brand-soft:#EAF4FB;
  --fs-blue:#00A0E0; --fs-red:#E01820; --fs-orange:#F08818; --fs-green:#88C038;
  --ok:#12A150; --ok-s:#EAF7EF; --low:#B98300; --low-s:#FBF5E2; --mid:#E8590C; --mid-s:#FEF0E7; --high:#E03131; --high-s:#FDECEC;
  --r1:8px; --r2:12px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font:14px/1.55 'Wanted Sans Variable','Wanted Sans','Malgun Gothic',sans-serif;color:var(--t1);background:var(--bg);-webkit-font-smoothing:antialiased;letter-spacing:-.006em}
a{color:inherit;text-decoration:none} button,input,select,textarea{font:inherit;color:inherit} button{cursor:pointer;background:none;border:none}
[hidden]{display:none !important}

/* 로고 4색 띠 */
.stripe{position:fixed;top:0;left:0;right:0;height:3px;display:flex;z-index:50}
.stripe i{flex:1} .stripe i:nth-child(1){background:var(--fs-blue)} .stripe i:nth-child(2){background:var(--fs-red);flex:2.2} .stripe i:nth-child(3){background:var(--fs-orange);flex:2.2} .stripe i:nth-child(4){background:var(--fs-green);flex:1.4}

/* ── 틀 ── */
.app{display:grid;grid-template-columns:240px minmax(0,1fr);height:100vh;padding-top:3px}
.nav{display:flex;flex-direction:column;gap:2px;padding:16px 12px 14px;border-right:1px solid var(--line);background:var(--bg);overflow-y:auto;position:relative}
.ws{display:flex;align-items:center;gap:6px;width:100%;padding:8px 8px 8px 10px;border-radius:var(--r2);text-align:left}
.ws:hover{background:var(--hover)}
.ws img{height:42px;max-width:184px;object-fit:contain;object-position:left center}
.ws svg{margin-left:auto;color:var(--t4);flex-shrink:0}
.ws-sub{font-size:12.5px;color:var(--t4);padding:2px 12px 14px;font-weight:500}
.ws-menu{position:absolute;top:76px;left:12px;right:12px;z-index:30;background:var(--surface);border-radius:var(--r2);box-shadow:0 0 0 1px var(--line),0 12px 32px rgba(17,18,22,.12);padding:6px}
.ws-menu button{display:flex;align-items:center;gap:10px;width:100%;padding:10px;border-radius:var(--r1);text-align:left}
.ws-menu button:hover{background:var(--hover)}
.ws-menu img{height:30px;max-width:150px;object-fit:contain}
.ws-menu .chk{margin-left:auto;color:var(--brand)}
.nav a{display:flex;align-items:center;gap:10px;height:36px;padding:0 10px;border-radius:var(--r1);color:var(--t2);font-weight:500;cursor:pointer}
.nav a:hover{background:var(--hover)}
.nav a svg{color:var(--t3);flex-shrink:0}
.nav a em{margin-left:auto;font-style:normal;font-size:12.5px;color:var(--t4);font-variant-numeric:tabular-nums}
.nav a.on{background:var(--surface);color:var(--t1);font-weight:600;box-shadow:0 0 0 1px var(--line),0 1px 2px rgba(17,18,22,.04)}
.nav a.on svg{color:var(--brand)}
.nav-sec{font-size:12px;font-weight:600;color:var(--t4);padding:18px 10px 6px}
.nav-foot{margin-top:auto;display:flex;flex-direction:column;gap:2px;padding-top:12px}
.me{display:flex;align-items:center;gap:10px;padding:12px 8px 0;margin-top:8px;border-top:1px solid var(--line)}
.av{width:30px;height:30px;border-radius:50%;background:#E7E8EC;color:var(--t2);display:grid;place-items:center;font-size:12px;font-weight:600;flex-shrink:0}
.me b{display:block;font-size:13px;font-weight:600;line-height:1.3} .me small{font-size:12px;color:var(--t4)}
.me button{margin-left:auto;font-size:12.5px;color:var(--t3);padding:4px 6px;border-radius:6px} .me button:hover{background:var(--hover)}
.draft{margin:10px 8px 0;font-size:11.5px;color:var(--t4)}
main{min-width:0;overflow-y:auto;background:var(--surface)}
.page{padding:30px 36px 48px;max-width:1400px}
.topbar{display:none}

/* ── 공통 요소 ── */
.ph{display:flex;align-items:flex-end;gap:12px;margin-bottom:22px;flex-wrap:wrap}
.eyebrow{font-size:13px;color:var(--t3);font-weight:500;margin-bottom:2px}
h1{font-size:24px;font-weight:700;letter-spacing:-.025em;line-height:1.3}
.ph p{color:var(--t3);margin-top:2px}
.ph-act{margin-left:auto;display:flex;gap:8px}
.btn{height:36px;padding:0 14px;border-radius:var(--r1);border:1px solid var(--line-2);background:var(--surface);font-weight:600;font-size:13.5px;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap;color:var(--t1)}
.btn:hover{background:var(--hover)}
.btn svg{color:var(--t3)}
.btn.primary{background:var(--ink);border-color:var(--ink);color:#fff} .btn.primary:hover{background:#000} .btn.primary svg{color:#fff}
.btn.sm{height:30px;padding:0 10px;font-size:13px}
.btn.ghost{border-color:transparent;background:transparent;color:var(--t3)} .btn.ghost:hover{background:var(--hover)}
.btn.danger{color:var(--high)}
.toolbar{display:flex;gap:8px;align-items:center;margin-bottom:16px;flex-wrap:wrap}
.search{display:flex;align-items:center;gap:8px;flex:1 1 180px;max-width:360px;min-width:160px;height:36px;padding:0 12px;border:1px solid var(--line-2);border-radius:var(--r1);color:var(--t4);background:var(--surface)}
.search:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,120,193,.14)}
.search input{border:none;outline:none;flex:1;min-width:0;background:none;color:var(--t1)} .search input::placeholder{color:var(--t4)}
.seg{display:flex;padding:3px;background:#F1F2F4;border-radius:10px;flex-shrink:0}
.seg button{height:30px;padding:0 12px;display:flex;align-items:center;gap:6px;border-radius:7px;font-weight:500;color:var(--t3);font-size:13.5px;white-space:nowrap}
.seg button em{font-style:normal;color:var(--t4);font-size:12.5px;font-variant-numeric:tabular-nums}
.seg button.on{background:var(--surface);color:var(--t1);font-weight:600;box-shadow:0 1px 2px rgba(17,18,22,.08),0 0 0 1px rgba(17,18,22,.04)}
.seg button.warn em{color:var(--high);font-weight:600}
.dd{height:36px;padding:0 32px 0 12px;border:1px solid var(--line-2);border-radius:var(--r1);color:var(--t1);font-weight:500;font-size:13.5px;background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16' fill='none' stroke='%239A9EA6' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M4.5 6.2L8 9.7l3.5-3.5'/%3E%3C/svg%3E") no-repeat right 10px center;appearance:none;cursor:pointer;outline:none;flex-shrink:0}
.dd:focus{border-color:var(--brand)}
.cat{display:inline-flex;align-items:center;gap:7px;color:var(--t2);white-space:nowrap} .cat i{width:8px;height:8px;border-radius:2px;flex-shrink:0}
.gr{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:6px;font-size:12.5px;font-weight:600;white-space:nowrap;font-variant-numeric:tabular-nums}
.gr.ok{background:var(--ok-s);color:var(--ok)} .gr.low{background:var(--low-s);color:var(--low)} .gr.mid{background:var(--mid-s);color:var(--mid)} .gr.high{background:var(--high-s);color:var(--high)} .gr.none{background:#F1F2F4;color:var(--t4)}
.mono{font-variant-numeric:tabular-nums} .muted{color:var(--t4)} .red{color:var(--high)}
.example{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:6px;background:#F1F2F4;color:var(--t3);font-size:12px;font-weight:600;margin-left:8px;vertical-align:3px}
.empty{padding:64px 20px;text-align:center;color:var(--t3)} .empty b{display:block;color:var(--t1);font-size:15px;margin:10px 0 4px} .empty svg{color:var(--t4)}

/* ── 홈 ── */
.todo{border:1px solid var(--line);border-radius:var(--r2);margin-bottom:28px}
.td{display:flex;align-items:center;gap:14px;padding:16px 18px}
.td+.td{border-top:1px solid var(--line)}
.td .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.td b{font-weight:600;font-size:15px} .td small{display:block;color:var(--t3);font-size:13.5px;margin-top:1px}
.td .go{margin-left:auto;display:flex;align-items:center;gap:6px;color:var(--brand);font-weight:600;font-size:13.5px;white-space:nowrap;padding:6px 8px;border-radius:6px}
.td .go:hover{background:var(--brand-soft)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:28px}
.blk{border:1px solid var(--line);border-radius:var(--r2);padding:20px 22px}
.bh{display:flex;align-items:center;gap:8px;margin-bottom:14px} .bh h2{font-size:15px;font-weight:600} .bh svg{color:var(--t3)}
.bh a{margin-left:auto;color:var(--t3);font-size:13px;font-weight:500;cursor:pointer;padding:4px 6px;border-radius:6px} .bh a:hover{background:var(--hover)}
.num{font-size:30px;font-weight:700;letter-spacing:-.03em;line-height:1.1} .num span{font-size:15px;font-weight:600;margin-left:2px} .num small{font-size:13.5px;font-weight:500;color:var(--t3);margin-left:10px;letter-spacing:0}
.bar{display:flex;height:8px;border-radius:4px;overflow:hidden;margin:18px 0 12px;gap:2px}
.lg{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:13px;color:var(--t3)} .lg span{display:flex;align-items:center;gap:6px} .lg i{width:8px;height:8px;border-radius:2px} .lg b{color:var(--t1);font-weight:600}
.ba{display:grid;grid-template-columns:76px 1fr 40px;align-items:center;gap:10px;font-size:13px;color:var(--t3);margin-top:10px}
.ba .tr{height:8px;background:#F1F2F4;border-radius:4px;overflow:hidden} .ba .tr i{display:block;height:100%;border-radius:4px}
.ba b{color:var(--t1);font-weight:600;text-align:right}
.recent{width:100%;border-collapse:collapse}
.recent th{text-align:left;font-size:12.5px;font-weight:500;color:var(--t4);padding:0 0 8px}
.recent td{padding:11px 0;border-top:1px solid var(--line);color:var(--t2)} .recent td:first-child{width:88px;color:var(--t3)} .recent td:nth-child(2){width:116px}
.recent tr.click{cursor:pointer} .recent tr.click:hover td{background:var(--hover)}
.kind{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--t3)} .kind svg{color:var(--t4)}
.recent td b{color:var(--t1);font-weight:600}
.lbl-t td:first-child{width:auto;color:var(--t2)} .lbl-t td:nth-child(2){width:150px} .lbl-t td:nth-child(3){width:96px}

/* ── 화학물질 ── */
.split{display:grid;grid-template-columns:minmax(0,1fr) 380px;min-height:100%}
.tbl{width:100%;border-collapse:collapse}
.tbl th{text-align:left;font-size:12.5px;font-weight:500;color:var(--t4);padding:0 14px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl td{padding:11px 14px;border-bottom:1px solid var(--line);color:var(--t2);white-space:nowrap;vertical-align:middle}
.tbl th:first-child,.tbl td:first-child{padding-left:12px}
.tbl tbody tr{cursor:pointer} .tbl tbody tr:hover td{background:#FAFAFB}
.tbl td .nm{color:var(--t1);font-weight:600;white-space:normal} .tbl td .sb{font-size:12.5px;color:var(--t4)} .tbl td .sb.red{color:var(--high);font-weight:500}
.tbl td.ell{max-width:200px;overflow:hidden;text-overflow:ellipsis}
.tbl tr.sel td{background:var(--brand-soft) !important} .tbl tr.sel td:first-child{box-shadow:inset 3px 0 var(--brand)}
.sheet{border-left:1px solid var(--line);padding:24px;background:var(--surface);position:sticky;top:0;height:100vh;overflow-y:auto}
.sh-top{display:flex;align-items:center;gap:8px} .sh-top .push{margin-left:auto}
.sh-x{display:none}
.sheet h2{font-size:22px;font-weight:700;letter-spacing:-.025em;margin:14px 0 2px;line-height:1.3}
.acts{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:8px;margin:18px 0 22px}
.dl{display:grid;grid-template-columns:88px 1fr;gap:10px 12px;font-size:13.5px} .dl dt{color:var(--t3)} .dl dd{color:var(--t1);font-weight:500;min-width:0;overflow-wrap:anywhere}
.left{color:var(--t3);font-weight:400;margin-left:6px}
.sec{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--t2);margin:26px 0 10px} .sec span{color:var(--t4);font-weight:500} .sec svg{color:var(--t3)}
.rk{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;margin-bottom:8px;text-align:left}
.rk:hover{background:#FAFAFB}
.rk .n{font-size:12.5px;color:var(--t4);flex-shrink:0;min-width:38px} .rk b{font-weight:600;font-size:13.5px;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rk .ext{font-size:11px;font-weight:700;color:var(--t3);background:#F1F2F4;border-radius:5px;padding:3px 0;width:40px;text-align:center;flex-shrink:0}
.okdot{display:inline-flex;align-items:center;gap:6px;font-weight:600} .okdot i{width:7px;height:7px;border-radius:50%}
.note-s{font-size:13px;color:var(--t3);padding:12px 14px;background:var(--bg);border-radius:10px}

/* ── 위험성평가 ── */
.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.card{border:1px solid var(--line);border-radius:var(--r2);overflow:hidden;text-align:left;background:var(--surface);transition:box-shadow .15s,border-color .15s}
.card:hover{border-color:var(--line-2);box-shadow:0 6px 20px rgba(17,18,22,.06)}
.card{position:relative;cursor:pointer} .card.picked{border-color:var(--brand);box-shadow:0 0 0 1px var(--brand)}
.card .ck{position:absolute;left:8px;top:8px;z-index:1;display:flex;padding:5px;border-radius:6px;background:rgba(255,255,255,.92)} .card .ck input{width:16px;height:16px;accent-color:var(--brand);cursor:pointer}
.rpv{display:block;width:100%;height:480px;border:1px solid var(--line);border-radius:10px}
.pp{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:var(--line)}
.pp div{aspect-ratio:4/3;background:#F1F2F4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--t4);font-size:12px}
.pp div:last-child{background:#EDF0F3}
.cb{padding:14px 16px 16px}
.cm{display:flex;gap:8px;font-size:12.5px;color:var(--t4)} .cm .t{margin-left:auto;color:var(--t3)}
.cb b{display:block;font-weight:600;font-size:15px;margin:4px 0 12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.015em}
.chg{display:flex;align-items:center;gap:6px;color:var(--t4)} .chg .d{margin-left:auto;font-size:12.5px;font-weight:600;color:var(--ok)}

/* ── 평가표 작성 ── */
.form-wrap{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:28px;align-items:start}
.fs{border:1px solid var(--line);border-radius:var(--r2);padding:20px 22px;margin-bottom:16px}
.fs h3{font-size:14.5px;font-weight:600;margin-bottom:14px;display:flex;align-items:center;gap:8px} .fs h3 span{font-size:12.5px;color:var(--t4);font-weight:500} .fs h3 svg{color:var(--t3)}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:12px} .g3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.f{margin-bottom:14px;min-width:0} .f:last-child{margin-bottom:0}
.f label{display:flex;font-size:13px;font-weight:500;color:var(--t2);margin-bottom:6px} .f label em{margin-left:auto;font-style:normal;color:var(--t4);font-size:12px;font-weight:400;font-variant-numeric:tabular-nums}
.f label em.full{color:var(--mid)}
.in{width:100%;height:40px;border:1px solid var(--line-2);border-radius:var(--r1);padding:0 12px;background:var(--surface);outline:none;color:var(--t1)}
textarea.in{height:auto;padding:10px 12px;resize:vertical;min-height:72px}
.in:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(11,120,193,.14)}
.in::placeholder{color:var(--t4)}
select.in{appearance:none;background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 16 16' fill='none' stroke='%239A9EA6' stroke-width='1.6' stroke-linecap='round'%3E%3Cpath d='M4.5 6.2L8 9.7l3.5-3.5'/%3E%3C/svg%3E") no-repeat right 12px center;padding-right:34px;cursor:pointer}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{height:32px;padding:0 12px;border:1px solid var(--line-2);border-radius:999px;display:flex;align-items:center;font-size:13.5px;color:var(--t2);font-weight:500;background:var(--surface)}
.chip:hover{background:var(--hover)} .chip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.seg.full{width:100%} .seg.full button{flex:1;justify-content:center}
.linked{display:flex;align-items:center;gap:10px;height:40px;padding:0 6px 0 12px;border:1px solid #BFDDF2;background:var(--brand-soft);border-radius:var(--r1);font-weight:500;margin-bottom:8px}
.linked .mono{color:var(--t3);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap} .linked button{margin-left:auto;color:var(--t3);padding:6px;border-radius:6px} .linked button:hover{background:#DCEBF6}
.pick{position:relative;margin-top:8px}
.pick-list{position:absolute;top:44px;left:0;right:0;background:var(--surface);border-radius:var(--r2);box-shadow:0 0 0 1px var(--line),0 12px 32px rgba(17,18,22,.12);padding:6px;z-index:5;max-height:260px;overflow:auto}
.pick-list button{display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border-radius:var(--r1);text-align:left}
.pick-list button:hover{background:var(--hover)} .pick-list small{margin-left:auto;color:var(--t4);font-size:12.5px}
.drop{height:150px;border:1.5px dashed var(--line-2);border-radius:var(--r2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--t3);font-size:13px;cursor:pointer;background:var(--surface) center/cover no-repeat;position:relative;overflow:hidden}
.drop:hover{border-color:var(--brand);background-color:var(--brand-soft)}
.drop b{color:var(--t1);font-weight:600;font-size:13.5px}
.drop.has{border-style:solid;border-color:var(--line)} .drop.has > *:not(input){display:none}
.drop.has:after{content:attr(data-label);position:absolute;left:8px;top:8px;background:rgba(17,18,22,.7);color:#fff;font-size:12px;font-weight:600;padding:3px 8px;border-radius:6px}
.side{position:sticky;top:24px}
.judge{border:1px solid var(--line);border-radius:var(--r2);padding:20px}
.judge h3{font-size:14.5px;font-weight:600;margin-bottom:2px} .judge p{font-size:12.5px;color:var(--t3);margin-bottom:6px}
.mx{display:grid;grid-template-columns:40px repeat(3,1fr);gap:4px;font-size:12px;color:var(--t4)}
.mx .h{display:flex;align-items:center;justify-content:center;height:22px}
.mx .rl{display:flex;align-items:center}
.mx button{height:40px;border-radius:7px;font-weight:600;font-size:13px;transition:transform .1s}
.mx button:hover{transform:scale(1.04)}
.mx button.sel{outline:2px solid var(--t1);outline-offset:1px}
.axis{display:flex;justify-content:space-between;font-size:11.5px;color:var(--t4);margin:4px 0 0 44px}
.lbl{display:flex;align-items:center;font-size:13px;font-weight:600;color:var(--t2);margin:16px 0 8px} .lbl .gr{margin-left:auto}
.res{margin-top:18px;padding:14px 16px;border-radius:10px;display:flex;align-items:center;gap:8px;color:var(--t2);font-size:13.5px}
.res b{margin-left:auto;font-weight:700}

/* ── 모달 · 토스트 ── */
.ov{position:fixed;inset:0;background:rgba(17,18,22,.38);display:flex;align-items:center;justify-content:center;padding:24px;z-index:100;animation:fade .15s}
.modal{background:var(--surface);border-radius:16px;width:min(680px,100%);max-height:calc(100vh - 48px);display:flex;flex-direction:column;box-shadow:0 24px 64px rgba(17,18,22,.22);animation:up .18s cubic-bezier(.2,.7,.3,1)}
.mh{display:flex;align-items:center;gap:10px;padding:20px 24px 0} .mh h2{font-size:18px;font-weight:700;letter-spacing:-.02em} .mh .x{margin-left:auto}
.mb{padding:18px 24px;overflow-y:auto}
.mf{display:flex;gap:8px;justify-content:flex-end;padding:14px 24px 20px;border-top:1px solid var(--line)}
.mf .lft{margin-right:auto}
@keyframes fade{from{opacity:0}} @keyframes up{from{opacity:0;transform:translateY(12px)}}
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:var(--t1);color:#fff;padding:12px 18px;border-radius:12px;font-weight:500;font-size:13.5px;box-shadow:0 12px 32px rgba(17,18,22,.25);z-index:200;animation:up .2s;max-width:calc(100vw - 32px)}
.pv dl{display:grid;grid-template-columns:100px 1fr;gap:10px 12px;font-size:14px;margin-top:16px} .pv dt{color:var(--t3)} .pv dd{font-weight:500}
.pv .pp{border-radius:10px;overflow:hidden}

/* ── 로그인 ── */
.login{position:fixed;inset:0;z-index:150;background:var(--bg);display:grid;place-items:center;padding:24px}
.login-box{width:min(400px,100%);background:var(--surface);border-radius:20px;padding:36px 32px 28px;box-shadow:0 0 0 1px var(--line),0 24px 60px rgba(17,18,22,.08)}
.login-box img{height:64px;display:block;margin-bottom:22px}
.login-box h1{font-size:22px} .login-box p{color:var(--t3);margin:4px 0 22px}
.login-box .f{margin-bottom:12px}
.login-box .btn{width:100%;height:44px;font-size:15px}
.login-alt{display:flex;justify-content:space-between;margin-top:16px;font-size:13.5px} .login-alt a{color:var(--t3);cursor:pointer} .login-alt a.b{color:var(--brand);font-weight:600}
.login-sites{display:flex;gap:6px;margin-bottom:18px}

/* ── 현장 QR ── */
.qr-wrap{display:flex;gap:56px;align-items:center;justify-content:center;padding:24px 0}
.qr-note{width:340px;color:var(--t2);font-size:15px;line-height:1.7} .qr-note b{display:block;font-size:20px;margin:16px 0 10px;color:var(--t1)}
.qr-note .qr{width:120px;height:120px;border-radius:14px;background:#fff;display:grid;place-items:center;box-shadow:0 0 0 1px var(--line)}
.phone{width:380px;height:760px;background:#fff;border-radius:42px;box-shadow:0 0 0 10px #16171A,0 30px 60px rgba(0,0,0,.2);overflow:hidden;display:flex;flex-direction:column}
.phone .pst{height:40px;flex-shrink:0}
.phone .ptop{padding:4px 22px 16px} .phone .ptop img{height:30px;margin-bottom:12px} .phone .ptop h1{font-size:24px} .phone .ptop p{color:var(--t3)}
.phone .pwarn{margin:0 16px 14px;padding:12px 14px;border-radius:12px;background:var(--high-s);color:var(--high);font-size:13.5px;font-weight:500}
.phone .plist{overflow-y:auto}
.phone .it{display:flex;align-items:center;gap:12px;padding:14px 22px;border-top:1px solid var(--line)}
.phone .it b{font-weight:600;font-size:15.5px;display:block} .phone .it small{color:var(--t3);font-size:13px}
.phone .it .open{margin-left:auto;height:32px;padding:0 12px;border-radius:999px;background:var(--brand-soft);color:var(--brand);font-weight:600;font-size:13px}
.phone .it .cat i{width:10px;height:10px;border-radius:3px}

/* ── 반응형 ── */
@media (max-width:1180px){
  .cards{grid-template-columns:repeat(3,minmax(0,1fr))}
  .split{grid-template-columns:minmax(0,1fr)}
  .sheet{position:fixed;top:0;right:0;bottom:0;width:min(420px,100%);height:auto;z-index:60;box-shadow:-16px 0 48px rgba(17,18,22,.14);transform:translateX(105%);transition:transform .22s cubic-bezier(.2,.7,.3,1)}
  .sheet.open{transform:none}
  .sh-x{display:inline-flex}
  .form-wrap{grid-template-columns:minmax(0,1fr)}
  .side{position:static}
}
@media (max-width:760px){
  .app{grid-template-columns:minmax(0,1fr);height:auto;min-height:100vh}
  .topbar{display:flex;align-items:center;gap:10px;position:sticky;top:3px;z-index:40;background:var(--surface);border-bottom:1px solid var(--line);padding:10px 14px}
  .topbar img{height:34px} .topbar button{margin-left:auto;padding:8px;border-radius:8px}
  .nav{position:fixed;top:3px;left:0;bottom:0;width:272px;z-index:70;transform:translateX(-102%);transition:transform .22s;box-shadow:16px 0 48px rgba(17,18,22,.14)}
  .nav.open{transform:none}
  .page{padding:20px 16px 40px}
  .grid2,.g2,.g3{grid-template-columns:1fr}
  .cards{grid-template-columns:1fr 1fr;gap:10px}
  .search{flex-basis:100%}
  .tbl th:nth-child(3),.tbl td:nth-child(3),.tbl th:nth-child(4),.tbl td:nth-child(4){display:none}
  .ph-act{margin-left:0;width:100%} .ph-act .btn{flex:1}
  .qr-wrap{flex-direction:column;gap:28px} .qr-note{width:auto}
  .phone{width:100%;max-width:380px}
  .ov{align-items:flex-end;padding:0} .modal{border-radius:18px 18px 0 0;max-height:92vh}
}

/* ── 실제 데이터용 추가 ── */
.pp div{position:relative;overflow:hidden}
.pp img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.pv .pp div{aspect-ratio:4/3}
.nav a em svg{display:block;color:var(--t4)}
.me .av svg{color:var(--t3)}
.rk svg{color:var(--t4);flex-shrink:0}
.login-box form{margin:0}
.in:disabled{background:#F4F5F7;color:var(--t4);cursor:not-allowed}

/* ── 2단계: 등록 창 · 공문 ── */
.chk{display:flex;align-items:center;gap:8px;height:40px;font-weight:500;color:var(--t2);cursor:pointer}
.chk input{width:16px;height:16px;accent-color:var(--ink)}
.del-zone{margin-top:26px;padding-top:14px;border-top:1px solid var(--line)}
.del-zone button{color:var(--high);font-weight:600;font-size:13.5px}
.pdf{width:100%;height:calc(100vh - 250px);min-height:420px;border:1px solid var(--line);border-radius:12px;background:var(--bg)}
@media (max-width:760px){ .pdf{height:70vh} }

/* ── 경고표지 작성기 (label.js) ── */
.lm{position:fixed;inset:0;z-index:90;background:var(--bg);display:flex;flex-direction:column;padding-top:3px}
.lm-h{display:flex;align-items:center;gap:12px;height:56px;padding:0 16px 0 24px;border-bottom:1px solid var(--line);background:var(--surface);flex-shrink:0}
.lm-h b{font-size:16px;font-weight:700;letter-spacing:-.015em} .lm-hs{font-size:12.5px;color:var(--t4)} .lm-h .btn{margin-left:auto}
.lm-b{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 440px}
.lm-form{overflow-y:auto;padding:20px 24px 0}
.lm-form .fs{background:var(--surface)}
.lm-form > *{max-width:760px;margin-left:auto;margin-right:auto}
.lm-form .fs h3 .seg button{height:26px;font-size:12.5px;padding:0 10px}
.lm-pv{overflow-y:auto;border-left:1px solid var(--line);background:var(--surface);padding:20px 24px 28px}
.lm-pvh{display:flex;align-items:baseline;gap:8px;margin-bottom:10px} .lm-pvh b{font-size:14.5px;font-weight:600} .lm-pvh span{font-size:12.5px;color:var(--t4)}
.lm-save{position:sticky;bottom:0;display:flex;align-items:center;gap:12px;padding:14px 0 20px;background:linear-gradient(rgba(247,247,248,0),var(--bg) 35%);font-size:13px}
.lm-save .btn{min-width:96px}
.lm-save .btn:disabled{opacity:.45;cursor:not-allowed}
.lm-src{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:13px} .lm-src .btn{margin-left:auto}
.lm-note{margin-top:10px;padding:10px 12px;border-radius:var(--r1);font-size:13px;line-height:1.6;background:var(--brand-soft);color:var(--t2)}
.lm-note.ok{background:var(--ok-s)} .lm-note.warn{background:var(--mid-s)}
.lm-ghs{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:6px}
.lm-g{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 2px 7px;border:1px solid var(--line-2);border-radius:var(--r1);font-size:11.5px;line-height:1.25;color:var(--t3);background:var(--surface);text-align:center}
.lm-g img{width:40px;height:40px;opacity:.38;filter:grayscale(1);transition:opacity .12s}
.lm-g:hover img{opacity:.75}
.lm-g.on{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);color:var(--t1);font-weight:600} .lm-g.on img{opacity:1;filter:none}
.lm-sug{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px;padding:8px 10px 8px 12px;border-radius:var(--r1);background:var(--mid-s);font-size:13px;color:var(--t2)}
.lm-sug img{width:24px;height:24px} .lm-sug .btn{margin-left:auto}
.lm-sug.ok{background:var(--ok-s);color:var(--ok);font-weight:500}
.lm-chips{display:flex;flex-wrap:wrap;gap:6px}
.lm-chip{height:28px;padding:0 7px 0 10px;border:1px solid var(--line-2);border-radius:999px;display:inline-flex;align-items:center;gap:4px;font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums;background:var(--surface)}
.lm-chip svg{color:var(--t4)} .lm-chip:hover{border-color:var(--high);color:var(--high)} .lm-chip:hover svg{color:var(--high)}
.lm-groups details{border:1px solid var(--line);border-radius:var(--r1);margin-bottom:6px;overflow:hidden}
.lm-groups summary{display:flex;align-items:center;gap:8px;padding:9px 12px;cursor:pointer;font-weight:600;font-size:13.5px;list-style:none;background:var(--bg)}
.lm-groups summary::-webkit-details-marker{display:none}
.lm-groups summary em{font-style:normal;color:var(--brand);font-size:12.5px}
.lm-groups summary:after{content:'';margin-left:auto;width:7px;height:7px;border-right:1.5px solid var(--t4);border-bottom:1.5px solid var(--t4);transform:translateY(-2px) rotate(45deg)}
.lm-groups details[open] > summary:after{transform:translateY(2px) rotate(-135deg)}
.lm-it{display:flex;gap:10px;padding:7px 12px;font-size:13px;line-height:1.5;cursor:pointer;border-top:1px solid var(--line)}
.lm-it:hover{background:var(--hover)} .lm-it input{margin-top:3px;width:15px;height:15px;accent-color:var(--ink);flex-shrink:0}
.lm-it b{font-weight:600;font-variant-numeric:tabular-nums;margin-right:6px}
.lm-ta{height:auto;padding:10px 12px;line-height:1.6;resize:vertical;font-size:13px}
.lm-stage{background:#EEF0F3;border-radius:var(--r2);padding:12px;display:flex;justify-content:center}
.lm-paper{box-shadow:0 4px 16px rgba(17,18,22,.12)}
.lm-fit{font-size:12.5px;margin:10px 2px 0;color:var(--t4)} .lm-fit.warn{color:var(--high);font-weight:600}
.lm-print{margin-top:20px;padding-top:18px;border-top:1px solid var(--line)} .lm-print > b{font-size:14.5px;font-weight:600}
.lm-size{display:block;width:100%;padding:10px 12px;border:1px solid var(--line-2);border-radius:var(--r1);text-align:left;margin-bottom:6px}
.lm-size:hover{background:var(--hover)} .lm-size.on{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
.lm-size b{font-weight:600} .lm-size small{display:block;color:var(--t4);font-size:12.5px}
.lm-slots{display:grid;grid-template-columns:repeat(2,56px);gap:6px;margin-bottom:12px}
.lm-slots button{height:40px;border:1px dashed var(--line-2);border-radius:6px;font-size:12.5px;color:var(--t4)}
.lm-slots button.on{border:1px solid var(--ink);background:var(--ink);color:#fff}
@media (max-width:1180px){ .lm-b{grid-template-columns:minmax(0,1fr) 400px} .lm-ghs{grid-template-columns:repeat(5,minmax(0,1fr))} }
@media (max-width:860px){
  .lm-b{display:block;overflow-y:auto} .lm-form{overflow:visible;padding:16px 16px 0} .lm-pv{border-left:none;border-top:1px solid var(--line);padding:20px 16px 28px}
  .lm-hs{display:none} .lm-h{padding:0 8px 0 16px} .lm-ghs{grid-template-columns:repeat(3,minmax(0,1fr))} .lm-form .fs{padding:16px}
  .lm-form .fs h3{flex-wrap:wrap} .lm-save{position:static}
}

/* ── 안전보건 체계 (system.js) ── */
.sdot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--high);margin-left:2px;vertical-align:top}
.sch{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:12px}
.sc{border:1px solid var(--line);border-radius:var(--r2);padding:14px 16px;display:flex;flex-direction:column;gap:6px;background:var(--surface)}
.sc.over{border-color:#F3C4C4;background:#FFF9F9} .sc.soon{border-color:#F6D2BD}
.sc-h{display:flex;align-items:center;gap:8px} .sc-h b{font-weight:600;font-size:14.5px;flex:1;line-height:1.35}
.sc small{color:var(--t4);font-size:12.5px;line-height:1.45}
.sc label{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--t3);margin-top:4px;white-space:nowrap} .sc label .in{height:34px;flex:1;min-width:0}
.sc-d{font-size:13px;color:var(--t2)} .sc.over .sc-d b{color:var(--high)} .sc.soon .sc-d b{color:var(--mid)}
.sc-n{font-size:12px;color:var(--t4)}
.org{padding:28px 24px 18px}
.org-top{display:flex;flex-direction:column;align-items:center}
.org-row{display:flex;align-items:center;justify-content:center;width:100%}
.org-v{display:block;width:0;height:20px;border-left:1.5px solid var(--line-2)}
.org-h{flex:0 1 56px;border-top:1.5px dashed var(--line-2)}
.org-n{border:1px solid var(--line-2);border-radius:var(--r2);padding:10px 18px;text-align:center;background:var(--surface);min-width:200px}
.org-n small{display:block;font-size:12px;color:var(--t4)} .org-n b{display:block;font-size:15px;font-weight:700;letter-spacing:-.01em} .org-n span{display:block;font-size:13.5px;color:var(--t2)}
.org-n.lead{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)} .org-n.ext{background:var(--bg);border-style:dashed;min-width:170px}
.org-units{position:relative;display:grid;grid-template-columns:repeat(var(--n,4),minmax(0,1fr));gap:14px;padding-top:20px;align-items:start}
.org-units:before{content:'';position:absolute;top:0;left:calc(50% / var(--n,4));right:calc(50% / var(--n,4));border-top:1.5px solid var(--line-2)}
.ou{position:relative;border:1px solid var(--line);border-radius:var(--r2);padding:14px 14px 6px;background:var(--surface)}
.ou:before{content:'';position:absolute;top:-21px;left:50%;height:20px;border-left:1.5px solid var(--line-2)}
.ou h3{font-size:14px;font-weight:700;text-align:center;padding-bottom:10px;margin-bottom:12px;border-bottom:1px solid var(--line)}
.ou h4{font-size:12.5px;font-weight:600;color:var(--brand);margin:14px 0 6px} .ou h3 + h4{margin-top:0}
.og{margin-bottom:10px} .og small{display:block;font-size:12px;color:var(--t4);margin-bottom:5px}
.og div{display:flex;flex-wrap:wrap;gap:4px}
.pn{display:inline-flex;align-items:center;height:26px;padding:0 9px;border-radius:6px;background:var(--bg);font-size:13px;font-weight:600}
.ot{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:8px} .ot th{text-align:left;font-size:12px;font-weight:500;color:var(--t4);padding:0 4px 6px}
.ot td{padding:6px 4px;border-top:1px solid var(--line)} .ot td:first-child{color:var(--t3)}
.org-src{margin-top:16px;font-size:12px;color:var(--t4);text-align:right}
.pl{width:100%;border-collapse:collapse;font-size:13.5px;margin-top:16px}
.pl th{text-align:left;font-size:12.5px;font-weight:500;color:var(--t4);padding:0 10px 8px 0}
.pl td{padding:10px 10px 10px 0;border-top:1px solid var(--line);vertical-align:top;color:var(--t2)} .pl td b{color:var(--t1);font-weight:600}
.pl td small{display:block;color:var(--t4);font-size:12px;margin-top:3px}
.kv{display:grid;grid-template-columns:130px minmax(0,1fr);gap:12px 16px;font-size:14px;margin-top:20px;padding-top:18px;border-top:1px solid var(--line)}
.kv dt{color:var(--t3);font-weight:500} .kv dd{color:var(--t2)} .kv dd b{color:var(--t1);font-weight:600}
@media (max-width:1180px){ .org-units{grid-template-columns:repeat(2,minmax(0,1fr))} .org-units:before,.ou:before{display:none} }
@media (max-width:760px){
  .bh-hint{display:none} .org-row .org-n.lead{order:-1}
  .org{padding:20px 14px} .org-row{flex-direction:column} .org-h{display:none} .org-n{width:100%;min-width:0} .org-row .org-n{margin:4px 0}
  .org-units{grid-template-columns:1fr} .kv{grid-template-columns:1fr;gap:2px 0} .kv dd{margin-bottom:10px}
  .pl th:nth-child(2),.pl td:nth-child(2){display:none}
}

/* ── 조직도 고치기 ── */
.oe{margin-bottom:16px}
.oe-r,.oe-u{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.oe-r>span,.oe-u>span{flex:0 0 130px;font-size:13px;color:var(--t3);font-weight:500}
.oe-r .in,.oe-u .in{height:36px;flex:1;min-width:0}
.oe-r.g .in:first-child{flex:0 0 170px}
.oe-r.p3 .in{flex:1}
.oe-u .in{font-weight:600}
.oe-s{border:1px solid var(--line);border-radius:var(--r1);padding:12px;margin:10px 0;background:var(--bg)}
.oe-s .oe-r.g{margin-left:0}

/* ── 프로그램 문서 기입 (prog.js) ── */
.pe-top{margin-bottom:16px}
.pe-hd{display:flex;align-items:flex-start;gap:12px;margin-bottom:14px} .pe-hd>div{flex:1} .pe-hd h2{font-size:18px;font-weight:700} .pe-hd p{font-size:13px;color:var(--t3);margin-top:2px}
.pe-prog{display:flex;align-items:center;gap:12px;font-size:13.5px;margin-bottom:12px}
.pe-bar{flex:1;height:6px;border-radius:3px;background:var(--line);overflow:hidden;max-width:320px} .pe-bar i{display:block;height:100%;background:var(--brand);transition:width .2s}
.pe-ch{margin-bottom:16px} .pe-ch.off{opacity:.6}
.pe-ch .bh h2{font-size:15.5px}
.pe-p{font-size:14px;color:var(--t2);margin:6px 0 10px}
.pe-law{border:1px solid var(--line);border-radius:var(--r1);background:var(--bg);margin:10px 0;font-size:13.5px}
.pe-law summary{display:flex;align-items:center;gap:8px;padding:9px 12px;cursor:pointer;list-style:none} .pe-law summary::-webkit-details-marker{display:none}
.pe-law summary b{font-weight:600;font-size:12.5px;color:var(--t3)} .pe-law summary span{color:var(--t1);font-weight:600}
.pe-law summary:after{content:'원문 보기';margin-left:auto;font-size:12px;color:var(--brand)} .pe-law[open] summary:after{content:'접기'}
.pe-law div{padding:0 12px 12px;color:var(--t2);line-height:1.75}
.pe-own{border-left:3px solid var(--ink);padding:2px 0 2px 12px;margin:12px 0;font-size:13.5px;color:var(--t2)} .pe-own>b{font-size:12.5px;color:var(--t3);font-weight:600}
.pe-own ul,.pe-ul{margin:4px 0 0 18px} .pe-own li,.pe-ul li{margin:3px 0}
.pe-tag{display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:5px;background:#FFF3C4;color:#8A6100;font-size:11.5px;font-weight:600;font-style:normal;margin-left:6px}
.pe-f{display:flex;flex-direction:column;gap:6px;margin:12px 0;padding:12px;border-radius:var(--r1);background:#FFFBEA;border:1px solid #F5E3A3}
.pe-f>span{font-size:13px;font-weight:600;color:var(--t2)} .pe-f .in{background:#fff}
.pe-f textarea.in{height:auto;padding:8px 12px;line-height:1.6;resize:vertical}
.pe-t{margin:12px 0;padding:12px;border-radius:var(--r1);background:#FFFBEA;border:1px solid #F5E3A3}
.pe-tl{display:flex;align-items:center;flex-wrap:wrap;gap:4px 0;margin-bottom:8px} .pe-tl b{font-size:13.5px} .pe-tl small{flex-basis:100%;font-size:12.5px;color:var(--t3);margin-top:2px}
.pe-tw{overflow-x:auto}
.pe-bt{display:flex;gap:8px;flex-wrap:wrap}
.pe-t table{width:100%;border-collapse:collapse;table-layout:fixed} .pe-t th{text-align:left;font-size:12px;font-weight:500;color:var(--t3);padding:0 6px 6px 0}
.pe-t td{padding:3px 6px 3px 0} .pe-t td .in{height:34px;background:#fff;font-size:13.5px} .pe-t td:last-child{width:34px;padding-right:0}
.pe-st{width:100%;border-collapse:collapse;font-size:13.5px;margin:8px 0} .pe-st th{text-align:left;font-size:12.5px;font-weight:500;color:var(--t4);padding:0 10px 8px 0;border-bottom:1px solid var(--line)}
.pe-st td{padding:8px 10px 8px 0;border-bottom:1px solid var(--line);vertical-align:top;color:var(--t2)} .pe-st td:first-child{font-weight:600;color:var(--t1);white-space:nowrap}
@media (max-width:760px){ .pe-hd{flex-direction:column} .oe-r,.oe-u{flex-wrap:wrap} .oe-r>span,.oe-u>span{flex-basis:100%} .oe-r.g .in:first-child{flex:1 1 100%} .pe-st td:first-child{white-space:normal} }

/* 인쇄: 메뉴는 빼고 화면 내용만 (조직도 등) */
@media print{
  .nav,.topbar,.stripe,.ph-act,#layer,.toast{display:none !important}
  html,body,.app,main{height:auto !important;overflow:visible !important;display:block !important;background:#fff !important}
  .page{padding:0 !important;max-width:none !important} .blk{box-shadow:none !important}
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
.pe-sg{display:flex;flex-wrap:wrap;gap:10px}
.pe-sg figure{position:relative;width:150px;border:1px solid var(--line);border-radius:var(--r1);overflow:hidden;background:var(--bg)}
.pe-sg img{display:block;width:100%;height:190px;object-fit:contain;background:#fff}
.pe-sg figcaption{font-size:12px;color:var(--t3);padding:4px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pe-sg figure .btn{position:absolute;top:4px;right:4px;background:rgba(255,255,255,.9)}
.pe-lb{display:inline-flex;align-items:center;height:24px;padding:0 9px;border-radius:6px;background:var(--brand-soft);color:var(--brand);font-size:13px;font-weight:600;vertical-align:2px;margin-left:6px}
.pe-per{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:12px;font-size:13px}
.pe-per label{display:flex;align-items:center;gap:8px;color:var(--t3);font-weight:500} .pe-per select.in{height:34px;width:auto;min-width:150px;font-weight:600;color:var(--t1)}
.pe-old{display:inline-flex;align-items:center;gap:8px;padding:4px 6px 4px 10px;border-radius:var(--r1);background:var(--mid-s);color:var(--t2)}
.pe-log summary{display:flex;align-items:center;gap:10px;cursor:pointer;list-style:none;font-size:14.5px} .pe-log summary::-webkit-details-marker{display:none}
.pe-log summary span{font-size:12.5px} .pe-log[open] summary{margin-bottom:12px}
.pe-lock{display:flex;align-items:center;gap:10px;margin:0 0 12px;padding:10px 12px;border-radius:var(--r1);background:var(--ok-s);color:var(--t2);font-size:13.5px}
.pe-lock>svg{color:var(--ok);flex-shrink:0} .pe-lock span{flex:1} .pe-lock a{color:var(--brand);font-weight:600;cursor:pointer}
.pe-h3{font-size:13.5px;font-weight:600;margin:6px 0 6px}
