/* DART 재무 스크리너 — 라이트 테마 한 벌 */

/* 본문 서체 — Pretendard Regular. OTF 원본(1.5MB)을 WOFF2 로 압축한 것(0.8MB, 글리프 동일)을
   먼저 쓰고, 못 읽는 브라우저만 OTF 를 받는다.
   굵기는 이 한 벌만 쓰므로, 강조는 브라우저 합성 볼드 + 색/크기로 낸다. */
@font-face {
  font-family: "Pretendard";
  src: url("/static/fonts/Pretendard-Regular.woff2") format("woff2"),
       url("/static/fonts/Pretendard-Regular.otf") format("opentype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/* 테마 — 한양증권 CI (단일색: 딥 인디고, Purple 그라데이션 포인트).
   라이트 한 벌만 쓴다 — 다크 모드는 2026-10-01 사용자 요청으로 없앴다 */
:root {
  color-scheme: light;
  --surface-1: #fdfdfe;
  --plane: #f4f3f9;
  --raised: #ffffff;
  --text-primary: #1a1733;
  --text-secondary: #4d4a63;
  --muted: #8a879c;
  --grid: #e4e2ee;
  --baseline: #c6c2da;
  --border: rgba(51, 41, 122, 0.14);
  --series-1: #4a3aa7;          /* CI 단일색 계열 (검증 팔레트 violet 슬롯) */
  --series-neg: #e34948;
  --good: #0ca30c;
  --critical: #d03b3b;
  --accent-soft: #e7e4f6;
  --row-hover: #e4e0f5;
  --row-alt: #f1eff9;           /* 표 짝수 행 줄무늬 */
  --ci-grad-a: #8b5cf6;         /* Purple CI 그라데이션 */
  --ci-grad-b: #33297a;
  --pick-bg: rgba(74, 58, 167, 0.10);
  /* CI 남색 면(상단 막대·요약 카드·남색 패널·창 머리) */
  --brand-a: #4a3aa7;
  --brand-b: #33297a;
}

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: "Pretendard", system-ui, -apple-system, "Segoe UI", "Malgun Gothic", sans-serif;
  font-size: 13px;
  background: var(--plane);
  color: var(--text-primary);
}

button, input, select, textarea { font: inherit; color: inherit; }

/* ------------------------------------------------------------ 로그인 */
#login {
  position: fixed;
  inset: 0;
  display: grid;
  place-items: center;
  background: var(--plane);
  z-index: 100;
}
#login .box {
  width: min(360px, 90vw);
  background: var(--surface-1);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 28px;
}
#login h1 { margin: 0 0 4px; font-size: 18px; }
#login p { margin: 0 0 18px; color: var(--text-secondary); font-size: 12px; }
#login input {
  width: 100%;
  padding: 9px 11px;
  border: 1px solid var(--baseline);
  border-radius: 7px;
  background: var(--raised);
  margin-bottom: 10px;
}
.btn {
  padding: 8px 14px;
  border: 1px solid var(--baseline);
  border-radius: 7px;
  background: var(--raised);
  cursor: pointer;
}
.btn:hover { background: var(--row-hover); }
.btn.primary {
  background: var(--series-1);
  border-color: var(--series-1);
  color: #fff;
  font-weight: 600;
}
.btn.primary:hover { filter: brightness(1.08); }
.btn.sm { padding: 4px 9px; font-size: 12px; }
.btn.danger:not(:disabled) { color: var(--critical); border-color: var(--critical); }
.btn:disabled { opacity: .45; cursor: default; }
.err { color: var(--critical); font-size: 12px; min-height: 16px; }

