:root{
  --nav:#152a5e; --nav2:#1b3570; --nav-act:#2563eb; --nav-txt:#c7d3ef;
  --bg:#f1f5f9; --card:#fff; --line:#e5e9f0; --line2:#eef2f7;
  --txt:#1e293b; --txt2:#64748b; --txt3:#94a3b8;
  --blue:#2563eb; --blue-l:#eff4ff; --green:#16a34a; --green-l:#dcfce7;
  --red:#dc2626; --red-l:#fee2e2; --amber:#d97706; --amber-l:#fef3c7;
  --purple:#7c3aed; --purple-l:#f3e8ff; --sky:#0ea5e9;
  --r:10px; --sh:0 1px 2px rgba(15,23,42,.05);
}
.workspace-nav{display:grid;gap:5px;padding:12px 10px;border-bottom:1px solid #ffffff22}
.workspace-nav a{padding:9px 10px;border-radius:7px;color:#c7d3ef;font-size:13px}
.workspace-nav a[aria-current]{background:#ffffff20;color:white;font-weight:800}
body[data-workspace="groupware"]{--nav:#134e4a;--nav-act:#0f766e;--blue:#0f766e;--blue-l:#f0fdfa}
.workspace-card{display:block;padding:28px;border-top:4px solid #2563eb}
.workspace-card.gw{border-top-color:#0f766e}
.workspace-card>span{font-size:11px;letter-spacing:1.2px;color:#64748b}
.workspace-card>h3{padding:12px 0;font-size:27px}
.workspace-card>p{line-height:2;color:#64748b;margin-bottom:24px}
.workspace-card>b{color:#2563eb}.workspace-card.gw>b{color:#0f766e}
.workspace-card:hover{box-shadow:0 8px 24px #0f172a18}
@media(max-width:1100px){.workspace-nav{padding:6px 2px}.workspace-nav a{font-size:11px;padding:8px 3px;text-align:center}}
[hidden]{display:none!important}
.banner{padding:13px 18px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;color:#1e40af;line-height:1.8}
.banner.warn{background:#fffbeb;border-color:#fde68a;color:#92400e}
.shortcuts{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0}
details{padding:12px 0;border-bottom:1px solid #e2e8f0}
summary{cursor:pointer;font-weight:600}
input:disabled,select:disabled,textarea:disabled{background:#f1f5f9;color:#64748b}
td input.fi{min-width:70px;max-width:150px}
#orderOverlay .md{max-width:920px;width:94vw}
#itemMatches{max-height:180px;overflow:auto;display:flex;flex-wrap:wrap;gap:5px;margin:8px 0}
@media(max-width:800px){.side{width:155px;flex-basis:155px}.mitem{padding:9px 10px;font-size:13px}.g4,.g3,.g2{grid-template-columns:1fr}.top .date,.gsearch{display:none}.body{padding:12px}.phead{padding:16px 12px 0}.top{padding:8px;flex-wrap:wrap}.fg{grid-template-columns:1fr!important}.md{width:94vw!important}}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:'Pretendard','Malgun Gothic','맑은 고딕',-apple-system,'Segoe UI',sans-serif;
  background:var(--bg);color:var(--txt);font-size:13px;line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font-family:inherit;font-size:13px;color:inherit}
:focus-visible{outline:2px solid var(--blue);outline-offset:1px}

/* ── 사이드바 ── */
.wrap{display:flex;min-height:100vh}
.side{width:215px;flex:0 0 215px;background:var(--nav);color:#fff;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}
.side::-webkit-scrollbar{width:5px}
.side::-webkit-scrollbar-thumb{background:#39508f;border-radius:3px}
.brand{padding:20px 18px 15px;border-bottom:1px solid rgba(255,255,255,.09);display:flex;flex-direction:column;align-items:flex-start;gap:8px;color:#fff}
.brand:focus-visible{outline-offset:-3px}
.brand-logo{display:block;width:158px;max-width:100%;height:auto}
.brand-mark{display:none;width:36px;height:36px}
.brand-area{font-size:12.5px;font-weight:600;letter-spacing:.3px;color:rgba(255,255,255,.62);padding-left:1px}
.ci-mark{display:grid;place-items:center;width:34px;height:34px;flex:0 0 34px;border-radius:9px;background:linear-gradient(145deg,#60a5fa,#2563eb);color:#fff;font-size:22px;font-style:italic;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
.mgroup{padding:15px 0 2px}
.mgroup>p{font-size:12.5px;font-weight:700;color:#7e96cc;padding:0 20px 7px;letter-spacing:.3px}
.mitem{display:flex;align-items:center;gap:11px;padding:9px 20px;color:var(--nav-txt);font-size:14px;border-left:3px solid transparent;transition:background .12s}
.mitem:hover{background:rgba(255,255,255,.06);color:#fff}
.mitem.on{background:var(--nav-act);color:#fff;font-weight:600;border-left-color:#93c5fd}
.mitem svg{width:16px;height:16px;flex:0 0 16px;opacity:.9}
.side .btn{font-size:13.5px}

/* ── 헤더 ── */
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.top{background:#fff;border-bottom:1px solid var(--line);padding:11px 26px;display:flex;align-items:center;gap:16px;position:sticky;top:0;z-index:40}
.top .date{display:flex;align-items:center;gap:7px;color:var(--txt2);font-size:13.5px;margin-left:auto;white-space:nowrap}
.bell{position:relative;width:32px;height:32px;display:grid;place-items:center;border-radius:8px;cursor:pointer;background:none;border:0}
.bell:hover{background:var(--bg)}
.bell b{position:absolute;top:-1px;right:-1px;background:var(--red);color:#fff;font-size:9.5px;min-width:15px;height:15px;border-radius:8px;display:grid;place-items:center;font-weight:700;padding:0 3px}
.me{display:flex;align-items:center;gap:9px;padding-left:14px;border-left:1px solid var(--line)}
.me .av{width:31px;height:31px;border-radius:50%;background:var(--blue-l);color:var(--blue);display:grid;place-items:center}
.me .nm{font-size:14px;font-weight:700;display:flex;align-items:center;gap:6px;white-space:nowrap}
.me .ps{font-size:12px;color:var(--txt3)}
.tag{background:var(--blue);color:#fff;font-size:11px;padding:1.5px 7px;border-radius:4px;font-weight:700}
.gear{display:flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 11px;font-size:13px;color:var(--txt2);cursor:pointer;white-space:nowrap;flex:0 0 auto}
.gear svg{width:14px;height:14px;flex:0 0 14px}
.gear:hover{background:var(--bg)}

/* ── 페이지 헤더 ── */
.phead{padding:20px 26px 0;display:flex;align-items:flex-start;gap:20px;flex-wrap:wrap}
.phead h2{font-size:24px;font-weight:800;letter-spacing:-.4px}
.phead p{color:var(--txt2);font-size:12.5px;margin-top:4px}
.gsearch{margin-left:auto;position:relative;min-width:330px;flex:1;max-width:430px}
.gsearch input{width:100%;border:1px solid var(--line);border-radius:8px;padding:9px 62px 9px 34px;background:#fff}
.gsearch .ic{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--txt3)}
.gsearch kbd{position:absolute;right:9px;top:50%;transform:translateY(-50%);font-size:10.5px;background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:2px 6px;color:var(--txt2);font-family:inherit}
.sugg{position:absolute;top:105%;left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:9px;box-shadow:0 10px 28px rgba(15,23,42,.13);z-index:60;overflow:hidden;display:none}
.sugg a{display:flex;gap:9px;padding:9px 13px;border-bottom:1px solid var(--line2);align-items:center}
.sugg a:hover{background:var(--blue-l)}
.sugg em{font-style:normal;font-size:10.5px;background:var(--bg);color:var(--txt2);border-radius:4px;padding:1.5px 6px;flex:0 0 auto}

/* ── 레이아웃 ── */
.body{padding:16px 26px 30px;display:flex;flex-direction:column;gap:16px}
.grid{display:grid;gap:16px}
.g4{grid-template-columns:repeat(4,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g2{grid-template-columns:repeat(2,1fr)}
.c2{grid-column:span 2}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh)}
.card>h3{font-size:15.5px;font-weight:700;padding:15px 17px 12px;display:flex;align-items:center;gap:9px;white-space:nowrap}
.card>h3 .more{margin-left:auto;font-size:12px;color:var(--txt2);font-weight:500;display:flex;align-items:center;gap:3px;white-space:nowrap;flex:0 0 auto}
.card>h3 .more svg{width:13px;height:13px}
.card>h3 .more:hover{color:var(--blue)}
.card>h3 .dt{margin-left:auto;font-size:12px;color:var(--txt3);font-weight:500}
.cbody{padding:0 17px 16px}

/* ── KPI ── */
.kpi{display:flex;align-items:center;gap:14px;padding:19px 18px}
.kpi .ic{width:56px;height:56px;border-radius:13px;display:grid;place-items:center;flex:0 0 56px}
.kpi .ic.b{background:var(--blue)}.kpi .ic.g{background:var(--green)}
.kpi .ic.s{background:var(--sky)}.kpi .ic.p{background:var(--purple)}
.kpi .ic svg{width:26px;height:26px;color:#fff}
.kpi .lb{font-size:13px;color:var(--txt2);font-weight:600}
.kpi .vl{font-size:25px;font-weight:800;letter-spacing:-1px;margin:2px 0 4px}
.kpi .vl small{font-size:14px;font-weight:700;margin-left:2px}
.kpi .df{font-size:11.5px;color:var(--txt3);display:flex;align-items:center;gap:5px}
.up{color:var(--green);font-weight:700}.dn{color:var(--red);font-weight:700}

/* ── 테이블 ── */
.tw{overflow:auto;border:1px solid var(--line);border-radius:8px}
table{width:100%;border-collapse:collapse;white-space:nowrap}
th{background:#f8fafc;font-size:12px;font-weight:700;color:var(--txt2);padding:9px 10px;border-bottom:1px solid var(--line);text-align:left;position:sticky;top:0;z-index:2}
td{padding:9px 10px;border-bottom:1px solid var(--line2);font-size:12.5px}
tbody tr:last-child td{border-bottom:0}
tbody tr:hover{background:#f8fafc}
tbody tr.sel{background:var(--blue-l)}
.num{text-align:right;font-variant-numeric:tabular-nums}
.ctr{text-align:center}
.mut{color:var(--txt3)}

/* ── 배지 / 진행바 ── */
.bg{display:inline-block;font-size:11.5px;font-weight:700;padding:2.5px 9px;border-radius:5px;background:var(--bg);color:var(--txt2);white-space:nowrap}
.bg.gr{background:var(--green-l);color:var(--green)}
.bg.rd{background:var(--red-l);color:var(--red)}
.bg.bl{background:var(--blue-l);color:var(--blue)}
.bg.am{background:var(--amber-l);color:var(--amber)}
.bg.pu{background:var(--purple-l);color:var(--purple)}
.pbar{display:flex;align-items:center;gap:9px;min-width:150px}
.pbar .tr{flex:1;height:8px;background:#e8edf5;border-radius:5px;overflow:hidden}
.pbar .fi{height:100%;background:var(--blue);border-radius:5px}
.pbar b{font-size:12px;font-weight:700;min-width:34px}

/* ── 품질 ── */
.qrow{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:4px 0 14px}
.qc{text-align:center}
.qc .ci{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;margin:0 auto 7px}
.qc .ci svg{width:24px;height:24px;color:#fff}
.qc .t{font-size:12.5px;color:var(--txt2);font-weight:600}
.qc .v{font-size:23px;font-weight:800;letter-spacing:-.6px;margin:1px 0 3px}
.qc .d{font-size:11px;color:var(--txt3)}

/* ── 알림 ── */
.tabs{display:flex;gap:5px;padding:0 17px 12px;flex-wrap:wrap}
.tab{font-size:12px;padding:5px 12px;border-radius:6px;background:var(--bg);color:var(--txt2);border:0;cursor:pointer;font-weight:600}
.tab.on{background:var(--blue);color:#fff}
.alist{display:flex;flex-direction:column}
.ai{display:flex;gap:10px;padding:10px 17px;border-top:1px solid var(--line2);align-items:flex-start}
.ai:hover{background:#f8fafc}
.ai .ic{width:26px;height:26px;border-radius:6px;display:grid;place-items:center;flex:0 0 26px;margin-top:1px}
.ai .ic svg{width:14px;height:14px}
.ai .tx{flex:1;min-width:0}
.ai .tx b{font-size:12.5px;font-weight:600;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ai .tx span{font-size:11.5px;color:var(--txt3)}
.ai .tm{font-size:11px;color:var(--txt3);flex:0 0 auto}
.nlist{padding:2px 17px 14px}
.nlist li{list-style:none;display:flex;gap:9px;padding:7px 0;font-size:12.5px;align-items:center;border-bottom:1px dashed var(--line2)}
.nlist li:last-child{border-bottom:0}
.nlist li::before{content:'';width:4px;height:4px;border-radius:50%;background:var(--blue);flex:0 0 4px}
.nlist li span{margin-left:auto;color:var(--txt3);font-size:11.5px}

/* ── 차트 ── */
.chead{display:flex;align-items:center;gap:13px;padding:0 17px 6px;font-size:11.5px;color:var(--txt3)}
.lg{display:flex;align-items:center;gap:5px}
.lg i{width:10px;height:10px;border-radius:2px;display:block}
.chart{width:100%;height:170px;padding:0 8px}

/* ── 툴바 / 버튼 ── */
.bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:13px 17px;border-bottom:1px solid var(--line)}
.bar .sp{margin-left:auto}
.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:#fff;border-radius:7px;padding:7px 13px;font-size:12.5px;font-weight:600;cursor:pointer;color:var(--txt)}
.btn:hover{background:var(--bg)}
.btn.pri{background:var(--blue);border-color:var(--blue);color:#fff}
.btn.pri:hover{background:#1d4ed8}
.btn.dng{color:var(--red);border-color:#fecaca}
.btn.dng:hover{background:var(--red-l)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn svg{width:14px;height:14px}
.fi{border:1px solid var(--line);border-radius:7px;padding:7px 10px;background:#fff;min-width:120px}
.fi:focus{border-color:var(--blue)}
label.lb{font-size:12px;color:var(--txt2);font-weight:600}

/* ── 모달 / 폼 ── */
.ov{position:fixed;inset:0;background:rgba(15,23,42,.45);display:none;z-index:100;align-items:flex-start;justify-content:center;padding:38px 16px;overflow:auto}
.ov.on{display:flex}
.md{background:#fff;border-radius:13px;width:100%;max-width:760px;box-shadow:0 24px 60px rgba(15,23,42,.3)}
.md h4{font-size:16.5px;font-weight:700;padding:17px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center}
.md h4 button{margin-left:auto;background:none;border:0;font-size:21px;color:var(--txt3);cursor:pointer;line-height:1}
.fg{display:grid;grid-template-columns:1fr 1fr;gap:13px 16px;padding:19px 20px}
.f{display:flex;flex-direction:column;gap:5px}
.f.full{grid-column:1/-1}
.f label{font-size:12px;font-weight:600;color:var(--txt2)}
.f label i{color:var(--red);font-style:normal;margin-left:2px}
.f input,.f select,.f textarea{border:1px solid var(--line);border-radius:7px;padding:8px 10px;background:#fff;width:100%}
.f input:focus,.f select:focus,.f textarea:focus{border-color:var(--blue)}
.f input[readonly]{background:var(--bg);color:var(--txt2)}
.f textarea{min-height:66px;resize:vertical}
.mfoot{display:flex;gap:8px;padding:14px 20px;border-top:1px solid var(--line);justify-content:flex-end;background:#fbfcfe;border-radius:0 0 13px 13px}
.lkw{position:relative}
.lkl{position:absolute;top:104%;left:0;right:0;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 26px rgba(15,23,42,.14);max-height:230px;overflow:auto;z-index:20;display:none}
.lkl div{padding:8px 11px;cursor:pointer;border-bottom:1px solid var(--line2);font-size:12.5px}
.lkl div:hover,.lkl div.hi{background:var(--blue-l)}
.lkl div span{color:var(--txt3);font-size:11.5px;margin-left:6px}

/* ── 기타 ── */
.empty{text-align:center;padding:48px 16px;color:var(--txt3)}
.pct-over{color:var(--red);font-weight:700}
.addr-field{display:flex;gap:6px}.addr-field input{flex:1;min-width:0}.addr-btn{white-space:nowrap;flex:0 0 auto}
.addr-layer{position:fixed;inset:0;z-index:300;background:rgba(15,23,42,.45);display:grid;place-items:center;padding:16px}
.addr-box{width:min(520px,100%);height:min(560px,calc(100vh - 32px));background:#fff;border-radius:12px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 18px 48px rgba(15,23,42,.3)}
.addr-head{display:flex;align-items:center;gap:8px;padding:12px 14px;border-bottom:1px solid var(--line)}
.addr-head span{font-size:12px;color:var(--txt3)}.addr-head button{margin-left:auto;border:0;background:transparent;font-size:24px;line-height:18px;cursor:pointer;color:var(--txt2)}
.addr-body{flex:1;min-height:0}
.empty b{display:block;font-size:14px;color:var(--txt2);margin-bottom:5px}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(70px);background:#0f172a;color:#fff;padding:11px 20px;border-radius:9px;font-size:13px;z-index:200;opacity:0;transition:.25s;box-shadow:0 10px 26px rgba(0,0,0,.25)}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.err{background:var(--red)}
.chk{width:15px;height:15px;accent-color:var(--blue);cursor:pointer}
.cnt{font-size:12px;color:var(--txt2)}
.cnt b{color:var(--blue)}
.pager{border-top:1px solid var(--line)}
.btn:disabled{opacity:.45;cursor:default}

/* ── 로그인 ── */
.lgw{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#152a5e,#2563eb)}
.lgb{background:#fff;border-radius:15px;padding:38px 36px;width:380px;box-shadow:0 22px 50px rgba(0,0,0,.26)}
.lgb .bd{text-align:center;margin-bottom:26px}
.lg-logo{display:block;width:236px;max-width:100%;height:auto;margin:2px auto 12px}
.lgb .bd h1{font-size:27px;font-weight:800;letter-spacing:2.5px;color:var(--nav)}
.lgb .bd span{font-size:12.5px;letter-spacing:.4px;color:var(--txt2);font-weight:600}
.lgb .f{margin-bottom:13px}
.lgb button{width:100%;padding:11px;border-radius:8px;background:var(--blue);color:#fff;border:0;font-weight:700;font-size:14px;cursor:pointer;margin-top:7px}
.lgb button:hover{background:#1d4ed8}
.lgerr{background:var(--red-l);color:var(--red);padding:9px 12px;border-radius:7px;font-size:12.5px;margin-bottom:13px;text-align:center}
.lghint{margin-top:17px;padding-top:15px;border-top:1px solid var(--line);font-size:11.5px;color:var(--txt3);text-align:center;line-height:1.7}

@media(max-width:1400px){.g4{grid-template-columns:repeat(2,1fr)}}
.navtoggle{display:none;align-items:center;justify-content:center;width:32px;height:32px;border-radius:8px;border:0;background:transparent;color:var(--txt);cursor:pointer;flex:0 0 auto}
.navtoggle svg{width:20px;height:20px}
.navbackdrop{display:none;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:59}
.navbackdrop.on{display:block}
@media(max-width:1100px){.g3,.g2{grid-template-columns:1fr}.c2{grid-column:auto}
  .navtoggle{display:inline-flex}
  .side{width:62px;flex:0 0 62px;transition:width .15s}.side .brand-logo,.side .brand-area,.side .mgroup>p,.mitem span{display:none}
  .side .brand{align-items:center;padding:14px 0}.side .brand-mark{display:block}.mitem{justify-content:center;padding:11px 0}
  /* 메인메뉴(햄버거)를 누르면 펼쳐서 글씨를 보여주고, 메뉴를 눌러 하위 화면으로 들어가면
     새 페이지가 로드되며 이 펼침 상태는 사라지고 다시 아이콘만 보이는 기본 상태로 돌아간다. */
  .side.open{position:fixed;left:0;top:0;width:230px;flex-basis:230px;z-index:60;box-shadow:4px 0 24px rgba(0,0,0,.35)}
  .side.open .brand-logo{display:inline-block}.side.open .brand-area{display:inline}
  .side.open .mgroup>p{display:block}.side.open .mitem span{display:inline}
  .side.open .brand{align-items:flex-start;padding:16px 20px}.side.open .brand-mark{display:none}
  .side.open .mitem{justify-content:flex-start;padding:9px 20px}}
@media(max-width:760px){.g4{grid-template-columns:1fr}.fg{grid-template-columns:1fr}
  .gsearch{min-width:100%}.body,.phead{padding-left:14px;padding-right:14px}}
@media print{@page{size:A4 landscape;margin:8mm}.side,.top,.bar,.btn,.phead{display:none!important}.body{padding:0}.main{width:100%}.card{border:0;box-shadow:none}.tw{overflow:visible;border:0}table{white-space:normal;font-size:9pt}th,td{padding:4px 5px}}

.quick-range{padding-top:7px;padding-bottom:7px;background:#fbfcfe}
.quick-range .btn{padding:4px 9px;font-size:11.5px}
.grid-filter{min-width:150px}.grid-filter>.fi{width:100%}

/* ══════════ v3.0 추가 스타일 ══════════ */
.tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}
.tabs .tab{border:1px solid #d8dee8;background:#fff;color:#44506a;border-radius:9px;
  padding:9px 16px;font-size:13px;font-weight:600;cursor:pointer}
.tabs .tab.on{background:#152a5e;border-color:#152a5e;color:#fff}
.pane{display:none}.pane.on{display:block}
h5.sech{margin:16px 0 8px;font-size:12.5px;color:#43506a;font-weight:800;letter-spacing:.2px}

.imgrow{display:flex;gap:18px;flex-wrap:wrap;margin-top:10px}
.imgbox{flex:1;min-width:260px}
.imgbox label{display:block;font-size:12px;color:#5b6472;margin-bottom:6px;font-weight:600}
.drop{border:2px dashed #c7d0de;border-radius:10px;background:#fafbfd;min-height:96px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  padding:12px;text-align:center;cursor:pointer;color:#7a8699;font-size:12px;transition:.15s}
.drop:hover,.drop.over{border-color:#152a5e;background:#eef2fb;color:#152a5e}
.drop.busy{opacity:.5;pointer-events:none}
.drop img{max-height:70px;max-width:100%}
.drop b{font-size:13.5px;color:#25303f}
.dropzone{min-height:110px;margin-bottom:12px}

.chkbox{border:1px solid #dde2ea;border-radius:9px;max-height:170px;overflow:auto;padding:6px 8px;background:#fff}
.chkbox label{display:flex;align-items:center;gap:7px;padding:4px 2px;font-size:12.5px;cursor:pointer}
.chkbox label span{color:#94a3b8;font-size:11px}

.lineRow{display:flex;align-items:center;gap:8px;margin-bottom:7px}
.lineRow .seq{width:40px;font-size:12px;color:#5b6472;font-weight:700}
.lineRow select{flex:1}
.statusbar{margin-top:14px;padding:10px 12px;background:#f5f7fb;border-radius:9px;font-size:12.5px}
.chip{display:inline-block;margin-left:6px;padding:2px 9px;border-radius:999px;background:#e8edf6;
  color:#3b4a66;font-size:11.5px;font-weight:600}
.chip.ok{background:#dcf5e6;color:#0f7b3f}.chip.no{background:#fde4e4;color:#b91c1c}

.totbar{display:flex;gap:18px;justify-content:flex-end;align-items:center;margin-top:10px;
  padding:10px 14px;background:#f5f7fb;border-radius:9px;font-size:12.5px;color:#48546b;flex-wrap:wrap}
.totbar b{color:#111827}
.totbar .big{font-size:15px;color:#152a5e}.totbar .big b{color:#152a5e}
.dtab td,.dtab th{font-size:12px}
.dtab .fi{width:100%;min-width:0;padding:4px 7px}
.dwide{display:block;margin-bottom:10px;position:relative}
.dwide .fi{width:100%}
.md.wide{max-width:1040px;width:96vw}
.md.nara-wide{max-width:1500px;width:calc(100vw - 32px)}
.md.nara-wide .popbody{padding-left:16px;padding-right:16px}
.nara-results{min-width:1720px}
.nara-results th:last-child,.nara-results td:last-child{position:sticky;right:0;z-index:3;background:#fff;box-shadow:-1px 0 0 var(--line)}
.nara-results thead th:last-child{background:#f8fafc;z-index:4}
.nara-results .nsAdd{white-space:nowrap}

.popbody{max-height:70vh;overflow:auto}

.acts{text-align:center;white-space:nowrap}
.acts .btn{padding:3px 8px;font-size:11.5px;margin-left:3px}

.punch .prow{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.punch .pwho{display:flex;flex-direction:column}
.punch .pwho b{font-size:16px}
.punch .pclock{font-size:32px;font-weight:800;letter-spacing:1px;color:#152a5e;
  font-variant-numeric:tabular-nums;margin-left:auto}
.punch .pbtns{display:flex;gap:8px}
.btn.big{padding:12px 28px;font-size:15px;font-weight:700;border-radius:10px}
.punch .pstat{display:flex;gap:20px;flex-wrap:wrap;margin-top:14px;padding-top:12px;
  border-top:1px solid #eef1f6;font-size:12.5px;color:#5b6472}
.punch .pstat b{color:#111827;font-size:13.5px}
.punch .pstat.mon{border-top:0;padding-top:4px;color:#7a8699}

.flowbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;
  padding:10px 14px;background:#fff;border:1px solid #e6eaf1;border-radius:11px;font-size:12.5px;color:#7a8699}
.flowbar span{padding:4px 11px;border-radius:999px;background:#f2f5fa}
.flowbar span.on{background:#152a5e;color:#fff;font-weight:700}
.flowbar i{color:#c3cbd8;font-style:normal}
@media (max-width:820px){.punch .pclock{margin-left:0}.md.wide{width:98vw}}

.bid-number-link{color:var(--blue);font-weight:800;text-decoration:underline;text-underline-offset:2px;white-space:nowrap;cursor:pointer}
.bid-number-link:hover{color:#123b86;text-decoration-thickness:2px}

.md.portal-wide{max-width:1180px}
.portal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:12px;padding:16px}
.portal-card{display:grid;grid-template-columns:42px 1fr;gap:10px;border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff;box-shadow:0 2px 8px rgba(20,48,92,.06)}
.portal-no{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#eaf2ff;color:var(--blue);font-weight:900}
.portal-body{min-width:0}.portal-body strong{display:block;font-size:15px;color:#142f58}.portal-body span{display:block;margin-top:2px;color:var(--blue);font-size:12px;font-weight:800}.portal-body p{margin:7px 0 0;color:var(--mut);font-size:12px;line-height:1.45}
.portal-actions{grid-column:1/-1;display:flex;gap:7px;flex-wrap:wrap;padding-top:2px}.portal-actions .btn{flex:1;min-width:120px;text-align:center}
@media(max-width:700px){.portal-grid{grid-template-columns:1fr;padding:10px}.portal-actions .btn{width:100%;flex-basis:100%}}


/* 공공조달 입찰 타임스케줄 */
.bid-schedule{margin-bottom:12px;background:#fff;border:1px solid #cfdae8;border-radius:11px;box-shadow:var(--sh);overflow:hidden}
.bid-schedule.loading{padding:24px;text-align:center;color:var(--txt2)}
.bid-schedule-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;background:#f8fafc;border-bottom:1px solid #dce5ef}
.bid-schedule-head>div:first-child{display:flex;align-items:baseline;gap:10px}.bid-schedule-head strong{font-size:15px;color:#17365f}.bid-schedule-head span{font-size:12px;color:var(--txt2)}
.bid-schedule-nav{display:flex;gap:6px}.bid-schedule-nav .btn{padding:5px 10px}
.bid-schedule-alerts{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:8px 14px;border-bottom:1px solid #e6edf5;font-size:12px}
.bid-schedule-alerts span{padding:3px 9px;border-radius:999px;font-weight:700}.bid-schedule-alerts .late{background:var(--red-l);color:#b91c1c}.bid-schedule-alerts .today{background:#fff1d6;color:#b45309}.bid-schedule-alerts .soon{background:#e7f6ec;color:#15803d}.bid-schedule-alerts em{margin-left:auto;color:var(--txt2);font-style:normal}
.bid-schedule-scroll{overflow-x:auto}.bid-schedule table{border-collapse:separate;border-spacing:0;min-width:1260px;width:100%;font-size:11px}
.bid-schedule th,.bid-schedule td{height:29px;padding:2px;text-align:center;border-right:1px solid #dce4ee;border-bottom:1px solid #dce4ee;white-space:nowrap}
.bid-schedule thead th{position:sticky;top:0;background:#f4f7fb;color:#53627a;font-weight:700}.bid-schedule thead th:first-child,.bid-schedule tbody th{position:sticky;left:0;z-index:2;min-width:78px;background:#f6f8fb;color:#263b5d;font-weight:800}
.bid-schedule thead th:first-child{z-index:3}.bid-schedule thead th:not(:first-child):not(:last-child){min-width:36px}.bid-schedule thead th b,.bid-schedule thead th span{display:block;line-height:1.05}.bid-schedule thead th span{font-size:10px;margin-top:2px}
.bid-schedule th.sun{color:#dc2626;background:#fff4f4}.bid-schedule th.sat{color:#1d4ed8;background:#f2f6ff}.bid-schedule .today{background:#fff7df!important;box-shadow:inset 1px 0 #f59e0b,inset -1px 0 #f59e0b}
.bid-schedule td.late{background:#fff0f0}.bid-schedule td.soon{background:#fff8df}.bid-schedule td.due{background:#f0f9ff}.bid-schedule .schedule-total{min-width:42px;background:#edf3f9;font-weight:900;color:#17365f}
.schedule-count{width:25px;height:23px;border:0;border-radius:6px;background:#e8f0ff;color:#174ea6;font-size:11px;font-weight:900;cursor:pointer}.schedule-count:hover{background:#2563eb;color:#fff;transform:translateY(-1px)}
.bid-schedule td.late .schedule-count{background:#fee2e2;color:#b91c1c}.bid-schedule td.soon .schedule-count{background:#fef3c7;color:#b45309}
@media(max-width:760px){.bid-schedule-head{align-items:flex-start;flex-direction:column}.bid-schedule-alerts em{width:100%;margin-left:0}.bid-schedule table{min-width:1180px}}

.bid-auto-form .checkline{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:800;color:#17365f;white-space:nowrap}.bid-auto-form textarea{width:100%;resize:vertical}.bid-auto-form .mut{display:block;margin-top:5px;line-height:1.5}


/* 전자문서 양식 관리 */
#field-content{min-height:260px;line-height:1.65;font-family:inherit}
#field-mail_body{min-height:120px;line-height:1.55}
.esign-staff-search{position:relative;width:100%}
.esign-staff-search .lkl{top:calc(100% - 1px);left:0;right:0;z-index:80;border-radius:0 0 8px 8px;max-height:240px}
.esign-staff-result{display:grid;grid-template-columns:minmax(90px,130px) minmax(100px,1fr) minmax(180px,auto);gap:8px;align-items:center;padding:8px 10px;border-bottom:1px solid var(--line2);color:var(--txt);text-decoration:none;font-size:12.5px}
.esign-staff-result:hover{background:var(--blue-l)}.esign-staff-result span{color:var(--txt2)}.esign-staff-result small{text-align:right;color:var(--blue)}.esign-staff-result small.missing{color:var(--red);font-weight:700}
.esign-staff-empty{padding:10px;color:var(--txt3);font-size:12.5px}
@media(max-width:700px){.esign-staff-result{grid-template-columns:1fr}.esign-staff-result small{text-align:left}}
.esign-preview-meta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px;padding:10px 12px;background:#f4f7fb;border-radius:9px;font-size:12px;color:var(--txt2)}
.esign-preview{max-width:780px;margin:0 auto;padding:34px 42px;border:1px solid var(--line);background:#fff;box-shadow:0 4px 18px rgba(20,48,92,.08);line-height:1.75;min-height:380px}
.esign-preview h2{text-align:center;margin:0 0 10px;color:#142f58}.esign-preview>div{white-space:normal;margin-top:24px}
@media(max-width:700px){.esign-preview{padding:22px 18px;min-height:300px}}


th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
th.sortable:hover{background:#edf3ff!important;color:var(--blue)!important}
th.sortable .sort-mark{display:inline-block;margin-left:5px;font-size:9px;color:#a5afbf}
th.sortable.sorted .sort-mark{color:var(--blue)}
