:root {
  --bg: #f2f4f7; --panel: #ffffff; --ink: #17263b; --ink2: #5a6b80; --line: #dee3ea; --line2: #edf0f4;
  --brand: #1e4f8f; --brand2: #e9eff8; --amber: #e0a100; --amber2: #fff6dc; --accent: #c2410c; --ok: #15803d; --warn: #b45309; --bad: #b91c1c;
  --head: #f0f3f8; --hl: #fff8e1; --input: #ffffff; --shadow: 0 1px 2px rgba(16,24,40,.06);
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #12151b; --panel: #1a1f27; --ink: #e6e9ef; --ink2: #9aa3b2; --line: #2c333f; --line2: #232933;
    --brand: #7aa7e6; --brand2: #1f2a3a; --accent: #f08a5d; --ok: #4ade80; --warn: #fbbf24; --bad: #f87171;
    --head: #212833; --hl: #3a3218; --input: #141820; --shadow: none; --amber: #f5c542; --amber2: #3a3218;
  }
}
:root[data-theme="dark"] {
  --bg: #12151b; --panel: #1a1f27; --ink: #e6e9ef; --ink2: #9aa3b2; --line: #2c333f; --line2: #232933;
  --brand: #7aa7e6; --brand2: #1f2a3a; --accent: #f08a5d; --ok: #4ade80; --warn: #fbbf24; --bad: #f87171;
  --head: #212833; --hl: #3a3218; --input: #141820; --shadow: none;
}
* { box-sizing: border-box; }
html, body { margin: 0; }
body { background: var(--bg); color: var(--ink); font-family: 'Pretendard Variable', Pretendard, system-ui, -apple-system, 'Malgun Gothic', sans-serif; font-size: 14px; line-height: 1.5; }
button, input, select, textarea { font: inherit; color: inherit; }
a { color: var(--brand); }

.topbar { position: sticky; top: 0; z-index: 20; display: flex; align-items: center; gap: 12px; padding: 10px 16px; background: var(--panel); border-bottom: 1px solid var(--line); }
.topbar .logo { font-weight: 700; color: var(--brand); white-space: nowrap; cursor: pointer; }
.topbar .logo small { color: var(--ink2); font-weight: 400; margin-left: 6px; }
.topbar .sp { flex: 1; }
.topbar .who { color: var(--ink2); font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 40vw; }

main { max-width: 1400px; margin: 0 auto; padding: 16px; }
.card { background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 16px; margin-bottom: 14px; box-shadow: var(--shadow); }
.card h3 { margin: 0 0 12px; font-size: 15px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.card h3 .sp { flex: 1; }
.muted { color: var(--ink2); }
.small { font-size: 12px; }
.row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.row .sp { flex: 1; }

.btn { border: 1px solid var(--line); background: var(--panel); padding: 7px 12px; border-radius: 7px; cursor: pointer; white-space: nowrap; }
.btn:hover { border-color: var(--brand); }
.btn.primary { background: var(--brand); border-color: var(--brand); color: #fff; }
:root[data-theme="dark"] .btn.primary { color: #0d1117; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="light"]) .btn.primary { color: #0d1117; } }
.btn.danger { color: var(--bad); }
.btn.sm { padding: 3px 8px; font-size: 12px; }
.btn:disabled { opacity: .5; cursor: default; }

.tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--line); margin-bottom: 14px; overflow-x: auto; }
.tabs button { border: 0; background: none; padding: 10px 14px; cursor: pointer; color: var(--ink2); border-bottom: 2px solid transparent; white-space: nowrap; }
.tabs button.on { color: var(--brand); border-bottom-color: var(--brand); font-weight: 600; }

.phead { display: flex; gap: 12px; align-items: flex-start; flex-wrap: wrap; margin-bottom: 10px; }
.phead h2 { margin: 0; font-size: 18px; flex: 1; min-width: 240px; }
.badge { display: inline-block; padding: 2px 8px; border-radius: 99px; font-size: 12px; background: var(--brand2); color: var(--brand); white-space: nowrap; }
.badge.warn { background: var(--hl); color: var(--warn); }
.badge.ok { color: var(--ok); }
.badge.bad { color: var(--bad); }

.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px 16px; }
.f label { display: block; font-size: 12px; color: var(--ink2); margin-bottom: 3px; }
.f input, .f select, .f textarea { width: 100%; padding: 7px 9px; border: 1px solid var(--line); border-radius: 6px; background: var(--input); }
.f textarea { min-height: 60px; resize: vertical; }
.f.wide { grid-column: 1 / -1; }
input.num, td.num, th.num { text-align: right; font-variant-numeric: tabular-nums; }

.tw { overflow-x: auto; border: 1px solid var(--line); border-radius: 8px; }
.tw.tall { max-height: 70vh; overflow-y: auto; }
table { border-collapse: collapse; width: 100%; background: var(--panel); }
th, td { border-bottom: 1px solid var(--line2); padding: 6px 8px; vertical-align: middle; }
th { background: var(--head); font-weight: 600; font-size: 12px; color: var(--ink2); position: sticky; top: 0; z-index: 1; white-space: nowrap; }
td input, td select { width: 100%; min-width: 60px; padding: 4px 6px; border: 1px solid var(--line); border-radius: 5px; background: var(--input); }
tr.sec td { background: var(--brand2); font-weight: 600; }
tr.sum td { background: var(--head); font-weight: 600; }
tr.diff td { background: var(--hl); }
tr.click { cursor: pointer; }
tr.click:hover td { background: var(--line2); }
td.nowrap, th.nowrap { white-space: nowrap; }

.kpis { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; margin-bottom: 14px; }
.kpi { background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 12px 14px; }
.kpi .l { font-size: 12px; color: var(--ink2); }
.kpi .v { font-size: 18px; font-weight: 700; font-variant-numeric: tabular-nums; }
.kpi .s { font-size: 12px; color: var(--ink2); }

.drop { display: block; border: 2px dashed var(--line); border-radius: 10px; padding: 26px; text-align: center; color: var(--ink2); cursor: pointer; }
.drop.over { border-color: var(--brand); background: var(--brand2); }
.toast { position: fixed; left: 50%; bottom: 20px; transform: translateX(-50%); background: var(--ink); color: var(--panel); padding: 10px 16px; border-radius: 8px; z-index: 50; max-width: 90vw; }
.login { max-width: 360px; margin: 10vh auto; }
.help { background: var(--brand2); border-radius: 8px; padding: 10px 12px; font-size: 13px; margin-bottom: 12px; }
.empty { text-align: center; padding: 30px; color: var(--ink2); }
.two { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 900px) { .two { grid-template-columns: 1fr; } }
@media (max-width: 600px) { main { padding: 12px 16px; } .topbar .who { display: none; } .kpi .v { font-size: 16px; } }

/* 표(시트) 방식 목록 */
table.sheet { table-layout: fixed; }
table.sheet th { border-right: 1px solid var(--line); }
table.sheet td { padding: 0; border: 1px solid var(--line2); vertical-align: top; }
table.sheet td.rn { text-align: center; color: var(--ink2); font-size: 12px; padding-top: 8px; background: var(--head); }
table.sheet td.center { text-align: center; vertical-align: middle; }
table.sheet input, table.sheet textarea { display: block; width: 100%; min-width: 0; border: 0; border-radius: 0; background: transparent; padding: 7px 8px; resize: none; overflow: hidden; line-height: 1.45; }
table.sheet input:focus, table.sheet textarea:focus { outline: 2px solid var(--brand); outline-offset: -2px; background: var(--input); }
table.sheet tr:hover td:not(.rn) { background: var(--line2); }
table.sheet tr.addrow td { border: 0; background: none !important; }
.xbtn { border: 0; background: none; color: var(--ink2); font-size: 18px; line-height: 1; cursor: pointer; padding: 4px 8px; }
.xbtn:hover { color: var(--bad); }
.linkbtn { border: 0; background: none; color: var(--brand); cursor: pointer; padding: 8px; }