/* ------------------------------------------------------------ 레이아웃 */
header {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 18px;
  /* 상단 막대는 CI 딥 인디고로 채운다 — 라이트·다크 동일 */
  background: linear-gradient(100deg, var(--brand-a), var(--brand-b));
  color: #fff;
  position: sticky;
  top: 0;
  z-index: 20;
}
header h1 { margin: 0; font-size: 15px; font-weight: 650; }
header h1.brand { display: flex; align-items: center; gap: 9px; color: #fff; }
/* 남색 막대 위에서는 로고 배지를 흰 바탕으로 뒤집는다 */
header .cimark { background: #fff; color: var(--brand-a); }
/* 남색 면 위의 버튼(상단 막대, 상세·휴지통·입력 창 머리) */
header .btn, .dhead .btn {
  background: transparent;
  border-color: rgba(255, 255, 255, 0.45);
  color: #fff;
}
header .btn:hover, .dhead .btn:hover { background: rgba(255, 255, 255, 0.14); }
.dhead .btn.primary { background: #fff; border-color: #fff; color: var(--brand-b); }
.dhead .btn.primary:hover { background: #ecebf7; filter: none; }
.dhead select option { color: #1a1733; background: #fff; }
/* 상세·휴지통 패널과 입력 창의 머리줄 */
#detail .dhead, #trash .dhead, #dlg .dhead {
  background: linear-gradient(100deg, var(--brand-a), var(--brand-b));
  color: #fff;
  border-bottom-color: transparent;
}
#dlg .dhead { border-radius: 12px 12px 0 0; }
.cimark {
  font-weight: 900;
  font-size: 17px;
  font-style: italic;
  letter-spacing: 1px;
  padding: 2px 8px 3px 6px;
  border-radius: 6px;
  color: #fff;
  background: linear-gradient(120deg, var(--ci-grad-a), var(--ci-grad-b));
}
.tabs { display: flex; gap: 2px; }
.tab {
  border: none;
  background: none;
  padding: 6px 12px;
  border-radius: 7px;
  cursor: pointer;
  color: rgba(255, 255, 255, 0.78);
  font-size: 13px;
}
.tab:hover { background: rgba(255, 255, 255, 0.14); color: #fff; }
/* 선택된 탭: 남색 막대 위의 흰 칸 */
.tab.on, .tab.on:hover {
  background: #fff;
  color: #33297a;
  font-weight: 600;
}
header .spacer { flex: 1; }

main { padding: 14px 18px 40px; }

.panel {
  background: var(--surface-1);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 12px 14px;
  margin-bottom: 12px;
}
.panel h2 {
  margin: 0 0 10px;
  font-size: 15px;            /* 12px 회색이라 잘 안 보인다는 지적(2026-10-21) — PC·휴대폰 모두 키움 */
  font-weight: 700;
  color: var(--text-primary);
  text-transform: none;
}
.panel h2 .stat { font-size: 12.5px; font-weight: 400; }

.row { display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: flex-end; }
.field { display: flex; flex-direction: column; gap: 4px; }
.field > label { font-size: 11px; color: var(--muted); }
.field select, .field input {
  padding: 6px 9px;
  border: 1px solid var(--baseline);
  border-radius: 6px;
  background: var(--raised);
  min-width: 110px;
}

.chips { display: flex; flex-wrap: wrap; gap: 6px; }
.chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 9px;
  border: 1px solid var(--baseline);
  border-radius: 999px;
  background: var(--raised);
  cursor: pointer;
  font-size: 12px;
  user-select: none;
}
.chip.on {
  background: var(--accent-soft);
  border-color: var(--series-1);
  color: var(--text-primary);
}
.chip .n { color: var(--muted); font-size: 11px; }
/* .field 안의 체크박스 칩은 내용 폭만 차지하게 (칼럼 정렬로 늘어나지 않도록) */
.field > .chip { align-self: flex-start; }

/* ------------------------------------------------------------ 조건 빌더 */
.cond {
  display: flex;
  gap: 6px;
  align-items: center;
  margin-bottom: 6px;
  flex-wrap: wrap;
}
.cond select, .cond input { padding: 5px 8px; border: 1px solid var(--baseline); border-radius: 6px; background: var(--raised); }
.cond .unit { color: var(--muted); font-size: 11px; min-width: 34px; }
.cond .x { border: none; background: none; color: var(--muted); cursor: pointer; font-size: 15px; padding: 0 4px; }
.cond .x:hover { color: var(--critical); }

.presets { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }

/* ------------------------------------------------------------ 표 */
.tablewrap {
  overflow: auto;
  max-height: calc(100vh - 330px);
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface-1);
}
table { border-collapse: separate; border-spacing: 0; width: 100%; }
th, td {
  padding: 6px 10px;
  text-align: right;
  white-space: nowrap;
  border-bottom: 1px solid var(--grid);
}
th {
  position: sticky;
  top: 0;
  background: var(--surface-1);
  color: var(--text-secondary);
  font-weight: 600;
  font-size: 11.5px;
  cursor: pointer;
  border-bottom: 1px solid var(--baseline);
  z-index: 2;
}
th:hover { color: var(--text-primary); }
th .dir { color: var(--series-1); }
td.num, th.num { font-variant-numeric: tabular-nums; }
td.name, th.name { text-align: left; }
th.name, td.name { position: sticky; left: 0; background: var(--surface-1); z-index: 1; }
th.name { z-index: 3; }
/* 행 구분 줄무늬 — 짝수 행만 연한 색 (사용자 요청 2026-10-08). :where 로 우선순위를 낮춰
   셀 표시색(SEIBRO 대체·엑셀 보정·추출 실패 등)·마우스 올림·선택 행이 그대로 이기게 한다.
   회사 열(td.name)은 고정 열이라 바탕을 따로 갖고 있어 같은 색을 한 번 더 준다. */
:where(tbody tr:nth-child(even)) > td { background: var(--row-alt); }
:where(tbody tr:nth-child(even)) > td.name { background: var(--row-alt); }
tbody tr:hover td { background: var(--row-hover); }
tbody tr { cursor: pointer; }
td .code { color: var(--muted); font-size: 11px; margin-left: 6px; font-variant-numeric: tabular-nums; }
td .tag {
  display: inline-block;
  padding: 0 5px;
  border-radius: 4px;
  border: 1px solid var(--border);
  color: var(--text-secondary);
  font-size: 10.5px;
  margin-left: 6px;
}
.neg { color: var(--critical); }

/* 철회된 발행 건: 취소선 + 빨간색 */
tr.withdrawn td { text-decoration: line-through; color: var(--critical); }
tr.withdrawn td .code, tr.withdrawn td .tag { color: var(--critical); }

/* 셀 선택 + 수기 수정 표시 (수정값은 초록 — 엑셀 관례와 동일) */
td.cellsel { outline: 2px solid var(--series-1); outline-offset: -2px; }
td.edited { color: #00b050; font-weight: 600; }
/* 자동 추출 실패 — 수기 확인 필요 (검증 팔레트의 yellow 슬롯 틴트) */
td.review { background: rgba(237, 161, 0, 0.22); cursor: pointer; }
/* SEIBRO(예탁결제원) 확정치로 대체된 셀 — DART 파싱값과 달라진 것만 */
td.ksd { background: rgba(208, 59, 59, 0.16); cursor: pointer; }
td.ksd::after { content: "*"; color: var(--critical); font-weight: 700; margin-left: 3px; }
/* 최저조정가액에서 역산한 리픽싱 Floor */
td.derived { background: rgba(12, 163, 12, 0.15); cursor: pointer; }
td.derived::after { content: "1"; color: #0ca30c; font-weight: 700; margin-left: 3px; }
td.treasury { text-decoration: underline dotted #8a6d00; text-underline-offset: 3px; cursor: help; }
/* 팀 관리 엑셀에서 채운 셀 (자동 추출 실패분 보정) */
td.xlsx { background: rgba(42, 120, 214, 0.18); cursor: pointer; }
td.xlsx::after { content: "†"; color: #2a78d6; font-weight: 700; margin-left: 3px; }
/* KSD 대조가 안 된 행(채권코드 미매칭) — 값은 DART 추정치 */
tbody tr.nomatch td.name { color: var(--muted); }
tr.withdrawn td.edited { color: #00b050; }

/* 행 선택 체크박스 (회사 열 안쪽 — 가로 스크롤해도 같이 붙어 있게) */
input.rowpick { margin: 0 7px 0 0; vertical-align: -1px; cursor: pointer; accent-color: var(--series-1); }
tbody tr.picked td { background: var(--pick-bg); }
tbody tr.picked:hover td { background: var(--pick-bg); }
.empty { padding: 34px; text-align: center; color: var(--muted); }

/* ------------------------------------------------------------ 페이지 넘김 */
.pager {
  display: flex; align-items: center; flex-wrap: wrap; gap: 8px;
  margin: 9px 2px 0;
}
.pager:empty { display: none; }
.pager .pgsize {
  padding: 4px 8px; border: 1px solid var(--baseline);
  border-radius: 6px; background: var(--raised); font-size: 12px;
}
.pager .pgnav { display: flex; align-items: center; gap: 3px; flex-wrap: wrap; }
.pager .pg {
  min-width: 28px; padding: 4px 8px;
  border: 1px solid var(--baseline); border-radius: 6px;
  background: var(--raised); cursor: pointer;
  font-size: 12px; font-variant-numeric: tabular-nums;
}
.pager .pg:hover:not(:disabled) { background: var(--row-hover); }
.pager .pg:disabled { opacity: .4; cursor: default; }
.pager .pg.on {
  background: var(--series-1); border-color: var(--series-1);
  color: #fff; font-weight: 600; opacity: 1; cursor: default;
}
.pager .pgdots { color: var(--muted); padding: 0 2px; }
.pager .pginfo { color: var(--muted); font-size: 11.5px; margin-left: auto; }

.summary { display: flex; align-items: center; gap: 12px; margin: 2px 0 8px; }
.summary .count { font-weight: 650; }
.summary .note { color: var(--muted); font-size: 11.5px; }

/* ------------------------------------------------------------ 휴지통 패널 */
#trash {
  position: fixed;
  top: 0; right: 0; bottom: 0;
  width: min(760px, 96vw);
  background: var(--surface-1);
  border-left: 1px solid var(--border);
  box-shadow: -8px 0 28px rgba(0, 0, 0, 0.18);
  transform: translateX(102%);
  transition: transform .18s ease-out;
  z-index: 61;
  display: flex;
  flex-direction: column;
}
#trash.open { transform: none; }
#trash .dhead {
  display: flex; align-items: center; gap: 10px;
  padding: 13px 16px; border-bottom: 1px solid var(--border);
}
#trash .dhead h2 { margin: 0; font-size: 16px; }
#trash .dbody { overflow: auto; padding: 14px 16px 30px; }
.trrow {
  display: flex; align-items: baseline; gap: 8px;
  padding: 8px 2px; border-bottom: 1px solid var(--grid); font-size: 12.5px;
}
.trrow .who { color: var(--muted); font-size: 11px; }
.trrow .spacer { flex: 1; }

/* ------------------------------------------------------------ 상세 패널 */
#detail {
  position: fixed;
  top: 0; right: 0; bottom: 0;
  width: min(920px, 96vw);
  background: var(--surface-1);
  border-left: 1px solid var(--border);
  box-shadow: -8px 0 28px rgba(0, 0, 0, 0.18);
  transform: translateX(102%);
  transition: transform .18s ease-out;
  z-index: 60;
  display: flex;
  flex-direction: column;
}
#detail.open { transform: none; }
#detail .dhead {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 13px 16px;
  border-bottom: 1px solid var(--border);
}
#detail .dhead h2 { margin: 0; font-size: 16px; }
#detail .dbody { overflow: auto; padding: 14px 16px 30px; }
#detail .meta { color: var(--text-secondary); font-size: 12px; margin-bottom: 14px; }
#detail .meta span + span::before { content: "·"; margin: 0 7px; color: var(--muted); }

.charts { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; margin-bottom: 18px; }
.chartcard { border: 1px solid var(--border); border-radius: 9px; padding: 10px 12px 6px; background: var(--surface-1); }
.chartcard h3 { margin: 0 0 2px; font-size: 12px; font-weight: 650; }
.chartcard .sub { margin: 0 0 6px; font-size: 11px; color: var(--muted); }
.chartcard svg { display: block; width: 100%; height: auto; overflow: visible; }
.chartcard .tick { fill: var(--muted); font-size: 9.5px; font-variant-numeric: tabular-nums; }
.chartcard .gridline { stroke: var(--grid); stroke-width: 1; }
.chartcard .axis { stroke: var(--baseline); stroke-width: 1; }
.chartcard .bar { fill: var(--series-1); }
.chartcard .bar.negative { fill: var(--series-neg); }
.chartcard .line { fill: none; stroke: var(--series-1); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.chartcard .dot { fill: var(--series-1); stroke: var(--surface-1); stroke-width: 2; }
.chartcard .hit { fill: transparent; cursor: pointer; }
.chartcard .bar:hover { filter: brightness(1.12); }

#tip {
  position: fixed;
  pointer-events: none;
  background: var(--raised);
  border: 1px solid var(--baseline);
  border-radius: 7px;
  padding: 6px 9px;
  font-size: 11.5px;
  box-shadow: 0 4px 14px rgba(0, 0, 0, .16);
  opacity: 0;
  transition: opacity .1s;
  z-index: 200;
  white-space: nowrap;
}
#tip.on { opacity: 1; }
#tip b { font-variant-numeric: tabular-nums; }

.subtabs { display: flex; gap: 6px; margin: 6px 0 10px; }
.subtabs .chip { border-radius: 6px; }

.dtable { width: 100%; font-size: 12px; }
.dtable th, .dtable td { border-bottom: 1px solid var(--grid); padding: 5px 8px; }
.dtable th.name, .dtable td.name { position: static; }
.sjhead td {
  background: var(--plane);
  font-weight: 650;
  color: var(--text-secondary);
  text-align: left;
}

.backdrop {
  position: fixed; inset: 0;
  background: rgba(0, 0, 0, .28);
  z-index: 50;
  opacity: 0; pointer-events: none;
  transition: opacity .18s;
}
.backdrop.on { opacity: 1; pointer-events: auto; }

/* ------------------------------------------------------------ 마이페이지 (2026-10-27) */
#myPop {
  position: fixed; top: 54px; right: 14px; z-index: 60;
  width: min(300px, calc(100vw - 32px));
  background: var(--surface-1); border: 1px solid var(--border); border-radius: 12px;
  box-shadow: 0 14px 36px rgba(0, 0, 0, .22); padding: 14px 16px 12px; font-size: 12.5px;
}
#myPop .my-head { display: flex; align-items: center; gap: 8px; }
#myPop .my-head b { font-size: 15px; color: var(--text-primary); }
#myPop .my-mail { color: var(--text-secondary); margin: 3px 0 10px; overflow-wrap: anywhere; }
#myPop .my-info {
  display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 6px 14px; margin: 0;
  padding: 10px 0; border-top: 1px solid var(--grid); border-bottom: 1px solid var(--grid);
}
#myPop .my-info:empty { display: none; }
#myPop .my-info dt { color: var(--muted); }
#myPop .my-info dd { margin: 0; color: var(--text-primary); text-align: right; }
#myPop .my-foot { display: flex; align-items: center; gap: 8px; margin-top: 12px; }

/* ------------------------------------------------------------ 신주인수권증서 (2026-10-27) */
.rt-table td.num .rp { display: block; font-size: 10.5px; color: var(--muted); line-height: 1.2; }
.rt-table td.num .rp.hi { color: var(--critical); }
.rt-table td.blk { cursor: help; }
.rt-table th.grp { text-align: center; border-bottom: 1px solid var(--grid); }
/* 추이 차트 (2026-10-27) — 블록딜 Premium(남색)·증서 종가 ÷ 이론가치(주황), 점 = 증서, 선 = 최근 3개월 평균 */
.rt-charts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.rt-charts .panel { margin-bottom: 12px; }
@media (max-width: 760px) { .rt-charts { grid-template-columns: minmax(0, 1fr); gap: 0; } }
.rt-chart-card { padding: 10px 14px 4px; }
.rt-chart .ln { stroke: var(--series-1); }
.rt-chart .pt.mk { fill: var(--series-1); }
.rt-chart-head { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; }
.rt-chart-head b { font-size: 14px; color: var(--text-primary); }
.rt-chart-head .rt-legend { margin: 0; }
.rt-chart { position: relative; }
.rt-chart svg { display: block; width: 100%; }
.rt-chart .ax { font-size: 11px; fill: var(--muted); font-variant-numeric: tabular-nums; }
.rt-chart .gl { stroke: var(--grid); stroke-width: 1; }
.rt-chart .ref { stroke: var(--baseline); stroke-width: 1.5; stroke-dasharray: 4 4; }
.rt-chart .reflab { font-size: 11px; fill: var(--text-secondary); }
.rt-chart .ln { fill: none; stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.rt-chart .pt { stroke: var(--surface-1); stroke-width: 1.5; }
.rt-chart .s-block { --c: #4a3aa7; }
.rt-chart .s-close { --c: #eb6834; }
.rt-chart .ln.s-block, .rt-chart .ln.s-close { stroke: var(--c); }
.rt-chart .pt.s-block, .rt-chart .pt.s-close { fill: var(--c); fill-opacity: .45; }
.rt-chart .pt.on { fill-opacity: 1; }
.rt-chart .pt.over { fill: var(--surface-1); fill-opacity: 1; stroke: var(--c); stroke-width: 2; }
.rt-chart .dl { font-size: 12px; font-weight: 650; fill: var(--text-primary); font-variant-numeric: tabular-nums; }
.rt-chart .cross { stroke: var(--baseline); stroke-width: 1; }
.rt-table td.rt-ex { color: var(--muted); text-decoration: line-through; }
.rt-legend { display: flex; gap: 16px; font-size: 12px; color: var(--text-secondary); margin: 2px 0 4px; flex-wrap: wrap; }
.rt-legend i { display: inline-block; width: 14px; height: 3px; border-radius: 2px; vertical-align: middle; margin-right: 6px; }

/* ------------------------------------------------------------ 수집 패널 */
#collect .bar {
  height: 7px;
  background: var(--grid);
  border-radius: 4px;
  overflow: hidden;
  margin: 8px 0 6px;
}
#collect .bar > i { display: block; height: 100%; background: var(--series-1); border-radius: 4px; }
#collect pre {
  margin: 6px 0 0;
  font-size: 11px;
  color: var(--text-secondary);
  white-space: pre-wrap;
  font-family: ui-monospace, Consolas, monospace;
}
details > summary { cursor: pointer; color: var(--text-secondary); font-size: 12px; }
.hide { display: none !important; }
.spin { color: var(--muted); font-size: 12px; }

/* ------------------------------------------------------------ 파이프라인 */
/* minmax(0,…) — 그냥 1fr 이면 칸이 표 내용 폭(min-content)만큼 늘어나
   좁은 화면에서 즐겨찾기 표·달력이 화면 밖으로 밀려난다 */
.pipe-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; }
.pipe-grid > .panel { min-width: 0; }
@media (max-width: 1000px) { .pipe-grid { grid-template-columns: minmax(0, 1fr); } }

.star {
  cursor: pointer;
  color: var(--muted);
  margin-right: 5px;
  font-size: 14px;
  user-select: none;
}
.star.on { color: #eda100; }
.star:hover { transform: scale(1.2); }

.stale { color: var(--critical); font-weight: 600; }

/* 파이프라인 담당 RM — 칸을 눌러 바로 입력 */
.rmcell { cursor: text; white-space: nowrap; }
.rmcell.muted { color: var(--muted); }
.rmcell:hover { text-decoration: underline dotted; }
.rmcell input { width: 7em; font: inherit; padding: 1px 4px; }

/* 캘린더 */
#calendar { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
#calendar .dow {
  text-align: center;
  font-size: 10.5px;
  color: var(--muted);
  padding: 3px 0;
}
#calendar .day {
  min-height: 52px;
  border: 1px solid var(--grid);
  border-radius: 6px;
  padding: 3px 5px;
  font-size: 11px;
  color: var(--text-secondary);
  /* 빈 날도 눌러서 그 자리에 활동을 넣을 수 있다 */
  cursor: pointer;
  user-select: none;          /* 더블클릭이 날짜 숫자를 드래그 선택하지 않게 */
  background: var(--surface-1);
}
#calendar .day.out { opacity: .35; }
#calendar .day.today { border-color: var(--series-1); }
#calendar .day:hover { background: var(--row-hover); }
#calendar .day.sel { background: var(--accent-soft); }
#calendar .dots { display: flex; flex-wrap: wrap; gap: 2px; margin-top: 3px; }
.catdot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
/* 단계별 색: 검증된 카테고리 팔레트 슬롯 순서 (blue,orange,aqua,yellow,magenta) */
.cat-0 { background: #2a78d6; }
.cat-1 { background: #eb6834; }
.cat-2 { background: #1baf7a; }
.cat-3 { background: #eda100; }
.cat-4 { background: #e87ba4; }

.notecard {
  border: 1px solid var(--grid);
  border-radius: 7px;
  padding: 7px 10px;
  margin-bottom: 6px;
  font-size: 12px;
}
.notecard .nhead { display: flex; gap: 8px; align-items: center; color: var(--text-secondary); font-size: 11px; margin-bottom: 3px; }
.notecard .x { margin-left: auto; border: none; background: none; color: var(--muted); cursor: pointer; }
.notecard .x:hover { color: var(--critical); }
.notebody { white-space: pre-wrap; }

.noteform { display: flex; gap: 6px; flex-wrap: wrap; align-items: flex-start; margin: 8px 0 10px; }
.noteform select, .noteform input, .noteform textarea {
  padding: 6px 8px; border: 1px solid var(--baseline); border-radius: 6px; background: var(--raised);
}
.noteform textarea { flex: 1; min-width: 200px; min-height: 34px; resize: vertical; }

/* 메모 카드 안에서 펼치는 수정 폼 */
.noteedit {
  display: flex; gap: 6px; flex-wrap: wrap; align-items: flex-start;
  margin-top: 6px; padding-top: 6px; border-top: 1px dashed var(--grid);
}
.noteedit select, .noteedit input, .noteedit textarea {
  padding: 5px 8px; border: 1px solid var(--baseline); border-radius: 6px; background: var(--raised);
}
.noteedit textarea { flex: 1; min-width: 180px; min-height: 46px; resize: vertical; }

/* 선택한 날짜 머리줄 */
.dayhead {
  display: flex; align-items: center; gap: 8px;
  font-size: 12px; margin-bottom: 6px;
}
.dayhead .spacer { flex: 1; }

/* 비상장·직접등록 같은 짧은 표식 (표·검색 결과 공용) */
.pill.mark { margin-left: 6px; }
.rowbtn {
  margin-left: 6px; cursor: pointer; color: var(--muted);
  font-size: 12px; user-select: none;
}
.rowbtn:hover { color: var(--text-primary); }

/* 회사 검색 위젯 */
.corppick input[type="search"] {
  width: 100%; padding: 6px 9px;
  border: 1px solid var(--baseline); border-radius: 6px; background: var(--raised);
}
.corppick-sel, .corppick-row {
  display: flex; align-items: center; gap: 6px;
  font-size: 12px; padding: 6px 8px;
}
.corppick-sel {
  border: 1px solid var(--series-1); border-radius: 6px; background: var(--accent-soft);
}
.corppick-sel .btn { margin-left: auto; }
.corppick-list {
  margin-top: 6px; max-height: 220px; overflow: auto;
  border: 1px solid var(--grid); border-radius: 7px;
}
.corppick-row { border-bottom: 1px solid var(--grid); cursor: pointer; }
.corppick-row:last-child { border-bottom: none; }
.corppick-row:hover { background: var(--row-hover); }
.corppick-row .spacer { flex: 1; }
.corppick-list > .stat { padding: 8px; }

/* 날짜 상세 다이얼로그의 활동 카드 */
.daycard {
  border: 1px solid var(--grid); border-radius: 8px;
  padding: 9px 11px; margin-bottom: 8px;
}
.daycard .nhead {
  display: flex; gap: 8px; align-items: center;
  color: var(--text-secondary); font-size: 11px; margin-bottom: 7px;
}
.daycard .nhead .x { border: none; background: none; color: var(--muted); cursor: pointer; }
.daycard .nhead .x:hover { color: var(--critical); }

#dlg .dbody h3.dlgsec {
  font-size: 12px; margin: 16px 0 8px;
  padding-top: 12px; border-top: 1px solid var(--border);
}
#dlg .dbody > .hint { font-size: 11px; color: var(--muted); margin-bottom: 10px; }

.corpmemo {
  font-size: 12px; color: var(--text-secondary);
  border-left: 2px solid var(--grid); padding-left: 8px; margin: 8px 0 12px;
}

/* 개요 만들기 진행률 — 버튼 배경이 --p 만큼 차오르고, 옆에 지금 단계를 적는다 */
.dhead .btn.primary.busy {
  min-width: 9.5em; filter: none; cursor: progress; opacity: 1;
  background: linear-gradient(90deg, #d6d3f0 var(--p, 0%), #fff var(--p, 0%));
}
.ovstep { font-size: 11px; color: rgba(255, 255, 255, 0.85); white-space: nowrap; }
.ovstep:empty { display: none; }

/* 개요 생성 결과 안내 — 워드에서 손봐야 할 항목을 그대로 나열한다 */
.ovnote {
  border: 1px solid var(--grid); border-left: 3px solid var(--series-1);
  border-radius: 4px; padding: 8px 10px; margin: 0 0 12px; font-size: 12px;
  background: var(--raised);
}
.ovnote.bad { border-left-color: var(--critical); }
.ovnote .nhead { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.ovnote .x {
  margin-left: auto; border: none; background: none; color: var(--muted);
  cursor: pointer; font-size: 12px;
}
.ovnote .x:hover { color: var(--critical); }
.ovnote ul { margin: 0; padding-left: 16px; color: var(--text-secondary); }
.ovnote li { margin: 2px 0; }

/* ------------------------------------------------------------ 홈 */
.home-hero { display: flex; align-items: flex-end; gap: 14px; flex-wrap: wrap; }
.home-hero .spacer { flex: 1; }
.hero-t { font-size: 16px; font-weight: 650; }
.hero-s { color: var(--muted); font-size: 11.5px; margin-top: 4px; }
/* 브리핑 박스 맨 아래 오른쪽 — 관리자용 브리핑 메일 */
.hero-foot {
  flex-basis: 100%;
  display: flex; align-items: center; justify-content: flex-end; gap: 12px;
  padding-top: 8px; border-top: 1px dashed var(--grid);
}
.hero-foot a.stat { color: var(--series-1); font-size: 12px; }

/* 섹션 제목 + 우측 이동 버튼 */
.panel h2.hrow { display: flex; align-items: center; gap: 8px; }
.panel h2.hrow .spacer { flex: 1; }

/* 홈의 표는 스크롤 없이 훑어보는 용도라 낮게 잡는다 */
.home-tw { max-height: 340px; }

.kpis {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(168px, 1fr));
  gap: 10px;
  margin-bottom: 12px;
}
/* 요약 카드(홈 KPI·부서 실적)는 상단 막대와 같은 CI 남색 면 — 라이트·다크 동일 */
.kpi {
  background: linear-gradient(120deg, var(--brand-a), var(--brand-b));
  border: 1px solid transparent;
  border-radius: 10px;
  padding: 10px 13px;
  color: #fff;
}
.kpi .k { font-size: 11px; color: rgba(255, 255, 255, 0.72); }
.kpi .v {
  font-size: 20px;
  font-weight: 650;
  margin-top: 3px;
  font-variant-numeric: tabular-nums;
}
.kpi .v .u { font-size: 12px; font-weight: 400; color: rgba(255, 255, 255, 0.8); margin-left: 3px; }
.kpi .s { font-size: 11px; color: rgba(255, 255, 255, 0.8); margin-top: 3px; }
/* 경고 카드: 남색 위에서도 읽히는 밝은 빨강 테두리·숫자 */
.kpi.alert { border-color: #ff9b9b; box-shadow: inset 0 0 0 1px #ff9b9b; }
.kpi.alert .v { color: #ffc2c2; }
.kpi.clickable { cursor: pointer; }
.kpi.clickable:hover { filter: brightness(1.12); }

/* 스크리너 순번 — 네 자리(2,600위대)까지 칸이 흔들리지 않게 */
td .rank.wide { min-width: 34px; text-align: right; margin-right: 6px; }

/* 순위·D-day 같은 짧은 표식 */
td .rank {
  display: inline-block;
  min-width: 18px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  margin-right: 6px;
}
.dday { font-weight: 600; }
.dday.soon { color: var(--critical); }
.pill {
  display: inline-block;
  padding: 0 6px;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: var(--plane);
  font-size: 10.5px;
  color: var(--text-secondary);
}
.pill.hot { border-color: var(--critical); color: var(--critical); }

/* ------------------------------------------------------------ 부서 실적 */
/* 실적 추가·수정 다이얼로그 (상세 패널과 달리 폼이라 가운데에 띄운다) */
#dlg {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%) scale(.97);
  width: min(620px, 94vw);
  max-height: 88vh;
  background: var(--surface-1);
  border: 1px solid var(--border);
  border-radius: 12px;
  box-shadow: 0 18px 48px rgba(0, 0, 0, .28);
  z-index: 70;
  display: none;
  flex-direction: column;
}
#dlg.open { display: flex; transform: translate(-50%, -50%) scale(1); }
#dlg .dhead {
  display: flex; align-items: center; gap: 10px;
  padding: 13px 16px; border-bottom: 1px solid var(--border);
}
#dlg .dhead h2 { margin: 0; font-size: 15px; }
#dlg .dbody { overflow: auto; padding: 14px 16px; }
#dlg .dfoot {
  display: flex; align-items: center; gap: 10px;
  padding: 11px 16px; border-top: 1px solid var(--border);
}
#dlg .dfoot .spacer { flex: 1; }

.formgrid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 14px; }
.formgrid .wide { grid-column: 1 / -1; }
.formgrid label { display: block; font-size: 11px; color: var(--muted); margin-bottom: 4px; }
.formgrid input, .formgrid select, .formgrid textarea {
  width: 100%;
  padding: 6px 9px;
  border: 1px solid var(--baseline);
  border-radius: 6px;
  background: var(--raised);
}
.formgrid textarea { min-height: 54px; resize: vertical; }
/* 위 width:100% 가 체크박스까지 늘려 옆 글자가 여러 줄로 밀리던 것 */
.formgrid input[type="checkbox"] { width: auto; padding: 0; flex: none; }
.formgrid .hint { font-size: 10.5px; color: var(--muted); margin-top: 3px; }

/* 소개서에서 제외된 행은 흐리게 */
tbody tr.excluded td { opacity: .5; }
td .catmark {
  display: inline-block;
  min-width: 44px;
  padding: 0 6px;
  border-radius: 4px;
  font-size: 10.5px;
  text-align: center;
  border: 1px solid var(--border);
  color: var(--text-secondary);
}
td .catmark.ro { border-color: var(--series-1); color: var(--series-1); }

/* 공모 딜 진행중(신고·가격확정) 태그 */
td .tag.live { color: var(--series-1); border-color: currentColor; }

/* ------------------------------------------------------------ 소원수리함 */
/* 홈 상단: 왼쪽 = 브리핑 + KPI 2×2, 오른쪽 절반 = 소원수리함 */
.home-top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 12px;
  margin-bottom: 12px;
}
.home-left > .panel { margin-bottom: 10px; }
/* 요약 카드 3장(메자닌·공모 유상증자·풋만기) — 팔로업 카드는 2026-10-02 뺐다 */
.home-left .kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-bottom: 0; }
/* 높이는 왼쪽 칸에 맞춘다 — contain:size 로 자기 내용 때문에 줄이 늘어나지 않게 하고,
   목록은 남는 높이 안에서 스크롤한다 */
#fbPanel {
  display: flex; flex-direction: column;
  contain: size; min-height: 300px; margin-bottom: 0;
}
/* 일반 사용자: 브리핑 박스에 관리자용 메일 줄이 없어 왼쪽이 낮다 — 최소 높이를 풀어
   왼쪽(브리핑 + 요약 카드) 높이에 맞추고, 목록은 그 안에서 스크롤한다 */
body:not(.is-admin) #fbPanel { min-height: 0; }
body:not(.is-admin) .fbform textarea { height: 40px; }
#fbPanel h2 { margin-bottom: 8px; }
.fbform { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.fbform select {
  padding: 6px 9px; border: 1px solid var(--baseline); border-radius: 6px;
  background: var(--raised);
}
.fbform .btn.primary { margin-left: auto; }
.fbform textarea {
  order: 3; flex: 1 1 100%;
  height: 54px; min-height: 40px; resize: vertical;
  padding: 6px 9px; border: 1px solid var(--baseline); border-radius: 6px;
  background: var(--raised); font: inherit; color: inherit;
  transition: height .12s;
}
.fbform textarea:focus, .fbform textarea.filled { height: 96px; }
#fbMsg { margin-top: 4px; min-height: 0; }
#fbMsg:empty { display: none; }
.fbhead {
  margin: 10px 0 6px; padding-top: 8px; border-top: 1px solid var(--grid);
  font-size: 12px; font-weight: 650; color: var(--text-secondary);
}
.fbhead .stat { font-weight: 400; color: var(--muted); margin-left: 4px; }
.fbhead .stat.hot { color: var(--critical); font-weight: 600; }
#fbList { flex: 1; min-height: 0; overflow: auto; }

@media (max-width: 1000px) {
  .home-top { grid-template-columns: minmax(0, 1fr); }
  #fbPanel { contain: none; min-height: 0; }
  #fbList { flex: none; max-height: 360px; }
}
.fbcard .nhead { flex-wrap: wrap; }
.fbreply {
  margin-top: 6px; padding: 6px 9px; border-radius: 6px;
  background: var(--accent-soft); white-space: pre-wrap;
}
.pill.fbst-new { border-color: var(--critical); color: var(--critical); }
.pill.fbst-review { border-color: #eda100; color: #b57b00; }
.pill.fbst-done { border-color: var(--good); color: var(--good); }

/* ------------------------------------------------------------ 모바일 */
/* 표는 칼럼이 많아 줄이지 않고 가로 스크롤로 본다(회사 칸은 왼쪽에 고정).
   나머지(헤더·필터·패널·다이얼로그)를 좁은 화면에 맞춘다. */
@media (max-width: 760px) {
  body { font-size: 13.5px; }
  /* iOS 는 16px 미만 입력칸에 포커스하면 화면을 확대한다 */
  input, select, textarea, .field select, .field input { font-size: 16px; }

  header {
    flex-wrap: wrap;
    gap: 6px 8px;
    padding: 8px 10px 0;
  }
  header h1 { font-size: 14px; }
  header .spacer { flex: 1; }
  header > .btn.sm { padding: 5px 8px; }
  /* 탭은 둘째 줄 전체 폭, 넘치면 가로로 밀어서 본다 */
  .tabs {
    order: 10;
    width: 100%;
    overflow-x: auto;
    flex-wrap: nowrap;
    padding-bottom: 6px;
    scrollbar-width: none;
  }
  .tabs::-webkit-scrollbar { display: none; }
  .tab { flex: 0 0 auto; padding: 7px 11px; }

  main { padding: 10px 10px 32px; }
  .panel { padding: 10px 11px; border-radius: 9px; }

  /* 필터 줄: 칸이 화면 폭을 나눠 쓰게 */
  .row { gap: 8px 10px; }
  .row .field { flex: 1 1 140px; min-width: 0; }
  .field select, .field input { min-width: 0; width: 100%; }
  .row .spacer { display: none; }
  .row > .btn.primary { flex: 1 1 auto; }

  .panel h2.hrow { flex-wrap: wrap; row-gap: 6px; }
  .panel h2.hrow .stat { flex-basis: 100%; order: 5; }
  .panel h2 .stat { display: block; margin-top: 3px; font-weight: 400; }

  .summary { flex-wrap: wrap; gap: 4px 10px; }
  .tablewrap { max-height: 72vh; }
  .home-tw { max-height: 320px; }
  th, td { padding: 6px 8px; }
  /* 고정된 회사 칸이 화면을 다 먹지 않게 */
  td.name { max-width: 46vw; overflow: hidden; text-overflow: ellipsis; }

  .home-hero { align-items: stretch; }
  .home-hero > div:first-child { flex-basis: 100%; }
  .home-hero .field { flex: 1 1 130px; }
  .home-hero .spacer { display: none; }
  .kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
  .kpi .v { font-size: 18px; }

  .pager .pginfo { margin-left: 0; flex-basis: 100%; }

  /* 상세·휴지통 패널은 전체 화면으로 */
  #detail, #trash { width: 100vw; }
  #detail .dhead, #trash .dhead { flex-wrap: wrap; padding: 10px 12px; }
  #detail .dhead h2, #trash .dhead h2 { flex-basis: 100%; font-size: 15px; }
  #detail .dbody, #trash .dbody { padding: 12px 12px 30px; }
  .charts { grid-template-columns: 1fr; }

  #dlg { width: 96vw; max-height: 92vh; }
  #dlg .dfoot { flex-wrap: wrap; }
  .formgrid { grid-template-columns: 1fr; }

  #calendar .day { min-height: 40px; padding: 2px 3px; font-size: 10.5px; }
  .noteform textarea, .noteedit textarea { min-width: 0; flex-basis: 100%; }

  .fbform select { flex: 1 1 auto; }

  #tip { white-space: normal; max-width: 86vw; }
}

@media (max-width: 420px) {
  .brand-t { display: none; }
}

/* ------------------------------------------------------------ 스크리너 상단 */
/* 왼쪽 = 대상 기간·범위, 오른쪽 = 스크리닝 조건 */
.screen-top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 12px;
  margin-bottom: 12px;
}
.screen-top > .panel { margin-bottom: 0; }
@media (max-width: 1000px) {
  .screen-top { grid-template-columns: minmax(0, 1fr); }
}

/* 남색 패널 — 상단 막대·요약 카드와 같은 CI 면. 입력칸은 밝게 두고
   글자·칩·보조 버튼만 흰색 계열로 뒤집는다 */
.brand-panel {
  background: linear-gradient(120deg, var(--brand-a), var(--brand-b));
  border-color: transparent;
  color: #fff;
}
.brand-panel h2 { color: #fff; }
.brand-panel .field > label,
.brand-panel details > summary,
.brand-panel .stat,
.brand-panel .cond .unit { color: rgba(255, 255, 255, 0.78); }
.brand-panel .cond .x { color: rgba(255, 255, 255, 0.7); }
.brand-panel .cond .x:hover { color: #ffc2c2; }
.brand-panel .btn {
  background: transparent;
  border-color: rgba(255, 255, 255, 0.45);
  color: #fff;
}
.brand-panel .btn:hover { background: rgba(255, 255, 255, 0.14); }
.brand-panel .btn.primary { background: #fff; border-color: #fff; color: var(--brand-b); }
.brand-panel .btn.primary:hover { background: #ecebf7; filter: none; }
.brand-panel .chip {
  background: transparent;
  border-color: rgba(255, 255, 255, 0.45);
  color: #fff;
}
.brand-panel .chip .n { color: rgba(255, 255, 255, 0.65); }
.brand-panel .chip.on { background: #fff; border-color: #fff; color: var(--brand-b); }
.brand-panel .chip.on .n { color: var(--brand-a); }
.brand-panel input[type="checkbox"] { accent-color: #fff; }
.brand-panel .btn.danger:not(:disabled) { color: #ffc2c2; border-color: #ff9b9b; }
.brand-panel .btn:disabled { opacity: .5; }
/* 입력칸은 밝은 바탕 그대로 — 패널의 흰 글씨를 물려받지 않게 되돌린다 */
.brand-panel select, .brand-panel input:not([type="checkbox"]), .brand-panel textarea,
.brand-panel option, .brand-panel optgroup { color: var(--text-primary); }

/* ------------------------------------------------------------ 부서 실적 상단 */
/* 왼쪽 = 부서 소개서 + 실적 목록 필터, 오른쪽 = 요약 카드 2×2 (왼쪽 높이에 맞춰 늘린다) */
.dept-top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: 12px;
  margin-bottom: 12px;
}
.dept-left { display: flex; flex-direction: column; gap: 10px; }
.dept-left > .panel { margin-bottom: 0; }
.dept-left > .panel:last-child { flex: 1; }
.dept-top > .kpis {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-auto-rows: 1fr;
  margin-bottom: 0;
}
.dept-top > .kpis .kpi { display: flex; flex-direction: column; justify-content: center; }
@media (max-width: 1000px) {
  .dept-top { grid-template-columns: minmax(0, 1fr); }
  .dept-top > .kpis { order: -1; grid-auto-rows: auto; }
}

/* ------------------------------------------------------------ 홈 ①~⑤ 모바일 카드 */
/* 휴대폰은 가로가 좁으니 표를 옆으로 밀지 않고, 한 건 = 카드 한 장으로 세로로 쌓는다.
   카드에는 표의 모든 항목이 라벨:값으로 3열로 놓이고(긴 글은 한 줄 전체),
   처음 5건 뒤는 '더 보기'. */
.m-morebtn { display: none; }
.m-only { display: none; }
@media (max-width: 760px) {
  .cardable {
    max-height: none !important;   /* 즐겨찾기 표의 인라인 max-height 도 푼다 */
    overflow: visible;
    border: none; border-radius: 0; background: none;
  }
  .cardable table, .cardable tbody { display: block; width: 100%; }
  .cardable thead { display: none; }
  .cardable tbody tr {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 8px 10px;
    padding: 10px 12px;
    margin-bottom: 8px;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: var(--surface-1);
  }
  .cardable tbody tr:hover td { background: none; }
  .cardable tbody tr:active { background: var(--row-hover); }
  /* 카드 모양에서는 칸이 아니라 카드 단위로 번갈아 칠한다 (셀 표시색은 그대로) */
  :where(.cardable tbody tr) > td { background: transparent; }
  :where(.cardable tbody tr) > td.name { background: transparent; }
  .cardable tbody tr:nth-child(even) { background: var(--row-alt); }
  .cardable td {
    display: block; padding: 0; border: none;
    text-align: left; white-space: normal; background: none;
    position: static; max-width: none; overflow: visible;
    font-size: 13px; word-break: keep-all; overflow-wrap: anywhere;
  }
  .cardable td::before {
    content: attr(data-label);
    display: block; font-size: 10.5px; color: var(--muted); margin-bottom: 1px;
    font-weight: 400;   /* 값 칸이 굵거나 빨개도(.stale 등) 라벨은 그대로 */
  }
  /* 첫 칸(회사명)은 카드 제목 */
  .cardable td.name:first-child {
    grid-column: 1 / -1; position: static;
    max-width: none; overflow: visible;
    font-size: 14.5px; font-weight: 600;
    padding-bottom: 6px; border-bottom: 1px solid var(--grid);
  }
  .cardable td.name:first-child::before { content: none; }
  .cardable td.m-wide { grid-column: 1 / -1; color: var(--text-secondary); }
  .cardable:not(.m-expanded) tbody tr.m-extra { display: none; }
  .cardable .empty { padding: 20px 8px; }
  .cardable td:empty::after { content: '—'; color: var(--muted); }
  .cardable .d-only { display: none; }
  .cardable .m-only { display: inline; white-space: pre-wrap; }
  .cardable td .rank { min-width: 0; }
  .m-morebtn { display: block; width: 100%; padding: 8px; }
}

/* ------------------------------------------------------------ 접속 현황 (관리자) */
.presence-list { display: flex; flex-direction: column; gap: 6px; }
.presence-row {
  display: flex; align-items: center; flex-wrap: wrap; gap: 4px 12px;
  padding: 7px 10px; border: 1px solid var(--grid); border-radius: 8px;
  background: var(--raised); font-size: 12.5px;
}
.presence-row .presence-ago { margin-left: auto; }
.pill.presence-dev.pc { border-color: var(--series-1); color: var(--series-1); }
.pill.presence-dev.mobile { border-color: #1baf7a; color: #13865d; }

/* ------------------------------------------------------------ 홈 맨 아래 출처 표기 */
#login .remember { display: flex; align-items: center; gap: 6px; margin: 2px 0 8px; font-size: 12px;
  color: var(--text-secondary, #4d4a63); cursor: pointer; }
#login .remember input { width: auto; margin: 0; }
/* ---- 상세 패널 '최근 3년 자금조달' (2026-10-08) ---- */
.funding { margin: 4px 0 10px; }
.funding-wrap { overflow-x: auto; margin-top: 6px; }
.funding-t td, .funding-t th { font-size: 12px; }

/* ---- 상단 막대 수집 진행률 (관리자, 2026-10-08) ---- */
.collect-badge {
  position: relative; overflow: hidden; padding: 4px 10px; border-radius: 6px; font: inherit;
  font-size: 12px; color: #fff; cursor: pointer; white-space: nowrap;
  border: 1px solid rgba(255, 255, 255, 0.45); background: rgba(255, 255, 255, 0.10);
}
.collect-badge::before {         /* 진행 막대 — --p 만큼 채운다 */
  content: ""; position: absolute; inset: 0 auto 0 0; width: var(--p, 0%);
  background: rgba(255, 255, 255, 0.22); transition: width .6s ease;
}
.collect-badge > span { position: relative; }
/* 상단 막대가 좁으면 퍼센트만 (단계 이름은 마우스 올림에) */
@media (max-width: 1280px) { .collect-badge .cb-label { display: none; } }

/* ---- 상단 검색 · 기업 조회 (2026-10-06) ---- */
.hsearch { position: relative; }
header .hsearch input {
  width: 200px; padding: 5px 10px; border-radius: 6px; font: inherit; font-size: 12.5px;
  border: 1px solid rgba(255, 255, 255, 0.45); background: rgba(255, 255, 255, 0.14); color: #fff;
}
header .hsearch input::placeholder { color: rgba(255, 255, 255, 0.7); }
header .hsearch input:focus { outline: none; background: #fff; color: var(--text-primary); }
.hs-list {
  position: absolute; top: calc(100% + 4px); left: 0; z-index: 60; min-width: 280px; max-height: 360px;
  overflow: auto; background: var(--raised, #fff); border: 1px solid var(--grid); border-radius: 8px;
  box-shadow: 0 8px 24px rgba(26, 23, 51, .16); color: var(--text-primary);
}
header .hs-list { right: 0; left: auto; }
.hs-item { display: flex; align-items: baseline; gap: 8px; padding: 7px 12px; cursor: pointer; font-size: 13px; }
.hs-item:hover, .hs-item.on { background: #efedf9; }
.hs-meta { color: var(--muted); font-size: 11.5px; }
.hs-empty { padding: 10px 12px; color: var(--muted); font-size: 12.5px; }
.corp-q input { width: 320px; max-width: 100%; }
.corp-head .meta { display: flex; flex-wrap: wrap; gap: 6px 14px; color: var(--muted); font-size: 12.5px; }
.corp-kpis { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.corp-sub { font-size: 13px; margin: 10px 0 6px; }
#corpBody tr.dim td { color: var(--muted); }
#corpBody td.left, #corpBody th.left { text-align: left; }
@media (max-width: 760px) {
  header .hsearch input { width: 110px; }
  .corp-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.home-credit .home-src { font-size: 10.5px; margin-bottom: 3px; }
.home-credit {
  margin: 22px 0 4px;
  text-align: center;
  font-size: 11.5px;
  color: var(--muted);
  opacity: .8;
  letter-spacing: .2px;
}

/* ------------------------------------------------------------ 단순 조회(외부 열람자) */
/* 로그인 화면 '단순 조회로 둘러보기' 로 들어오면 body.guest — 팀원 전용 기능을 숨긴다.
   (서버도 auth.require_member 로 같은 기능을 막는다) */
.guest-entry { margin-top: 14px; padding-top: 12px; border-top: 1px dashed var(--grid); }
.guest-entry p { margin: 6px 0 0; font-size: 11px; color: var(--muted); text-align: center; }
.guest-badge {
  font-size: 11.5px; padding: 3px 9px; border-radius: 999px;
  border: 1px solid var(--on-brand-line, rgba(255, 255, 255, 0.45)); color: #fff;
}
body.guest .guest-hide,
body.guest input.rowpick,
body.guest .star { display: none !important; }

/* 상단 막대 이름 = 홈 버튼 */
header h1.brand { cursor: pointer; user-select: none; }
header h1.brand:hover .cimark { background: #ecebf7; }

/* ---- 기업 조회: 주가 차트 · 재무 추이 (2026-10-08) ---- */
#corpBody .hrow .subtabs { margin: 0; }
.corp-head .ovstep { color: var(--muted); }
.corp-head .btn.primary.busy {
  min-width: 9.5em; filter: none; cursor: progress; opacity: 1; color: var(--text-primary);
  background: linear-gradient(90deg, #d6d3f0 var(--p, 0%), var(--raised) var(--p, 0%));
}
.pchart { width: 100%; }
.pchart svg { display: block; overflow: visible; }
.pchart .tick { fill: var(--muted); font-size: 10.5px; font-variant-numeric: tabular-nums; }
.pchart .gridline { stroke: var(--grid); stroke-width: 1; }
.pchart .axis { stroke: var(--baseline); stroke-width: 1; }
.pchart .pline { fill: none; stroke: var(--series-1); stroke-width: 1.8; stroke-linejoin: round; }
.pchart .parea { fill: var(--series-1); opacity: 0.08; }
.pchart .pcross { stroke: var(--baseline); stroke-width: 1; stroke-dasharray: 3 3; pointer-events: none; }
.pchart .pdot { fill: var(--series-1); stroke: var(--surface-1, #fff); stroke-width: 2; pointer-events: none; }
.pchart .phit { fill: transparent; cursor: crosshair; }
.pchart .pcv { stroke: #c2410c; stroke-width: 1.2; stroke-dasharray: 5 4; pointer-events: none; }
.pchart .pcv-t { fill: #c2410c; font-size: 10.5px; font-weight: 600; pointer-events: none; paint-order: stroke; stroke: var(--surface-1); stroke-width: 3px; stroke-linejoin: round; }
.pchart .pev-l { stroke-width: 1; stroke-dasharray: 2 3; opacity: 0.55; pointer-events: none; }
.pchart .pev { cursor: pointer; stroke: var(--surface-1, #fff); stroke-width: 1; }
.pchart .ev-mezz { fill: #0f766e; stroke: #0f766e; }
.pchart .ev-ro { fill: #d97706; stroke: #d97706; }
.pchart .pev.ev-mezz, .pchart .pev.ev-ro { stroke: #fff; }
.plegend { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 11.5px; color: var(--text-secondary); margin: 0 0 6px; }
.plegend span::before { content: ''; display: inline-block; vertical-align: 1px; margin-right: 5px; }
.plegend .lg-mezz::before, .plegend .lg-ro::before {
  width: 0; height: 0; border-left: 5px solid transparent; border-right: 5px solid transparent; border-bottom: 9px solid #0f766e;
}
.plegend .lg-ro::before { border-bottom-color: #d97706; }
.plegend .lg-cv::before { width: 16px; border-top: 2px dashed #c2410c; vertical-align: 3px; }
#corpBody .charts { margin-bottom: 12px; }
.pchart .cd-up { fill: #d03b3b; stroke: #d03b3b; }
.pchart .cd-dn { fill: #2b63d9; stroke: #2b63d9; }
.pchart .cd { stroke-width: 1; shape-rendering: crispEdges; }
.pchart .vol { stroke: none; opacity: 0.45; shape-rendering: crispEdges; }
#corpBody .hrow .subtabs + .subtabs { margin-left: 8px; }

/* ---- 기업 조회: 머리 상자 안 회사 개요 — 왼쪽 개요·경영진·요약 카드 / 오른쪽 주주구성·주식 수 (2026-10-12) ---- */
.corp-ov {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0 32px;
  margin-top: 12px; padding-top: 14px; border-top: 1px solid var(--grid);
}
.ov-col { display: flex; flex-direction: column; gap: 18px; min-width: 0; }
.ov-col + .ov-col { border-left: 1px solid var(--grid); padding-left: 32px; margin-left: -16px; }
.ov-blk:empty { display: none; }
.corp-ov .corp-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); margin: auto 0 0; }
.ov-blk h3 { margin: 0 0 8px; font-size: 12.5px; font-weight: 700; color: var(--text-primary); display: flex; gap: 8px; align-items: baseline; }
.ov-sub { font-size: 11px; font-weight: 400; color: var(--muted); }
.ov-dl { display: grid; grid-template-columns: minmax(0, auto) minmax(0, 1fr); gap: 0; margin: 0; font-size: 12.5px; border-top: 1px solid var(--baseline); }
.ov-dl dt, .ov-dl dd { padding: 5px 0; border-bottom: 1px solid var(--grid); }
.ov-dl dt { color: var(--text-secondary); white-space: nowrap; padding-right: 14px; }
.ov-dl dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }
.ov-dl dt.b, .ov-dl dd.b { font-weight: 650; color: var(--text-primary); background: var(--plane); }
.ov-dl dt.b { padding-left: 6px; }
.ov-dl dd.b { padding-right: 6px; }
.ov-dl.ov-names dt { white-space: normal; overflow: hidden; text-overflow: ellipsis; }
.ov-tag { display: inline-block; padding: 1px 7px; margin-left: 4px; border-radius: 999px; font-size: 11px; border: 1px solid var(--baseline); color: var(--text-secondary); }
.ov-tag.on { background: var(--accent-soft); border-color: var(--series-1); color: var(--brand-b); }
.ov-tag.off { color: var(--muted); }
.ov-tag.ok { background: #e6f6e6; border-color: #0ca30c; color: #0a7a0a; font-weight: 650; }
.ov-tag.warn { background: #fff4e0; border-color: #d97706; color: #a35a00; font-weight: 650; }
.ov-dim { color: var(--muted); font-size: 11.5px; }
.ov-mini { margin: 12px 0 5px; font-size: 11.5px; font-weight: 650; color: var(--text-secondary); }
.ov-foot { margin-top: 6px; font-size: 11.5px; color: var(--text-secondary); }
.ov-bar { display: flex; height: 10px; border-radius: 5px; overflow: hidden; background: var(--grid); margin: 2px 0 6px; }
.ov-bar span { display: block; height: 100%; }
.ov-bar span + span { border-left: 2px solid var(--surface-1); }
.ov-lg { display: flex; flex-wrap: wrap; gap: 2px 12px; font-size: 11.5px; color: var(--text-secondary); margin-bottom: 8px; }
.ov-lg span::before { content: ''; display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 4px; background: currentColor; vertical-align: 0; }
.ov-bar .p-major, .ov-lg .p-major::before { background: var(--series-1); }
.ov-bar .p-tre, .ov-lg .p-tre::before { background: #d97706; }
.ov-bar .p-m5, .ov-lg .p-m5::before { background: #8b7fd1; }
.ov-bar .p-minor, .ov-lg .p-minor::before { background: #0f766e; }
.ov-bar .p-etc, .ov-lg .p-etc::before { background: var(--baseline); }
.ov-tbl { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.ov-tbl th { font-size: 11px; font-weight: 600; color: var(--muted); text-align: left; padding: 0 6px 4px 0; border-bottom: 1px solid var(--baseline); }
.ov-tbl th.num { text-align: right; }
.ov-tbl td { padding: 4px 6px 4px 0; border-bottom: 1px solid var(--grid); vertical-align: top; text-align: left; white-space: normal; }
.ov-tbl th { position: static; }
.ov-tbl td.nm { font-weight: 650; }
.ov-tbl td.num { text-align: right; white-space: nowrap; font-variant-numeric: tabular-nums; }
.ov-tbl td.b { font-weight: 650; }
.ov-tbl td.sub { color: var(--text-secondary); font-size: 11.5px; }
.ov-tbl tr[title] { cursor: help; }
.ov-tbl tr.sum td { border-top: 1px solid var(--baseline); font-weight: 650; background: var(--plane); }
.ov-ex td.nm { white-space: nowrap; }
.ov-rel { margin-left: 5px; font-size: 10.5px; font-weight: 500; color: var(--series-1); }
.ov-more { margin-top: 6px; font-size: 12px; }
.ov-more summary { cursor: pointer; color: var(--text-secondary); }
@media (max-width: 1100px) {
  .corp-ov { grid-template-columns: 1fr; gap: 18px; }
  .ov-col + .ov-col { border-left: 0; padding-left: 0; margin-left: 0; }
}
@media (max-width: 760px) { .corp-ov .corp-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* ---- 상세 패널: 기업 조회와 같은 회사 개요·주가·메자닌·유상증자 (2026-10-12) ---- */
#detail .dpanel { margin-bottom: 12px; }
#detail .dpanel .corp-ov { margin-top: 0; padding-top: 0; border-top: 0; }
#detail .dpanel h2.hrow .subtabs { margin: 0; }
#detail .dpanel h2.hrow .subtabs + .subtabs { margin-left: 8px; }
#detail .dgo { font-size: 11.5px; font-weight: 500; }
#detail .dsec-h { font-size: 13px; margin: 16px 0 6px; }
#detail .dfold { margin: 10px 0; }
#detail .dfold > summary { cursor: pointer; font-size: 13px; font-weight: 650; }
#detail .dfold .tablewrap { margin-top: 6px; }
#detail td.left, #detail th.left { text-align: left; }
#detail tr.dim td { color: var(--muted); }
/* 상세 패널은 화면이 넓어도 폭이 920px 이라 회사 개요를 한 단으로 */
#detail .corp-ov { grid-template-columns: 1fr; gap: 18px; }
#detail .ov-col + .ov-col { border-left: 0; padding-left: 0; margin-left: 0; }

/* ---- 모바일: 가로로 넘치는 칸 정리 (2026-10-12) ---- */
@media (max-width: 760px) {
  /* 주요 경영진 — 한 줄 표 대신 '이름 · 직위 / 나이 · 담당' 두 줄 카드 */
  .ov-ex, .ov-ex tbody { display: block; }
  .ov-ex tr { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; padding: 6px 0; border-bottom: 1px solid var(--grid); }
  .ov-ex td { display: block; padding: 0; border: 0; }
  .ov-ex td.nm { white-space: normal; }
  .ov-ex td.num { margin-left: auto; color: var(--text-secondary); font-size: 11.5px; }
  .ov-ex td.sub { flex-basis: 100%; }
  .ov-ex td.sub:empty { display: none; }
  /* 주주 표 — 기준일 칸은 줄이고 이름은 줄바꿈 */
  .ov-hold td.nm { word-break: keep-all; overflow-wrap: anywhere; }
  .ov-hold th:last-child, .ov-hold td:last-child { display: none; }
  .ov-dl dt { white-space: normal; }
  .ov-dl dd { overflow-wrap: anywhere; }
  .corp-ov { min-width: 0; }
  .corp-head .hrow { flex-wrap: wrap; }
  #corpBody .hrow .subtabs + .subtabs, #detail .dpanel h2.hrow .subtabs + .subtabs { margin-left: 0; }
}

/* ---- 기업 조회 진행률 막대 (2026-10-12) — 검색창 아래, 회사 개요가 다 모이면 사라진다 ---- */
.corp-prog { display: flex; align-items: center; gap: 10px; margin: -6px 0 14px; }
.corp-prog.hide { display: none; }
.cp-track { flex: 1; height: 6px; border-radius: 3px; background: var(--grid); overflow: hidden; }
.cp-track > i { display: block; height: 100%; width: 0; background: var(--series-1); border-radius: 3px; transition: width .35s ease; }
.cp-txt { font-size: 12px; color: var(--text-secondary); white-space: nowrap; min-width: 9em; font-variant-numeric: tabular-nums; }

/* ------------------------------------------------------------ 시뮬레이션 (2026-10-12) */
/* 위 = 변수 입력 3칸, 아래 = 결과 2단 (2026-10-13 빈칸 줄이기) */
/* 머리 — 왼쪽 회사 정보, 오른쪽 검색 */
.sim-head { display: flex; gap: 20px; align-items: stretch; justify-content: space-between; }
.sim-co { flex: 1; min-width: 0; color: #fff; }
.sim-co-nm { font-size: 22px; font-weight: 700; line-height: 1.3; }
.sim-co-code { font-size: 13px; font-weight: 400; margin-left: 10px; color: rgba(255, 255, 255, 0.78); }
.sim-co-meta { display: flex; flex-wrap: wrap; gap: 6px 22px; margin-top: 10px; font-size: 14px; }
.sim-co-it em { font-style: normal; color: rgba(255, 255, 255, 0.72); margin-right: 6px; font-size: 12.5px; }
.sim-co-it b { font-weight: 600; font-variant-numeric: tabular-nums; }
.sim-ctl { display: flex; flex-direction: column; gap: 8px; width: 580px; max-width: 100%; flex-shrink: 0; }
.sim-ctl .row { flex-wrap: nowrap; align-items: center; gap: 6px; }
.sim-ctl .btn, .sim-ctl .chip { white-space: nowrap; }
.sim-ctl .chips { flex-wrap: nowrap; }
.sim-ctl .corp-q, .sim-ctl .corp-q input { width: 100%; }
.sim-ctl .spacer { flex: 1; }
/* 저장·불러오기 / 출력 버튼 묶음 — 반투명 바탕 위에 색 버튼 (2026-10-16 사용자 요청: 잘 안 보임) */
.sim-bgrp { display: inline-flex; align-items: center; gap: 4px; padding: 3px; border-radius: 9px;
  background: rgba(255, 255, 255, 0.16); }
.sim-bgrp .hsearch { display: inline-flex; }
.brand-panel .sim-bgrp .btn { font-weight: 650; }
.brand-panel .sim-bgrp-save .btn { background: #fff; border-color: #fff; color: var(--brand-b); }
.brand-panel .sim-bgrp-save .btn:hover { background: #ecebf7; }
.brand-panel .sim-bgrp-out .btn { background: #ffd166; border-color: #ffd166; color: #2b2160; }
.brand-panel .sim-bgrp-out .btn:hover { background: #ffe199; }
/* 발행 조건(왼쪽, 넓게) · 기준 정보(기준주가 포함) */
.sim-in { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(0, 1fr); gap: 12px; }
.sim-in.cb { grid-template-columns: minmax(0, 1.5fr) minmax(0, 0.85fr) minmax(0, 0.65fr); }   /* CB·BW: 발행 조건 | 기준주가 | 재무 (2026-10-16) */
.sim-in .field.w2 { grid-column: span 2; }
/* 수수료 칸 — 값 + 단위(% / 억원) */
.sim-unit { display: flex; gap: 4px; min-width: 0; }
.sim-unit input { flex: 1 1 auto; }
.sim-in .field .sim-unit select { width: auto; flex: 0 0 auto; padding-left: 4px; padding-right: 2px; }
.sim-in .field label input[type="checkbox"] { width: auto; margin: 0 5px 0 0; vertical-align: -2px; }
.sim-in .field input:disabled { background: var(--row-alt); }
/* 재무 — 재무상태표처럼 항목 세로 목록 (가로 배치는 낯설다, 사용자 지적 2026-10-16) */
.sim-in > .panel.sim-fin { grid-template-columns: minmax(0, 1fr); gap: 0; }
.sim-fin .field { display: grid; grid-template-columns: minmax(0, 1fr) minmax(90px, 52%); align-items: center; gap: 8px;
  padding: 3px 0; border-bottom: 1px solid var(--grid); }
.sim-fin .field label { margin: 0; font-size: 12.5px; color: var(--text-secondary); }
.sim-fin .field.sub label { padding-left: 14px; }
.sim-fin .field.tot label { font-weight: 650; color: var(--text-primary); }
.sim-fin .field input { padding: 4px 8px; }
/* 결과 요약 두 쌍씩 */
.sim-kv2 td.left { width: 28%; }
.sim-kv2 td.num { width: 22%; padding-right: 14px; }
.sim-kv2 td.b { font-weight: 650; color: var(--text-primary); }
/* 칸 안은 필드 격자 — .row 는 풀어서 필드가 빈자리 없이 흘러 들어가게 */
.sim-in > .panel {
  margin-bottom: 0; display: grid; gap: 8px 10px; align-content: start;
  grid-template-columns: repeat(auto-fill, minmax(108px, 1fr));
}
.sim-in > .panel > h2, .sim-in > .panel > #simBaseKV, .sim-in .field.wide,
.sim-in .sim-grp, .sim-in .sim-tiers { grid-column: 1 / -1; }
/* 입력 종류별 소제목 */
.sim-grp {
  margin-top: 4px; padding: 7px 0 0; border-top: 1px dashed var(--baseline);
  font-size: 11.5px; font-weight: 700; color: var(--series-1); letter-spacing: .02em;
}
.sim-in > .panel > h2 + .sim-grp { margin-top: 0; padding-top: 0; border-top: 0; }
/* 실권수수료율 구간 편집기 */
.sim-tiers { display: flex; flex-direction: column; gap: 6px; padding: 8px 10px; border: 1px solid var(--border);
  border-radius: 8px; background: var(--plane); }
.sim-tiers-h { display: flex; align-items: baseline; gap: 8px; font-size: 11px; color: var(--muted); }
.sim-tiers-h > span:first-child { font-weight: 650; color: var(--text-secondary); }
.sim-tier { display: flex; align-items: center; gap: 8px; }
.sim-tier input { width: 86px; padding: 5px 8px; border: 1px solid var(--baseline); border-radius: 6px;
  background: var(--raised); text-align: right; font-variant-numeric: tabular-nums; }
.sim-tier-no { width: 38px; font-size: 11.5px; color: var(--muted); }
.sim-tier-up, .sim-tier-pct { display: inline-flex; align-items: center; gap: 4px; font-size: 12px; color: var(--text-secondary); }
.sim-tier-all { width: 155px; font-size: 12px; color: var(--text-secondary); padding-left: 2px; }
.sim-tier-up { width: 155px; }
.sim-tier-pct input { width: 64px; }
.sim-tier-x { padding: 1px 8px; margin-left: auto; }
.sim-tiers > .btn { align-self: flex-start; }
.sim-in > .panel > h2 { margin-bottom: 0; }
.sim-in .row { display: contents; }
.sim-in .field { min-width: 0; }
.sim-in .field input, .sim-in .field select { min-width: 0; width: 100%; }
.sim-in .field input { text-align: right; font-variant-numeric: tabular-nums; }
/* 기준주가 내역은 세로 한 줄씩 (사용자 지정 2026-10-14) */
#simBaseKV .sim-kv { margin: 0; }
.sim-kv { width: 100%; margin-bottom: 4px; }
.sim-kv td { padding: 4px 6px; border-bottom: 1px solid var(--grid); font-variant-numeric: tabular-nums; }
.sim-kv td.left { text-align: left; color: var(--text-secondary); white-space: normal; }
.sim-kv tr.strong td { font-weight: 650; color: var(--text-primary); }
/* 결과는 2단 신문식 — 칸 높이가 달라도 아래로 이어 붙어 빈 곳이 없다 */
.sim-out { margin-top: 12px; column-count: 2; column-gap: 12px; }
.sim-out > section { break-inside: avoid; display: inline-block; width: 100%; }
.sim-out > .sim-warn, .sim-out > .empty, .sim-out > .spin { column-span: all; }
.sim-tw { max-height: none; }
.sim-t td.left, .sim-t th.left { text-align: left; }
.sim-t th { cursor: default; }
.sim-t td, .sim-t th { font-variant-numeric: tabular-nums; padding: 5px 8px; }
.sim-t .sub { font-size: 11px; color: var(--muted); font-weight: 400; }
.sim-t td.cur, .sim-t tr.cur td { background: var(--accent-soft); font-weight: 650; }
.sim-t tr.grp td { font-weight: 650; background: var(--row-alt); }
.sim-t tr.dim td { color: var(--muted); }
.sim-t td.down { color: var(--critical); }
.sim-t td.up { color: var(--good); }
.sim-warn { color: var(--critical); font-size: 12px; margin: 0 0 10px; }
.sim-warn div::before { content: "! "; font-weight: 700; }
@media (max-width: 1200px) {
  .sim-out { column-count: 1; }
}
@media (max-width: 1100px) {
  .sim-in.cb { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .sim-in.cb > .panel:first-child { grid-column: 1 / -1; }
}
@media (max-width: 700px) {
  .sim-in, .sim-in.cb { grid-template-columns: minmax(0, 1fr); }
  .sim-head { flex-direction: column; }
  .sim-ctl { width: 100%; }
  .sim-ctl .row { flex-wrap: wrap; }
}

/* 저장한 시뮬레이션 목록 (2026-10-14) */
.sim-saved-list { right: 0; left: auto; min-width: 340px; }
.sim-saved-it { align-items: center; }
.sim-saved-main { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }
.sim-saved-main b { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* 주요 일정 — 날짜를 눌러 고정 (2026-10-14) */
.sim-sched td.sim-date { cursor: pointer; }
.sim-sched td.sim-date:hover span { text-decoration: underline dotted; }
.sim-sched td.sim-date input { padding: 2px 4px; border: 1px solid var(--series-1); border-radius: 4px; font: inherit; }
.sim-sched tr.pin td.sim-date { color: var(--series-1); font-weight: 700; }
.sim-sched tr.pin td.sim-date::before { content: "고정 "; font-size: 10.5px; font-weight: 600; }
.sim-sched td:last-child { width: 30px; padding-left: 0; }
.sim-pin-chips { margin-top: 8px; }
@keyframes sim-flash { 0% { background: #ffe58a; } 100% { background: transparent; } }
.sim-sched tr.flash td { animation: sim-flash 1.8s ease-out; }

/* ---- 홈 ①·④: 지난 전원 브리핑 메일 대비 NEW·순위 변동 (2026-10-14) ---- */
tbody tr.is-new > td, tbody tr.is-new > td.name { background: #fff4d1; }
tbody tr.is-new:hover > td, tbody tr.is-new:hover > td.name { background: #ffeab0; }
.rankflag { display: inline-block; margin-left: 6px; padding: 0 6px; border-radius: 8px; font-size: 10.5px; font-weight: 700; line-height: 17px; vertical-align: 1px; }
.rankflag.new { background: #fde096; color: #92400e; }
.rankflag.up { background: #fce4e4; color: #d03b3b; }
.rankflag.down { background: #e2eafc; color: #2b63d9; }

/* ============ 할 일 (일일 To-do 보고) — 파이프라인 탭 위 표 + 캘린더 표시 */
#todoPanel { margin-bottom: 12px; }
#todoPanel h2 select { max-width: 9em; }
#todoPanel td:not(.num), #todoPanel th:not(.num) { text-align: left; }
.td-title { max-width: 26em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
tr.td-done td { color: var(--muted); }
td.td-over { color: var(--critical); font-weight: 700; }
td.td-soon { font-weight: 700; }
.td-check { color: var(--critical); border-color: var(--critical); }
.td-warn { color: var(--critical); font-size: 11px; }
.td-extra { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.td-mail { white-space: pre-wrap; font-family: inherit; font-size: 12px; line-height: 1.6; margin: 8px 0 0; }
.td-pre { white-space: pre-wrap; }
.formgrid .formgrid { grid-column: 1 / -1; }
.formgrid .formgrid.hide { display: none; }
#calendar .tdmarks { display: flex; flex-direction: column; gap: 1px; margin-top: 3px; }
.tdmark {
  font-size: 10px; line-height: 14px; padding: 0 3px; border-radius: 3px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  border-left: 3px solid var(--td-c); background: color-mix(in srgb, var(--td-c) 14%, transparent);
  color: var(--text-secondary);
}
.tdmark.pm { --td-c: #6a5acd; }
.tdmark.network { --td-c: #0f9fb0; }
.tdmark.done { opacity: .45; text-decoration: line-through; }
.tdmark.over { color: var(--critical); font-weight: 600; }
.tdmark.legend { display: inline-block; width: 10px; height: 10px; padding: 0; vertical-align: -1px; }
#calendar .tdmore { font-size: 10px; color: var(--muted); }
.tdcard { cursor: pointer; border-left: 3px solid #6a5acd; }
.tdcard:hover { background: var(--row-hover); }
.tdcard.td-done { opacity: .55; }
.ct-list { margin: 4px 0 8px; }
@media (max-width: 700px) { #calendar .tdmark:not(.legend) { font-size: 0; height: 4px; padding: 0; } }
#todoPanel h2.hrow { flex-wrap: wrap; row-gap: 6px; }

/* ---- 일반 회원(깐부 아닌 타사)·단순 조회: 점수·풋 정보 블러 (2026-10-20) ----
   실제 값은 서버가 보내지 않고, 그 자리에 가짜 글자를 흐리게 깐다 */
.blurval { filter: blur(5px); user-select: none; pointer-events: none; display: inline-block; }
.blurbox { position: relative; overflow: hidden !important; }
.blurbox table { filter: blur(6px); user-select: none; pointer-events: none; }
.blurbox .m-morebtn { display: none; }
/* 가린 박스 위 안내 문구 (lockBox) */
.blurbox[data-lock]::after {
  content: attr(data-lock);
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-size: 14px; font-weight: 650; color: var(--brand-b, #33297a);
  background: rgba(255, 255, 255, 0.35); pointer-events: none; text-align: center; padding: 0 16px;
}
/* 가린 값 자리 — 숫자 없이 회색 막대만 (skel) */
.skel { display: inline-block; height: 0.8em; border-radius: 4px; background: #cfcbe4; vertical-align: middle; filter: blur(2px); }
.kpi .skel { background: rgba(255, 255, 255, 0.45); }

/* ============================================================ 휴대폰: 가로 스크롤 없애기 (2026-10-21)
   maknae.ai.kr 처럼 — 긴 목록은 한 건 = 카드(mcards), 홈 요약은 핵심 칸만 남긴 짧은 표(mcompact),
   기간이 칸인 재무 표는 최근 3기간만(m-cols4). PC 는 이전 그대로. */
.mcards { display: none; }
.hmenu { display: contents; }
.hmenu-btn { display: none; }
.mcompact .m-only { display: none; }

.mcard {
  background: var(--surface-1); border: 1px solid var(--border); border-left: 4px solid var(--series-1);
  border-radius: 12px; padding: 11px 13px 9px; margin: 0 0 10px; font-size: 12.5px;
}
.mcard.click { cursor: pointer; }
.mcard.click:active { background: var(--row-hover); }
.mcard.dim { opacity: .62; border-left-color: var(--baseline); }
.mcard.withdrawn .mc-name b { text-decoration: line-through; }
.mc-head { display: flex; align-items: flex-start; gap: 8px; margin-bottom: 6px; }
.mc-name { flex: 1; min-width: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; }
.mc-name b { font-size: 15px; font-weight: 700; color: var(--text-primary); }
.mc-rank { color: var(--muted); font-weight: 600; margin-right: 6px; font-size: 13px; }
.mc-tag { font-size: 10.5px; padding: 0 6px; border: 1px solid var(--baseline); border-radius: 8px; color: var(--text-secondary); line-height: 17px; }
.mc-mkt { display: inline-block; font-size: 11px; font-weight: 700; color: #fff; border-radius: 6px; padding: 0 5px; line-height: 18px; background: #8b7fd1; }
.mc-mkt.mk-유 { background: #c0504d; }
.mc-mkt.mk-코 { background: #7b4fc9; }
.mc-mkt.mk-넥 { background: #6b7280; }
.mc-right { text-align: right; white-space: nowrap; display: flex; align-items: baseline; gap: 8px; }
.mc-sub { color: var(--text-secondary); font-size: 12px; }
.mc-big { font-size: 16px; font-weight: 750; color: var(--text-primary); }
.mc-row { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 8px; padding: 5px 0; border-top: 1px dashed var(--grid); }
.mc-row.nolab { grid-template-columns: minmax(0, 1fr); }
.mc-lab { color: var(--muted); font-size: 11.5px; padding-top: 1px; }
.mc-val { color: var(--text-primary); overflow-wrap: anywhere; word-break: keep-all; line-height: 1.55; }
.mc-sep { color: var(--baseline); margin: 0 6px; }

@media (max-width: 760px) {
  /* 카드로 바뀌는 표 */
  .tablewrap.has-mcards, .funding-wrap.has-mcards { display: none; }
  .mcards { display: block; }
  .mcards + .pager, .mcards ~ .pager { margin-top: 4px; }

  /* 홈 요약: 핵심 칸만 남긴 짧은 표 */
  .mcompact { max-height: none !important; overflow: visible; }
  .mcompact table { table-layout: auto; width: 100%; }
  .mcompact .m-hide { display: none; }
  .mcompact th, .mcompact td { padding: 7px 4px; font-size: 12.5px; white-space: nowrap; }
  .mcompact th { position: static; }
  .mcompact td.name { max-width: 42vw; overflow: hidden; text-overflow: ellipsis; position: static; }
  .mcompact td .code, .mcompact td .star, .mcompact .d-only { display: none; }
  .mcompact .m-only { display: inline-block; }
  .mcompact td .mc-mkt { margin-left: 4px; font-size: 10px; line-height: 16px; padding: 0 4px; }
  .mcompact td .rank { min-width: 0; margin-right: 5px; }
  .mcompact td .nm { font-weight: 600; }
  .mcompact:not(.m-expanded) tbody tr.m-extra { display: none; }
  .mcompact td .rankflag, .mcompact td .pill { display: none; }

  /* 기간이 칸인 재무 표 — 항목 + 최근 3기간 */
  .m-cols4 th:nth-child(n+5), .m-cols4 td:nth-child(n+5),
  #detail table.dtable:not(.funding-t) th:nth-child(n+5),
  #detail table.dtable:not(.funding-t) td:nth-child(n+5) { display: none; }
  .m-cols4, #detail .dtable { overflow: visible; }
  #detail table.dtable td.name { white-space: normal; }

  /* 상단 막대: 로고 · 검색 · ☰ 한 줄 + 탭 한 줄. 수집·비밀번호·로그아웃은 ☰ 안으로 */
  .hmenu-btn { display: inline-flex; padding: 5px 10px; font-size: 15px; line-height: 1; }
  .hmenu { display: none; }
  header.menu-open .hmenu {
    display: flex; flex-direction: column; gap: 6px; position: absolute; right: 10px; top: 52px; z-index: 80;
    background: var(--surface-1); border: 1px solid var(--border); border-radius: 10px; padding: 8px;
    box-shadow: 0 10px 28px rgba(26, 23, 51, .22);
  }
  header.menu-open .hmenu .btn { color: var(--text-primary); border-color: var(--border); background: var(--surface-1); text-align: left; }
  header .hsearch { flex: 1; min-width: 0; }
  header .hsearch input { width: 100%; }
  header .guest-badge { display: none; }
}
@media (max-width: 760px) {
  /* 홈 소원수리함을 맨 아래로 내렸던 것은 사용자 지적으로 되돌렸다(2026-10-21) — 원래 자리 */
  /* 관리자 메일 줄 — 버튼 글자가 한 글자씩 꺾이지 않게 */
  .hero-foot { flex-wrap: wrap; row-gap: 8px; }
  .hero-foot .btn { white-space: nowrap; }
  .hero-foot #homeAutoStat { flex-basis: 100%; }
  .kpi .k { font-size: 11px; }
}
.mc-pk { color: var(--muted); font-size: 11.5px; }

/* 관리자 '다른 회원 화면으로 보기' (2026-10-21) */
.viewas-sel { font: inherit; font-size: 12.5px; padding: 4px 6px; border-radius: 6px; border: 1px solid rgba(255, 255, 255, .45); background: rgba(255, 255, 255, .14); color: #fff; }
.viewas-sel option { color: #1a1733; background: #fff; }
.view-badge { font: inherit; font-size: 12px; font-weight: 650; padding: 4px 10px; border-radius: 999px; border: 0; cursor: pointer; background: #fde096; color: #92400e; white-space: nowrap; }
@media (max-width: 760px) {
  header.menu-open .hmenu .viewas-sel { color: var(--text-primary); border-color: var(--border); background: var(--surface-1); }
  .view-badge { font-size: 11px; padding: 3px 8px; }
}

/* 휴대폰: 상자 제목(소원수리함·① 자금조달 필요점수 상위 …)이 12px 라 잘 안 보인다는 지적(2026-10-21) */
@media (max-width: 760px) {
  .panel h2 { font-size: 16px; margin-bottom: 12px; }
  .panel:not(.brand-panel) h2 { color: var(--text-primary); }
  .panel h2 .stat { font-size: 12.5px; }
  .fbhead { font-size: 13.5px; }
}
/* 휴대폰 '더 보기' 버튼이 잘 안 보인다는 지적(2026-10-21) — 연보라 바탕을 칠한다 */
@media (max-width: 760px) {
  .m-morebtn {
    background: #e7e4f6; border: 1px solid #c9c3ea; color: var(--brand-b, #33297a);
    font-weight: 650; font-size: 13.5px; padding: 10px; border-radius: 10px; margin-top: 4px;
  }
  .m-morebtn:active { background: #d6d1f0; }
}

/* 상단 막대: 탭 글자가 세로로 꺾이지 않게 (2026-10-21) — 한 줄에 다 안 들어가는 폭에서는
   탭을 둘째 줄 전체 폭으로 내린다(휴대폰과 같은 방식). 넓은 화면은 그대로 한 줄 */
.tab { white-space: nowrap; flex: 0 0 auto; }
@media (max-width: 1500px) and (min-width: 761px) {
  header { flex-wrap: wrap; row-gap: 8px; }
  header .tabs { order: 10; width: 100%; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  header .tabs::-webkit-scrollbar { display: none; }
}
/* 브리핑 메일 줄 — 좁은 PC 에서도 버튼·링크 글자가 한 글자씩 꺾이지 않게 */
.hero-foot { flex-wrap: wrap; row-gap: 8px; }
.hero-foot .btn, .hero-foot a.stat { white-space: nowrap; }

/* 남색 패널(스크리너 대상 기간·조건, 메자닌·유상증자 조회 칸) 제목은 늘 흰색 — 제목 키울 때 검정으로 덮였던 것 복구 */
.panel.brand-panel h2 { color: #fff; }

/* 휴대폰 상단: 탭 줄을 옆으로 미는 대신 ☰ 메뉴 안에 탭 목록(2026-10-21). 막대에는 지금 탭 이름만 */
.cur-tab { display: none; }
@media (max-width: 760px) {
  .cur-tab { display: inline; font-weight: 700; font-size: 15px; color: #fff; white-space: nowrap; }
  header.menu-open .hmenu { min-width: 250px; left: 10px; right: 10px; }
  header .hmenu .tabs {
    order: 0; width: auto; overflow: visible; display: grid; grid-template-columns: 1fr 1fr; gap: 6px;
    padding: 0 0 8px; margin: 0 0 4px; border-bottom: 1px solid var(--grid);
  }
  header .hmenu .tab {
    color: var(--text-primary); background: var(--plane); text-align: left; padding: 10px 12px;
    border-radius: 8px; font-size: 14px; font-weight: 600;
  }
  header .hmenu .tab.on { background: var(--brand-a); color: #fff; }
  header .hmenu .tab.hide { display: none; }
  header.menu-open .hmenu .btn { font-size: 13px; padding: 8px 12px; }
}

/* ============================================================ 휴대폰 하단 탭 막대 (토스 앱 방식, 2026-10-21)
   상단 막대는 로고·지금 탭·검색만 두고 높이를 넉넉히. 탭 이동은 화면 아래 고정 막대,
   '전체'를 누르면 나머지 탭과 계정 메뉴가 아래에서 올라오는 시트로 열린다(#hMenu 재사용). */
.bnav { display: none; }
@media (max-width: 760px) {
  header { padding: 14px 14px 12px; gap: 10px; min-height: 60px; }
  header .cimark { font-size: 15px; }
  .hmenu-btn { display: none !important; }
  main { padding-bottom: calc(84px + env(safe-area-inset-bottom)); }

  .bnav {
    display: grid; grid-template-columns: repeat(6, 1fr);   /* 6칸 — 기업 조회 추가(2026-10-21) */
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 90;
    background: var(--surface-1); border-top: 1px solid var(--border);
    box-shadow: 0 -4px 16px rgba(26, 23, 51, .08);
    padding: 6px 4px calc(6px + env(safe-area-inset-bottom));
  }
  .bnav button {
    display: flex; flex-direction: column; align-items: center; gap: 2px;
    border: 0; background: none; padding: 4px 0; cursor: pointer;
    color: var(--muted); font: inherit; font-size: 10.5px; font-weight: 600; white-space: nowrap; letter-spacing: -0.2px;
  }
  .bnav button.on { color: var(--brand-a); }
  .bnav button:active { opacity: .7; }

  /* '전체' 시트 — 하단 막대 위로 올라온다 */
  header.menu-open .hmenu {
    position: fixed; left: 0; right: 0; top: auto; bottom: calc(62px + env(safe-area-inset-bottom));
    max-height: 72vh; overflow: auto; border-radius: 16px 16px 0 0; padding: 14px 14px 12px;
    box-shadow: 0 -10px 30px rgba(26, 23, 51, .22); min-width: 0;
  }
}

/* ---- 백분위 위치 막대 · 방사형 (2026-10-21) ---- */
.pb { display: block; position: relative; height: 4px; margin: 4px 0 1px auto; width: 100%; min-width: 46px; max-width: 90px;
      background: #e4e1f3; border-radius: 3px; }
.pb::before, .pb::after { content: ''; position: absolute; top: -2px; width: 1px; height: 8px; background: #b9b3dc; }
.pb::before { left: 0; } .pb::after { right: 0; }
.pb i { position: absolute; top: -2px; width: 8px; height: 8px; border-radius: 2px; background: var(--brand-a); }
.mc-metric { display: grid; grid-template-columns: minmax(0, 1fr) auto 82px; gap: 10px; align-items: center; width: 100%; }
.mc-metric b { font-weight: 650; text-align: right; }
.mc-metric .pb { margin: 0; max-width: none; }
.radar-box:empty { display: none; }
.radar-box { margin-top: 16px; padding-top: 12px; border-top: 1px solid var(--grid); }
.radar-h { margin: 0 0 4px; font-size: 12.5px; font-weight: 700; display: flex; gap: 8px; align-items: baseline; }
.radar { display: block; width: 100%; max-width: 360px; margin: 0 auto; overflow: visible; }
.radar .rg { fill: none; stroke: var(--grid); stroke-width: 1; }
.radar .rg.mid { stroke: #cfcbe4; stroke-dasharray: 3 3; }
.radar .rax { stroke: var(--grid); stroke-width: 1; }
.radar .rlab { font-size: 10.5px; fill: var(--text-secondary); }
.radar .rpoly { fill: var(--series-1); fill-opacity: .22; stroke: var(--brand-a); stroke-width: 1.8; }
.radar .rdot { fill: var(--brand-a); stroke: #fff; stroke-width: 1.5; cursor: pointer; }
/* 휴대폰: 상세·휴지통 패널과 입력 창은 하단 탭 막대(z 90) 위로 — 패널 아래쪽이 가려지지 않게 */
@media (max-width: 760px) {
  #detail, #trash { z-index: 95; }
  #dlg { z-index: 97; }
  #dlgBack { z-index: 96; }
}

/* 0(손익분기) 선과 적자 표시 (2026-10-21) — 0억과 적자를 막대에서 가른다 */
.pb .pz { position: absolute; top: -3px; width: 2px; height: 10px; margin-left: -1px; background: #6b6885; border-radius: 1px; }
.pb i.neg { background: var(--critical, #d03b3b); }
.mc-metric b.neg { color: var(--critical, #d03b3b); }

/* 자기 과거 막대의 평균 눈금 */
.pb .pavg { position: absolute; top: -3px; width: 1px; height: 10px; background: #8b7fd1; }

/* 방사형 평균(점선) · 지분율 칸 주주구성 막대 (2026-10-21) */
.radar .ravg { fill: none; stroke: #8b7fd1; stroke-width: 1.4; stroke-dasharray: 4 3; }
.ov-bar.sbar { height: 7px; margin: 4px 0 1px auto; width: 100%; min-width: 46px; max-width: 90px; border-radius: 4px; }
.mc-metric .ov-bar.sbar { margin: 0; max-width: none; }

/* 자기 과거 막대 — 가운데 = 평균, 위에 '3년 평균 값' (2026-10-21) */
.hb { display: block; position: relative; width: 100%; min-width: 64px; max-width: 110px; margin: 2px 0 0 auto; padding-top: 12px; }
.hb .pb { margin: 0; max-width: none; }
.hb-avg { position: absolute; top: 0; left: 50%; transform: translateX(-50%); font-size: 9.5px; line-height: 11px;
          color: #8b7fd1; white-space: nowrap; font-weight: 500; }
.hb .pavg { background: #8b7fd1; width: 2px; margin-left: -1px; height: 12px; top: -4px; }
.mc-metric { grid-template-columns: minmax(0, 1fr) auto 104px; }
.mc-metric .hb { max-width: none; margin: 0; }

/* '| 3개년 동사 평균' 안내 — 카드 맨 위 한 줄, 막대 칸 가운데 (2026-10-21) */
.hb { padding-top: 0; }
.hb-legend { font-size: 10px; color: #8b7fd1; text-align: center; white-space: nowrap; font-weight: 600; }
.mc-row.nolab:has(.mc-legend) { padding: 2px 0 0; border-top: 0; }

/* 날짜 부터·까지 한 줄 (휴대폰, 2026-10-21) */
.date-pair { display: contents; }
@media (max-width: 760px) {
  .date-pair { display: flex; gap: 8px; flex: 1 1 100%; width: 100%; min-width: 0; }
  .date-pair .field { flex: 1 1 0; min-width: 0; }
  .date-pair input[type="date"] { width: 100%; min-width: 0; padding-left: 6px; padding-right: 4px; }   /* 글자 16px 유지 — iOS 확대 방지 */
}

/* 메자닌 조회 상자 — 휴대폰에서 빈칸 줄이기 (2026-10-21): 칩 칸은 '라벨 + 칩' 한 줄씩,
   표 칸 선택이 필요한 수정·삭제는 카드 화면에서 쓸 수 없어 숨긴다 */
@media (max-width: 760px) {
  .mz-filter h2 { margin-bottom: 8px; }
  .mz-filter .row { gap: 8px 8px; }
  .mz-filter .field.chipf { flex: 1 1 100%; flex-direction: row; align-items: center; gap: 10px; }
  .mz-filter .field.chipf > label { flex: 0 0 30px; margin: 0; }
  .mz-filter .field.chipf .chips { flex-wrap: wrap; gap: 6px; }
  .mz-filter .chip { padding: 4px 11px; }
  .mz-filter #mzEdit, .mz-filter #mzDel { display: none; }
}

/* 메자닌 조회 버튼 묶음 */
.mz-actions { display: flex; flex-wrap: nowrap; align-items: center; gap: 10px; margin-left: auto; }
@media (max-width: 760px) {
  .mz-actions { flex: 1 1 100%; flex-wrap: wrap; gap: 8px; margin-left: 0; }
  .mz-actions > .btn.primary { flex: 1 1 90px; }
}
/* 홈 요약 카드 제목 — '메자닌 발행\n(최근 7일)' 처럼 괄호 앞에서 줄을 바꾼다(2026-10-21) */
#homeKpis .kpi .k { white-space: pre-line; }

/* 상세 패널·기업 조회의 'DART 공시'·'기업 조회 탭에서 보기' 링크 — 잘 안 보인다는 지적으로 음영 박스(2026-10-21) */
#detail .meta a, .corp-head .meta a, #detail .dgo {
  display: inline-block; padding: 3px 10px; border-radius: 8px; line-height: 1.5;
  background: #e7e4f6; border: 1px solid #c9c3ea; color: var(--brand-b, #33297a);
  font-weight: 650; font-size: 12px; text-decoration: none; white-space: nowrap;
}
#detail .meta a:hover, .corp-head .meta a:hover, #detail .dgo:hover { background: #d6d1f0; }

/* 휴대폰 카드의 NEW 표시 — 칸마다가 아니라 카드 전체를 연노랑으로(2026-10-21) */
@media (max-width: 760px) {
  .cardable tbody tr.is-new { background: #fff4d1; border-color: #eab308; }
  .cardable tbody tr.is-new > td, .cardable tbody tr.is-new > td.name,
  .cardable tbody tr.is-new:hover > td { background: transparent; }
}

/* ---- 기업 조회: 일별 시세 (2026-10-21) — 국내 관례대로 상승 빨강 / 하락 파랑 ---- */
.dd-up { color: #d03b3b; }
.dd-down { color: #2b63d9; }
.corp-daily .btn.sm { margin-top: 8px; }

/* ---- 기업 조회: 주가(절반) | 사업 내용(절반) (2026-10-23) ---- */
.corp-row2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 16px; align-items: stretch; }
.corp-row2 > .panel { margin-bottom: 0; min-width: 0; }
.corp-row2 { margin-bottom: 16px; }
.corp-biz .biz-sum { margin: 0 0 6px; font-size: 13px; line-height: 1.65; color: var(--text-primary); }
.corp-biz .biz-more { margin-bottom: 4px; }
.biz-segs { display: flex; flex-direction: column; gap: 6px; }
.biz-seg { display: grid; grid-template-columns: minmax(0, 9em) minmax(0, 1fr) 4.2em; gap: 4px 10px; align-items: center; font-size: 12.5px; }
.biz-seg .nm { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.biz-seg .bar { height: 8px; border-radius: 4px; background: var(--grid); overflow: hidden; }
.biz-seg .bar > i { display: block; height: 100%; background: var(--series-1); border-radius: 4px; }
.biz-seg .v { text-align: right; font-variant-numeric: tabular-nums; }
.biz-seg .prod { grid-column: 1 / -1; margin-top: -2px; font-size: 11.5px; color: var(--text-secondary); }
.biz-pipe { margin: 0; padding-left: 18px; font-size: 12.5px; line-height: 1.6; }
@media (max-width: 860px) { .corp-row2 { grid-template-columns: 1fr; } }
.biz-lines { margin: 0 0 6px; padding-left: 18px; font-size: 13px; line-height: 1.6; }
.biz-lines li { margin: 2px 0; }
.corp-biz .biz-sum { margin-top: 6px; font-size: 12px; color: var(--text-secondary); }
.corp-biz .biz-sum.hide { display: none; }

/* 표 행 그대로 두는 표(일별 시세) — 휴대폰에서 칸을 줄여 가로 스크롤 없이 (2026-10-23) */
@media (max-width: 760px) {
  .m-rows { overflow: visible; max-height: none; }
  .m-rows table { width: 100%; }
  .m-rows .m-hide { display: none; }
  .m-rows th, .m-rows td { padding: 6px 4px; font-size: 12.5px; }
  .m-rows th { position: static; }
}
