/* 입찰 공고 목록(/apartment-bids/·/public-bids/, api/apt-bids.js가 그림)과 등록 양식 3번(입찰 공고 알림). style.css 토큰을 그대로 쓴다. */
:root {
  --due-today: #B42318; --due-today-bg: #FDF0EE; --due-today-line: #F4C7C0;
  --due-soon: #9A4A00; --due-soon-bg: #FEF5E7; --due-soon-line: #F5D9A8;
}

/* 두 목록 사이 전환 탭 */
.bids-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--line); margin-bottom: 24px; overflow-x: auto; }
.bids-tabs a {
  flex: none; display: inline-flex; align-items: center; min-height: 48px; padding: 0 16px; font-weight: 600; font-size: 15px; color: var(--muted); text-decoration: none;
  border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.bids-tabs a:hover { color: var(--text); }
.bids-tabs a[aria-current="page"] { color: var(--text); border-bottom-color: var(--text); }

/* 머리 요약 */
.bs { display: grid; gap: 12px; margin-bottom: 24px; }
.bs-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.bs-stat { background: var(--bg); border: 1px solid var(--line); border-radius: var(--r); padding: 12px 16px; display: grid; gap: 4px; }
.bs-n { font-size: 28px; font-weight: 800; line-height: 1.2; letter-spacing: -0.025em; font-variant-numeric: tabular-nums; }
.bs-l { font-size: 13px; color: var(--muted); }
.bs-stat.is-today { background: var(--due-today-bg); border-color: var(--due-today-line); }
.bs-stat.is-today .bs-n, .bs-stat.is-today .bs-l { color: var(--due-today); }
.bs-stat.is-soon { background: var(--due-soon-bg); border-color: var(--due-soon-line); }
.bs-stat.is-soon .bs-n, .bs-stat.is-soon .bs-l { color: var(--due-soon); }
.bs-row { display: flex; gap: 12px; align-items: baseline; }
.bs-h { flex: none; width: 3em; font-size: 13px; font-weight: 700; color: var(--muted); padding-top: 8px; }
.bs-links { display: flex; flex-wrap: wrap; gap: 8px; }
.bs-link {
  display: inline-flex; align-items: center; gap: 4px; min-height: 36px; font-size: 14px; padding: 0 12px; border-radius: 999px; border: 1px solid var(--line-2); background: var(--card);
  color: var(--text); text-decoration: none; white-space: nowrap; transition: border-color .15s, background-color .15s;
}
.bs-link .num { color: var(--muted); margin-left: 2px; }
.bs-link:hover { border-color: var(--text); color: var(--text); }
.bs-link.is-on { background: var(--accent-soft); border-color: var(--accent-ink); color: var(--accent-ink); font-weight: 600; }
.bs-link.is-on .num { color: var(--accent-ink); }

/* 거르기 */
.bf { background: var(--bg); border: 1px solid var(--line); border-radius: var(--r); padding: 16px; }
.bf-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; }
.bf-f { display: grid; gap: 4px; flex: 1 1 180px; min-width: 0; }
.bf-l { font-size: 13px; font-weight: 600; color: var(--muted); }
.bf select, .bf input {
  width: 100%; font: inherit; font-size: 16px; color: var(--text); background: var(--card);
  border: 1px solid var(--line-field, #878B91); border-radius: var(--r-sm); padding: 8px 12px; min-height: 44px;
}
.bf select:hover:not(:focus), .bf input:hover:not(:focus) { border-color: var(--text); }
.bf select:focus, .bf input:focus { outline: none; border-color: var(--accent-ink); box-shadow: var(--ring); }
.bf-q { flex: 2 1 220px; }  /* 공고명·기관 낱말(모든 분야라 검색어가 주된 거르기, 10-05) */
.bf-go { flex: none; height: 44px; }
.bf-now { display: flex; flex-wrap: wrap; gap: 8px 8px; align-items: center; margin-top: 12px; }
.bf-tag {
  display: inline-flex; gap: 8px; align-items: center; min-height: 36px; font-size: 14px; font-weight: 600; padding: 0 12px 0 16px;
  border-radius: 999px; background: var(--text); color: var(--card); text-decoration: none;
}
.bf-tag:hover { color: var(--card); background: var(--e2); }
.bf-tag span { font-size: 15px; line-height: 1; opacity: .8; }
.bf-clear { display: inline-flex; align-items: center; min-height: 36px; font-size: 14px; margin-left: 4px; }
.bids-count { font-size: 14px; color: var(--muted); margin: 24px 0 8px; }
.bids-count strong { color: var(--text); }

/* 공고 카드 — 왼쪽 마감 블록 · 본문 · 원문 단추 */
.bid-list { border-top: 1px solid var(--line); }
.bid { display: grid; grid-template-columns: 104px minmax(0, 1fr) auto; gap: 8px 24px; align-items: start; padding: 24px 0; border-bottom: 1px solid var(--line); }
.bid-dd {
  display: grid; gap: 2px; text-align: center; padding: 12px 8px; border-radius: var(--r-sm);
  background: var(--bg); border: 1px solid var(--line);
}
.bid-dd-l { font-size: 17px; font-weight: 700; line-height: 1.25; }
.bid-dd-t { font-size: 12px; color: var(--muted); }
.bid.is-today .bid-dd { background: var(--due-today-bg); border-color: var(--due-today-line); }
.bid.is-today .bid-dd-l, .bid.is-today .bid-dd-t { color: var(--due-today); }
.bid.is-soon .bid-dd { background: var(--due-soon-bg); border-color: var(--due-soon-line); }
.bid.is-soon .bid-dd-l, .bid.is-soon .bid-dd-t { color: var(--due-soon); }
.bid.is-near .bid-dd-l { color: var(--due-soon); }
.bid-body { min-width: 0; }
.bid-top { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.bid-state { background: var(--due-soon-bg); border-color: var(--due-soon-line); color: var(--due-soon); }
.bid-t { font-size: 17px; font-weight: 700; line-height: 1.45; letter-spacing: -0.015em; margin: 0 0 8px; text-wrap: pretty; }
.bid-t a { color: var(--text); text-decoration: none; }
.bid-t a:hover { text-decoration: underline; }
.bid-dl { display: flex; flex-wrap: wrap; gap: 4px 24px; font-size: 14px; line-height: 1.6; }
.bid-dl div { display: flex; gap: 8px; min-width: 0; }
.bid-dl dt { color: var(--muted); flex: none; }
.bid-dl dd { margin: 0; min-width: 0; }
.bid-price dd strong { font-weight: 700; color: var(--text); }
.bid-m { font-size: 13px; margin: 8px 0 0; }
.bid-go {
  align-self: center; display: inline-flex; align-items: center; min-height: 44px; padding: 0 16px; border-radius: 999px;
  border: 1px solid var(--line-2); background: var(--card); color: var(--text); font-size: 14px; font-weight: 600;
  text-decoration: none; white-space: nowrap; box-shadow: var(--shadow-1); transition: border-color .15s;
}
.bid-go:hover { border-color: var(--text); color: var(--text); }
.bid-go:active { transform: translateY(1px); }

/* 빈 상태 */
.bids-empty { border: 1px dashed var(--line-2); border-radius: var(--r); padding: 28px 24px; margin-top: 24px; display: grid; gap: 12px; }
.bids-empty p { max-width: var(--measure); }
.bids-empty-h { font-size: 17px; font-weight: 700; }
.bids-empty .btn { margin-top: 4px; }

/* 잠금 상자 — 쿠키 boim_reg 없을 때 미리보기 아래(api/apt-bids.js lockBox). 가짜 행은 글자 없는 회색 막대를 흐리게. */
.bids-lock { position: relative; margin-top: 0; }
.bl-skel { filter: blur(3px); opacity: .7; pointer-events: none; user-select: none; }
.bl-row { display: grid; grid-template-columns: 96px minmax(0, 1fr) 110px; gap: 20px; align-items: center; padding: 20px 0; border-bottom: 1px solid var(--line); }
.bl-dd { height: 52px; border-radius: var(--r-sm); background: var(--line); }
.bl-body { display: grid; gap: 12px; }
.bl-bar { display: block; height: 14px; border-radius: 4px; background: var(--line-2); }
.bl-w1 { width: 72%; height: 18px; }
.bl-w2 { width: 48%; background: var(--line); }
.bl-go { height: 38px; border-radius: 999px; background: var(--line); }
.bl-box {
  position: absolute; inset: 12px 0 12px; margin: auto; width: min(560px, 100%); height: fit-content;
  display: grid; gap: 8px; justify-items: start; padding: 24px; text-align: left;
  background: var(--card); border: 1px solid var(--line-2); border-radius: var(--r-lg); box-shadow: var(--shadow-2);
}
.bl-h { font-size: 18px; font-weight: 700; line-height: 1.45; }
.bl-h strong { color: var(--accent-ink); }
.bl-p { font-size: 15px; line-height: 1.65; }
.bl-btn { margin-top: 8px; min-height: 44px; }
.bl-note { margin-top: 2px; }

@media (max-width: 759px) {
  .bs-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bs-row { display: none; }  /* 좁은 화면: 같은 조건을 아래 거르기 칸으로 고른다(첫 화면에 목록이 빨리 보이게) */
  .bid { grid-template-columns: minmax(0, 1fr); gap: 12px; padding: 16px 0; }
  .bid-dd { display: flex; gap: 8px; align-items: baseline; justify-self: start; padding: 4px 12px; text-align: left; }
  .bid-dd-l { font-size: 15px; }
  .bid-dl { display: grid; gap: 2px; }
  .bid-go { justify-self: start; }
  .bf-f { flex-basis: 100%; }
  .bl-row { grid-template-columns: minmax(0, 1fr); gap: 12px; padding: 16px 0; }
  .bl-dd { width: 96px; height: 26px; }
  .bl-go { display: none; }
  .bl-box { position: relative; inset: auto; margin: -152px 0 0; width: 100%; padding: 20px 16px; }
  .bl-btn { width: 100%; justify-content: center; }
}

/* 등록 양식 3번 — 입찰 공고 알림 */
.bid-opts { display: grid; gap: 20px; padding: 20px; border: 1px solid var(--line); border-radius: var(--r); background: var(--bg); transition: opacity .2s; }
.bid-opts.is-off { opacity: .5; }
.bid-opts .checks { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 2px 12px; }
.bid-opts .checks-sido { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); }
.bid-opts .check { margin-top: 0; padding: 0; font-size: 15px; }
.bid-opts-off { font-size: 14px; color: var(--muted); }
/* 알림 분야 — 종류별 접기(모든 분야, 10-05) */
.bid-kind { margin-top: 4px; }
.bid-kind .fold-body { color: var(--text); gap: 8px; padding-bottom: 16px; }
.bid-opts .checks-bid { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
.bid-opts .checks-bid span { word-break: keep-all; }
.label-row { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: baseline; justify-content: space-between; }
.link-btn { font: inherit; font-size: 14px; font-weight: 600; color: var(--accent-ink); background: none; border: 0; min-height: 44px; padding: 0 4px; cursor: pointer; text-decoration: underline; text-underline-offset: 3px; }
.link-btn + .link-btn { margin-left: 12px; }
.bid-preview { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-sm); padding: 12px 16px; font-size: 14px; display: grid; gap: 2px; }
.bid-preview-h { font-weight: 700; }
.bid-preview dl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 2px 12px; }
.bid-preview dt { color: var(--muted); }
.bid-preview dd { margin: 0; }
@media (max-width: 639px) {
  .bid-opts { padding: 16px; }
  .bid-opts .checks, .bid-opts .checks-sido { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* 작업 L — 좁은 화면: 숫자 4칸 한 줄, 거르기 두 칸 한 줄, 분야별 건수 접기는 숨김(거르기 칸과 같은 일) */
.bs-fold { margin-top: 0; }
@media (max-width: 759px) {
  .bs-stats { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
  .bs-stat { padding: 8px 10px; gap: 2px; }
  .bs-n { font-size: 22px; }
  .bs-l { font-size: 12px; line-height: 1.35; }
  .bs-fold { display: none; }
  .bf-f { flex-basis: calc(50% - 6px); min-width: 0; }
  .bf-f select { min-width: 0; width: 100%; }
}
@media (max-width: 759px) {
  .bid { gap: 8px; padding: 14px 0; }
  .bid-dl { display: flex; flex-wrap: wrap; gap: 0 14px; }
  .bid-dl > div { display: flex; gap: 6px; }
}

/* 공공기관 '공고 낸 곳' 칩 줄 — 접지 않고 좁은 화면에서도 보인다(대표 10-05 "공공기관(나라장터)·아파트 단지뿐 안 나온다") */
.bs-orig { margin-top: 12px; }
.bs-orig .bs-h { width: auto; white-space: nowrap; }
@media (max-width: 759px) {
  .bs .bs-orig { display: flex; flex-direction: column; gap: 8px; }
  .bs-orig .bs-h { padding-top: 0; }
}

/* 모든 분야(10-05)라 건수가 네 자리 — 좁은 화면에서 숫자 칸 넷이 숫자를 끊지 않게 두 줄로 */
@media (max-width: 479px) {
  .bs-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bf-q { flex-basis: 100%; }
}
