/* 나라장터 조달 스튜디오 — 형제 사이트(남색·금색)와 다른 청록·주홍 톤 */
:root{--brand:#0B5563;--brand-2:#127A8A;--brand-soft:#E3F1F2;--accent:#D9572B;--accent-soft:#FBE7DE;--ink:#14232A;--sub:#55666E;
--line:#D7E2E5;--bg:#F3F6F7;--card:#fff;--ok:#1E7B4F;--ok-soft:#E3F3EA;--warn:#9A6200;--warn-soft:#FFF3DC;--err:#B3261E;--err-soft:#FCE8E6;
--r:10px;--pad:clamp(12px,2.6vw,22px)}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:'Noto Sans KR','Malgun Gothic','Apple SD Gothic Neo',sans-serif;font-size:14px;line-height:1.55;word-break:keep-all;overflow-wrap:anywhere}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--brand-2)}
.boot{padding:40px;text-align:center;color:var(--sub)}
.hide{display:none!important}
/* 머리 */
.top{background:var(--brand);color:#fff;position:sticky;top:0;z-index:30;box-shadow:0 2px 10px rgba(5,40,48,.25)}
.top .in{display:flex;align-items:center;gap:10px;padding:8px var(--pad);flex-wrap:wrap}
.brand{display:flex;flex-direction:column;margin-right:auto;min-width:180px}
.brand b{font-size:16px;letter-spacing:-.02em}
.brand small{font-size:11px;color:#BFE0E4}
.top select,.top .tb{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.28);color:#fff;border-radius:7px;padding:5px 9px;font-size:13px}
.top select option{color:var(--ink)}
.top .tb{cursor:pointer}
.top .tb:hover{background:rgba(255,255,255,.22)}
.top .who{font-size:12px;color:#D5ECEF}
.tabs{display:flex;gap:2px;padding:0 var(--pad);overflow-x:auto;background:#09444F}
.tab{background:none;border:0;color:#BFE0E4;padding:9px 12px;cursor:pointer;white-space:nowrap;border-bottom:3px solid transparent;font-size:13.5px}
.tab.on{color:#fff;border-bottom-color:var(--accent);font-weight:700}
.band{padding:8px var(--pad);font-size:13px;border-bottom:1px solid var(--line)}
.band.warn{background:var(--warn-soft);color:#5C3B00}
.band.err{background:var(--err-soft);color:#6B1510}
.band.info{background:var(--brand-soft);color:#08404A}
/* 배치 */
.wrap{display:grid;grid-template-columns:290px 1fr;gap:14px;padding:14px var(--pad);align-items:start}
.side{position:sticky;top:96px;max-height:calc(100vh - 110px);overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px}
.main{min-width:0}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:14px;margin-bottom:12px}
.card h2{margin:0 0 8px;font-size:16px;color:var(--brand)}
.card h3{margin:12px 0 6px;font-size:14px;color:var(--brand)}
.muted{color:var(--sub);font-size:12.5px}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.grow{flex:1}
.kpis{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-bottom:12px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:9px 11px;cursor:default}
.kpi small{display:block;color:var(--sub);font-size:11.5px}
.kpi b{font-size:18px;font-variant-numeric:tabular-nums}
.kpi.click{cursor:pointer}
/* 단추·입력 */
.btn{border:1px solid var(--line);background:#fff;border-radius:7px;padding:6px 11px;cursor:pointer;font-size:13px}
.btn:hover{border-color:var(--brand-2)}
.btn.pri{background:var(--brand);border-color:var(--brand);color:#fff}
.btn.acc{background:var(--accent);border-color:var(--accent);color:#fff}
.btn.sm{padding:3px 8px;font-size:12px}
.btn.del{color:var(--err)}
.btn:disabled{opacity:.45;cursor:not-allowed}
input[type=text],input[type=password],input[type=number],input[type=date],select,textarea{border:1px solid var(--line);border-radius:7px;padding:6px 8px;background:#fff;min-width:0}
input:focus,select:focus,textarea:focus,.btn:focus-visible,.tab:focus-visible{outline:2px solid var(--brand-2);outline-offset:1px}
.fld{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--sub);margin-bottom:8px}
.fld input,.fld select,.fld textarea{font-size:13.5px;color:var(--ink)}
/* 필터 */
.fgroup{border-top:1px solid var(--line);padding:9px 0}
.fgroup:first-child{border-top:0;padding-top:0}
.fgroup>b{display:block;font-size:12.5px;color:var(--brand);margin-bottom:5px}
.chips{display:flex;flex-wrap:wrap;gap:5px}
.chip{border:1px solid var(--line);background:#fff;border-radius:999px;padding:2px 9px;font-size:12px;cursor:pointer}
.chip.on{background:var(--brand);border-color:var(--brand);color:#fff}
.chip.zero{opacity:.4}
.chip .n{color:var(--sub);margin-left:3px;font-size:11px}
.chip.on .n{color:#CFE7EA}
.facet{max-height:190px;overflow:auto;border:1px solid var(--line);border-radius:7px;padding:4px}
.fopt{display:flex;align-items:center;gap:6px;padding:2px 4px;font-size:12.5px;border-radius:5px}
.fopt:hover{background:var(--bg)}
.fopt label{flex:1;cursor:pointer;display:flex;gap:6px;align-items:center}
.fopt .n{color:var(--sub);font-size:11px}
.fopt.zero{opacity:.45}
.only{border:0;background:none;color:var(--brand-2);font-size:11px;cursor:pointer;padding:0 3px}
.tags{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}
.tag{background:var(--brand-soft);color:#08404A;border-radius:6px;padding:2px 7px;font-size:12px;display:inline-flex;gap:5px;align-items:center}
.tag button{border:0;background:none;cursor:pointer;color:inherit;padding:0}
.tag.err{background:var(--err-soft);color:var(--err)}
.tag.warn{background:var(--warn-soft);color:var(--warn)}
.tag.ok{background:var(--ok-soft);color:var(--ok)}
.tag.acc{background:var(--accent-soft);color:#8A3212}
/* 표 */
.tw{overflow:auto;border:1px solid var(--line);border-radius:var(--r);background:#fff}
table.t{border-collapse:collapse;width:100%;font-size:12.8px}
table.t th,table.t td{border-bottom:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}
table.t th{background:#F6FAFA;color:var(--brand);position:sticky;top:0;cursor:pointer;white-space:nowrap;z-index:1}
table.t td.n,table.t th.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
table.t td.nw{white-space:nowrap}
table.t tr.click{cursor:pointer}
table.t tr.click:hover td{background:#F0F7F8}
table.t tr.low td{background:#FFF8F4}
table.t tr.diff td{background:#FFF7E6}
.dense table.t td{padding:3px 6px}
.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}
.dot.err{background:var(--err)}.dot.warn{background:#E0A100}.dot.info{background:var(--brand-2)}
.pager{display:flex;gap:6px;align-items:center;justify-content:flex-end;margin-top:8px;flex-wrap:wrap}
.bar{height:9px;background:var(--brand-2);border-radius:4px}
.bar.acc{background:var(--accent)}
.gold{background:#FFE8D9!important;font-weight:700}
/* 비교 트레이·서랍·창 */
.tray{position:fixed;left:50%;transform:translateX(-50%);bottom:14px;background:var(--ink);color:#fff;border-radius:12px;padding:8px 12px;display:flex;gap:8px;align-items:center;z-index:40;box-shadow:0 6px 20px rgba(0,0,0,.25);max-width:calc(100vw - 24px);flex-wrap:wrap}
.tray .it{background:rgba(255,255,255,.12);border-radius:6px;padding:2px 7px;font-size:12px;display:flex;gap:5px}
.tray .it button{border:0;background:none;color:#fff;cursor:pointer}
.drawer{position:fixed;top:0;right:0;height:100vh;width:min(480px,100vw);background:#fff;z-index:50;box-shadow:-6px 0 22px rgba(0,0,0,.18);overflow:auto;padding:16px}
.modal{position:fixed;inset:0;background:rgba(10,30,36,.45);z-index:60;display:flex;align-items:flex-start;justify-content:center;padding:4vh 12px;overflow:auto}
.modal .box{background:#fff;border-radius:12px;max-width:1100px;width:100%;padding:16px}
.kv{display:grid;grid-template-columns:110px 1fr;gap:4px 10px;font-size:13px}
.kv dt{color:var(--sub)}
.kv dd{margin:0}
.md h4{margin:10px 0 4px;color:var(--brand)}
/* 로그인 */
.login{max-width:400px;margin:8vh auto;background:#fff;border:1px solid var(--line);border-radius:14px;padding:24px}
.login h1{font-size:19px;margin:0 0 4px;color:var(--brand)}
.login .terms{font-size:12px;color:var(--sub);background:var(--bg);border-radius:8px;padding:8px 10px;margin-top:12px}
#toast{position:fixed;left:50%;bottom:80px;transform:translateX(-50%);background:var(--ink);color:#fff;padding:8px 14px;border-radius:8px;font-size:13px;opacity:0;pointer-events:none;transition:opacity .2s;z-index:90;max-width:90vw}
#toast.on{opacity:1}
.mfilter{display:none}
.side>.fclose{position:sticky;top:-12px;z-index:3;box-shadow:0 2px 6px rgba(0,0,0,.12)}
.dotkey .dot{margin-left:6px}
.mq{display:none}
.cardfld{display:grid;gap:6px}.cardfld label.btn{position:relative;overflow:hidden}.cardin{position:absolute;inset:0;opacity:0;cursor:pointer}
.cardprev{font-size:12.5px}.cardprev img{max-width:100%;max-height:220px;border:1px solid var(--line);border-radius:8px;display:block}
.cardlist{display:grid;gap:10px}.cardreq{display:grid;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:12px;border:1px solid var(--line);border-radius:10px;padding:10px;align-items:start}
.cardreq.on{border-color:var(--brand-2);background:var(--brand-soft)}.cardreq img{width:100%;max-height:300px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:8px}
.cardmeta{display:grid;gap:3px;min-width:0}
@media (max-width:700px){.cardreq{grid-template-columns:1fr}}
.tnq{width:100%;font-size:16px;padding:10px 12px}
.tng{padding:12px}.tnhd{display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline}
.tnmk{font-size:11.5px;font-weight:700;color:#fff;background:var(--brand);border-radius:6px;padding:1px 7px}
.tnp{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px dashed var(--line);margin-top:6px}
.tndot{width:13px;height:13px;border-radius:50%;flex:none;border:1px solid rgba(0,0,0,.15);background:#C9CFDB}.tndot.mix{background:conic-gradient(#1E9BD7 0 33%,#D6246E 0 66%,#F4D21F 0)}
.tnk{font-size:12px;color:var(--sub);width:72px;flex:none}.tnv{flex:1;min-width:0}.tnpn{font-family:ui-monospace,Consolas,monospace;font-size:15px;letter-spacing:.2px}
.tnv .tag{margin-left:6px}.tnv .tag.tnr{background:var(--accent-soft);color:#8A3416}
@media (max-width:480px){.tnp{gap:7px}.tnk{width:52px;font-size:11.5px}}
.bizinfo summary{cursor:pointer;list-style:none}.bizinfo summary::-webkit-details-marker{display:none}.bizinfo u{text-underline-offset:2px}.bizinfo[open] u{display:none}
@media (max-width:1180px){.kpis{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (max-width:900px){
 .wrap{grid-template-columns:1fr}
 .side{position:fixed;top:0;left:0;height:100vh;max-height:none;width:min(320px,88vw);z-index:55;border-radius:0;transform:translateX(-102%);transition:transform .2s}
 .side.open{transform:none;box-shadow:6px 0 22px rgba(0,0,0,.2)}
 .mq{display:block;flex:1 1 140px;min-width:0}
 .toprow{flex-wrap:wrap}.toprow .dinfo{flex:1 1 100%;order:9;font-size:12px}   /* 11/3 폰: 기준일 글이 검색칸 옆 좁은 칸에서 세로로 늘어지던 것 — 아래 한 줄로 */
 .mfilter{display:inline-flex}
}
@media (max-width:560px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.brand small{display:none}}
@media print{.top,.tabs,.side,.tray,.btn,.pager{display:none!important}.wrap{display:block;padding:0}body{background:#fff}}

/* 10/16 문서·견적 담기 */
.cartbtn{position:fixed;right:16px;bottom:16px;z-index:41;background:var(--accent);color:#fff;border:0;border-radius:999px;padding:10px 16px;font-weight:700;box-shadow:0 6px 20px rgba(0,0,0,.25);cursor:pointer}
.docgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px 12px;margin:10px 0}
.docf{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted,#5b6b82)}
.docf.wide{grid-column:1/-1}
.docf.chk{flex-direction:row;align-items:center;gap:6px;font-size:13px;color:inherit}
.docf input[type=text],.docf input[type=date],.docf input[type=number]{width:100%}
.docframe{display:none;width:100%;height:62vh;border:1px solid #d6dde8;border-radius:8px;margin-top:10px;background:#fff}
.docframe.on{display:block}
.stampimg{display:none;width:64px;height:64px;object-fit:contain;border:1px dashed #c9d2e0;border-radius:6px;background:#fff}
.stampimg.on{display:block}
@media (max-width:600px){.cartbtn{right:10px;bottom:12px;padding:7px 12px;font-size:13px}}
.pimg{max-width:100%;max-height:260px;object-fit:contain}
.band.ad{display:flex;gap:14px;align-items:center;flex-wrap:wrap;background:#fff8e6;border-bottom:1px solid #f0dfb0;padding:6px 16px;font-size:13px}
.band.ad a{color:inherit;font-weight:600}
.adtag{font-size:11px;border:1px solid #d9b860;border-radius:4px;padding:0 5px;color:#8a6d2b}

/* 10/16 입찰 규격 분석 · MAS 2단계 */
.bidwrap{display:grid;grid-template-columns:minmax(300px,420px) 1fr;gap:12px;align-items:start}
@media (max-width:900px){.bidwrap{grid-template-columns:1fr}}
.bdrop{border:2px dashed #c9d2e0;border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:6px;align-items:flex-start;margin-bottom:8px}
.bdrop.over{border-color:var(--accent);background:#f4f8ff}
.rq{border-top:1px solid #eef1f6;padding:6px 0}
.rq.off{opacity:.5}
.rqsrc{font-size:11.5px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
td.mk{text-align:center;font-weight:700}
td.mk.p{color:#1f7a3f}
td.mk.f{color:#b4392b;background:#fdecec}
td.mk.n{color:#8a6d2b}
td.bad{color:#b4392b;font-weight:700}
td.okc{color:#1f7a3f;font-weight:700}
tr.part td{background:#fffaf3}
tr.me td{background:#f8f2e2;font-weight:600}
.kpi.bad b{color:#b4392b}
.ins{padding:6px 8px;border-left:3px solid #c9d2e0;margin:4px 0;background:#f7f9fc;font-size:13px}
.ins.err{border-color:#b4392b;background:#fdecec}
.ins.warn{border-color:#d9a400;background:#fff8e6}
.ins.ok{border-color:#1f7a3f;background:#eef8f1}

/* 10/18 토탈 바로가기 — 토탈 로그인 직원에게만, as 와 같은 둥근 테두리 단추 */
.tb.totalbtn{border:1px solid currentColor;border-radius:999px;padding:3px 12px;text-decoration:none;font-weight:600;white-space:nowrap}
/* 10/18 관리자 단추(링크)도 다른 윗줄 단추처럼 */
.top a.tb{text-decoration:none;white-space:nowrap}

/* 10/18 옵션 단가 칸 */
.optrow{margin:3px 0;flex-wrap:nowrap;gap:6px}
.optprice{width:110px}
.optlist{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}

/* 10/18 휴대폰 폭(사장님 「반응형 재검토」): 표 칸이 한 글자씩 꺾이지 않게 · 카드형 표 · 탭 가로 밀기 보이게 · 견적 단추가 안 가리게 */
.tabs{scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.45) transparent}
.tabs::-webkit-scrollbar{height:4px}.tabs::-webkit-scrollbar-thumb{background:rgba(255,255,255,.45);border-radius:4px}
@media (max-width:600px){
 table.t{width:max-content;min-width:100%}
 table.t td{max-width:240px}
 table.t.cards{width:100%}
 table.t.cards thead{display:none}
 table.t.cards,table.t.cards tbody{display:block}
 table.t.cards tr{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px;padding:10px 12px;border-bottom:1px solid var(--line)}
 table.t.cards td{display:block;border:0;padding:0;max-width:none;text-align:left!important;white-space:normal}
 table.t.cards td::before{content:attr(data-l);display:block;font-size:11px;color:var(--muted);font-weight:400}
 table.t.cards td.cardhead{grid-column:1/-1;font-weight:700}
 table.t.cards td.cardhead::before{display:none}
 .tabs{position:relative;padding-bottom:2px}
 body.hascart #body{padding-bottom:60px}
}

/* 10/19 기준일 달력 · 옵션 참고 단가 */
.calpop{position:absolute;z-index:60;background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.2);padding:10px;width:260px}
.findpop{width:min(420px,calc(100vw - 16px));max-height:70vh;overflow:auto;box-sizing:border-box}
.findpop .row{gap:6px;align-items:center}
.findpop input[type=search]{flex:1;min-width:0;font-size:15px;padding:6px 8px}
.findpop .fkws{margin:8px 0}
.findpop .fkw{display:inline-flex;align-items:center;gap:2px;padding:0 4px 0 9px}
.findpop .lnk{border:0;background:none;padding:3px 2px;font:inherit;color:inherit;cursor:pointer}
.findpop .lnk.x{color:var(--sub);font-size:14px;padding:0 4px}
.findpop .fhead{margin:6px 0}
.findpop .fout .chips{margin:4px 0}
.findpop .chip{font-size:13px;padding:4px 10px;color:var(--ink)}
.findpop .chip.on{color:#fff}
.findpop .fnote{font-size:11.5px;margin-top:6px}
.calhead{gap:6px;margin-bottom:6px;flex-wrap:nowrap}
.calgrid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;text-align:center}
.calw{font-size:11px;color:var(--muted)}
.cald{border:0;border-radius:6px;padding:6px 0;font-size:13px;background:none;color:#B8C2CC}
.cald.has{background:#E6F2F3;color:var(--brand);font-weight:700;cursor:pointer}
.cald.has:hover{background:#CFE6E8}
.cald.cur{background:var(--brand);color:#fff}
.optref{font-size:11.5px;color:var(--muted);margin:-2px 0 4px 26px}

/* 10/19 회원 등급 */
.signlinks{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.signlinks .btn{width:100%}
.consent{display:grid;gap:6px;margin:10px 0;font-size:13px}
.consent label{display:flex;gap:6px;align-items:flex-start}
.bizcard{background:#F4FAFA;border:1px solid var(--line)}
.bizcard ul{margin:6px 0 6px 18px;padding:0}
.appfoot{max-width:1200px;margin:24px auto 0;padding:14px 16px 28px;font-size:12px;color:var(--muted);border-top:1px solid var(--line);display:grid;gap:3px}
.login + .appfoot,.login .appfoot{border-top:0;text-align:center}
td.warn{color:var(--err);font-weight:700}
@media (max-width:600px){.signlinks{grid-template-columns:1fr}}

/* 10/19 사장님 통화: 상세 창 아래 붙박이 단추 · 바깥 어둡게(누르면 닫힘) · 더보기 · 탭 한눈에 · 앱 안 미리보기 */
.drawerbg{position:fixed;inset:0;background:rgba(10,30,36,.28);z-index:49}
.drawer{padding-bottom:0}
.dfoot{position:sticky;bottom:0;margin:12px -16px 0;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end;z-index:2}
.dfoot .btn{flex:1 1 auto}
details.more>summary{cursor:pointer;font-weight:700;color:var(--brand);list-style:revert}
details.more[open]>summary{margin-bottom:6px}
.tabs{flex-wrap:wrap;overflow-x:visible}
.tab{padding:8px 10px}
.docview{position:fixed;inset:3vh 3vw;z-index:70;background:#fff;border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.35);display:flex;flex-direction:column;overflow:hidden}
.docview .dvbar{display:flex;gap:8px;align-items:center;padding:8px 12px;border-bottom:1px solid var(--line)}
.docview iframe{flex:1;border:0;width:100%}
.docviewbg{position:fixed;inset:0;background:rgba(10,30,36,.45);z-index:69}
@media (max-width:600px){.docview{inset:0;border-radius:0}}
.dvhint{margin:0;padding:2px 12px;font-size:12px}
@media (min-width:900px){.dvhint{display:none}}

/* 10/20 가입 하나로·카카오·무료 미리 보기 */
.signone{display:grid;gap:8px;margin-top:12px}
.signone .btn{width:100%;text-align:center;text-decoration:none}
.btn.kakao{background:#FEE500;color:#191600;border-color:#FEE500;font-weight:700}
.kakaotop{margin:6px 0 4px}.btn.kakao.big{display:flex;justify-content:center;align-items:center;width:100%;min-height:52px;font-size:17px;border-radius:10px;box-sizing:border-box;text-decoration:none}
.orline{display:flex;align-items:center;gap:8px;margin:14px 0 4px;color:var(--sub);font-size:12px}.orline::before,.orline::after{content:'';flex:1;border-top:1px solid var(--line)}
.dvimgs{flex:1;overflow:auto;background:#525659;padding:12px;display:grid;gap:12px;justify-items:center;user-select:none}
.dvimgs img{max-width:100%;background:#fff;box-shadow:0 2px 12px rgba(0,0,0,.35)}
.paidtbl td.c{text-align:center}.paidtbl td.b{font-weight:700;color:var(--brand)}
/* 10/20 이미 열린 창을 앞으로 가져올 때 한 번 반짝 */
@keyframes flashbox{0%{box-shadow:0 0 0 0 rgba(224,108,46,.0)}30%{box-shadow:0 0 0 6px rgba(224,108,46,.55)}100%{box-shadow:0 0 0 0 rgba(224,108,46,0)}}
.modal.flash>.box,.docview.flash{animation:flashbox .9s ease}

/* 10/20 사장님: 미리보기 창 A4 세로 — 높이 화면 90%, 폭 = 높이×0.71(+막대), 가운데 · 폰은 꽉 · 그림은 창 높이에 맞춤 */
.docview.a4{inset:auto;top:4vh;left:50%;transform:translateX(-50%);height:92vh;width:min(96vw,calc((92vh - 52px) * 0.707 + 24px))}
.docview.a4 .dvimgs{padding:8px;align-content:start}
.docview.a4 .dvimgs img{max-height:calc(92vh - 70px);width:auto;max-width:100%}
@media (max-width:760px){.docview.a4{inset:0;transform:none;width:auto;height:auto;border-radius:0}.docview.a4 .dvimgs img{max-height:none;width:100%}}
/* 10/20 납품요구 물품 내역 표 — 업체·모델 칸이 한 글자씩 꺾이지 않게 */
@media (min-width:601px){table.t.dlvrt td:nth-child(3){min-width:150px}table.t.dlvrt td:nth-child(6){min-width:220px}table.t.dlvrt td:nth-child(7){min-width:120px}table.t.dlvrt td:nth-child(4){min-width:110px;white-space:nowrap}}

/* 10/22 B안: 무료 회원 띠 */
.band.trial{display:flex;flex-wrap:wrap;align-items:center;gap:6px;background:var(--brand-soft);border:1px solid var(--line);border-radius:8px;margin:8px 0;padding:8px 12px}.band.trial .grow{flex:1}

/* 10/25 돌아가는 배너 — 칸 크기를 먼저 잡고(폰 1080:200 · PC 1456:180) 그 안에서 겹쳐 바뀜(옆으로 밀리지 않음) */
.band.ad.img{display:flex;align-items:center;justify-content:center;gap:6px 12px;padding:6px 16px;background:var(--bg);flex-wrap:nowrap}
.band.ad.img .adtag{flex:none}
.adslot{position:relative;flex:1 1 auto;max-width:728px;aspect-ratio:1080/200;border-radius:8px;overflow:hidden;background:#eef2f5}
.adslot .adcard{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transition:opacity .45s ease,visibility 0s linear .45s;text-decoration:none;color:inherit}
.adslot .adcard.on{opacity:1;visibility:visible;transition:opacity .45s ease}
.adslot .adcard picture,.adslot .adcard img{display:block;width:100%;height:100%}
.adslot .adcard img{object-fit:contain}
.adslot .adtext{font-size:13px;padding:0 12px;text-align:center}
.adside{display:flex;flex-direction:column;align-items:center;gap:4px;flex:none}
.addots{display:flex;gap:4px}
.addot{width:7px;height:7px;border-radius:50%;border:0;padding:0;background:#c5ced6;cursor:pointer}
.addot.on{background:var(--brand)}
.adpol{font-size:11px;font-weight:400;color:var(--sub)}
@media (min-width:761px){.adslot{aspect-ratio:1456/180}}
@media (max-width:760px){.band.ad.img{flex-wrap:wrap;padding:6px 12px;gap:6px 8px}.adslot{order:0;flex-basis:100%;max-width:none}.band.ad.img .adtag{order:1}.adside{order:2;flex:1;flex-direction:row;justify-content:space-between}}
@media (prefers-reduced-motion:reduce){.adslot .adcard,.adslot .adcard.on{transition:none}}

/* 10/25 실제로 받아 보기 */
.samplebox{background:var(--brand-soft);border:1px solid var(--line);margin:10px 0}

/* 10/27 기관으로 보기 — 자동 완성 */
.instsugg{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0}
.instsugg .btn small{font-weight:400}
@media (min-width:601px){table.t.dlvrt.hist td:nth-child(2){min-width:170px}table.t.dlvrt.hist td:nth-child(3){min-width:120px}table.t.dlvrt.hist td:nth-child(4){min-width:auto;white-space:nowrap}table.t.dlvrt.hist td:nth-child(5){min-width:240px}table.t.dlvrt.hist td:nth-child(6){min-width:140px}}
/* 10/30 자료실 · 개선 요청 */
.libwrap{display:grid;grid-template-columns:220px 1fr;gap:14px;align-items:start}
.libcats{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:8px;position:sticky;top:96px}
.libcat{display:flex;justify-content:space-between;align-items:center;gap:6px;width:100%;background:none;border:0;border-radius:7px;padding:8px 10px;cursor:pointer;text-align:left;font-size:13.5px}
.libcat.on{background:var(--brand-soft);color:var(--brand);font-weight:700}
.libcat small{color:var(--sub);font-weight:400}
.libadmbox summary{cursor:pointer}
.libadm{gap:6px;flex-wrap:wrap;border-top:1px solid var(--line);padding:7px 0}
.libpost{border-top:1px solid var(--line);padding:12px 2px}
.libpost h4{margin:0 0 3px;font-size:14.5px}
.libpin{background:var(--accent-soft);color:var(--accent);border-radius:5px;padding:0 6px;font-size:11.5px;font-weight:700;margin-right:5px}
.libbody{white-space:pre-wrap;margin-top:4px;font-size:13.5px}
.libfile{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#F7FAFB;border:1px solid var(--line);border-radius:8px;padding:6px 10px;margin-top:6px;font-size:13px}
.libfile b{word-break:break-all}
.reqrow{border-top:1px solid var(--line);padding:11px 2px}
.reqst{border-radius:5px;padding:1px 7px;font-size:12px;font-weight:700}
.reqst.s0{background:#EEF2F3;color:var(--sub)}.reqst.s1{background:var(--warn-soft);color:var(--warn)}.reqst.s2{background:var(--ok-soft);color:var(--ok)}.reqst.s3{background:#F1EDED;color:#7A5C5C}
.reqans{margin-top:6px;background:var(--brand-soft);border-radius:8px;padding:6px 10px;font-size:13px;color:#08404A}
@media (max-width:760px){.libhead h2{flex-basis:100%}.libhead input{flex:1;max-width:none!important}.libwrap{grid-template-columns:1fr}.libcats{display:flex;overflow-x:auto;gap:4px;padding:6px;position:static}.libcat{white-space:nowrap;width:auto}}
.retail{font-size:12px;color:var(--brand-2);margin-top:2px}
/* 11/2 입찰공고 한 건 한 칸(마감 가까운 순, 폰 320 안 밀림) */
.ntclist{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.ntc{border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;background:#fff;min-width:0}
.ntc.past{background:var(--bg)}
.ntctop{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px}
.ntcwhen{font-weight:600}
.ntcdt{font-size:12px}
.tag.dday{font-weight:700;min-width:44px;justify-content:center}
.tag.dday.past{background:#E6ECEE;color:#4A5A60}
.ntcnm{font-size:15px;font-weight:600;line-height:1.4;margin:5px 0 2px;overflow-wrap:anywhere}
.ntcinst{font-size:13px;color:#4A5A60;overflow-wrap:anywhere}
.ntcamt{margin-top:4px;font-size:14px}
.ntcamt b{font-size:15px}
.ntcmore{margin-top:6px;font-size:13px}
.ntcmore summary{cursor:pointer;color:#08404A}
.ntcfiles{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}
.ntcfiles .tag{max-width:100%;overflow-wrap:anywhere}
@media (min-width:1000px){.ntclist{grid-template-columns:1fr 1fr}}
/* 11/2 기관 찾기 — 품목 체크 거르기 · 열 골라 인쇄(A4 가로) */
.dchks{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:8px 0}
.dchks>b{font-size:13px;margin-right:2px}
.dchk{display:inline-flex;align-items:center;gap:3px;border:1px solid var(--line);border-radius:999px;padding:3px 10px;font-size:13px;background:#fff;cursor:pointer;max-width:100%}
.dchk.on{background:var(--brand-soft);border-color:var(--brand-2);color:#08404A;font-weight:600}
.dchk small{color:var(--sub)}
.hpbox{max-width:1100px;width:calc(100vw - 24px);max-height:calc(100vh - 24px);overflow:auto}
.hpcols{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 10px}
.hpbar{flex-wrap:wrap;gap:6px}
.hpsheet{background:#fff;border:1px solid var(--line);padding:10px;overflow-x:auto}
.hphead{font-size:13px;margin-bottom:6px}
.hptbl{width:100%;border-collapse:collapse;table-layout:fixed;font-size:11px}
.hptbl th,.hptbl td{border:1px solid #9AA9AE;padding:2px 4px;vertical-align:top;overflow-wrap:anywhere;word-break:keep-all}
.hptbl th{background:#E8F0F1;font-weight:700}
.hptbl td.n{text-align:right;white-space:nowrap;word-break:normal}
.hptbl tfoot td{font-weight:700;background:#F3F6F7}
.hpnote{font-size:11px;color:var(--sub)}
@media screen{.hptbl{min-width:640px}}
@media (max-width:600px){.hpbar h2{flex-basis:100%}}
@media print{
  @page{size:A4 landscape;margin:8mm}
  body.hpprint>*:not(.hpmodal){display:none!important}
  body.hpprint .hpmodal{position:static!important;background:none!important;display:block!important;padding:0!important}
  body.hpprint .hpbox{max-width:none;width:auto;max-height:none;overflow:visible;box-shadow:none;border:0;padding:0}
  body.hpprint .hpbar,body.hpprint .hpcols{display:none!important}
  body.hpprint .hpsheet{border:0;padding:0;overflow:visible}
  .hptbl{font-size:9pt}
  .hptbl thead{display:table-header-group}
  .hptbl tfoot{display:table-row-group}
  .hptbl tr{break-inside:avoid}
}
/* 11/2 폰 머리 줄이기 — 탭은 한 줄 가로 넘김(위쪽은 fitTop 이 스크롤로 올려 보냄), 머리 위쪽 단추 줄도 작게 */
@media (max-width:767px){
 .tabs{flex-wrap:nowrap!important;overflow-x:auto!important;-webkit-overflow-scrolling:touch}
 .tab{flex:0 0 auto;padding:9px 11px}
 .top .in{gap:6px;padding:6px var(--pad)}
 .top .brand small{display:none}
 .top select,.top .tb{padding:4px 8px;font-size:12.5px}
 .side,.libcats{top:44px}
}
/* 11/4 공공문서 작성·검수 — 앱 안 탭(틀은 머리 아래를 꽉 채움) */
#docsfr{position:fixed;left:0;right:0;width:100%;border:0;background:#fff;z-index:20}
#docsfr[hidden]{display:none}
body.docson{overflow:hidden}
body.docson .appfoot{display:none}
/* 11/4 점 범례 — 누르면 뜻 */
details.dotkey summary{cursor:pointer;list-style:none}details.dotkey summary::-webkit-details-marker{display:none}
details.dotkey u{text-underline-offset:2px;margin-left:2px}details.dotkey[open] u{display:none}
details.dotkey ul{margin:6px 0 0;padding-left:0;list-style:none;display:grid;gap:3px}details.dotkey li .dot{margin:0 5px 0 0}
details.dotkey[open]{flex-basis:100%}
/* 11/4 바닥글 — 상호·사업자정보확인과 약관을 한 줄로(펼치면 사업자 정보는 아래로) */
.appfoot{display:flex;flex-wrap:wrap;align-items:baseline;gap:3px 12px}
.appfoot>div:first-child:not(.footlinks):not(.muted){flex-basis:100%}
.bizinfo[open]{flex-basis:100%}.bizinfo[open]>div{margin-top:3px}
.login + .appfoot,.login .appfoot{justify-content:center}
/* 11/4 폰 맨 위 줄 — 글자·여백 조금 작게 해서 한 화면에 */
@media (max-width:767px){
 .top .in{gap:4px 5px;padding:5px var(--pad)}
 .top .brand b{font-size:14px}
 .top select,.top .tb{padding:3px 7px;font-size:11.5px;border-radius:6px}
 .top select{max-width:46vw}
 .top .who{display:none}            /* 이름은 「내 정보」에 있음 */
 .top .brand{order:-2;flex:1 1 auto;min-width:0}
 .top .in>.tb:last-child,.top .in>.tb:nth-last-child(2){order:-1}   /* 내 정보·로그아웃은 제목 옆으로 */
}