/* 칸별 원본 서류 */
.slots { display: flex; flex-direction: column; gap: 6px; margin: -4px 0 12px; padding: 10px 12px; background: var(--head); border-radius: 8px; }
.doc { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.doc .dl { min-width: 150px; font-weight: 600; font-size: 13px; }
.doc .dn { max-width: 280px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.doc label.btn { margin: 0; }
td.gdoc { padding: 4px 6px !important; vertical-align: middle !important; }
td.gdoc .doc { gap: 4px; }
td.gdoc .dn { max-width: 90px; font-size: 12px; }
.review { background: var(--brand2); border-radius: 8px; padding: 10px 12px; margin: 0 0 12px; }
.doc { border-radius: 6px; padding: 3px 4px; outline: 2px dashed transparent; transition: background .1s; }
.doc .hint { color: var(--ink2); font-size: 12px; }
.doc.over, #gAddLbl.over { outline-color: var(--brand); background: var(--brand2); }
td.gdoc .hint { display: none; }
td.gdoc .doc { padding: 0; }
table.sheet .ro { padding: 7px 8px; white-space: nowrap; font-variant-numeric: tabular-nums; }


/* ================= 공사기본정보 (공사대장 스타일) ================= */
.hero { background: var(--panel); border: 1px solid var(--line); border-radius: 14px; padding: 22px 24px 18px; margin-bottom: 18px; }
.h-top { display: flex; gap: 24px; align-items: flex-start; justify-content: space-between; flex-wrap: wrap; }
.h-id { flex: 1 1 420px; min-width: 0; }
.h-id h1 { margin: 10px 0 6px; font-size: 24px; line-height: 1.3; font-weight: 700; letter-spacing: -0.01em; word-break: keep-all; }
.h-sub { margin: 0; color: var(--ink2); display: flex; flex-wrap: wrap; gap: 4px 0; }
.h-sub span + span::before { content: ''; display: inline-block; width: 1px; height: 11px; background: var(--line); margin: 0 10px; vertical-align: -1px; }
select.status { appearance: none; -webkit-appearance: none; border: 0; border-radius: 999px; padding: 4px 26px 4px 12px; font-size: 13px; font-weight: 600; cursor: pointer;
  background: var(--brand2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%235a6b80' stroke-width='1.5'/%3E%3C/svg%3E") no-repeat right 10px center; color: var(--brand); }
select.status[data-st="공사중지"] { background-color: var(--amber2); color: #8a6100; }
select.status[data-st="준공"], select.status[data-st="실주"] { background-color: var(--line2); color: var(--ink2); }
.h-figs { display: grid; grid-template-columns: repeat(3, minmax(150px, auto)); gap: 0; margin: 0; }
.h-figs > div { padding: 2px 22px; border-left: 1px solid var(--line); }
.h-figs dt { font-size: 12px; color: var(--ink2); }
.h-figs dd { margin: 2px 0 0; font-size: 22px; font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: -0.01em; white-space: nowrap; }
.h-figs dd small { font-size: 13px; font-weight: 500; color: var(--ink2); margin-left: 2px; }
.h-figs dd.warn { color: #b87a00; }
.h-figs span { display: block; font-size: 12px; color: var(--ink2); white-space: nowrap; }
/* 공정 띠 */
.rb { margin-top: 34px; padding: 0 4px; }
.rb-track { position: relative; height: 10px; border-radius: 5px; background: var(--line2); }
.rb-pre { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 5px 0 0 5px; background: repeating-linear-gradient(135deg, var(--line) 0 4px, var(--line2) 4px 8px); }
.rb-done { position: absolute; top: 0; bottom: 0; background: var(--brand); border-radius: 0 5px 5px 0; opacity: .85; }
.rb-ev { position: absolute; top: 50%; width: 8px; height: 8px; margin: -4px 0 0 -4px; border-radius: 50%; background: var(--panel); border: 2px solid var(--brand); cursor: default; }
.rb-now { position: absolute; top: -7px; bottom: -7px; width: 2px; margin-left: -1px; background: var(--amber); border-radius: 1px; }
.rb-now b { position: absolute; bottom: 100%; left: 50%; transform: translateX(-50%); margin-bottom: 3px; font-size: 11px; font-weight: 700; color: #a87400; background: var(--amber2); padding: 1px 6px; border-radius: 4px; white-space: nowrap; }
.rb-miles { position: relative; height: 38px; margin-top: 8px; }
.rb-miles:has(.r1) { height: 74px; }
.rb-miles:has(.r2) { height: 110px; }
.rb-miles span.r2 { top: 72px; }
.rb-miles span.r2::before { content: ''; position: absolute; left: 50%; top: -70px; height: 68px; border-left: 1px dotted var(--line); }
.rb-miles span.l.r2::before { left: 0; }
.rb-miles span { position: absolute; transform: translateX(-50%); font-size: 12px; color: var(--ink2); text-align: center; white-space: nowrap; line-height: 1.35; font-variant-numeric: tabular-nums; }
.rb-miles span.l { transform: none; text-align: left; }
.rb-miles span.r { transform: translateX(-100%); text-align: right; }
.rb-miles span.r1 { top: 36px; }
.rb-miles span.r1::before { content: ''; position: absolute; left: 50%; top: -34px; height: 32px; border-left: 1px dotted var(--line); }
.rb-miles span.l.r1::before { left: 0; }
.rb-miles b { display: block; color: var(--ink); font-weight: 600; }
.rb-empty { margin-top: 16px; padding: 10px 12px; border: 1px dashed var(--line); border-radius: 8px; color: var(--ink2); font-size: 13px; }

/* 섹션 + 장부 */
.sec { background: var(--panel); border: 1px solid var(--line); border-radius: 12px; margin-bottom: 14px; overflow: hidden; }
.sec-h { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 12px 18px; border-bottom: 1px solid var(--line); }
.sec-h h2 { margin: 0; font-size: 15px; font-weight: 700; min-width: 72px; }
.sec-docs { display: flex; gap: 8px; flex-wrap: wrap; margin-left: auto; }
.ledger { display: grid; grid-template-columns: 1fr 1fr; }
.lf { display: grid; grid-template-columns: 148px minmax(0, 1fr); align-items: stretch; border-bottom: 1px solid var(--line2); min-height: 44px; }
.lf:nth-child(odd):not(.w) { border-right: 1px solid var(--line2); }
.lf.w { grid-column: 1 / -1; border-right: 0; }
.ll { display: flex; flex-direction: column; justify-content: center; padding: 0 14px 0 18px; font-size: 13px; color: var(--ink2); background: #fafbfc; border-right: 1px solid var(--line2); }
.ll small { font-size: 11px; color: #8996a8; margin-top: 1px; }
.lv { display: flex; align-items: center; gap: 6px; padding: 0 12px; min-width: 0; }
.lv input { flex: 1; min-width: 0; border: 0; background: transparent; padding: 10px 2px; font-size: 14px; color: var(--ink); border-radius: 4px; }
.lv input:hover { background: var(--line2); }
.lv input:focus { outline: 2px solid var(--brand); outline-offset: -1px; background: var(--input); }
.lv input.num, .lv output.calc { text-align: right; font-variant-numeric: tabular-nums; }
.lv output.calc { flex: 1; padding: 10px 2px; font-weight: 600; }
.lv .u { color: var(--ink2); font-size: 13px; min-width: 14px; }
.lv .wd { color: var(--ink2); font-size: 13px; min-width: 26px; }
.lv input.dp { cursor: pointer; font-variant-numeric: tabular-nums; flex: 0 0 auto; width: 11.5ch; }
.lv .wd { margin-right: auto; }
.memo { padding: 12px 18px; }
.memo textarea { width: 100%; min-height: 90px; border: 1px solid var(--line); border-radius: 8px; padding: 10px 12px; resize: vertical; background: var(--input); }
.sec-foot { display: flex; justify-content: space-between; align-items: center; padding: 10px 18px 14px; }
@media (max-width: 860px) {
  .ledger { grid-template-columns: 1fr; }
  .lf:nth-child(odd):not(.w) { border-right: 0; }
  .lf { grid-template-columns: 112px minmax(0, 1fr); }
  .h-figs { grid-template-columns: 1fr 1fr; row-gap: 12px; }
  .h-figs > div:first-child { border-left: 0; padding-left: 0; }
}
@media (max-width: 520px) { .h-figs { grid-template-columns: 1fr; } .h-figs > div { border-left: 0; padding-left: 0; } .ll { padding-left: 12px; } }

/* 섹션 머리의 원본 서류 칩 */
.sec-docs .doc { border: 1px dashed var(--line); background: #fbfcfd; border-radius: 8px; padding: 4px 6px 4px 10px; gap: 6px; }
.sec-docs .doc .dl { min-width: 0; font-size: 12.5px; font-weight: 600; color: var(--ink); }
.sec-docs .doc .hint { display: none; }
.sec-docs .doc .dn { max-width: 190px; font-size: 12.5px; }
.sec-docs .doc .btn.sm { padding: 2px 8px; }
.sec-docs .doc.over { border-color: var(--brand); background: var(--brand2); }
.ledger-wrap + .card, .ledger-wrap ~ .card { border-radius: 12px; }
.review { margin: 12px 18px 0; }

/* 시트 표 머리 정렬: 글자는 왼쪽, 숫자는 오른쪽 */
table.sheet th { text-align: left; }
table.sheet th.num { text-align: right; }
table.sheet input.dp { cursor: pointer; font-variant-numeric: tabular-nums; }

/* ================= 달력 ================= */
.dp-pop { position: fixed; z-index: 100; width: 292px; background: var(--panel); border: 1px solid var(--line); border-radius: 14px; padding: 12px 12px 8px;
  box-shadow: 0 12px 32px rgba(23, 38, 59, .16), 0 2px 6px rgba(23, 38, 59, .08); font-variant-numeric: tabular-nums; animation: dpIn .12s ease-out; }
@keyframes dpIn { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) { .dp-pop { animation: none; } }
.dp-pop button { border: 0; background: none; cursor: pointer; font: inherit; color: var(--ink); }
.dp-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.dp-pop .dp-title { font-size: 15px; font-weight: 700; padding: 4px 10px; border-radius: 8px; }
.dp-pop .dp-title:hover { background: var(--line2); }
.dp-pop .dp-nav { width: 32px; height: 32px; border-radius: 50%; font-size: 20px; line-height: 1; color: var(--ink2) !important; }
.dp-pop .dp-nav:hover { background: var(--line2); color: var(--ink) !important; }
.dp-wd, .dp-grid { display: grid; grid-template-columns: repeat(7, 1fr); }
.dp-wd span { text-align: center; font-size: 12px; color: var(--ink2); padding: 4px 0 6px; }
.dp-wd .sun, .dp-d.sun { color: #d14343 !important; }
.dp-wd .sat, .dp-d.sat { color: #2f64c0 !important; }
.dp-pop .dp-d { height: 36px; margin: 1px; border-radius: 50%; font-size: 13.5px; position: relative; }
.dp-d:hover { background: var(--brand2); }
.dp-d.out { opacity: .35; }
.dp-d.today { box-shadow: inset 0 0 0 2px var(--amber); font-weight: 700; }
.dp-pop .dp-d.on, .dp-pop .dp-d.on.sun, .dp-pop .dp-d.on.sat { background: var(--brand); color: #fff !important; font-weight: 700; box-shadow: none; }
.dp-foot { display: flex; justify-content: space-between; border-top: 1px solid var(--line2); margin-top: 6px; padding-top: 6px; }
.dp-pop .dp-foot button { padding: 6px 10px; border-radius: 6px; font-size: 13px; color: var(--ink2) !important; }
.dp-foot .dp-today { color: var(--brand) !important; font-weight: 600; }
.dp-foot button:hover { background: var(--line2); }
.dp-months { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; padding: 4px 0 8px; }
.dp-pop .dp-months button { padding: 12px 0; border-radius: 10px; font-size: 13.5px; }
.dp-months button:hover { background: var(--brand2); }
.dp-months button.now { box-shadow: inset 0 0 0 2px var(--amber); }
.dp-pop .dp-months button.on { background: var(--brand); color: #fff; font-weight: 700; }
input.dp.dp-on { outline: 2px solid var(--brand); outline-offset: -1px; }
.sheet-sec .tw { border: 0; border-radius: 0; }
.sheet-sec table.sheet th { background: #fafbfc; }
.sheet-sec .review { margin-bottom: 12px; }

/* ================= 표 머리: 가운데 정렬, 잘 보이게 ================= */
th, table.sheet th, table.sheet th.num, th.num { text-align: center; }
th { background: #eef2f7; color: var(--ink); font-size: 12.5px; font-weight: 600; padding: 9px 8px; border-bottom: 1px solid var(--line); }
.sheet-sec table.sheet th { background: #eef2f7; }

/* 내역서 공종 계층표 */
table.tree td.code { font-variant-numeric: tabular-nums; color: var(--ink2); font-size: 12.5px; white-space: nowrap; }
table.tree .ind { display: inline-block; padding-left: calc(var(--lv, 0) * 20px); }
table.tree tr.tr-p td { background: #f6f8fb; font-weight: 600; }
table.tree tr.tr-p.lv0 td { background: var(--brand2); color: var(--brand); font-weight: 700; }
table.tree tr.tr-p.lv0 td.code { color: var(--brand); }
table.tree tr.tr-l a { color: var(--ink); text-decoration: none; border-bottom: 1px dashed var(--line); }
table.tree tr.tr-l a:hover { color: var(--brand); border-bottom-color: var(--brand); }
table.tree tr.tr-l.open td { background: var(--hl); }
table.tree tr.tr-l.off td { color: var(--ink2); opacity: .6; }
table.tree tr.tr-items > td { background: #fbfcfd; }
table.tree tr.tr-items table th { background: #f3f5f8; font-size: 12px; }

/* 물량검증 표 공종 머리줄 */
table.chk tr.sec td { background: #f3f6fb; color: var(--ink); font-weight: 700; border-left: 3px solid var(--brand); padding: 9px 10px; }
table.chk tr.sec .sc { color: var(--brand); font-variant-numeric: tabular-nums; margin-right: 10px; font-weight: 600; }

/* ================= 선택 상자·검색칸 ================= */
select:not(.status) { appearance: none; -webkit-appearance: none; border: 1px solid var(--line); border-radius: 8px; background: var(--input) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1.5l5 5 5-5' fill='none' stroke='%235a6b80' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 12px center;
  padding: 8px 34px 8px 12px; font-size: 13.5px; color: var(--ink); cursor: pointer; transition: border-color .12s, box-shadow .12s; }
select:not(.status):hover { border-color: #b9c4d3; }
select:not(.status):focus { outline: none; border-color: var(--brand); box-shadow: 0 0 0 3px rgba(30, 79, 143, .15); }
td select:not(.status) { padding: 5px 28px 5px 9px; font-size: 13px; background-position: right 9px center; border-radius: 6px; }
.toolbar { gap: 10px; padding: 10px 12px; background: #f7f9fb; border: 1px solid var(--line2); border-radius: 10px; }
.toolbar select { min-width: 160px; }
.toolbar #cfS { min-width: 220px; }
label.search { position: relative; display: inline-flex; align-items: center; }
label.search::before { content: ''; position: absolute; left: 11px; width: 14px; height: 14px; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14'%3E%3Ccircle cx='6' cy='6' r='4.5' fill='none' stroke='%235a6b80' stroke-width='1.6'/%3E%3Cpath d='M9.5 9.5l3.5 3.5' stroke='%235a6b80' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat; }
label.search input { width: 230px; border: 1px solid var(--line); border-radius: 8px; padding: 8px 12px 8px 32px; font-size: 13.5px; background: var(--input); }
label.search input:focus { outline: none; border-color: var(--brand); box-shadow: 0 0 0 3px rgba(30, 79, 143, .15); }

/* 물량검증: 품명 한 줄, 확인 표시, 증빙자료 */
table.chk td.nm1 { white-space: nowrap; }
table.chk .okchip { display: inline-block; padding: 1px 9px; border-radius: 999px; background: #e7f5ec; color: #1d7a45; font-size: 12px; font-weight: 600; }
table.chk .up { color: #1d7a45; font-weight: 600; }
table.chk .down { color: var(--bad); font-weight: 600; }
td.evtd { min-width: 240px; }
.evbox { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; min-height: 32px; padding: 3px; border: 1px dashed transparent; border-radius: 7px; }
.evbox:hover { border-color: var(--line); }
.evbox.over { border-color: var(--brand); background: var(--brand2); }
.ev { display: inline-flex; align-items: center; gap: 4px; max-width: 150px; padding: 2px 4px 2px 7px; border-radius: 6px; background: var(--brand2); color: var(--brand); font-size: 12px; cursor: zoom-in; }
.ev .evn { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ev .evx { border: 0; background: none; color: var(--ink2); cursor: pointer; padding: 0 2px; font-size: 14px; line-height: 1; opacity: 0; }
.ev:hover .evx { opacity: 1; }
.ev .evx:hover { color: var(--bad); }
.evadd { display: inline-flex; align-items: center; padding: 3px 9px; border-radius: 6px; color: var(--ink2); font-size: 12px; cursor: pointer; white-space: nowrap; border: 1px dashed var(--line); }
.evadd:hover { color: var(--brand); border-color: var(--brand); }
.pv { position: fixed; z-index: 120; width: 380px; background: var(--panel); border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 14px 36px rgba(23, 38, 59, .2); overflow: hidden; display: none; }
.pv-h { padding: 8px 12px; font-size: 12.5px; font-weight: 600; border-bottom: 1px solid var(--line2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pv-b { height: 420px; display: flex; align-items: center; justify-content: center; background: #f4f6f9; }
.pv-b img { max-width: 100%; max-height: 100%; object-fit: contain; }
.pv-b iframe { width: 100%; height: 100%; border: 0; background: #fff; }

/* 증빙 기록 칸 + 기록 상자 */
td.evtd { min-width: 120px; }
.evbtn { border: 1px dashed transparent; background: none; border-radius: 7px; padding: 5px 8px; cursor: pointer; display: inline-flex; gap: 6px; align-items: center; font-size: 12.5px; color: var(--ink2); }
.evbtn:hover { border-color: var(--line); background: var(--line2); }
.evbtn.has { background: var(--brand2); color: var(--brand); border-color: transparent; font-weight: 600; }
.evbtn .evnone { opacity: .55; }
tr:hover .evbtn .evnone { opacity: 1; }
.evp { position: fixed; z-index: 130; left: 50%; top: 50%; transform: translate(-50%, -50%); width: min(880px, 94vw); max-height: 88vh; overflow: auto; background: var(--panel); border: 1px solid var(--line); border-radius: 14px; box-shadow: 0 16px 40px rgba(23, 38, 59, .22); padding: 20px 22px; outline: none; }
.evp-h { display: flex; align-items: baseline; gap: 8px; margin-bottom: 8px; }
.evp-h b { font-size: 17px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 460px; }
.evp-h .muted { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.evp-x { border: 0; background: none; font-size: 18px; color: var(--ink2); cursor: pointer; line-height: 1; }
.evp-memo { width: 100%; min-height: 170px; border: 1px solid var(--line); border-radius: 9px; padding: 9px 11px; resize: vertical; font-size: 15px; line-height: 1.6; background: var(--input); }
.evp-memo:focus { outline: none; border-color: var(--brand); box-shadow: 0 0 0 3px rgba(30, 79, 143, .15); }
.evp-price { display: flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 13px; color: var(--ink2); }
.evp-price input { width: 130px; border: 1px solid var(--line); border-radius: 7px; padding: 5px 8px; }
.evp-shots { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 14px; min-height: 120px; }
.evp-shots figure { position: relative; margin: 0; height: 190px; border-radius: 8px; overflow: hidden; background: #f1f4f8; border: 1px solid var(--line2); cursor: zoom-in; display: flex; align-items: center; justify-content: center; }
.evp-shots img { width: 100%; height: 100%; object-fit: cover; }
.evp-shots .pdf { font-size: 12px; font-weight: 700; color: var(--brand); text-align: center; }
.evp-shots .evx { position: absolute; top: 3px; right: 3px; width: 22px; height: 22px; border-radius: 50%; border: 0; background: rgba(23, 38, 59, .65); color: #fff; cursor: pointer; opacity: 0; font-size: 14px; line-height: 22px; padding: 0; }
.evp-shots figure:hover .evx { opacity: 1; }
.evp-empty { grid-column: 1 / -1; border: 1px dashed var(--line); border-radius: 10px; padding: 40px 16px; font-size: 14px !important; text-align: center; color: var(--ink2); font-size: 12.5px; }
.evp-foot { margin-top: 14px; font-size: 13px; color: var(--ink2); display: flex; align-items: center; justify-content: space-between; gap: 12px; }

/* 도면(CAD) 카드·보관함 */
.kpi-cad { display: flex; gap: 12px; align-items: center; text-align: left; cursor: pointer; font: inherit; color: inherit; }
.kpi-cad:hover, .kpi-cad.on { border-color: var(--brand); }
.kpi-cad .cad-ic { width: 42px; height: 42px; border-radius: 10px; background: var(--brand2); color: var(--brand); display: flex; align-items: center; justify-content: center; flex: none; }
.kpi-cad > span:last-child { display: flex; flex-direction: column; }
.kpi-cad .v small { font-size: 13px; font-weight: 500; color: var(--ink2); }
.cadp .cadlist { margin-top: 10px; display: grid; gap: 6px; }
.cadf { display: grid; grid-template-columns: 46px minmax(0, 1fr) auto auto auto; gap: 10px; align-items: center; padding: 8px 10px; border: 1px solid var(--line2); border-radius: 9px; }
.cadf:hover { background: #f8fafc; }
.cadi { font-size: 11px; font-weight: 700; color: var(--brand); background: var(--brand2); border-radius: 6px; text-align: center; padding: 5px 0; }
.cadn { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cadp .drop { display: block; margin-top: 4px; }

.evp-back { position: fixed; inset: 0; z-index: 125; background: rgba(23, 38, 59, .35); }
.evp-x { font-size: 24px; }
@media (max-width: 640px) { .evp-shots { grid-template-columns: repeat(2, 1fr); } .evp-shots figure { height: 140px; } }
/* 도면 보관함: 목록은 칸 안에서 스크롤, 창 전체가 놓는 곳 */
.cadp { position: relative; }
.cadp .cadlist { display: grid; grid-template-columns: repeat(auto-fill, minmax(400px, 1fr)); gap: 8px; max-height: 360px; overflow-y: auto; padding-right: 4px; }
.cadf.new { border-color: var(--brand); background: var(--brand2); animation: none; }
.cad-drophint { display: none; }
.cadp.over { outline: 2px dashed var(--brand); outline-offset: -6px; }
.cadp.over .cad-drophint { display: flex; position: absolute; inset: 0; align-items: center; justify-content: center; background: rgba(233, 239, 248, .88); color: var(--brand); font-weight: 700; font-size: 16px; border-radius: inherit; z-index: 2; pointer-events: none; }

/* 도면 폴더(외부참조 포함) */
.csets { display: grid; gap: 8px; margin-top: 10px; }
.cset { border: 1px solid var(--line); border-radius: 10px; background: var(--panel); }
.cset.new { border-color: var(--brand); background: var(--brand2); }
.cset-h { display: flex; align-items: center; gap: 8px; padding: 8px 10px; }
.cset-t { flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px; border: 0; background: none; cursor: pointer; text-align: left; padding: 2px; }
.cset-t > span:nth-child(2) { display: flex; flex-direction: column; min-width: 0; }
.cset-t b { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cset-ic { font-size: 22px; }
.cset-ar { margin-left: auto; color: var(--ink2); font-size: 11px; }
.cset-tree { border-top: 1px solid var(--line2); padding: 6px 10px 10px; max-height: 380px; overflow-y: auto; }
.cset-dir { padding: 8px 0 4px calc(var(--lv) * 22px); font-weight: 600; font-size: 13px; display: flex; gap: 8px; align-items: baseline; }
.cset-f { display: grid; grid-template-columns: 46px minmax(0, 1fr) auto auto; gap: 10px; align-items: center; padding: 4px 0 4px calc(var(--lv) * 22px); border-bottom: 1px dashed var(--line2); }
.cset-f:hover { background: var(--line2); }
.cad-up { margin-top: 10px; padding: 8px 12px; border-radius: 8px; background: var(--brand2); font-size: 13px; display: flex; gap: 10px; align-items: center; }
.cad-up .bar { flex: 1; height: 6px; background: var(--line); border-radius: 9px; overflow: hidden; }
.cad-up .bar i { display: block; height: 100%; background: var(--brand); transition: width .2s; }
.cad-up[hidden] { display: none; }

/* 도면 보관함 — PDF 도면 / CAD 원본 두 구역 */
.cadsec { margin-top: 14px; }
.cadsec + .cadsec { border-top: 1px solid var(--line2); padding-top: 12px; }
.cadsec-h { font-weight: 700; font-size: 14px; display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; }
.cadsec-h .muted { font-weight: 400; }
.cad-empty { padding: 10px 2px 2px; }
.cadi.pdf { color: #b42318; background: #fdecea; }
.pdfd { border: 1px solid var(--line); border-radius: 10px; background: var(--panel); }
.pdfidx { border-top: 1px solid var(--line2); max-height: 420px; overflow-y: auto; }
.pdfidx table.sheet th { position: sticky; top: 0; text-align: center; }
.pdfidx td.center { padding: 3px 4px; }
td.dwgtd { white-space: nowrap; }
td.dwgtd input { display: inline-block; width: calc(100% - 30px); min-width: 70px; vertical-align: middle; }
.dwgbtn { border: 1px solid var(--line); background: var(--panel); border-radius: 6px; width: 26px; height: 26px; padding: 0; margin-left: 3px; cursor: pointer; vertical-align: middle; }
.dwgbtn:hover { border-color: var(--brand); background: var(--brand2); }

/* 도면 보관함 — 두 칸 + 작은 카드 */
.cadcols { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 12px; }
@media (max-width: 900px) { .cadcols { grid-template-columns: 1fr; } }
.cadcols .cadsec { margin: 0; padding: 12px; background: var(--head); border-radius: 12px; border: 0 !important; }
.cadsec-h { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.ctiles { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 10px; }
.ctile { background: var(--panel); border: 1px solid var(--line); border-radius: 10px; padding: 10px 10px 8px; display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.ctile:hover { border-color: #b9c6da; }
.ctile.on { border-color: var(--brand); box-shadow: 0 0 0 2px var(--brand2); }
.ctile.new { border-color: var(--brand); background: var(--brand2); }
.ct-top { display: flex; align-items: flex-start; gap: 10px; min-width: 0; }
.ct-top .xbtn { margin: -4px -6px 0 auto; padding: 2px 6px; }
.ct-ic { flex: none; width: 38px; height: 38px; border-radius: 9px; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 800; color: var(--brand); background: var(--brand2); }
.ct-ic.pdf { color: #b42318; background: #fdecea; }
.ct-ic.fold { font-size: 20px; background: #fff4d6; }
.ct-ic.sm { width: 24px; height: 24px; font-size: 9px; border-radius: 6px; }
.ct-ic.fold.sm { font-size: 13px; }
.ct-n { display: flex; flex-direction: column; min-width: 0; flex: 1; }
.ct-n b { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-height: 1.35; word-break: break-all; font-size: 13.5px; }
.ct-act { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.ct-act .sp { flex: 1; }
.btn.on { border-color: var(--brand); color: var(--brand); background: var(--brand2); }
.ctile.small1 { padding: 8px 10px; }
.ctile.small1 .ct-top { align-items: center; }
.ctile.small1 .ct-top .xbtn { margin: 0; }
.caddet { margin-top: 14px; border: 1px solid var(--brand); border-radius: 12px; overflow: hidden; }
.caddet-h { display: flex; align-items: center; gap: 10px; padding: 10px 12px; background: var(--brand2); flex-wrap: wrap; }
.caddet .cset-tree { border-top: 0; max-height: 420px; }
.pidx { display: grid; grid-template-columns: repeat(auto-fill, minmax(430px, 1fr)); gap: 0 18px; padding: 8px 12px 12px; max-height: 440px; overflow-y: auto; }
.pi { display: grid; grid-template-columns: 30px 92px minmax(0, 1fr) auto; gap: 6px; align-items: center; padding: 3px 0; border-bottom: 1px dashed var(--line2); }
.pi-p { text-align: right; color: var(--ink2); font-size: 12px; }
.pi input { border: 1px solid transparent; background: transparent; border-radius: 5px; padding: 4px 6px; min-width: 0; width: 100%; }
.pi input:hover { border-color: var(--line); }
.pi input:focus { outline: 2px solid var(--brand); outline-offset: -1px; background: var(--input); }
.pi input[data-f="no"] { font-weight: 600; font-variant-numeric: tabular-nums; }
@media (max-width: 600px) { .pidx { grid-template-columns: 1fr; } }
table.chk input.ai { color: #6d28d9; background: #f5f0ff; border-color: #ddd0fb; }

/* 물량검증: 공종 접기·펼치기 / 도면 칸 */
table.chk tr.sec.click { cursor: pointer; user-select: none; }
table.chk tr.sec.click:hover td { background: #e3ebf7; }
table.chk tr.sec .sec-ar { display: inline-block; width: 18px; color: var(--brand); font-size: 11px; }
table.chk tr.sec .sec-st { margin-left: 14px; font-weight: 400; font-size: 12px; color: var(--ink2); }
table.chk tr.sec .sec-st b.up { color: var(--ok); } table.chk tr.sec .sec-st b.down { color: var(--bad); }
td.dwgtd { min-width: 96px; }
td.dwgtd .dwgs { display: inline-flex; align-items: center; gap: 3px; }
td.dwgtd input { width: 100%; }
.dwgbtn.ai { background: #f5f0ff; border-color: #ddd0fb; }
.dwged { border: 0; background: none; color: var(--ink2); cursor: pointer; padding: 2px 4px; font-size: 13px; opacity: .55; }
.dwged:hover { opacity: 1; color: var(--brand); }
.dwged.add { opacity: 1; font-size: 12px; color: #9aa3b2; }
.dwged.add:hover { color: var(--brand); }
table.chk { table-layout: fixed; min-width: 1280px; }
table.chk td.nm1 { overflow: hidden; text-overflow: ellipsis; }
table.chk td { overflow: hidden; }

/* 도면 고르기 창 */
.dwgpick { position: fixed; z-index: 1000; background: var(--panel); border: 1px solid var(--line); border-radius: 12px; box-shadow: 0 12px 32px rgba(16,24,40,.18); display: flex; flex-direction: column; overflow: hidden; }
.dpk-h { display: flex; align-items: center; gap: 8px; padding: 10px 12px 6px; }
.dpk-h .sp, .dpk-f .sp { flex: 1; }
.dpk-q { margin: 0 12px 6px; padding: 7px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--input); }
.dpk-list { overflow-y: auto; flex: 1; padding: 0 6px; }
.dpk-i { display: grid; grid-template-columns: 20px 72px minmax(0, 1fr) auto; gap: 8px; align-items: center; padding: 6px 6px; border-radius: 7px; cursor: pointer; font-size: 13px; }
.dpk-i:hover { background: var(--line2); }
.dpk-i.on { background: var(--brand2); }
.dpk-i b { font-variant-numeric: tabular-nums; color: var(--brand); }
.dpk-t { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.dpk-f { display: flex; gap: 6px; padding: 8px 12px; border-top: 1px solid var(--line2); }
table.chk td.unit, table.chk th:nth-child(3) { text-align: center; }
table.chk td.dwgtd, table.chk td.evtd { text-align: center; }
table.chk td.dwgtd .dwgs { justify-content: center; }
table.chk td.num.ctr { text-align: center; }
table.chk tr.sec .sec-add { margin-left: 10px; border: 1px dashed #b9c6da; background: none; color: var(--ink2); font-size: 11px; border-radius: 6px; padding: 1px 7px; cursor: pointer; opacity: 0; }
table.chk tr.sec:hover .sec-add, table.chk tr.sec.open .sec-add { opacity: 1; }
table.chk tr.sec .sec-add:hover { color: var(--brand); border-color: var(--brand); }
table.chk tr.sec .sec-name { font-weight: 700; font-size: 14px; padding: 3px 8px; border: 1px solid var(--line); border-radius: 6px; background: var(--input); width: 220px; }
table.chk tr.sec .sec-del { margin-left: 6px; border: 0; background: none; color: var(--ink2); font-size: 11px; cursor: pointer; }
table.chk tr.sec .sec-del:hover { color: var(--bad); }
/* 증빙 칸: 작은 알약 두 개 (설명 / 캡처 수) */
.evbtn.has { background: none; padding: 2px; gap: 4px; white-space: nowrap; }
.evbtn.has:hover { background: none; border-color: transparent; }
.evbtn .evm, .evbtn .evc { display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px; border-radius: 99px; font-size: 11.5px; font-weight: 600; line-height: 1.2; white-space: nowrap; }
.evbtn .evm { background: #e8eef7; color: #1e4f8f; }
.evbtn .evc { background: #eaf6ee; color: #15803d; }
.evbtn.has:hover .evm, .evbtn.has:hover .evc { filter: brightness(.95); box-shadow: 0 0 0 1px currentColor inset; }
.evbtn svg { flex: none; }
table.chk td.evtd { white-space: nowrap; }
.evbtn .evm, .evbtn .evc { padding: 3px 7px; }
table.chk td.evtd { overflow: visible; padding-left: 4px; padding-right: 4px; }

/* 증빙 그림: 항상 보이는 아래 단추줄 */
.evp-shots figure { height: auto; flex-direction: column; align-items: stretch; cursor: default; background: var(--panel); border: 1px solid var(--line); }
.evp-shots .evimg { height: 170px; background: #f1f4f8; display: flex; align-items: center; justify-content: center; cursor: zoom-in; position: relative; overflow: hidden; }
.evp-shots .evimg img { width: 100%; height: 100%; object-fit: cover; }
.evp-shots figcaption { display: flex; align-items: center; gap: 3px; padding: 6px 6px; border-top: 1px solid var(--line2); font-size: 12px; flex-wrap: wrap; }
.evp-shots figcaption b { color: var(--brand); font-size: 12px; margin-right: 2px; }
.evp-shots figcaption .sp { flex: 1; }
.evt { border: 1px solid var(--line); background: var(--panel); border-radius: 6px; padding: 2px 7px; font-size: 11.5px; cursor: pointer; color: var(--ink); white-space: nowrap; }
.evt:hover:not(:disabled) { border-color: var(--brand); color: var(--brand); }
.evt:disabled { opacity: .35; cursor: default; }
.evt.del:hover { border-color: var(--bad); color: var(--bad); }
.evp-shots figure.rep { border-color: var(--brand); box-shadow: 0 0 0 3px var(--brand2); }
.evrep-hint { position: absolute; inset: 0; background: rgba(30, 79, 143, .78); color: #fff; display: flex; align-items: center; justify-content: center; text-align: center; font-size: 13px; line-height: 1.5; }
/* 그림 고치기 창 */
.drw-back { position: fixed; inset: 0; z-index: 200; background: rgba(15, 22, 34, .7); display: flex; align-items: center; justify-content: center; }
.drw { background: var(--panel); border-radius: 12px; width: min(1200px, 96vw); height: min(860px, 94vh); display: flex; flex-direction: column; overflow: hidden; }
.drw-tb { display: flex; align-items: center; gap: 6px; padding: 10px 12px; border-bottom: 1px solid var(--line); flex-wrap: wrap; }
.drw-tb .sp { flex: 1; }
.drw-tb button { border: 1px solid var(--line); background: var(--panel); border-radius: 7px; padding: 5px 10px; cursor: pointer; font-size: 13px; }
.drw-tb button.on { border-color: var(--brand); background: var(--brand2); color: var(--brand); font-weight: 700; }
.drw-tb button.pri { background: var(--brand); border-color: var(--brand); color: #fff; font-weight: 700; padding: 5px 16px; }
.drw-tb .sw { width: 24px; height: 24px; padding: 0; border-radius: 50%; background: var(--c); border: 2px solid #cfd6e1; }
.drw-tb .sw.on { outline: 2px solid var(--brand); outline-offset: 2px; background: var(--c); }
.drw-sep { width: 1px; height: 22px; background: var(--line); margin: 0 4px; }
.drw-cv { flex: 1; overflow: auto; background: #2a3140; display: flex; align-items: center; justify-content: center; padding: 12px; }
.drw-cv canvas { max-width: 100%; max-height: 100%; cursor: crosshair; touch-action: none; background: #fff; }
.evp-shots figcaption .acts { display: flex; gap: 4px; width: 100%; margin-top: 4px; }
.evp-shots figcaption .acts .evt { flex: 1; padding: 4px 0; }
.drw-cv canvas { max-width: none; max-height: none; }

/* 증빙 기록 창: 위치 / 상세설명 / 적산내용 */
.evf { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 10px; align-items: start; margin-bottom: 10px; }
.evf-l { font-size: 13px; font-weight: 700; color: var(--brand); padding-top: 9px; }
.evf input, .evf textarea { width: 100%; border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; background: var(--input); font: inherit; line-height: 1.55; resize: vertical; }
.evf input:focus, .evf textarea:focus { outline: 2px solid var(--brand); outline-offset: -1px; }
.evp .evf .evp-memo { min-height: 96px; margin: 0; }
.evf-calc { display: flex; flex-direction: column; gap: 6px; }
.evf-calcta { font-variant-numeric: tabular-nums; }
.evf-sum { display: flex; align-items: center; gap: 8px; justify-content: flex-end; }
.evf-sumv { font-size: 16px; color: var(--ok); font-variant-numeric: tabular-nums; }
/* 적산 화면 캡처(확인용, 1/3 크기) */
.evf-cshots { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; border-radius: 8px; padding: 2px; outline: none; }
.evf-cshots:focus, .evf-cshots:focus-within { box-shadow: 0 0 0 2px var(--brand); }
.evf-cshots figure { position: relative; margin: 0; height: 130px; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; background: #f1f4f8; cursor: zoom-in; display: flex; align-items: center; justify-content: center; }
.evf-cshots figure img { width: 100%; height: 100%; object-fit: contain; background: #222831; }
.evf-cshots .evx { position: absolute; top: 4px; right: 4px; width: 22px; height: 22px; border-radius: 50%; border: 0; background: rgba(23, 38, 59, .7); color: #fff; cursor: pointer; font-size: 14px; line-height: 22px; padding: 0; }
.evf-cshots .cs-hint { height: 130px; border: 1.5px dashed var(--line); border-radius: 8px; display: flex; align-items: center; justify-content: center; text-align: center; font-size: 12px; color: var(--ink2); line-height: 1.6; cursor: text; }
.evf-cshots:focus .cs-hint { border-color: var(--brand); color: var(--brand); background: var(--brand2); }
/* 적산내용: 왼쪽 2/3 글·합계, 오른쪽 1/3 적산 화면 */
.evf-calc { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 10px; align-items: start; }
.evf-calc .calc-l { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.evf-calc .evf-calcta { min-height: 130px; }
.evf-cshots { grid-template-columns: 1fr; max-height: 260px; overflow-y: auto; }
.evf-cshots figure, .evf-cshots .cs-hint { height: 130px; }
.evf-cshots figure + .cs-hint { height: 54px; font-size: 11.5px; }
.evf-cshots figure + .cs-hint small { display: none; }
@media (max-width: 640px) { .evf-calc { grid-template-columns: 1fr; } }
/* 적산 화면: 작은 썸네일 2열 + 단추 */
.evf-cshots { grid-template-columns: 1fr 1fr; gap: 6px; max-height: 240px; }
.evf-cshots figure { height: auto; flex-direction: column; align-items: stretch; cursor: default; background: var(--panel); }
.evf-cshots .cimg { height: 74px; background: #222831; display: flex; align-items: center; justify-content: center; cursor: zoom-in; position: relative; overflow: hidden; }
.evf-cshots .cimg img { width: 100%; height: 100%; object-fit: cover; background: none; }
.evf-cshots figcaption { display: flex; gap: 3px; padding: 3px; border-top: 1px solid var(--line2); }
.evf-cshots figcaption .evt { flex: 1; padding: 1px 0; font-size: 12px; }
.evf-cshots figure.rep { border-color: var(--brand); box-shadow: 0 0 0 2px var(--brand2); }
.evf-cshots .evrep-hint { font-size: 11px; }
.evf-cshots .cs-hint, .evf-cshots figure + .cs-hint { height: 100px; }
.evf-cshots figure ~ .cs-hint { height: 100px; font-size: 11px; }
/* 그림 크게 보기 팝업 */
.lbx { position: fixed; inset: 0; z-index: 180; background: rgba(12, 18, 28, .86); display: grid; grid-template-columns: 56px minmax(0, 1fr) 56px; grid-template-rows: auto minmax(0, 1fr); }
.lbx-top { grid-column: 1 / -1; display: flex; align-items: center; gap: 6px; padding: 10px 14px; color: #fff; }
.lbx-top .sp { flex: 1; }
.lbx-top .evt { background: rgba(255,255,255,.1); color: #fff; border-color: rgba(255,255,255,.25); padding: 5px 12px; font-size: 13px; }
.lbx-top .evt:hover { background: rgba(255,255,255,.2); color: #fff; border-color: #fff; }
.lbx-x { border: 0; background: none; color: #fff; font-size: 28px; line-height: 1; cursor: pointer; padding: 0 6px; margin-left: 8px; }
.lbx-img { display: flex; align-items: center; justify-content: center; padding: 6px 0 24px; min-height: 0; }
.lbx-img img { max-width: 100%; max-height: 100%; object-fit: contain; border-radius: 6px; box-shadow: 0 10px 40px rgba(0,0,0,.5); background: #fff; }
.lbx-nav { border: 0; background: none; color: #fff; font-size: 44px; cursor: pointer; opacity: .8; }
.lbx-nav:hover:not(:disabled) { opacity: 1; }
.lbx-nav:disabled { opacity: .15; cursor: default; }
/* 상세도면 썸네일도 작게(적산 화면과 같은 크기) */
.evp-shots { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; min-height: 0; }
.evp-shots .evimg { height: 84px; background: #222831; }
.evp-shots figcaption { padding: 4px; gap: 2px; }
.evp-shots figcaption b { font-size: 11px; }
.evp-shots figcaption .evt { padding: 1px 6px; font-size: 11px; }
.evp-shots figcaption .acts { margin-top: 3px; gap: 3px; }
.evp-shots figcaption .acts .evt { padding: 1px 0; font-size: 12px; }
.evp-shots .evrep-hint { font-size: 11px; }
.evp-empty { grid-column: 1 / -1; }
/* 기록 창: 칸 높이 70% + 항목단가 줄 */
.evp .evf .evp-memo { min-height: 67px; }
.evf-calc .evf-calcta { min-height: 91px; }
.evf-cshots .cimg { height: 56px; }
.evf-cshots .cs-hint, .evf-cshots figure ~ .cs-hint, .evf-cshots figure + .cs-hint { height: 84px; }
.evp-money { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 7px 10px; border: 1px solid var(--line); border-radius: 8px; background: var(--head); font-size: 13px; min-height: 38px; }
.evp-money .pin input { width: 120px; border: 1px solid var(--line); border-radius: 6px; padding: 4px 8px; background: var(--input); }
.evp-money .sep { width: 1px; height: 16px; background: var(--line); margin: 0 4px; }
.evp-money .lab { color: var(--ink2); font-size: 12px; }
.evp-money b { font-variant-numeric: tabular-nums; }
.evp-money .up { color: var(--ok); } .evp-money .down { color: var(--bad); }
.evf-sum .evf-mode { border: 1px solid var(--line); border-radius: 6px; padding: 3px 6px; font-size: 12px; background: var(--input); }
.evf-res { display: flex; align-items: center; justify-content: flex-end; gap: 12px; flex-wrap: wrap; padding: 6px 8px; border-radius: 8px; background: var(--brand2); font-size: 13px; font-variant-numeric: tabular-nums; }
.evf-res b { font-size: 14px; color: var(--brand); }
.evf-res .op { color: var(--ink2); margin: 0 2px; }

/* 수량산출서 */
.qparts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
.qpart { display: inline-flex; align-items: center; gap: 8px; padding: 6px 6px 6px 12px; border: 1px solid var(--line); border-radius: 99px; background: var(--head); font-size: 13px; }
.qpart .xbtn { padding: 0 6px; font-size: 16px; }
table.qt { table-layout: fixed; min-width: 1100px; }
table.qt td { overflow: hidden; }
table.qt td.unit, table.qt th:nth-child(3) { text-align: center; }
.qchip { display: inline-block; padding: 2px 8px; border-radius: 99px; font-size: 11.5px; font-weight: 600; }
.qchip.diff { background: #fdecea; color: var(--bad); }
.qchip.none { background: var(--line2); color: var(--ink2); }
.qhint { font-size: 11px; color: var(--bad); font-weight: 600; line-height: 1.2; }
.qlp { width: min(1200px, 96vw); }
.ql-body { max-height: 70vh; overflow: auto; }
.ql-h { display: flex; align-items: baseline; gap: 8px; margin: 14px 0 4px; flex-wrap: wrap; }
.ql-h .sp { flex: 1; }
.ql-by { margin-bottom: 6px; }
table.ql { width: 100%; border-collapse: collapse; font-size: 12.5px; }
table.ql th { background: var(--head); position: sticky; top: 0; }
table.ql td { border-bottom: 1px solid var(--line2); padding: 4px 6px; vertical-align: top; }
table.ql tr.g1 td { border-top: 1px solid var(--line); }
table.ql td.expr { font-family: ui-monospace, Consolas, monospace; font-size: 12px; word-break: break-all; color: var(--ink); }
table.ql tr.sum td { background: var(--head); font-weight: 700; }
.evp-h .evp-qto { margin-left: auto; margin-right: 8px; }
#qdz { display: block; }
table.qt tr.sec td { background: var(--brand2); font-weight: 700; color: var(--brand); }
table.qt .sc { margin-right: 8px; }
table.qt tr.sec.click { cursor: pointer; user-select: none; }
table.qt tr.sec.click:hover td { background: #e3ebf7; }
table.qt tr.sec .sec-ar { display: inline-block; width: 18px; font-size: 11px; }
table.qt tr.sec .sec-st { margin-left: 14px; font-weight: 400; font-size: 12px; color: var(--ink2); }
table.qt tr.sec .sec-st .down { color: var(--bad); }
table.ql td.calc-ok { color: var(--ink); }
table.ql td.calc-ng { color: var(--warn); font-weight: 700; }
table.ql td.unit { text-align: center; }
table.ql td.expr { padding: 2px 4px; }
.exw { display: flex; gap: 3px; align-items: center; }
.exin { flex: 1; min-width: 0; font-family: ui-monospace, Consolas, monospace; font-size: 12px; padding: 4px 6px; border: 1px solid var(--line); border-radius: 5px; background: var(--input); color: var(--ink); }
.exin:hover { border-color: #b9c6da; }
.exin:focus { outline: 2px solid var(--brand); outline-offset: -1px; }
table.ql tr.edited td { background: #fff8e1; }
table.ql tr.edited .exin { border-color: #e0a100; background: #fffdf3; }
.exrs { border: 1px solid var(--line); background: var(--panel); border-radius: 5px; cursor: pointer; padding: 2px 6px; font-size: 12px; }
.exrs:hover { border-color: var(--brand); color: var(--brand); }
.edtag { margin-left: 10px; font-size: 11.5px; font-weight: 600; color: #8a5a00; background: #fff4d6; border-radius: 99px; padding: 2px 8px; }
.qact { white-space: nowrap; }
table.qt td.qact { overflow: visible; }
.qbtn { border: 1px solid #c9d3e1; background: #fff; border-radius: 6px; padding: 3px 8px; margin-right: 4px; cursor: pointer; font-size: 12.5px; font-weight: 600; color: #33415c; line-height: 1.3; }
.qbtn:hover { border-color: var(--brand); color: var(--brand); background: var(--brand2); }
.qbtn.qlink { color: var(--brand); }
.qbtn.qlink.none { border-style: dashed; }
.qman { display: inline-block; font-size: 11px; font-weight: 700; color: #b45309; background: #fef3c7; border: 1px solid #fcd34d; border-radius: 10px; padding: 1px 6px; vertical-align: middle; }
.qpick { width: min(760px, 94vw); }
.qp-q { width: 100%; padding: 8px 10px; border: 1px solid var(--line); border-radius: 8px; margin: 4px 0 8px; background: var(--input); }
.qp-list { max-height: 46vh; overflow-y: auto; border: 1px solid var(--line2); border-radius: 8px; }
.qp-i { display: grid; grid-template-columns: 22px minmax(0, 1fr) 54px 96px; gap: 8px; align-items: center; padding: 6px 10px; border-bottom: 1px solid var(--line2); cursor: pointer; font-size: 13px; }
.qp-i:hover { background: var(--line2); } .qp-i.on { background: var(--brand2); }
.qp-n { display: flex; flex-direction: column; min-width: 0; } .qp-n b { font-weight: 600; }
.qp-i .unit { text-align: center; } .qp-i .num { text-align: right; font-variant-numeric: tabular-nums; }
.qp-sum { margin: 10px 2px; font-size: 13px; }
.qp-req { display: block; font-size: 13px; padding: 8px 10px; background: #fff8e1; border-radius: 8px; margin-bottom: 4px; }
table.qt .qchip, table.qt .okchip { white-space: nowrap; }
.qend { margin-left: 4px; font-size: 11px; color: #64748b; background: #f1f5f9; border: 1px solid #e2e8f0; border-radius: 8px; padding: 0 5px; white-space: nowrap; }
select.qcls { font-size: 12px; font-weight: 700; border-radius: 10px; padding: 1px 4px; border: 1px solid; cursor: pointer; max-width: 112px; }
select.qcls.chk { color: #b45309; background: #fef3c7; border-color: #fcd34d; }
select.qcls.der { color: #1d4ed8; background: #eff6ff; border-color: #bfdbfe; }
select.qcls.der.dok { color: #15803d; background: #f0fdf4; border-color: #bbf7d0; }
select.qcls.der.ddiff { color: var(--bad); background: #fef2f2; border-color: #fecaca; }
select.qcls.ex { color: #64748b; background: #f1f5f9; border-color: #e2e8f0; font-weight: 500; }
table.qt tr.qex td { color: #94a3b8; }
table.qt tr.sec .sec-st .warn { color: #b45309; }
.qcand { margin-top: 3px; font-size: 12px; color: #92400e; white-space: normal; }
.qcand .qbtn { padding: 1px 6px; font-size: 11.5px; margin-left: 4px; }
table.qt td.nm1 { white-space: normal; }
.qbtn.done { color: #15803d; border-color: #bbf7d0; background: #f0fdf4; }
.qbtn.qder { color: #1d4ed8; }
.qhint.nohint { color: #b45309; }
.qderp .qdt { width: 100%; border-collapse: collapse; margin-bottom: 8px; }
.qderp .qdt td { padding: 4px 6px; border-bottom: 1px solid var(--line); font-size: 13px; }
.qderp .qd-f { width: 100px; font-family: ui-monospace, monospace; padding: 3px 6px; border: 1px solid #c9d3e1; border-radius: 5px; }
.qderp .qp-i { cursor: pointer; }
tr.flash td { animation: qflash 2s ease-out; }
@keyframes qflash { 0%, 40% { background: #fef08a; } 100% { background: transparent; } }
.qderp .qp-i { grid-template-columns: minmax(0, 1fr) 54px 96px; }
.qbtn.qokb { color: #15803d; border-color: #bbf7d0; }
.qbtn.qokb:hover { background: #f0fdf4; border-color: #15803d; color: #15803d; }
table.qt .okchip { color: #15803d; font-weight: 700; }
.qd-auto { font-size: 12px; color: #1d4ed8; background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 6px; padding: 5px 8px; margin-bottom: 8px; }
/* 일위대가 */
.hono { display: inline-block; min-width: 26px; text-align: center; font-size: 12px; font-weight: 700; color: #1d4ed8; background: #eff6ff; border: 1px solid #bfdbfe; border-radius: 6px; padding: 1px 6px; }
.hono.big { font-size: 13px; margin-right: 8px; }
table.ut td.ctr { text-align: center; }
.ulink { background: none; border: 0; padding: 0; color: inherit; font: inherit; text-align: left; cursor: pointer; }
.ulink:hover { color: var(--brand); text-decoration: underline; }
.unitref { background: #eff6ff; border: 1px solid #bfdbfe; color: #1d4ed8; border-radius: 6px; padding: 1px 7px; font-size: 12px; cursor: pointer; white-space: nowrap; }
.unitref:hover { background: #dbeafe; }
.evp.unp { width: min(1180px, 96vw); max-height: 88vh; display: flex; flex-direction: column; }
.un-sum { display: flex; gap: 18px; flex-wrap: wrap; padding: 8px 12px; background: var(--brand2); border-radius: 8px; margin: 4px 0 10px; font-size: 13px; }
.un-sum .t { margin-left: auto; color: var(--brand); }
.un-body { overflow: auto; flex: 1; }
table.ql.un td, table.ql.un th { white-space: nowrap; }
.un-use { margin-top: 14px; }
.un-use table { margin-top: 6px; }
.kref { display: inline-block; font-size: 11.5px; border-radius: 6px; padding: 1px 6px; border: 1px solid var(--line); background: #fff; color: var(--ink2); white-space: nowrap; }
button.kref { cursor: pointer; }
.kref.k-ho { color: #1d4ed8; border-color: #bfdbfe; background: #eff6ff; }
.kref.k-ja { color: #92400e; border-color: #fde68a; background: #fffbeb; }
.kref.k-no { color: #15803d; border-color: #bbf7d0; background: #f0fdf4; }
.psref { background: #f8fafc; border: 1px solid #cbd5e1; color: #334155; border-radius: 6px; padding: 1px 6px; margin: 1px 3px 1px 0; font-size: 12px; cursor: pointer; white-space: nowrap; }
.psref:hover { background: #fef3c7; border-color: #f59e0b; color: #92400e; }
.drop.slim { padding: 14px; }
.pscard h3 { margin-bottom: 8px; }
/* 단가산출 */
.subtabs { display: flex; gap: 6px; margin: 0 0 14px; }
.subtabs button { border: 1px solid var(--line); background: var(--panel); border-radius: 8px; padding: 7px 14px; font-size: 13.5px; font-weight: 600; color: var(--ink2); cursor: pointer; }
.subtabs button.on { background: var(--brand); border-color: var(--brand); color: #fff; }
.hono.no { color: #15803d; background: #f0fdf4; border-color: #bbf7d0; } .hono.ja { color: #92400e; background: #fffbeb; border-color: #fde68a; } .hono.dan { color: #6d28d9; background: #f5f3ff; border-color: #ddd6fe; }
.kref.k-dan { color: #6d28d9; border-color: #ddd6fe; background: #f5f3ff; }
.unitref.pr { color: #92400e; background: #fffbeb; border-color: #fde68a; }
.wtag { border-radius: 6px; padding: 1px 7px; font-size: 12px; font-weight: 700; border: 1px solid; cursor: pointer; white-space: nowrap; background: #fff; }
.wtag.ok { color: #15803d; border-color: #bbf7d0; background: #f0fdf4; } .wtag.est { color: #b45309; border-color: #fcd34d; background: #fffbeb; } .wtag.diff { color: var(--bad); border-color: #fecaca; background: #fef2f2; } .wtag.none { color: #64748b; border-color: #e2e8f0; }
.wchk { padding: 8px 12px; border-radius: 8px; margin-bottom: 10px; font-size: 13px; border: 1px solid var(--line); }
.wchk.ok { background: #f0fdf4; border-color: #bbf7d0; } .wchk.est { background: #fffbeb; border-color: #fcd34d; } .wchk.diff { background: #fef2f2; border-color: #fecaca; } .wchk.none { background: #f8fafc; }
pre.pcalc { background: #f8fafc; border: 1px solid var(--line); border-radius: 8px; padding: 10px; font-size: 12px; max-height: 360px; overflow: auto; }
.pc-v { float: right; color: var(--brand); font-weight: 700; }
table.pcl td.mono { font-family: ui-monospace, Consolas, monospace; font-size: 12px; white-space: pre; }
table.pt td { vertical-align: middle; }
td.uses { white-space: normal !important; line-height: 1.9; } td.uses .kref { margin: 1px 3px 1px 0; }
table.qt.pt { min-width: 1320px; }
table.qt.pt { table-layout: auto; min-width: 0; width: 100%; }
table.qt.pt td, table.qt.pt th { overflow: visible; }
table.qt.pt td.num, table.qt.pt th.num { white-space: nowrap; }
table.qt.pt td.nm1 { min-width: 150px; }
table.qt.pt td:nth-child(3) { min-width: 120px; max-width: 200px; }
table.qt.pt td.uses { min-width: 150px; }
table.chk td.small { white-space: normal; word-break: break-all; }
table.ut td.num { white-space: nowrap; }
.kref.k-boq { color: #0f766e; border-color: #99f6e4; background: #f0fdfa; cursor: pointer; }
.kref.k-boq:hover { background: #ccfbf1; }
.hono.bq { color: #0f766e; background: #f0fdfa; border-color: #99f6e4; }
table.qt td.ctr, table.qt th.ctr { text-align: center; }
table.qt.pt th { text-align: center; }
table.qt.pt th.num { text-align: right; }
.kpi[data-kf] { cursor: pointer; transition: border-color .15s, box-shadow .15s; }
.kpi[data-kf]:hover { border-color: var(--brand); box-shadow: 0 2px 8px rgba(30,64,175,.08); }
.kpi.on { border-color: var(--brand); box-shadow: inset 0 -3px 0 var(--brand); }
/* 검토요청 */
table.rev td { vertical-align: top; } table.rev input, table.rev select, table.rev textarea { width: 100%; }
table.rev textarea { resize: none; overflow: hidden; min-height: 34px; line-height: 1.45; font: inherit; padding: 6px 8px; border: 1px solid var(--line); border-radius: 6px; }
select.rtype { font-weight: 700; } select.rtype.t0 { color: #b91c1c; } select.rtype.t1 { color: #6d28d9; } select.rtype.t2 { color: #1d4ed8; } select.rtype.t3 { color: #0f766e; } select.rtype.t4 { color: #b45309; }
select.rst.s0 { color: var(--bad); font-weight: 700; } select.rst.s1 { color: #1d4ed8; } select.rst.s2, select.rst.s3 { color: var(--ok); }
table.rev tr.st-3 td { opacity: .6; }
.rkpis .kpi { cursor: pointer; }
td.rloc .dwgs { margin-top: 3px; display: flex; flex-wrap: wrap; gap: 3px; align-items: center; }
.rcont { cursor: pointer; border: 1px solid var(--line); border-radius: 6px; padding: 6px 8px; min-height: 34px; white-space: pre-wrap; line-height: 1.45; background: #fff; }
.rcont:hover { border-color: var(--brand); background: var(--brand2); }
.rbadges { display: flex; gap: 4px; margin-top: 4px; } .rb { font-size: 11px; border-radius: 10px; padding: 0 7px; background: #f1f5f9; color: #475569; border: 1px solid #e2e8f0; white-space: nowrap; } .rb.rp { background: #eff6ff; color: #1d4ed8; border-color: #bfdbfe; font-weight: 700; }
.rtag { border-radius: 99px; padding: 2px 12px; font-size: 13px; font-weight: 700; border: 1px solid; margin-right: 8px; }
.rtag.t0 { background: #fde8e8; color: #b91c1c; border-color: #f5b5b5; } .rtag.t1 { background: #f1ecfe; color: #6d28d9; border-color: #d6c8fb; } .rtag.t2 { background: #e8f0fe; color: #1d4ed8; border-color: #b9cdf8; } .rtag.t3 { background: #e6f7f4; color: #0f766e; border-color: #a7e3d8; } .rtag.t4 { background: #fff4d6; color: #8a5a00; border-color: #f1d58a; }
.rpt-cks { display: flex; flex-wrap: wrap; gap: 0 22px; } .rpt-ck { display: flex; align-items: center; gap: 8px; font-weight: 600; cursor: pointer; padding: 6px 0; } .rpt-ck input { width: 18px; height: 18px; }
.issp .iss-dwg { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; padding: 4px 0; }
.evp-h .sp { flex: 1; } .issp .evp-h { align-items: center; }
.dchip { display: inline-flex; align-items: center; gap: 3px; white-space: nowrap; font-size: 12px; font-weight: 600; color: #334155; background: #f8fafc; border: 1px solid #cbd5e1; border-radius: 6px; padding: 2px 7px; cursor: pointer; line-height: 1.4; }
.dchip:hover { border-color: var(--brand); color: var(--brand); background: var(--brand2); } .dchip.off { cursor: default; color: #64748b; }
.issp .iss-dwg { gap: 6px; } .issp .iss-dwg .dwged { white-space: nowrap; }
select.rst option, select.rtype option { color: #1d2433; font-weight: 400; }
table.rev td.ctr, table.rev th:first-child { text-align: center; }
td.rno .rn { font-weight: 700; color: var(--ink2); } td.rno .rmv { display: flex; flex-direction: column; align-items: center; gap: 2px; margin-top: 4px; }
td.rno .rmv button { width: 24px; height: 18px; font-size: 9px; line-height: 1; border: 1px solid var(--line); background: #fff; border-radius: 4px; color: var(--ink2); cursor: pointer; padding: 0; }
td.rno .rmv button:hover:not(:disabled) { border-color: var(--brand); color: var(--brand); } td.rno .rmv button:disabled { opacity: .3; cursor: default; }
.rtw thead th { position: sticky; top: 0; z-index: 2; }
.issp .evp-memo { min-height: 120px; }
.thprint { margin-left: 6px; font-size: 11.5px; font-weight: 600; padding: 2px 8px; border: 1px solid var(--brand); color: var(--brand); background: #fff; border-radius: 6px; cursor: pointer; white-space: nowrap; }
.thprint:hover { background: var(--brand); color: #fff; }
.kpi[data-ckf] { cursor: pointer; transition: border-color .15s, box-shadow .15s; } .kpi[data-ckf]:hover { border-color: var(--brand); box-shadow: 0 2px 8px rgba(30,64,175,.08); }
.evord { width: min(760px, 94vw); display: flex; flex-direction: column; max-height: 86vh; }
.eo-list { overflow: auto; flex: 1; border: 1px solid var(--line); border-radius: 8px; }
.eo-i { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-bottom: 1px solid var(--line2); }
.eo-i:last-child { border-bottom: 0; } .eo-i.flash { animation: qflash 1.2s ease-out; }
.eo-i .no { flex: none; width: 26px; height: 26px; border-radius: 50%; background: #1e4f8f; color: #fff; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 12px; }
.eo-t { flex: 1; min-width: 0; } .eo-i .tag { background: #fff4d6; color: #8a5a00; border: 1px solid #f1d58a; border-radius: 99px; padding: 1px 10px; font-size: 12px; font-weight: 700; white-space: nowrap; }
.eo-mv { display: flex; gap: 3px; } .eo-mv button { width: 28px; height: 24px; border: 1px solid var(--line); background: #fff; border-radius: 5px; cursor: pointer; font-size: 10px; color: var(--ink2); }
.eo-mv button:hover:not(:disabled) { border-color: var(--brand); color: var(--brand); } .eo-mv button:disabled { opacity: .3; cursor: default; }
.logo-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: stretch; }
.logo-prev { border: 1px solid var(--line); border-radius: 10px; padding: 14px 16px; display: flex; flex-direction: column; gap: 10px; justify-content: center; align-items: flex-start; }
.lp-h { width: 100%; display: flex; align-items: center; border-bottom: 3px solid #1e4f8f; padding-bottom: 6px; box-shadow: 0 4px 0 -3px #a9bcd8; }
.lp-title { font-size: 20px; font-weight: 800; color: #1e4f8f; letter-spacing: 1px; }
.lp-brand { margin-left: auto; display: flex; align-items: center; gap: 8px; font-weight: 800; font-size: 14px; }
.lp-brand img { height: 34px; max-width: 110px; object-fit: contain; } .lp-brand > span:last-child { padding-left: 8px; border-left: 1.5px solid #cfd6e1; }
.lp-mono { font-size: 11px; color: #94a3b8; border: 1px dashed #cbd5e1; border-radius: 6px; padding: 6px 8px; font-weight: 400; }

.eo-i .tag.t0 { background: #fde8e8; color: #b91c1c; border-color: #f5b5b5; } .eo-i .tag.t1 { background: #f1ecfe; color: #6d28d9; border-color: #d6c8fb; } .eo-i .tag.t2 { background: #e8f0fe; color: #1d4ed8; border-color: #b9cdf8; } .eo-i .tag.t3 { background: #e6f7f4; color: #0f766e; border-color: #a7e3d8; }

/* 검토요청 관련 공종 (여러 개) */
.wsel { width: 100%; min-height: 34px; display: flex; flex-wrap: wrap; align-items: center; gap: 4px; padding: 4px 24px 4px 6px; border: 1px solid var(--line); border-radius: 6px; background: #fff; cursor: pointer; position: relative; text-align: left; font: inherit; }
.wsel.empty { color: #5b6475; padding-left: 10px; } .wsel:hover { border-color: #93a8c8; }
.wsel .wcar { position: absolute; right: 8px; top: 50%; transform: translateY(-50%); color: #5b6475; font-size: 11px; }
.wchip { background: #eef2f7; color: #1e4f8f; border: 1px solid #cfdaea; border-radius: 4px; padding: 1px 7px; font-size: 12.5px; font-weight: 600; white-space: nowrap; }
.wpick { position: fixed; width: 220px; background: #fff; border: 1px solid var(--line); border-radius: 8px; box-shadow: 0 10px 30px rgba(15,23,42,.18); display: flex; flex-direction: column; max-height: calc(100vh - 20px); }
.wpick .wp-h { padding: 9px 12px; border-bottom: 1px solid var(--line); font-weight: 700; font-size: 13px; }
.wpick .wp-l { overflow: auto; padding: 4px 0; max-height: 380px; }
.wpick .wp-l label { display: flex; align-items: center; gap: 8px; padding: 5px 12px; font-size: 13px; cursor: pointer; } .wpick .wp-l label:hover { background: #f3f6fa; }
.wpick .wp-f { display: flex; gap: 6px; padding: 8px 10px; border-top: 1px solid var(--line); }

/* 발주처 장부 */
table.cl td { padding: 2px 4px; } table.cl input { width: 100%; border: 1px solid transparent; background: transparent; padding: 6px; border-radius: 4px; font: inherit; }
table.cl input:hover { background: var(--line2); } table.cl input:focus { outline: 2px solid var(--brand); outline-offset: -1px; background: #fff; }
table.cl td.ctr, table.cl th.ctr { text-align: center; }
.cl-btns { display: flex; gap: 4px; flex: none; }
.clb { border: 1px solid var(--line); background: #fff; border-radius: 6px; padding: 3px 9px; font-size: 12.5px; color: #1e4f8f; cursor: pointer; white-space: nowrap; }
.clb:hover { background: #eef2f7; } .clb.add { color: #15803d; border-color: #b7e0c4; }
.clopt { display: flex; flex-direction: column; gap: 1px; padding: 6px 12px; cursor: pointer; font-size: 13px; } .clopt:hover { background: #f3f6fa; }
