/* 프로토타입 전용 보조 스타일 (bdms.css 위에 덧씀) */
html.big body{zoom:1.12}
.overlay{position:fixed;inset:0;background:rgba(15,25,40,.55);display:flex;align-items:center;justify-content:center;padding:32px;z-index:100;overflow:auto}
.overlay .modal{max-height:calc(100vh - 64px)}
.overlay .modal .m-b{overflow:auto}
.toast-wrap{position:fixed;right:24px;bottom:24px;display:flex;flex-direction:column;gap:10px;z-index:200;max-width:440px}
.toast{background:#111A27;color:#fff;border-radius:12px;padding:16px 20px;font-size:17px;line-height:1.5;box-shadow:0 12px 32px rgba(0,0,0,.25);display:flex;gap:12px;align-items:flex-start;animation:tin .2s ease-out}
.toast b{color:#9FD8B4}
@keyframes tin{from{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}
.bell{position:relative}
.bell .dot{position:static;margin-left:2px;min-width:22px;height:22px;border-radius:11px;background:#B42318;color:#fff;font-size:13px;font-weight:800;display:flex;align-items:center;justify-content:center;padding:0 6px}
.drop{position:absolute;right:0;top:calc(100% + 10px);width:420px;background:#fff;color:#111A27;border:1px solid #CBD3DE;border-radius:12px;box-shadow:0 16px 40px rgba(0,0,0,.18);z-index:90;overflow:hidden}
.drop .di{display:block;padding:14px 18px;border-bottom:1px solid #E2E7EE;color:#111A27;font-size:16px;line-height:1.5}
.drop .di:hover{background:#F5F9FF;text-decoration:none}
.drop .di.unread{background:#F5F9FF}
.linkbtn{background:none;border:0;padding:0;font:inherit;color:inherit;cursor:pointer}
.proto-bar{background:#FFF4D6;color:#5C3D00;font-size:15px;border-bottom:1px solid #EBCB7A}
.proto-bar .in{max-width:1360px;margin:0 auto;padding:8px 32px;display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.proto-bar button{min-height:34px;padding:0 12px;border-radius:6px;border:1.5px solid #C9A646;background:#fff;font-size:15px;font-weight:700;cursor:pointer}
.proto-bar button.on{background:#5C3D00;border-color:#5C3D00;color:#fff}
.empty{padding:56px 28px;text-align:center;color:#556170;font-size:18px}
.kb-c{cursor:pointer}
.kb-c:hover{border-color:#1A4FA0}
.item-t:hover{color:#1A4FA0}
.chk-card{border:1.5px solid #CBD3DE;border-radius:10px;padding:12px 16px}
.chk-card:has(input:checked){border:2px solid #1A4FA0;background:#EAF1FB}
.sr{position:absolute;left:-9999px}
select.sel{appearance:auto}
.proto-bar select{max-width:100%;min-width:0}
@media (max-width:760px){
  .auth-hero{padding:24px 20px!important;gap:12px!important;flex-basis:100%!important}
  .auth-hero .hero-big,.auth-hero .hero-stats{display:none!important}
  .auth-main{padding:24px 16px!important;flex-basis:100%!important}
  .auth-main .grid2{grid-template-columns:minmax(0,1fr)!important}
  .auth-main .fld[style*="span 2"]{grid-column:auto!important}
  .proto-bar .in>span.sm{display:none}
}
@media (max-width:600px){.drop{width:calc(100vw - 32px);right:-60px}.proto-bar .in{padding:8px 16px}}
/* 규격서 판독 하이라이트 */
mark.mk{padding:1px 5px;border-radius:4px;font-weight:700;display:inline-block;line-height:1.5}
.mk-r{background:#FDECEA;color:#B42318;box-shadow:inset 0 0 0 1.5px #F1B5AE}
.mk-b{background:#EAF1FB;color:#1A4FA0;box-shadow:inset 0 0 0 1.5px #B9CFEE}
.mk-a{background:#FFF1C2;color:#5C4200;box-shadow:inset 0 0 0 1.5px #E9C46A}
.chip .linkbtn{color:inherit}

/* 홈: 오른쪽 카드 높이를 왼쪽 목록에 맞춤 */
@media (min-width:1080px){.home-row{align-items:stretch}.home-row>.aside .hc{flex:1 1 0;min-height:0;display:flex;flex-direction:column}.home-row>.aside .hl{flex:1;min-height:0;overflow:auto}}
@media (max-width:1079px){.home-row>.aside .hc:not(.hc-fit) .hl{max-height:420px;overflow:auto}}
.home-row>.aside .hc.hc-fit{flex:none}.home-row>.aside .hc.hc-fit .hl{overflow:visible}

.ib-row:hover td{background:#F5F9FF}
.ib-row:focus-visible{outline:3px solid #1A4FA0;outline-offset:-3px}
/* 말풍선 (data-tip): 마우스를 올리거나 .show일 때 */
.tipw{position:relative;display:inline-flex}
.tipw::after{content:attr(data-tip);position:absolute;right:0;top:calc(100% + 8px);width:max-content;max-width:280px;padding:8px 12px;border-radius:8px;background:#111A27;color:#fff;font-size:14px;line-height:1.5;font-weight:500;white-space:normal;text-align:left;opacity:0;pointer-events:none;transition:opacity .15s;z-index:20}
.tipw:hover::after,.tipw:focus-within::after,.tipw.show::after{opacity:1}
/* 검색 조건 12칸 격자 (사전규격 · 입찰공고, plan.md "검색 조건 정리") */
.filters.f12{grid-template-columns:repeat(12,minmax(0,1fr))}
.filters.f12 .c2{grid-column:span 2}.filters.f12 .c4{grid-column:span 4}.filters.f12 .c5{grid-column:span 5}.filters.f12 .c7{grid-column:span 7}
@media (max-width:960px){.filters.f12{grid-template-columns:repeat(2,minmax(0,1fr))}.filters.f12 .c2{grid-column:auto}.filters.f12 .c4,.filters.f12 .c5,.filters.f12 .c7{grid-column:span 2}}
.item.ib-row:hover{background:#F5F9FF}
/* 협회 관리자 화면은 경로 표시를 두지 않는다 (회원사와 같이 쓰는 화면 포함) */
body.adm main .crumb{display:none}
.filters.f12 .c3{grid-column:span 3}
@media (max-width:960px){.filters.f12 .c3{grid-column:span 2}}
/* 협회 관리자 메뉴 11개를 한 줄에 (넓은 화면) */
.hdr-adm .hdr-in{gap:20px}.hdr-adm .gnb{gap:2px}.hdr-adm .gnb a{padding:0 8px;font-size:16px;white-space:nowrap}.hdr-adm .gnb .cnt{margin-left:4px;min-width:20px;height:20px;padding:0 5px;font-size:13px}
.filters.f12 .c6{grid-column:span 6}
@media (max-width:960px){.filters.f12 .c6{grid-column:span 2}}

/* 진행 추적 접기 (2026-10-25) */
.track>summary{list-style:none}.track>summary::-webkit-details-marker{display:none}.tk-tog{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border:1px solid #CBD3DE;border-radius:8px;font-size:17px;font-weight:700;color:var(--blue);white-space:nowrap}.tk-arr{flex:none;transition:transform .15s}.track[open] .tk-arr{transform:rotate(180deg)}.tk-c,.track[open] .tk-o{display:none}.track[open] .tk-c{display:inline}.track>summary:hover .tk-tog{background:var(--blue-50)}
/* 협회 설정: 작은 입력 칸 · 여백 (2026-10-25) */
.set .card{padding:22px}.set .card-h{margin-bottom:0}.set .stack{gap:14px}.set .inp,.set .sel{min-height:44px;font-size:16px}.set .btn:not(.btn-sm){min-height:42px;padding:0 16px;font-size:16px}.set .fld{gap:6px}.set .fld>label,.set .fld>.lbl{font-size:15px}
.inp.ro{display:flex;align-items:center;background:#F7F9FB;color:#36404E}
.set-team{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}@media (max-width:760px){.set-team{grid-template-columns:minmax(0,1fr)}}
/* 인쇄 (2026-10-25, 2026-10-28 변경: 시장 리포트 PDF 버튼 삭제 — 브라우저 인쇄용 공통 규칙만) */
@media print{
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body{background:#fff}
  #toasts,#modal{display:none!important}
}
/* 홈 오늘 현황 카드 8개 (plan.md "홈 오늘 현황 카드 …") */
.hcards{gap:12px}
.kpi.hcard{font:inherit;color:inherit;text-align:left;cursor:pointer;padding:16px 18px;gap:4px;width:100%}
.kpi.hcard .k{font-size:18px;line-height:1.35}
.kpi.hcard .v{font-size:26px}
.kpi.hcard .d{font-size:13px}
.kpi.hcard:hover{border-color:#9CB8E3}
.kpi.hcard.on{border:2px solid #1A4FA0;background:#F5F9FF;padding:15px 17px}
.em-m{color:#1A4FA0;font-weight:800}
.em-f{color:#B54708;font-weight:800}
.em-t{color:#B42318;font-weight:800}
.pw-mask{-webkit-text-security:disc}
.is-off{opacity:.5;pointer-events:none}
/* 파일 등록 상자 (플랫폼 운영자 AI 분석 기준 파일) */
.aig-row{display:flex;gap:20px;align-items:flex-end;flex-wrap:wrap}
.aig-kind{padding:10px 22px;font-weight:700;cursor:pointer}
.dropzone{display:flex;align-items:center;gap:18px;padding:22px 24px;border:2px dashed #9CB8E3;border-radius:12px;background:#F7FAFE;cursor:pointer;flex-wrap:wrap}
.dropzone:hover,.dropzone.drag{border-color:#1A4FA0;background:#EAF1FB}
.dropzone:focus-within{outline:3px solid #1A4FA0;outline-offset:2px}
.dropzone.on{border-style:solid;border-color:#12703F;background:#F2FAF5}
.dropzone.bad{border-style:solid;border-color:#B42318;background:#FEF3F2}
.dz-ico{width:52px;height:52px;border-radius:50%;background:#fff;border:1px solid #CBD3DE;display:flex;align-items:center;justify-content:center;color:#1A4FA0;flex:none}
.dz-txt{display:flex;flex-direction:column;gap:4px;flex:1;min-width:200px;overflow-wrap:anywhere;word-break:keep-all}
.dz-txt b{font-size:17px}
/* 사전규격 상세 과거 유사건 표: 화면 폭에 맞춰 줄바꿈 (가로 스크롤 없음) */
.past-tbl{width:100%;table-layout:fixed}
.past-tbl td,.past-tbl th{overflow-wrap:anywhere;word-break:keep-all}
.past-tbl .c-date{width:124px}.past-tbl col.c-ag{width:18%}.past-tbl .c-win{width:17%}.past-tbl .c-amt{width:180px}.past-tbl .p-date,.past-tbl .p-amt{white-space:nowrap}
.past-tbl .past-ag{display:none;margin-top:4px}
.past-tbl .past-lbl{display:none}
/* 좁은 화면: 행마다 카드 (개찰일 · 금액 / 사업 · 발주기관 / 수주기관) */
@media (max-width:640px){
  .past-tbl,.past-tbl tbody{display:block}
  .past-tbl thead,.past-tbl colgroup,.past-tbl .c-ag{display:none}
  .past-tbl tr{display:grid;grid-template-columns:1fr auto;grid-template-areas:"date amt" "title title" "win win";gap:6px 12px;padding:14px 16px;border-bottom:1px solid #E2E7EE}
  .past-tbl td{display:block;padding:0;border:0}
  .past-tbl .p-date{grid-area:date;font-weight:700}.past-tbl .p-amt{grid-area:amt}.past-tbl .p-title{grid-area:title}.past-tbl .p-win{grid-area:win}
  .past-tbl .past-ag,.past-tbl .past-lbl{display:inline}
  .past-tbl .past-ag{display:block}
}
/* 긴 파일 이름 배지: 화면 폭을 넘지 않게 줄바꿈 */
.bd.bd-wrap{max-width:100%;height:auto;min-height:30px;white-space:normal;overflow-wrap:anywhere;padding-top:3px;padding-bottom:3px}

/* 빠른 필터 색 (plan.md "빠른 필터 색깔 나누기"): 필터마다 연한 배경 + 같은 계열 진한 글자, 고르면 조금 짙은 배경 · 테두리 · ✓ */
.qchip{background:var(--q-bg);border-color:var(--q-bd);color:var(--q-tx)}
.qchip:hover{border-color:var(--q-tx)}
/* 고른 필터는 필터 색과 상관없이 빨간 바탕 · 흰 글자로 (plan.md "선택된 빠른 필터 빨간색") */
.qchip.on,.qchip.on:hover{background:#B42318;border-color:#B42318;color:#fff;font-weight:700;box-shadow:inset 0 0 0 1px #B42318}
.qchip.on::before{content:"✓";font-weight:800}
.q-mine{--q-bg:#EEF4FF;--q-bd:#C6D9F7;--q-tx:#1A4FA0;--q-on:#D3E3FB}
.q-sim{--q-bg:#EAF7F5;--q-bd:#B5E0D9;--q-tx:#0B6358;--q-on:#CDEDE7}
.q-mspec{--q-bg:#EFF8EA;--q-bd:#C3E2B6;--q-tx:#2C6419;--q-on:#D6EECB}
.q-mkw{--q-bg:#FFF7E3;--q-bd:#F0D79F;--q-tx:#7A4F00;--q-on:#FCE9BC}
.q-fav{--q-bg:#FDF0F5;--q-bd:#F1C4D5;--q-tx:#9A2254;--q-on:#F9D9E5}
.q-ans{--q-bg:#F4F0FD;--q-bd:#D3C8F2;--q-tx:#5235A0;--q-on:#E3DAF9}
.q-opin{--q-bg:#FDF1EB;--q-bd:#F0C7B4;--q-tx:#99391A;--q-on:#F9DCCE}
/* 검색 조건 상세검색 (plan.md "검색 조건 정리"): 접혀 있으면 상세 칸을 숨긴다 (칸은 폼 안에 남아 제출 값이 유지된다) */
form:not(.adv-on) .adv{display:none!important}
/* 상세 제목 카드 · 숫자 카드 컴팩트 (plan.md "제목 카드 · 숫자 카드 컴팩트") */
.dhead{padding:20px 24px}.dhead .dh-tags{gap:6px;margin-bottom:8px;flex-wrap:wrap}.dhead h1{font-size:26px;line-height:1.3}.dhead .lead{font-size:15px;margin-top:4px}
.kpi{padding:14px 18px;gap:2px}.kpi .k{font-size:18px;line-height:1.35}.kpi .v{font-size:26px;overflow-wrap:anywhere}.kpi .v small{font-size:15px}.kpi .d{font-size:13px}
.grid4:has(>.kpi){gap:12px}
@media (max-width:600px){.dhead{padding:16px 18px}.dhead h1{font-size:22px}.grid4:has(>.kpi){grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.kpi{padding:12px 14px}.kpi .v,.kpi.hcard .v{font-size:20px}}
/* 휴대폰 메뉴 접기 (plan.md "휴대폰 메뉴 접기"): 960px 이하에서 메뉴 버튼으로 접고 펼친다 */
.mnav-btn{display:none;align-items:center;gap:6px;margin-left:auto;min-height:44px;min-width:48px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);font:inherit;font-size:22px;font-weight:700;cursor:pointer}
.mnav-btn .cnt{min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--red);color:#fff;font-size:13px;display:inline-flex;align-items:center;justify-content:center}
@media (max-width:960px){.mnav-btn{display:inline-flex}.hdr-in{flex-wrap:wrap;gap:12px;min-height:64px;padding-top:10px;padding-bottom:10px}body:not(.mnav-open) .gnb,body:not(.mnav-open) .ubar .u-x{display:none!important}.gnb{flex:0 0 100%;flex-direction:column;gap:2px;padding-bottom:8px}.gnb a{min-height:44px}.ubar>div{min-height:40px!important;gap:14px!important;padding:0 16px!important}}
/* AI 분석 독점 항목 표 (plan.md "AI 분석 대상 칸 나누기"): 칸마다 글이 길어 위쪽 정렬 */
.tbl-top td{vertical-align:top}
/* 사전규격 목록 우리 스펙 · 감시 키워드 포함 배지 (plan.md "사전규격 목록 AI 독점 의심 · 우리 스펙 · 감시 키워드 표시"): 키워드 표시와 같은 색 */
.bd.kw-b{background:#EAF1FB;color:#1A4FA0;box-shadow:inset 0 0 0 1px #A9C3EA}.bd.kw-r{background:#FFF1F0;color:#B42318;box-shadow:inset 0 0 0 1px #F2B8B5}
/* 홈 오늘 현황 카드 제목 (plan.md "홈 카드 제목 키우기") */
@media (max-width:600px){.kpi .k,.kpi.hcard .k{font-size:16px}}
