/* 더치건설 근태부 · 화면 모양 */
/* 레이아웃: 상단 고정 탭 + 한 화면 한 작업. 표는 자체 스크롤, 숫자는 고정폭. */
:root{
  --bg:#f2f4f6; --surface:#ffffff; --sunk:#e9edf1; --fg:#16212c; --muted:#5b6876; --line:#d5dce3;
  --accent:#c2410c; --accent-fg:#ffffff; --accent-soft:#fdebe1;
  --ok:#1f7a4d; --warn:#a15c00; --bad:#b42318; --leave:#1d5fa8; --wkend:#f7eeee;
  --font:"IBM Plex Sans KR","Apple SD Gothic Neo","Malgun Gothic",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --bg:#12181e; --surface:#1a222b; --sunk:#222c36; --fg:#e6ebf0; --muted:#97a4b1; --line:#32404d;
  --accent:#f0793a; --accent-fg:#1a0f08; --accent-soft:#3a2417;
  --ok:#5fc592; --warn:#e3a84a; --bad:#f0857a; --leave:#7fb3ee; --wkend:#2a2226; color-scheme:dark } }
:root[data-theme="dark"]{
  --bg:#12181e; --surface:#1a222b; --sunk:#222c36; --fg:#e6ebf0; --muted:#97a4b1; --line:#32404d;
  --accent:#f0793a; --accent-fg:#1a0f08; --accent-soft:#3a2417;
  --ok:#5fc592; --warn:#e3a84a; --bad:#f0857a; --leave:#7fb3ee; --wkend:#2a2226; color-scheme:dark }

*{box-sizing:border-box}
body{background:var(--bg);color:var(--fg);font-family:var(--font);font-size:15px;line-height:1.5}
.wrap{max-width:1180px;margin:0 auto;padding-inline:16px;padding-block:20px 48px;display:flex;flex-direction:column;gap:18px}
header{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 16px}
h1{font-size:22px;font-weight:700;margin:0;letter-spacing:-.01em}
#status{font-size:13px;color:var(--muted);margin-left:auto}
#status.ok{color:var(--ok);font-weight:700;font-size:14px;border:1.5px solid var(--ok);border-radius:6px;padding:3px 10px;font-variant-numeric:tabular-nums}
#status.bad{color:var(--bad);font-weight:700;font-size:14px;border:1.5px solid var(--bad);border-radius:6px;padding:3px 10px}
nav{display:flex;gap:4px;border-bottom:2px solid var(--line);overflow-x:auto}
nav button{font:inherit;font-weight:500;background:none;border:0;color:var(--muted);padding:10px 14px;cursor:pointer;border-bottom:3px solid transparent;margin-bottom:-2px;white-space:nowrap}
nav button{display:inline-flex;align-items:center;gap:6px}
svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.empty svg{width:44px;height:44px;stroke-width:1.5;color:var(--accent);display:block;margin:0 auto 10px}
nav button[aria-selected="true"]{color:var(--fg);border-bottom-color:var(--accent)}
button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.bar .grow{flex:1}
.when{font-size:18px;font-weight:700;min-width:0}
.when small{font-weight:500;color:var(--muted);font-size:14px;margin-left:6px}
.btn{font:inherit;font-size:14px;font-weight:500;padding:7px 12px;border:1px solid var(--line);background:var(--surface);color:var(--fg);border-radius:6px;cursor:pointer}
.btn:hover{border-color:var(--muted)}
.btn.pri{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}
.btn.danger{color:var(--bad)}
.btn[disabled]{opacity:.5;cursor:default}
textarea{resize:vertical}
.form label.wide{grid-column:1/-1}
input,select,textarea{font:inherit;font-size:14px;color:var(--fg);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:6px 8px;min-width:0;width:100%}
input[type=time],input[type=number],input[type=date]{font-family:var(--mono);font-variant-numeric:tabular-nums}
input:disabled{background:var(--sunk);color:var(--muted)}
.counts{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:14px;color:var(--muted)}
.counts b{color:var(--fg);font-family:var(--mono);font-weight:500}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px}
.rows{display:flex;flex-direction:column}
.row,.rowhead{display:grid;grid-template-columns:minmax(160px,1fr) minmax(110px,.9fr) 100px 210px 210px 80px minmax(92px,.7fr) minmax(70px,.6fr);gap:8px;align-items:center;padding:10px 14px}
.row+.row{border-top:1px solid var(--line)}
.rowhead{font-size:12px;color:var(--muted);letter-spacing:.04em;border-bottom:1px solid var(--line);padding-block:8px}
.who{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:3px 0}.who b{font-weight:700}.who span{color:var(--muted);font-size:13px;margin-left:6px}
.calc{font-family:var(--mono);font-size:13px;font-variant-numeric:tabular-nums;min-width:0}
.tag{display:inline-block;font-family:var(--font);font-size:12px;font-weight:500;padding:1px 6px;border-radius:4px;margin-left:4px}
.tag.late{background:var(--accent-soft);color:var(--warn)}
.tag.open{background:var(--sunk);color:var(--muted)}
.tm{display:flex;gap:4px;min-width:0}.tm input{flex:1}.tm .btn{padding:6px 9px;white-space:nowrap}
@media (max-width:1040px) and (min-width:821px){.row,.rowhead{grid-template-columns:minmax(90px,1fr) 100px 100px 190px 190px}.row .calc,.row .f-note{grid-column:span 2}.rowhead span:nth-child(n+6){display:none}}
.scard{display:flex;gap:16px;padding:14px;flex-wrap:wrap}
.ph{display:flex;flex-direction:column;gap:6px;width:120px;flex:none}
.ph img,.noph{width:120px;height:150px;object-fit:cover;border-radius:6px;border:1px solid var(--line);background:var(--sunk)}
.noph{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:13px}
.sbody{flex:1;min-width:240px;display:flex;flex-direction:column;gap:12px}
.k{font-size:13px;min-width:76px}
.fname{font-size:13px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;vertical-align:middle}.fname.none{color:var(--muted)}
.av{width:28px;height:28px;border-radius:50%;object-fit:cover;vertical-align:middle;margin-right:8px}
.calc a{color:var(--leave)}
.big{font-size:20px;padding:22px 0;font-weight:700}
.srow{display:grid;grid-template-columns:48px minmax(70px,1fr) minmax(60px,1fr) 130px 50px 20px;gap:10px;align-items:center;width:100%;padding:13px 14px;border:0;border-top:1px solid var(--line);background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
.srow:first-child{border-top:0}.srow:hover,.srow.open{background:var(--sunk)}
.sno{font-family:var(--mono);color:var(--muted);font-variant-numeric:tabular-nums}.mu{color:var(--muted);font-size:13px}
.panel>.scard{border-top:1px solid var(--line);background:var(--bg)}
@media (max-width:600px){.srow{grid-template-columns:40px 1fr 1fr 20px}.srow .hid{display:none}}
.sc{width:100%;min-width:28px;height:28px;border:0;background:none;font:inherit;font-size:12.5px;cursor:pointer;color:var(--bad);padding:0}
.sc:hover{background:var(--accent-soft)}
.grid td.own{box-shadow:inset 0 0 0 2px var(--accent)}.grid td.own .sc{font-weight:700}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:10px;text-align:center;font-family:var(--mono);font-size:13px}
.cal div{padding:6px 0;border-radius:4px}.cal .hd{color:var(--muted);font-family:var(--font);font-size:12px}
.cal .hol{background:var(--wkend);color:var(--bad)}.cal .tod{outline:2px solid var(--accent)}
.hr{display:grid;grid-template-columns:220px minmax(0,1fr);gap:14px;align-items:start}
.hrlist{display:flex;flex-direction:column;position:sticky;top:8px;max-height:80vh;overflow-y:auto}
.hritem{display:flex;gap:8px;align-items:center;padding:11px 12px;border:0;border-top:1px solid var(--line);background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}
.hritem:first-child{border-top:0}.hritem:hover{background:var(--sunk)}.hritem.on{background:var(--accent-soft)}
.hrcard{padding:16px;display:flex;flex-direction:column;gap:14px;min-width:0}
.hrhead{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.av2{width:112px;height:140px;object-fit:cover;border-radius:6px;border:1px solid var(--line);background:var(--sunk);display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--muted)}
.seg{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line)}
.seg button{font:inherit;font-size:14px;font-weight:500;padding:8px 12px;border:0;background:none;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}
.seg button.on{color:var(--fg);border-bottom-color:var(--accent)}
@media (max-width:760px){.hr{grid-template-columns:minmax(0,1fr)}.hrlist{flex-direction:row;position:static;overflow-x:auto;max-height:none}.hritem{border-top:0;border-right:1px solid var(--line);white-space:nowrap}}
.f-site{min-width:0;font-size:14px;line-height:1.3}
.lbl{display:none;font-size:12px;color:var(--muted)}
@media (max-width:820px){
  .rowhead{display:none}
  .row{grid-template-columns:1fr 1fr;gap:8px 10px}
  .who,.f-note,.f-site{grid-column:1/-1}
  .lbl{display:block}
}
.scroll{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:14px}
th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
th{font-size:12px;font-weight:500;color:var(--muted);letter-spacing:.03em;background:var(--sunk)}
td.n,th.n{text-align:left}
td.num{font-family:var(--mono)}
tr:last-child td{border-bottom:0}
tfoot td{font-weight:700;border-top:2px solid var(--line)}
.grid th,.grid td{padding:5px 0;text-align:center;min-width:30px;font-size:12.5px;border-right:1px solid var(--line)}
.grid td.n,.grid th.n{padding-inline:10px;text-align:left;position:sticky;left:0;background:var(--surface);z-index:1}
.grid th.n{background:var(--sunk)}
.grid .we{background:var(--wkend)}
.m-annual,.m-half{color:var(--leave);font-weight:700}
.m-absent{color:var(--bad);font-weight:700}
.m-trip{color:var(--ok);font-weight:700}
.m-off{color:var(--muted)}
.m-late{text-decoration:underline;text-decoration-color:var(--warn);text-decoration-thickness:2px;text-underline-offset:3px}
.neg{color:var(--bad)}
h2{font-size:15px;font-weight:700;margin:0}
.note{font-size:13px;color:var(--muted);margin:0;max-width:70ch}
.empty{padding:36px 20px;text-align:center;color:var(--muted)}
.empty b{display:block;color:var(--fg);font-size:16px;margin-bottom:4px}
.form{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;padding:14px;align-items:end}
.form label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted);min-width:0}
.banner{background:var(--accent-soft);color:var(--fg);border:1px solid var(--accent);border-radius:8px;padding:10px 14px;font-size:14px}
td input{width:auto;max-width:150px}
td input[type=number]{width:74px}
.days{white-space:normal;text-align:left;font-family:var(--mono);font-size:12.5px;color:var(--muted);min-width:180px}
.btn svg{vertical-align:-4px;margin-right:4px}
.wsg{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}
.wsr{display:grid;grid-template-columns:minmax(0,1fr) 130px;gap:6px;margin-top:6px}
.wsc{display:grid;grid-template-columns:110px minmax(0,1fr) 130px;gap:6px;align-items:center;margin-top:6px;font-size:14px}
@media (max-width:600px){.wsc{grid-template-columns:1fr 1fr}.wsc span{grid-column:1/-1}}
thead th,thead th.n,.grid thead th.n{text-align:center;font-weight:700;font-size:13px;color:var(--fg)}
.rowhead{font-weight:700;font-size:13px;color:var(--fg);text-align:center}
.seg{gap:6px;border:0;padding:5px;background:var(--sunk);border-radius:9px}
.seg button{padding:8px 16px;border:0;margin:0;border-radius:6px;color:var(--muted);font-weight:500}
.seg button:hover{background:var(--surface);color:var(--fg)}
.seg button.on,.seg button.on:hover{background:var(--accent);color:var(--accent-fg);font-weight:700}
.sep{width:1px;align-self:stretch;background:var(--line);margin:0 6px}
.avn{display:inline-flex;align-items:center;justify-content:center;background:var(--sunk);color:var(--muted);font-size:13px;font-weight:700;font-family:var(--font)}
.hritem .av{margin-right:0;flex:none}
.ctr td,.ctr td.n,.ctr th,.ctr th.n,.grid.ctr td.n{text-align:center}
/* 급여 화면 */
.psum{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.pbox{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg);font-size:12px;color:var(--muted);min-width:0}
.pbox b{font-family:var(--mono);font-size:18px;font-weight:500;color:var(--fg);font-variant-numeric:tabular-nums}
.pbox.big2{border-color:var(--accent);background:var(--accent-soft)}.pbox.big2 b{font-size:22px;font-weight:700;color:var(--accent)}
.pbasis{font-size:13px;color:var(--muted);background:var(--sunk);border-radius:6px;padding:8px 12px;line-height:1.6}
.pcol{min-width:0}
#viewer{position:fixed;inset:0;z-index:50;background:var(--bg);display:flex;flex-direction:column}
#v-body{flex:1;overflow:auto;display:flex;justify-content:center;padding:12px;min-height:0}
#v-body img{max-width:100%;height:auto;align-self:flex-start}#v-body iframe{width:100%;height:100%;border:0;background:#fff}
#print{display:none}
@media print{
  html,body{background:#fff!important}
  body>*:not(#print){display:none!important}
  #print{display:block;color:#000;font-family:var(--font);font-size:10pt}
  #print .p-title{text-align:center;font-size:18pt;font-weight:700;margin:0 0 5mm}
  #print .p-sub{display:flex;justify-content:space-between;margin:0 0 2mm;font-size:10pt}
  #print .p-t{width:100%;border-collapse:collapse;margin-bottom:4mm}
  #print .p-t th,#print .p-t td{border:1px solid #000;padding:2px 1px;text-align:center;font-size:8pt;font-weight:400;background:none;color:#000;white-space:normal;letter-spacing:0;font-family:var(--font)}
  #print .p-t .hd2{background:#ddd!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  #print .p-t.ws th,#print .p-t.ws td{font-size:10pt;padding:4px 6px;height:6.8mm}
  #print .p-t.ws th{background:#eee!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;font-weight:500}
  #print .p-t td.r{text-align:right;padding-right:3px;font-variant-numeric:tabular-nums}#print .p-t td.b,#print .p-t th.b{font-weight:700}
  #print .p-t.ws td{text-align:left}#print .p-t.ws td.r{text-align:right;font-variant-numeric:tabular-nums}#print .p-t.ws tr.c td{text-align:center}
  #print .p-page{page-break-after:always}#print .p-page:last-child{page-break-after:auto}
  #print .p-sign{border-collapse:collapse;margin:0 0 2mm auto;width:auto}
  #print .p-t{table-layout:auto}#print .p-t th,#print .p-t td{min-width:0;position:static}
  #print .p-sign th,#print .p-sign td{border:1px solid #000;width:20mm;font-size:8pt;text-align:center;padding:2px;background:none;color:#000;font-weight:400}
  #print .p-sign td{height:13mm}
  #print .p-note{font-size:8pt}
}
