/* ═══════════════════════════════════════════════════════════════
   AI Link v3 — forecast-v3.css (Step 2)
   수요예보 모듈 전용 스타일

   Step 1: 골격 + 잠금 게이트 + 사이드바 chip
   Step 2: 전체 보기 탭 (KPI + 타임라인 + 테이블 + 페이징 + 모달) ★

   원칙: AL2 토큰만 사용, al2-fcst-* 네임스페이스, 공통은 ailink-ds.css
   ═══════════════════════════════════════════════════════════════ */

/* ─── 1. 페이지 헤더 — v3.5.8 (2026-04-29) 컴팩트
   v3.7.7 (2026-04-30): GNB 가림 방지 — 충분한 top padding + position 안정 ─── */
.al2-page-header {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 16px; padding: 16px 4px 12px;
  border-bottom: 1px solid var(--al2-g100); background: transparent;
  position: relative;
  z-index: 1;
}
/* 각 페이지 컨테이너 — GNB 아래 여유 공간 확보 */
.al2-page.on { padding-top: 0; }
/* 모바일/좁은 화면 대응 — main padding이 줄면 헤더가 더 가까이 붙음 */
@media (max-width: 760px) {
  .al2-page-header { padding-top: 12px; }
}
.al2-page-header-title {
  font-size: 1.05rem; font-weight: 700; color: var(--al2-g900);
  line-height: 1.3; letter-spacing: -0.01em;
  display: flex; align-items: center; gap: 6px;
}
/* v3.5.16: 데이터 소스 ⓘ 아이콘 — 헤더 옆 hover tooltip */
.al2-fcst-source-info {
  display: inline-flex; align-items: center; justify-content: center;
  width: 18px; height: 18px;
  color: var(--al2-g400); cursor: help; font-size: .82rem;
  transition: color .12s;
}
.al2-fcst-source-info:hover { color: var(--al2-brand); }
.al2-page-header-desc {
  margin-top: 2px; font-size: .76rem; font-weight: 500;
  color: var(--al2-g500); line-height: 1.4;
}

/* ─── 2. 사이드바 섹션 액션 버튼 ─── */
.al2-sb-section-action {
  float: right; width: 20px; height: 20px; padding: 0;
  border: none; background: transparent; color: var(--al2-g400);
  cursor: pointer; border-radius: 4px; font-size: .7rem;
  transition: all .15s ease;
}
.al2-sb-section-action:hover { background: var(--al2-g100); color: var(--al2-brand); }

/* ─── 3. 사이드바 키워드 chip ─── */
.al2-fcst-kw-chips {
  display: flex; flex-wrap: wrap; gap: 4px;
  padding: 4px 16px 10px; max-height: 120px; overflow-y: auto;
}
.al2-fcst-kw-chips::-webkit-scrollbar { width: 3px; }
.al2-fcst-kw-chips::-webkit-scrollbar-thumb { background: var(--al2-g200); border-radius: 2px; }
.al2-fcst-kw-chip {
  font-size: .65rem; font-weight: 600; padding: 3px 8px; border-radius: 99px;
  background: var(--al2-brand-dim); color: var(--al2-brand);
  cursor: pointer; transition: all .12s ease;
  border: 1px solid transparent; white-space: nowrap;
}
.al2-fcst-kw-chip:hover { background: var(--al2-brand); color: #fff; }
.al2-fcst-kw-chip-more {
  font-size: .65rem; font-weight: 600; padding: 3px 8px; border-radius: 99px;
  background: var(--al2-g100); color: var(--al2-g500);
}
.al2-fcst-kw-loading, .al2-fcst-kw-empty {
  font-size: .65rem; color: var(--al2-g400); padding: 2px 0;
}

/* ─── 4. 사이드바 v3 태그 ─── */
.al2-fcst-v3-tag {
  margin: 8px 16px 16px; padding: 8px 12px;
  background: linear-gradient(135deg, var(--al2-brand-dim), #fff);
  border: 1px dashed var(--al2-brand); border-radius: 8px;
  font-size: .68rem; font-weight: 700; color: var(--al2-brand);
  text-align: center;
}
.al2-fcst-v3-tag i { margin-right: 4px; }
.al2-fcst-v3-link {
  display: block; margin-top: 4px; font-size: .62rem;
  font-weight: 500; color: var(--al2-g500); text-decoration: none;
}
.al2-fcst-v3-link:hover { color: var(--al2-brand); }

/* ─── 5. 빈 placeholder ─── */
.al2-fcst-empty {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  padding: 80px 24px; text-align: center; color: var(--al2-g400); min-height: 320px;
}
.al2-fcst-empty i { font-size: 3rem; color: var(--al2-g200); margin-bottom: 18px; }
.al2-fcst-empty p { margin: 0; font-size: 1rem; font-weight: 700; color: var(--al2-g500); }
.al2-fcst-empty span {
  display: block; margin-top: 6px; font-size: .78rem; font-weight: 500;
  color: var(--al2-g400); font-family: 'JetBrains Mono', monospace;
}
.al2-fcst-empty-state { padding: 60px 24px; text-align: center; color: var(--al2-g400); }
.al2-fcst-empty-state i { font-size: 2.4rem; color: var(--al2-g200); margin-bottom: 14px; }
.al2-fcst-empty-state h3 { margin: 0; font-size: 1rem; font-weight: 700; color: var(--al2-g600); }
.al2-fcst-empty-state p { margin: 6px 0 0; font-size: .8rem; color: var(--al2-g400); }

/* ─── 6. 잠금 게이트 ─── */
.al2-fcst-locked {
  max-width: 640px; margin: 48px auto; padding: 48px 36px; background: #fff;
  border: 1px solid var(--al2-g100); border-radius: 16px;
  box-shadow: 0 4px 24px rgba(0, 0, 0, .06); text-align: center;
}
.al2-fcst-locked-icon {
  display: flex; align-items: center; justify-content: center;
  width: 72px; height: 72px; margin: 0 auto 20px;
  background: var(--al2-brand-dim); color: var(--al2-brand);
  border-radius: 50%; font-size: 1.8rem;
}
.al2-fcst-locked h2 {
  margin: 0 0 10px; font-size: 1.35rem; font-weight: 800;
  color: var(--al2-g900); letter-spacing: -0.01em;
}
.al2-fcst-locked p {
  margin: 0 0 28px; font-size: .88rem; font-weight: 500;
  color: var(--al2-g500); line-height: 1.6;
}
.al2-fcst-locked-stats {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;
  margin-bottom: 28px; padding: 18px; background: var(--al2-g50); border-radius: 12px;
}
.al2-fcst-locked-stat { display: flex; flex-direction: column; gap: 4px; }
.al2-fcst-locked-stat .v {
  font-size: 1.2rem; font-weight: 800; color: var(--al2-g900);
  font-family: 'JetBrains Mono', monospace;
}
.al2-fcst-locked-stat .v.blur { filter: blur(4px); user-select: none; }
.al2-fcst-locked-stat.locked .v { color: var(--al2-g300); }
.al2-fcst-locked-stat .l { font-size: .68rem; font-weight: 600; color: var(--al2-g500); }
.al2-fcst-locked-benefits { list-style: none; padding: 0; margin: 0 0 28px; text-align: left; }
.al2-fcst-locked-benefits li {
  display: flex; align-items: center; gap: 10px; padding: 10px 0;
  font-size: .85rem; font-weight: 500; color: var(--al2-g700);
  border-bottom: 1px solid var(--al2-g100);
}
.al2-fcst-locked-benefits li:last-child { border-bottom: none; }
.al2-fcst-locked-benefits li i { color: var(--al2-green); font-size: .95rem; }
.al2-fcst-locked-benefits strong { color: var(--al2-brand); font-weight: 800; }
.al2-fcst-locked-cta {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 14px 28px; background: var(--al2-brand); color: #fff;
  border-radius: 10px; font-size: .95rem; font-weight: 700;
  text-decoration: none; transition: all .15s ease;
  box-shadow: 0 4px 12px rgba(108, 58, 224, .25);
}
.al2-fcst-locked-cta:hover {
  background: var(--al2-brand-dark, #5a2cc0); transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(108, 58, 224, .35);
}
body.al2-fcst-locked-mode #sb-forecast .al2-sb-item:not([onclick]),
body.al2-fcst-locked-mode #sb-forecast .al2-sb-section-action {
  opacity: .4; pointer-events: none;
}

/* ─── 7. 전체 보기 탭 body + 면책 ─── */
/* v3.5.8 (2026-04-29): 입찰공고와 동일한 풀사이즈 — 내부 padding 최소화 */
.al2-fcst-body { padding: 12px 4px 32px; }

/* v3.5.29 (2026-04-30): 사업 카테고리 탭 바 — 솔루션랭킹 패턴 */
.al2-fcst-cat-tabs {
  display: flex; align-items: center; gap: 2px;
  border-bottom: 1px solid var(--al2-g200);
  margin: 4px 0 8px;
  padding: 0;
  overflow-x: auto;
  scrollbar-width: none;
}
.al2-fcst-cat-tabs::-webkit-scrollbar { display: none; }

.al2-fcst-cat-tab {
  --tab-color: var(--al2-g700);
  display: inline-flex; align-items: center; gap: 6px;
  padding: 10px 16px;
  background: transparent; border: 0; border-bottom: 2px solid transparent;
  font-size: .82rem; font-weight: 600; color: var(--al2-g600);
  cursor: pointer; font-family: inherit;
  transition: all .15s;
  white-space: nowrap;
  position: relative; bottom: -1px;
}
.al2-fcst-cat-tab i { font-size: .82rem; color: var(--tab-color); opacity: .8; }
.al2-fcst-cat-tab .cnt {
  font-family: var(--al2-font-mono); font-weight: 700; font-size: .7rem;
  padding: 1px 7px; border-radius: 99px;
  background: var(--al2-g100); color: var(--al2-g600);
  margin-left: 2px;
}
.al2-fcst-cat-tab:hover {
  color: var(--tab-color); background: var(--al2-g50);
}
.al2-fcst-cat-tab:hover .cnt { background: var(--al2-g200); }
.al2-fcst-cat-tab.on {
  color: var(--tab-color);
  border-bottom-color: var(--tab-color);
  background: linear-gradient(180deg, transparent 0%, color-mix(in srgb, var(--tab-color) 8%, transparent) 100%);
}
.al2-fcst-cat-tab.on .cnt {
  background: var(--tab-color); color: #fff;
}
.al2-fcst-cat-tab.on i { opacity: 1; }
@media (max-width: 540px) {
  .al2-fcst-cat-tab { padding: 8px 10px; font-size: .76rem; }
  .al2-fcst-cat-tab .lbl { display: none; }
  .al2-fcst-cat-tab .cnt { font-size: .66rem; }
}

/* ─── v3.6.0 (2026-04-30): Phase 1 Hero — KPI 4 + AI TOP 3 ─── */
.al2-fcst-hero {
  position: relative;
  margin: 0 0 12px;
  padding: 14px;
  background: linear-gradient(135deg, #faf5ff 0%, #f0fdf4 100%);
  border: 1px solid #e9d5ff;
  border-radius: 12px;
  overflow: hidden;
  transition: max-height .3s ease, padding .3s ease, opacity .2s ease;
}
.al2-fcst-hero.collapsed {
  max-height: 0; padding: 0 14px; border: 0; opacity: 0; margin: 0;
}
.al2-fcst-hero-toggle {
  position: absolute; top: 10px; right: 12px;
  width: 24px; height: 24px; border-radius: 50%;
  background: rgba(255,255,255,.7); border: 1px solid var(--al2-g200);
  color: var(--al2-g500); cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: .68rem; transition: all .12s;
}
.al2-fcst-hero-toggle:hover { color: var(--al2-brand); border-color: var(--al2-brand); }

/* KPI 4 위젯 */
.al2-fcst-kpi-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px;
  margin-bottom: 14px;
}
.al2-fcst-kpi-card {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 14px;
  background: #fff; border: 1px solid var(--al2-g200); border-radius: 10px;
  cursor: pointer; transition: all .15s;
  font-family: inherit; text-align: left;
}
.al2-fcst-kpi-card[data-kpi=""] { cursor: default; }
.al2-fcst-kpi-card:not([data-kpi=""]):hover {
  border-color: var(--al2-brand);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(108,58,224,.08);
}
/* v3.6.14: Hero KPI 활성 시각 — 클릭 시 보라 보더 + 배경 + 'ON' 표시 */
.al2-fcst-kpi-card.active {
  border-color: var(--al2-brand) !important;
  border-width: 2px;
  background: linear-gradient(135deg, rgba(108,58,224,.06) 0%, #fff 100%);
  box-shadow: 0 4px 12px rgba(108,58,224,.15);
}
.al2-fcst-kpi-card.active::after {
  content: 'ON'; position: absolute; top: 6px; right: 8px;
  font-size: .58rem; font-weight: 800;
  background: var(--al2-brand); color: #fff;
  padding: 1px 6px; border-radius: 99px;
  font-family: var(--al2-font-mono);
}
.al2-fcst-kpi-card { position: relative; }
.kpi-icon {
  width: 38px; height: 38px; border-radius: 10px; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--al2-brand-dim); color: var(--al2-brand);
  font-size: 1rem;
}
.kpi-body { flex: 1; min-width: 0; }
.kpi-label { font-size: .7rem; font-weight: 600; color: var(--al2-g500); }
.kpi-value {
  font-size: 1.4rem; font-weight: 800; font-family: var(--al2-font-mono);
  color: var(--al2-g900); line-height: 1.1; margin: 2px 0;
}
.kpi-trend { font-size: .66rem; color: var(--al2-g500); }

/* AI TOP 3 */
.al2-fcst-ai-top { padding-top: 4px; }
.ai-top-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 8px; padding: 0 4px;
}
.ai-top-title {
  display: flex; align-items: center; gap: 6px;
  font-size: .82rem; font-weight: 700; color: var(--al2-g800);
}
.ai-top-title i { color: var(--al2-brand); }
.ai-top-meta { font-size: .7rem; font-weight: 500; color: var(--al2-g500); margin-left: 4px; }
.ai-top-more {
  border: 0; background: transparent;
  font-size: .74rem; font-weight: 600; color: var(--al2-brand);
  cursor: pointer; font-family: inherit;
  display: inline-flex; align-items: center; gap: 4px;
  padding: 4px 8px; border-radius: 6px;
}
.ai-top-more:hover { background: rgba(108,58,224,.08); }

.ai-top-cards {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
}
.ai-top-empty {
  grid-column: span 3;
  text-align: center; padding: 24px;
  font-size: .82rem; color: var(--al2-g500);
  background: #fff; border: 1px dashed var(--al2-g200); border-radius: 10px;
}
.ai-top-empty i { color: var(--al2-g300); margin-right: 5px; }

.ai-top-card {
  display: flex; gap: 10px; padding: 12px;
  background: #fff; border: 1px solid var(--al2-g200); border-radius: 10px;
  cursor: pointer; transition: all .15s;
  position: relative; overflow: hidden;
}
.ai-top-card::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0;
  width: 3px; background: var(--card-accent, var(--al2-brand));
}
.ai-top-card:hover {
  border-color: var(--card-accent, var(--al2-brand));
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0,0,0,.06);
}
.ai-top-card-fit {
  flex-shrink: 0; width: 48px; height: 48px;
  display: inline-flex; flex-direction: column; align-items: center; justify-content: center;
  font-family: var(--al2-font-mono); font-weight: 800; font-size: 1.05rem;
  border-radius: 10px;
}
.ai-top-card-fit small { font-size: .55rem; font-weight: 600; opacity: .8; margin-top: -2px; }
.ai-top-card-fit.strong { background: #d1fae5; color: #047857; }
.ai-top-card-fit.mid    { background: #fef3c7; color: #b45309; }
.ai-top-card-fit.low    { background: var(--al2-g100); color: var(--al2-g500); }

.ai-top-card-body { flex: 1; min-width: 0; }
.ai-top-card-name {
  font-size: .82rem; font-weight: 700; color: var(--al2-g900); line-height: 1.4;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.ai-top-card-meta {
  display: flex; gap: 8px; flex-wrap: wrap; margin-top: 4px;
  font-size: .7rem; color: var(--al2-g500);
}
.ai-top-card-meta .budget {
  color: var(--al2-brand); font-weight: 700; font-family: var(--al2-font-mono);
}
.ai-top-card-reason {
  font-size: .68rem; color: var(--al2-g600); margin-top: 4px;
  font-style: italic;
}

@media (max-width: 1024px) {
  .al2-fcst-kpi-grid { grid-template-columns: repeat(2, 1fr); }
  .ai-top-cards { grid-template-columns: 1fr; }
  .ai-top-empty { grid-column: span 1; }
}

/* ─── v3.6.1: 시즌 배너 ─── */
.al2-fcst-season-banner {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 14px; margin: 0 0 8px;
  border-radius: 10px; border: 1px solid rgba(0,0,0,.05);
  font-size: .82rem; color: var(--al2-g800); line-height: 1.5;
  transition: all .3s ease;
}
.al2-fcst-season-banner > i { color: var(--al2-brand); font-size: 1rem; flex-shrink: 0; }
.al2-fcst-season-banner > span { flex: 1; }
.al2-fcst-season-banner > span b { color: var(--al2-g900); }
.al2-fcst-season-banner .season-close {
  width: 24px; height: 24px; border-radius: 50%;
  background: rgba(255,255,255,.7); border: 0;
  color: var(--al2-g500); cursor: pointer; flex-shrink: 0;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: .68rem; transition: all .12s;
}
.al2-fcst-season-banner .season-close:hover { background: rgba(0,0,0,.1); color: var(--al2-g800); }

/* 디테일 패널 메모 */
.al2-fcst-detail-note {
  margin-top: 10px; padding-top: 10px;
  border-top: 1px dashed var(--al2-g200);
}
.al2-fcst-detail-note label {
  font-size: .74rem; font-weight: 700; color: var(--al2-g700);
  display: flex; align-items: center; gap: 5px; margin-bottom: 4px;
}
.al2-fcst-detail-note label i { color: var(--al2-brand); font-size: .7rem; }
.al2-fcst-detail-note textarea {
  width: 100%; min-height: 60px; max-height: 160px;
  padding: 7px 9px; border: 1px solid var(--al2-g200); border-radius: 6px;
  font-size: .76rem; line-height: 1.5; font-family: inherit;
  background: #fffbeb; color: var(--al2-g800);
  resize: vertical; transition: border-color .12s;
}
.al2-fcst-detail-note textarea:focus {
  outline: none; border-color: #f59e0b;
  box-shadow: 0 0 0 3px rgba(245,158,11,.15);
}
.al2-fcst-detail-note textarea.saved {
  border-color: #10b981; box-shadow: 0 0 0 3px rgba(16,185,129,.15);
}

/* ─── v3.6.3: 검토 단계 (발견/검토중/제안준비/완료) ─── */
.al2-fcst-detail-stage {
  margin-top: 10px; padding-top: 10px;
  border-top: 1px dashed var(--al2-g200);
}
.al2-fcst-detail-stage label {
  font-size: .74rem; font-weight: 700; color: var(--al2-g700);
  display: flex; align-items: center; gap: 5px; margin-bottom: 6px;
}
.al2-fcst-detail-stage label i { color: var(--al2-brand); font-size: .7rem; }
.al2-fcst-stage-pills {
  display: flex; gap: 4px; flex-wrap: wrap;
}
.al2-fcst-stage-pill {
  --stage-color: #94a3b8;
  flex: 1; min-width: 60px;
  padding: 6px 10px; border-radius: 7px;
  background: #fff; border: 1.5px solid var(--al2-g200);
  font-size: .72rem; font-weight: 600; color: var(--al2-g600);
  cursor: pointer; font-family: inherit;
  transition: all .12s;
}
.al2-fcst-stage-pill:hover { border-color: var(--stage-color); color: var(--stage-color); }
.al2-fcst-stage-pill.on {
  background: var(--stage-color); border-color: var(--stage-color); color: #fff;
}

/* 카드 단계 배지 */
.al2-fcst-stage-badge {
  display: inline-flex; align-items: center;
  font-size: .6rem; font-weight: 700; color: #fff;
  padding: 1px 7px; border-radius: 99px;
  white-space: nowrap;
}

.al2-fcst-disclaimer {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 14px; margin-bottom: 18px;
  background: linear-gradient(135deg, #fff9e6, #fff);
  border: 1px solid #ffe58a; border-radius: 8px;
  font-size: .78rem; font-weight: 500; color: var(--al2-g700);
}
.al2-fcst-disclaimer i { color: #f59e0b; font-size: .9rem; }
.al2-fcst-disclaimer span { flex: 1; }
.al2-fcst-disclaimer a {
  color: var(--al2-brand); text-decoration: none;
  font-weight: 600; font-size: .72rem;
}
.al2-fcst-disclaimer a:hover { text-decoration: underline; }

/* ─── 8. KPI 카드 4개 ─── */
.al2-fcst-kpi-grid {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 14px; margin-bottom: 24px;
}
.al2-fcst-kpi {
  background: #fff; border: 1px solid var(--al2-g100); border-radius: 12px;
  padding: 18px 20px; cursor: pointer; transition: all .15s ease;
  position: relative; overflow: hidden;
}
.al2-fcst-kpi::before {
  content: ''; position: absolute; top: 0; left: 0;
  width: 4px; height: 100%; background: var(--al2-g200);
  transition: background .15s ease;
}
.al2-fcst-kpi:hover {
  border-color: var(--al2-brand); transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(0, 0, 0, .06);
}
.al2-fcst-kpi.urgent::before { background: var(--al2-red); }
.al2-fcst-kpi.large::before  { background: var(--al2-green); }
.al2-fcst-kpi.match::before  { background: var(--al2-brand); }
.al2-fcst-kpi.total::before  { background: var(--al2-blue); }
.al2-fcst-kpi-label {
  font-size: .72rem; font-weight: 600; color: var(--al2-g500); margin-bottom: 6px;
}
.al2-fcst-kpi-value {
  font-size: 1.8rem; font-weight: 800; color: var(--al2-g900);
  line-height: 1.1; font-family: 'JetBrains Mono', monospace;
  letter-spacing: -0.02em;
}
.al2-fcst-kpi-desc {
  margin-top: 4px; font-size: .68rem; font-weight: 500; color: var(--al2-g400);
}

/* ─── 9. 분기 타임라인 ─── */
/* v3.5.8 (2026-04-29): list 섹션은 wrapper 없이 풀폭, timeline만 박스 */
.al2-fcst-timeline {
  background: #fff; border: 1px solid var(--al2-g100);
  border-radius: 10px; padding: 14px; margin: 8px 0 0;
}
.al2-fcst-list {
  background: transparent; border: 0; padding: 0; margin-bottom: 12px;
}
.al2-fcst-sec-head {
  display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px;
}
.al2-fcst-sec-title {
  display: flex; align-items: center; gap: 8px;
  font-size: .92rem; font-weight: 700; color: var(--al2-g800);
}
.al2-fcst-sec-title i { color: var(--al2-g500); }
.al2-fcst-sec-title { display: flex; align-items: center; gap: 8px; }

/* v3.6.13 (2026-04-30): 필터 가이드 ⓘ 버튼 + 팝오버 */
.al2-fcst-filter-help {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 9px; border-radius: 99px;
  background: var(--al2-brand-dim); border: 0;
  font-size: .68rem; font-weight: 600; color: var(--al2-brand);
  cursor: pointer; font-family: inherit;
  transition: all .12s;
}
.al2-fcst-filter-help i { font-size: .76rem; }
.al2-fcst-filter-help:hover { background: var(--al2-brand); color: #fff; }

.al2-fcst-help-pop {
  position: fixed; z-index: 9000;
  width: 440px; max-width: calc(100vw - 24px);
  background: #fff; border: 1px solid var(--al2-g200); border-radius: 12px;
  box-shadow: 0 12px 32px rgba(15,23,42,.18);
  animation: helpPopIn .15s ease-out;
}
@keyframes helpPopIn { from { opacity: 0; transform: translateY(-4px); } }
.al2-fcst-help-pop .help-head {
  display: flex; align-items: center; gap: 7px;
  padding: 12px 14px; font-size: .86rem; font-weight: 700; color: var(--al2-g900);
  border-bottom: 1px solid var(--al2-g100);
}
.al2-fcst-help-pop .help-head > i { color: var(--al2-brand); font-size: .96rem; }
.al2-fcst-help-pop .help-close {
  margin-left: auto; width: 26px; height: 26px; border-radius: 50%;
  border: 0; background: var(--al2-g100); color: var(--al2-g600);
  cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
  font-size: .68rem;
}
.al2-fcst-help-pop .help-close:hover { background: var(--al2-g200); color: var(--al2-g900); }

.al2-fcst-help-pop .help-body {
  padding: 12px 14px 14px;
  max-height: 60vh; overflow-y: auto;
  scrollbar-width: thin; scrollbar-color: var(--al2-g200) transparent;
}
.al2-fcst-help-pop .help-section { margin-bottom: 10px; }
.al2-fcst-help-pop .help-section:last-of-type { margin-bottom: 0; }
.al2-fcst-help-pop .help-section-label {
  font-size: .76rem; font-weight: 700; color: var(--al2-g800);
  margin-bottom: 3px;
}
.al2-fcst-help-pop .help-row {
  font-size: .76rem; line-height: 1.55; color: var(--al2-g600);
  padding-left: 4px;
}
.al2-fcst-help-pop .help-row b { color: var(--al2-g900); }

.al2-fcst-help-pop .help-tip {
  margin-top: 10px; padding: 9px 11px;
  background: linear-gradient(135deg,#faf5ff,#f0fdf4);
  border: 1px solid #e9d5ff; border-radius: 8px;
  display: flex; align-items: flex-start; gap: 7px;
  font-size: .74rem; line-height: 1.5; color: var(--al2-g700);
}
.al2-fcst-help-pop .help-tip i { color: #f59e0b; margin-top: 2px; }
.al2-fcst-help-pop .help-tip b { color: var(--al2-g900); }

/* ─── v3.6.14 (2026-04-30): 활성 필터 요약 행 ─── */
.al2-fcst-active-summary {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  padding: 8px 12px; margin: 0 0 10px;
  background: linear-gradient(90deg, #f5f3ff 0%, #faf5ff 100%);
  border: 1px solid #e9d5ff; border-radius: 10px;
  font-size: .76rem;
}
.al2-fcst-as-label {
  font-size: .7rem; font-weight: 700; color: var(--al2-brand);
  background: rgba(255,255,255,.7); padding: 2px 8px; border-radius: 99px;
}
.al2-fcst-as-chips {
  display: inline-flex; align-items: center; gap: 4px; flex-wrap: wrap;
}
.al2-fcst-as-chip {
  display: inline-flex; padding: 3px 9px; border-radius: 99px;
  background: #fff; border: 1px solid var(--al2-g200);
  font-size: .72rem; font-weight: 600; color: var(--al2-g800);
}
.al2-fcst-as-arrow { color: var(--al2-g500); font-size: .82rem; font-weight: 700; }
.al2-fcst-as-count {
  font-family: var(--al2-font-mono); font-weight: 800; font-size: .88rem;
  color: var(--al2-brand);
}
.al2-fcst-as-count.zero { color: #dc2626; }
.al2-fcst-as-clear {
  margin-left: auto; padding: 4px 10px; border-radius: 99px;
  background: #fff; border: 1px solid #fecaca; color: #dc2626;
  font-size: .7rem; font-weight: 600; cursor: pointer; font-family: inherit;
  display: inline-flex; align-items: center; gap: 4px;
  transition: all .12s;
}
.al2-fcst-as-clear:hover { background: #fee2e2; }

/* ─── v3.6.20 (2026-04-30): 즐겨찾기 페이지 칸반·KPI·보조 ─── */

/* Kanban */
.al2-fcst-kanban {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px;
  margin-top: 8px;
}
.al2-fcst-kanban-col {
  background: var(--al2-g50); border-radius: 10px;
  display: flex; flex-direction: column;
  min-height: 200px; max-height: calc(100vh - 480px);
  overflow: hidden;
}
.kanban-col-head {
  --stage-color: #94a3b8;
  display: flex; align-items: center; gap: 6px;
  padding: 10px 12px;
  background: #fff;
  border-bottom: 3px solid var(--stage-color);
  font-size: .8rem;
}
.kanban-col-name { font-weight: 700; color: var(--stage-color); }
.kanban-col-count {
  font-family: var(--al2-font-mono); font-weight: 800; font-size: .76rem;
  background: var(--stage-color); color: #fff; padding: 1px 8px; border-radius: 99px;
}
.kanban-col-budget {
  margin-left: auto; font-size: .7rem; color: var(--al2-g500); font-family: var(--al2-font-mono);
}
.kanban-col-body {
  padding: 8px; flex: 1; overflow-y: auto;
  display: flex; flex-direction: column; gap: 6px;
  scrollbar-width: thin; scrollbar-color: var(--al2-g200) transparent;
}
.kanban-col-body::-webkit-scrollbar { width: 4px; }
.kanban-col-body::-webkit-scrollbar-thumb { background: var(--al2-g200); border-radius: 2px; }
.kanban-col-empty {
  text-align: center; padding: 16px 8px;
  font-size: .7rem; color: var(--al2-g400);
}

.al2-fcst-kanban-card {
  background: #fff; border: 1px solid var(--al2-g200); border-radius: 8px;
  padding: 8px 10px;
  cursor: pointer; transition: all .12s;
  display: flex; flex-direction: column; gap: 4px;
}
.al2-fcst-kanban-card:hover {
  border-color: var(--al2-brand);
  box-shadow: 0 2px 6px rgba(0,0,0,.06);
}
.kk-name {
  font-size: .76rem; font-weight: 700; color: var(--al2-g900); line-height: 1.4;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.kk-meta {
  display: flex; align-items: center; gap: 6px; font-size: .68rem; color: var(--al2-g500);
}
.kk-meta .kk-org {
  flex: 1; min-width: 0;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.kk-foot {
  display: flex; align-items: center; gap: 6px;
  padding-top: 4px; border-top: 1px dashed var(--al2-g100);
}
.kk-foot .kk-budget {
  margin-left: auto; font-family: var(--al2-font-mono); font-weight: 700;
  font-size: .72rem; color: var(--al2-brand);
}
.kk-stage-select {
  border: 1px solid var(--al2-g200); border-radius: 6px;
  padding: 3px 6px; font-size: .68rem; font-family: inherit;
  background: var(--al2-g50); color: var(--al2-g700); cursor: pointer;
  margin-top: 2px;
}
.kk-stage-select:hover { border-color: var(--al2-brand); }

/* 보조 섹션 (관심 기관/업체) — 더 작게 */
.al2-fcst-fav-secondary {
  display: grid; grid-template-columns: 1fr 1fr; gap: 12px;
  margin-top: 14px;
}
.al2-fcst-fav-section.compact {
  background: #fff; border: 1px solid var(--al2-g100); border-radius: 10px;
  padding: 12px 14px;
}
.al2-fcst-fav-section.compact .al2-fcst-fav-grid {
  grid-template-columns: 1fr;
}

@media (max-width: 1280px) {
  .al2-fcst-kanban { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
  .al2-fcst-kanban { grid-template-columns: 1fr; }
  .al2-fcst-fav-secondary { grid-template-columns: 1fr; }
}
.al2-fcst-sec-meta { font-size: .72rem; font-weight: 500; color: var(--al2-g500); }
.al2-fcst-quarter-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px;
}
.al2-fcst-quarter {
  padding: 14px; border: 1px solid var(--al2-g100); border-radius: 10px;
  cursor: pointer; transition: all .15s ease; background: var(--al2-g50);
}
.al2-fcst-quarter:hover {
  border-color: var(--al2-brand); background: #fff; transform: translateY(-1px);
}
.al2-fcst-quarter-head {
  display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px;
}
.al2-fcst-quarter-name { font-size: .82rem; font-weight: 700; color: var(--al2-g800); }
.al2-fcst-quarter-bar {
  height: 6px; background: var(--al2-g200);
  border-radius: 99px; overflow: hidden; margin-bottom: 10px;
}
.al2-fcst-quarter-fill {
  height: 100%; background: var(--al2-brand);
  border-radius: 99px; transition: width .6s ease;
}
.al2-fcst-quarter.q1 .al2-fcst-quarter-fill { background: linear-gradient(90deg, var(--al2-red), #f87171); }
.al2-fcst-quarter.q2 .al2-fcst-quarter-fill { background: linear-gradient(90deg, var(--al2-green), #4ade80); }
.al2-fcst-quarter.q3 .al2-fcst-quarter-fill { background: linear-gradient(90deg, var(--al2-yellow), #fbbf24); }
.al2-fcst-quarter.q4 .al2-fcst-quarter-fill { background: linear-gradient(90deg, var(--al2-blue), #60a5fa); }
.al2-fcst-quarter-stats {
  display: flex; align-items: baseline; justify-content: space-between;
}
.al2-fcst-quarter-count {
  font-size: 1.05rem; font-weight: 800; color: var(--al2-g900);
  font-family: 'JetBrains Mono', monospace;
}
.al2-fcst-quarter-count small {
  font-size: .65rem; font-weight: 600; color: var(--al2-g500); margin-left: 2px;
}
.al2-fcst-quarter-budget { font-size: .72rem; font-weight: 600; color: var(--al2-g600); }

/* ─── 10. 프로젝트 리스트 섹션 + 검색 ─── */
.al2-fcst-result-info { font-size: .78rem; font-weight: 500; color: var(--al2-g500); }
.al2-fcst-result-info strong {
  font-weight: 800; color: var(--al2-brand); font-family: 'JetBrains Mono', monospace;
}
.al2-fcst-search-toolbar {
  display: flex; flex-direction: column; gap: 10px; margin-bottom: 14px;
}
.al2-fcst-search-box { position: relative; display: flex; align-items: center; }
.al2-fcst-search-box > i {
  position: absolute; left: 14px; color: var(--al2-g400); font-size: .85rem;
}
.al2-fcst-search-box input {
  flex: 1; padding: 10px 40px 10px 38px;
  border: 1px solid var(--al2-g200); border-radius: 8px;
  font-size: .85rem; background: #fff; color: var(--al2-g900);
  font-family: inherit; transition: all .15s ease;
}
.al2-fcst-search-box input:focus {
  outline: none; border-color: var(--al2-brand);
  box-shadow: 0 0 0 3px var(--al2-brand-dim);
}
.al2-fcst-search-clear {
  position: absolute; right: 8px; width: 24px; height: 24px;
  border: none; background: var(--al2-g100); color: var(--al2-g500);
  border-radius: 50%; cursor: pointer;
  display: flex; align-items: center; justify-content: center; font-size: .65rem;
}
.al2-fcst-search-clear:hover { background: var(--al2-g200); }
.al2-fcst-keyword-tags {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
}
.al2-fcst-keyword-label { font-size: .72rem; font-weight: 600; color: var(--al2-g500); }
.al2-fcst-keyword-tag {
  padding: 4px 10px; border: 1px solid var(--al2-g200); border-radius: 99px;
  background: #fff; font-size: .7rem; font-weight: 600; color: var(--al2-g600);
  cursor: pointer; transition: all .12s ease;
}
.al2-fcst-keyword-tag:hover {
  border-color: var(--al2-brand); color: var(--al2-brand); background: var(--al2-brand-dim);
}

/* ─── 11. 필터 칩 ─── */
.al2-fcst-filter-chips {
  display: flex; gap: 8px; margin-bottom: 16px; flex-wrap: wrap;
}
.al2-fcst-chip {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 11px; border: 1px solid var(--al2-g200); border-radius: 99px;
  background: #fff; font-size: .74rem; font-weight: 600; color: var(--al2-g600);
  cursor: pointer; transition: all .12s ease;
  font-family: inherit;
  white-space: nowrap;
}
/* v3.6.11: 신규/계속 사업구분 칩은 다른 톤 (사용자 인지 분리) */
.al2-fcst-chip[data-bizcat="new"]:not(.active):hover {
  border-color: #ec4899; color: #be185d; background: #fdf2f8;
}
.al2-fcst-chip[data-bizcat="new"].active {
  background: #ec4899; border-color: #ec4899; color: #fff;
}
.al2-fcst-chip[data-bizcat="cont"]:not(.active):hover {
  border-color: var(--al2-g400); color: var(--al2-g700); background: var(--al2-g50);
}
.al2-fcst-chip[data-bizcat="cont"].active {
  background: var(--al2-g500); border-color: var(--al2-g500); color: #fff;
}
.al2-fcst-chip:hover { border-color: var(--al2-brand); color: var(--al2-brand); }
.al2-fcst-chip.active {
  background: var(--al2-brand); color: #fff; border-color: var(--al2-brand);
}
.al2-fcst-chip.active .al2-fcst-chip-count {
  background: rgba(255, 255, 255, .25); color: #fff;
}
.al2-fcst-chip-count {
  display: inline-block; min-width: 18px; padding: 1px 6px; border-radius: 99px;
  background: var(--al2-g100); color: var(--al2-g600);
  font-size: .65rem; font-weight: 700; text-align: center;
  font-family: 'JetBrains Mono', monospace;
}

/* ─── 12. 프로젝트 테이블 (컴팩트) ─── */
.al2-fcst-table {
  border: 1px solid var(--al2-g100); border-radius: 10px; overflow: hidden;
}
.al2-fcst-table-head {
  display: grid; grid-template-columns: 140px 1fr 90px 70px 110px 40px;
  gap: 12px; padding: 10px 14px;
  background: var(--al2-g50); border-bottom: 1px solid var(--al2-g100);
}
.al2-fcst-th {
  font-size: .7rem; font-weight: 700; color: var(--al2-g500);
  text-transform: uppercase; letter-spacing: 0.02em;
}
.al2-fcst-th.budget, .al2-fcst-th.quarter, .al2-fcst-th.action { text-align: center; }
.al2-fcst-table-body { display: flex; flex-direction: column; }
.al2-fcst-table-row {
  display: grid; grid-template-columns: 140px 1fr 90px 70px 110px 40px;
  gap: 12px; padding: 12px 14px;
  border-bottom: 1px solid var(--al2-g100);
  cursor: pointer; transition: background .12s ease; align-items: center;
}
.al2-fcst-table-row:last-child { border-bottom: none; }
.al2-fcst-table-row:hover { background: var(--al2-g50); }
.al2-fcst-table-row.has-match {
  background: linear-gradient(90deg, var(--al2-brand-dim) 0%, transparent 40%);
}
.al2-fcst-table-row.has-match:hover {
  background: linear-gradient(90deg, var(--al2-brand-dim) 0%, var(--al2-g50) 40%);
}
.al2-fcst-td { font-size: .8rem; color: var(--al2-g800); }
.al2-fcst-td.org { display: flex; flex-direction: column; gap: 2px; overflow: hidden; }
.al2-fcst-org-type {
  font-size: .62rem; font-weight: 700; color: var(--al2-g500);
  text-transform: uppercase; letter-spacing: 0.02em;
}
.al2-fcst-org-name {
  font-size: .78rem; font-weight: 600; color: var(--al2-g800);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.al2-fcst-td.name { min-width: 0; }
.al2-fcst-name-wrap {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 4px;
}
.al2-fcst-project-name {
  font-size: .85rem; font-weight: 700; color: var(--al2-g900); line-height: 1.4;
}
.al2-fcst-row-badges { display: inline-flex; gap: 4px; flex-wrap: wrap; }
.al2-fcst-row-badge {
  display: inline-block; padding: 2px 7px; border-radius: 4px;
  font-size: .62rem; font-weight: 700;
  background: var(--al2-g100); color: var(--al2-g600);
}
.al2-fcst-row-badge.urgent { background: #fee2e2; color: var(--al2-red); }
.al2-fcst-row-badge.large  { background: #dcfce7; color: #16a34a; }
.al2-fcst-row-badge.match  { background: var(--al2-brand-dim); color: var(--al2-brand); }
.al2-fcst-row-badge.tech   { background: #e0f2fe; color: #0284c7; }
.al2-fcst-row-desc {
  font-size: .72rem; font-weight: 500; color: var(--al2-g500); line-height: 1.5;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 4px;
}
.al2-fcst-row-kws { display: flex; gap: 4px; flex-wrap: wrap; }
.al2-fcst-row-kw {
  font-size: .62rem; font-weight: 600; padding: 1px 6px; border-radius: 4px;
  background: var(--al2-g100); color: var(--al2-g500);
}
.al2-fcst-row-kw.match { background: var(--al2-brand-dim); color: var(--al2-brand); }
.al2-fcst-td.budget {
  font-size: .85rem; font-weight: 800; color: var(--al2-brand);
  text-align: center; font-family: 'JetBrains Mono', monospace;
}
.al2-fcst-td.quarter { text-align: center; }
.al2-fcst-quarter-tag {
  display: inline-block; padding: 3px 8px; border-radius: 4px;
  background: var(--al2-g100); color: var(--al2-g600);
  font-size: .68rem; font-weight: 700;
}
.al2-fcst-quarter-tag.q1 { background: #fee2e2; color: var(--al2-red); }
.al2-fcst-td.type {
  font-size: .72rem; font-weight: 500; color: var(--al2-g500);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.al2-fcst-td.action { text-align: center; }
.al2-fcst-row-bm {
  width: 30px; height: 30px; border: none; background: transparent;
  color: var(--al2-g300); cursor: pointer; border-radius: 6px;
  font-size: .9rem; transition: all .12s ease;
}
.al2-fcst-row-bm:hover { background: var(--al2-g100); color: var(--al2-brand); }
.al2-fcst-row-bm.active { color: var(--al2-brand); }

/* ─── 13. 페이지네이션 ─── */
.al2-fcst-pagination {
  display: flex; gap: 4px; justify-content: center; margin-top: 20px;
}
.al2-fcst-page-btn {
  min-width: 32px; height: 32px; padding: 0 10px;
  border: 1px solid var(--al2-g200); border-radius: 6px;
  background: #fff; color: var(--al2-g600);
  font-size: .78rem; font-weight: 600; cursor: pointer;
  transition: all .12s ease;
  font-family: 'JetBrains Mono', monospace;
}
.al2-fcst-page-btn:hover:not(:disabled) {
  border-color: var(--al2-brand); color: var(--al2-brand);
}
.al2-fcst-page-btn.active {
  background: var(--al2-brand); color: #fff; border-color: var(--al2-brand);
}
.al2-fcst-page-btn:disabled { opacity: .4; cursor: not-allowed; }

/* ─── 14. 공용 버튼 ─── */
.al2-fcst-btn-outline, .al2-fcst-btn-primary, .al2-fcst-btn-warn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 8px 14px; border-radius: 8px;
  font-size: .8rem; font-weight: 700; cursor: pointer;
  transition: all .12s ease; font-family: inherit;
  border: 1px solid transparent;
}
.al2-fcst-btn-outline {
  border-color: var(--al2-g200); background: #fff; color: var(--al2-g700);
}
.al2-fcst-btn-outline:hover {
  border-color: var(--al2-brand); color: var(--al2-brand);
}
.al2-fcst-btn-outline.sm { padding: 6px 12px; font-size: .72rem; }
.al2-fcst-btn-primary {
  background: var(--al2-brand); color: #fff;
  box-shadow: 0 2px 8px rgba(108, 58, 224, .2);
}
.al2-fcst-btn-primary:hover {
  background: var(--al2-brand-dark, #5a2cc0);
  box-shadow: 0 4px 12px rgba(108, 58, 224, .3);
}
.al2-fcst-btn-warn {
  background: #f59e0b; color: #fff;
}
.al2-fcst-btn-warn:hover { background: #d97706; }

/* ─── 15. 모달 (공용) ─── */
.al2-fcst-modal {
  position: fixed; inset: 0; z-index: 2000;
  display: flex; align-items: flex-start; justify-content: center;
  padding: 4vh 16px;
  overflow-y: auto;
  opacity: 0; visibility: hidden;
  transition: opacity .2s ease, visibility .2s ease;
}
.al2-fcst-modal.show { opacity: 1; visibility: visible; }
.al2-fcst-modal-overlay {
  position: absolute; inset: 0;
  background: rgba(15, 23, 42, .45);
}
.al2-fcst-modal-content {
  position: relative;
  width: 100%; max-width: 720px; max-height: 92vh;
  background: #fff; border-radius: 16px; overflow: hidden;
  display: flex; flex-direction: column;
  box-shadow: 0 20px 60px rgba(0, 0, 0, .25);
  transform: translateY(20px);
  transition: transform .2s ease;
  margin: auto 0;
}
.al2-fcst-modal-header {
  position: sticky; top: 0; z-index: 2;
  background: #fff;
}
.al2-fcst-modal-footer {
  position: sticky; bottom: 0; z-index: 2;
}
.al2-fcst-modal.show .al2-fcst-modal-content { transform: translateY(0); }
.al2-fcst-modal-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px 24px; border-bottom: 1px solid var(--al2-g100);
}
.al2-fcst-modal-header h3 {
  margin: 0; font-size: 1.05rem; font-weight: 800;
  color: var(--al2-g900); display: flex; align-items: center; gap: 8px;
}
.al2-fcst-modal-header h3 i { color: var(--al2-brand); }
.al2-fcst-modal-close {
  width: 32px; height: 32px; border: none; background: var(--al2-g100);
  color: var(--al2-g500); border-radius: 8px; cursor: pointer;
  font-size: .85rem; transition: all .12s ease;
}
.al2-fcst-modal-close:hover { background: var(--al2-g200); color: var(--al2-g800); }
.al2-fcst-modal-body {
  padding: 20px 24px;
  overflow-y: auto; flex: 1;
}
.al2-fcst-modal-footer {
  display: flex; gap: 8px; justify-content: flex-end;
  padding: 14px 24px; border-top: 1px solid var(--al2-g100);
  background: var(--al2-g50);
}

/* 상세 모달 내부 */
.al2-fcst-detail-org {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  padding-bottom: 14px;
}
.al2-fcst-detail-org strong {
  font-weight: 700; color: var(--al2-g800); font-size: .88rem;
}
.al2-fcst-tag {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 8px; border-radius: 4px;
  background: var(--al2-g100); color: var(--al2-g600);
  font-size: .68rem; font-weight: 700;
}
.al2-fcst-tag.tech { background: var(--al2-brand-dim); color: var(--al2-brand); }
.al2-fcst-tag-list { display: flex; gap: 6px; flex-wrap: wrap; }
.al2-fcst-tag-empty { font-size: .75rem; color: var(--al2-g400); }
.al2-fcst-detail-desc {
  padding: 12px 14px; margin-bottom: 14px;
  background: var(--al2-g50); border-radius: 8px;
  font-size: .8rem; font-weight: 500; color: var(--al2-g700); line-height: 1.6;
}
.al2-fcst-detail-grid {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px;
}
.al2-fcst-detail-cell {
  display: flex; flex-direction: column; gap: 2px;
  padding: 10px 12px; background: var(--al2-g50); border-radius: 6px;
}
.al2-fcst-detail-label {
  font-size: .68rem; font-weight: 600; color: var(--al2-g500);
}
.al2-fcst-detail-value {
  font-size: .85rem; font-weight: 700; color: var(--al2-g900);
}
.al2-fcst-detail-value.brand {
  color: var(--al2-brand); font-size: 1rem;
  font-family: 'JetBrains Mono', monospace;
}
.al2-fcst-detail-value.red { color: var(--al2-red); }
.al2-fcst-detail-divider {
  height: 1px; background: var(--al2-g100); margin: 18px 0 12px;
}
.al2-fcst-detail-sh {
  font-size: .78rem; font-weight: 800; color: var(--al2-g700);
  margin-bottom: 10px; letter-spacing: -0.01em;
}
.al2-fcst-detail-sh.brand { color: var(--al2-brand); }

/* 상세 모달 영업 관리 패널 */
.al2-fcst-stage-label {
  font-size: .68rem; font-weight: 600; color: var(--al2-g500); margin-bottom: 6px;
}
.al2-fcst-stages {
  display: flex; gap: 6px; margin-bottom: 14px; flex-wrap: wrap;
}
.al2-fcst-stage-btn {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 6px 10px; border: 1px solid var(--al2-g200); border-radius: 6px;
  background: #fff; color: var(--al2-g600);
  font-size: .72rem; font-weight: 600; cursor: pointer;
  transition: all .12s ease; font-family: inherit;
}
.al2-fcst-stage-btn:hover {
  border-color: var(--al2-brand); color: var(--al2-brand);
}
.al2-fcst-stage-btn.active {
  background: var(--al2-brand); color: #fff; border-color: var(--al2-brand);
}
.al2-fcst-memo {
  width: 100%; min-height: 72px; padding: 10px 12px;
  border: 1px solid var(--al2-g200); border-radius: 6px;
  font-size: .78rem; font-family: inherit; color: var(--al2-g800);
  resize: vertical; margin-bottom: 8px;
}
.al2-fcst-memo:focus {
  outline: none; border-color: var(--al2-brand);
  box-shadow: 0 0 0 3px var(--al2-brand-dim);
}

/* ─── 16. 나라장터 가이드 모달 ─── */
.al2-fcst-guide .al2-fcst-modal-content { max-width: 560px; }

.al2-fcst-guide-notice {
  display: flex; gap: 12px; padding: 14px;
  background: linear-gradient(135deg, #fff4e6, #fff);
  border: 1px solid #fed7aa; border-radius: 10px; margin-bottom: 16px;
}
.al2-fcst-guide-notice .icon {
  width: 36px; height: 36px; flex-shrink: 0;
  background: #f59e0b; color: #fff; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 1rem;
}
.al2-fcst-guide-notice .title {
  font-size: .88rem; font-weight: 800; color: #92400e; margin-bottom: 4px;
}
.al2-fcst-guide-notice .desc {
  font-size: .76rem; font-weight: 500; color: var(--al2-g700); line-height: 1.6;
}
.al2-fcst-guide-project {
  padding: 14px; background: var(--al2-brand-dim);
  border-radius: 10px; margin-bottom: 16px;
}
.al2-fcst-guide-project .label {
  font-size: .68rem; font-weight: 700; color: var(--al2-brand);
  text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 6px;
}
.al2-fcst-guide-project .name {
  font-size: 1rem; font-weight: 800; color: var(--al2-g900);
  line-height: 1.4; margin-bottom: 8px;
}
.al2-fcst-guide-project .meta {
  display: flex; gap: 14px; flex-wrap: wrap;
}
.al2-fcst-guide-project .meta span {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: .72rem; font-weight: 600; color: var(--al2-g600);
}
.al2-fcst-guide-steps {
  padding: 14px; background: var(--al2-g50);
  border-radius: 10px; margin-bottom: 16px;
}
.al2-fcst-guide-steps .title {
  font-size: .82rem; font-weight: 800; color: var(--al2-g800);
  margin-bottom: 10px; display: flex; align-items: center; gap: 6px;
}
.al2-fcst-guide-steps .title i { color: var(--al2-brand); }
.al2-fcst-guide-steps .step {
  display: flex; align-items: flex-start; gap: 10px; padding: 6px 0;
  font-size: .78rem; color: var(--al2-g700); line-height: 1.5;
}
.al2-fcst-guide-steps .num {
  width: 22px; height: 22px; flex-shrink: 0;
  background: var(--al2-brand); color: #fff; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: .7rem; font-weight: 800;
}
.al2-fcst-guide-data {
  display: flex; gap: 10px; padding: 12px 14px;
  background: #f0f9ff; border: 1px solid #bae6fd; border-radius: 8px;
  font-size: .74rem; font-weight: 500; color: var(--al2-g700); line-height: 1.6;
}
.al2-fcst-guide-data i {
  color: #0284c7; font-size: 1rem; flex-shrink: 0; margin-top: 2px;
}

/* ─── 17. 반응형 ─── */
@media (max-width: 1100px) {
  .al2-fcst-kpi-grid { grid-template-columns: repeat(2, 1fr); }
  .al2-fcst-quarter-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
  .al2-fcst-locked { margin: 16px; padding: 32px 20px; }
  .al2-fcst-locked-stats { grid-template-columns: repeat(2, 1fr); }
  .al2-page-header { padding: 20px; flex-direction: column; align-items: stretch; }
  .al2-page-header-title { font-size: 1.15rem; }
  .al2-fcst-body { padding: 16px; }
  .al2-fcst-table-head, .al2-fcst-table-row {
    grid-template-columns: 1fr 80px 40px;
    gap: 8px;
  }
  .al2-fcst-th.org, .al2-fcst-th.quarter, .al2-fcst-th.type,
  .al2-fcst-td.org, .al2-fcst-td.quarter, .al2-fcst-td.type { display: none; }
  .al2-fcst-detail-grid { grid-template-columns: 1fr; }
  .al2-fcst-modal-content { width: 96%; max-height: 96vh; }
}

/* ═══════════════════════════════════════════════
   18. Step 3 — 분기별 탭
   Chart.js 차트 + 분기 카드 4개 + 선택 리스트
   v3.7.0 (2026-04-30): 전체보기와 일관성 — Hero/CatTabs/UnifiedBar/Split 추가
   ═══════════════════════════════════════════════ */

/* v3.7.0: quarter overview 그룹 — 차트와 분기카드를 한 섹션으로 묶어 시각적 응집 */
.al2-fcst-quarter-overview {
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 14px;
  padding: 18px;
  margin-bottom: 18px;
}
.al2-fcst-quarter-overview .al2-fcst-quarter-charts { margin-bottom: 16px; }
.al2-fcst-quarter-overview .al2-fcst-chart-box {
  background: #fafbfc;
  border: 1px solid var(--al2-g100);
}
.al2-fcst-quarter-overview .al2-fcst-qcards { margin-top: 0; }

/* v3.7.0: 분기 탭 정렬 드롭다운 */
.al2-fc-sort-menu button {
  padding: 8px 12px;
  border: none;
  background: transparent;
  text-align: left;
  font-size: .82rem;
  border-radius: 6px;
  cursor: pointer;
  color: var(--al2-g700);
}
.al2-fc-sort-menu button:hover { background: var(--al2-g50); }
.al2-fc-sort-menu button.on { background: var(--al2-brand); color: #fff; }

/* v3.7.0: 분기탭 카드 그리드 (전체보기와 동일 — auto-fill 다중 컬럼)
   v3.7.4 (2026-04-30): 전체보기 패턴과 일치 — repeat(auto-fill, minmax(300px, 1fr))
   디테일 열림 시 단일 컬럼으로 전환 */
#fc-quarter-project-list .al2-fcst-cards-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 12px;
}
.al2-fcst-split.has-detail #fc-quarter-project-list .al2-fcst-cards-grid {
  grid-template-columns: 1fr;
}

/* v3.7.0: 분기탭 반응형 — 차트 그리드는 좁은 화면에서 1열 */
@media (max-width: 880px) {
  .al2-fcst-quarter-overview { padding: 12px; }
}

/* ═══════════════════════════════════════════════
   v3.7.1 (2026-04-30): 분기탭 Phase 2 — 글로벌 트랜드 UX
   (A) 월별 strip / (C+D+E) 인사이트 Drawer / (F) Saved Views
   (I) Print 모드 / (J) Density 토글
   ═══════════════════════════════════════════════ */

/* (F) Saved Views row */
.al2-fcst-saved-views {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 8px 12px;
  margin-bottom: 12px;
  background: linear-gradient(135deg, #fff8e1 0%, #fffbeb 100%);
  border: 1px dashed #fde68a;
  border-radius: 10px;
  font-size: .8rem;
}
.al2-fcst-sv-label {
  display: inline-flex; align-items: center; gap: 6px;
  color: #92400e; font-weight: 700; font-size: .78rem;
  white-space: nowrap;
}
.al2-fcst-sv-label i { color: #f59e0b; }
.al2-fcst-sv-empty { color: var(--al2-g500); font-size: .75rem; }
.al2-fcst-sv-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 4px 4px 10px;
  background: #fff;
  border: 1px solid #fde68a;
  border-radius: 16px;
  font-size: .76rem;
  color: var(--al2-g700);
  cursor: pointer;
  transition: all .15s;
}
.al2-fcst-sv-chip:hover { border-color: #f59e0b; color: #92400e; }
.al2-fcst-sv-chip .sv-name { font-weight: 600; max-width: 180px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.al2-fcst-sv-chip .sv-del {
  width: 18px; height: 18px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%;
  background: var(--al2-g100);
  color: var(--al2-g500);
  font-size: .55rem;
  transition: all .15s;
}
.al2-fcst-sv-chip .sv-del:hover { background: #fee2e2; color: #dc2626; }

.al2-fcst-savedview-add {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 10px;
  background: #fff;
  border: 1px solid var(--al2-g200);
  border-radius: 8px;
  font-size: .76rem;
  color: var(--al2-g700);
  cursor: pointer;
  white-space: nowrap;
}
.al2-fcst-savedview-add:hover { border-color: #f59e0b; color: #92400e; background: #fffbeb; }
.al2-fcst-savedview-add i { color: #f59e0b; }

/* (A) 월별 strip */
.al2-fcst-month-strip { margin-top: 16px; }
.al2-fcst-month-strip-head {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 8px;
  font-size: .78rem;
}
.al2-fcst-month-strip-head .title {
  display: inline-flex; align-items: center; gap: 6px;
  font-weight: 700; color: var(--al2-g800);
}
.al2-fcst-month-strip-head .title i { color: var(--al2-brand); }
.al2-fcst-month-strip-head .legend { color: var(--al2-g400); font-size: .68rem; }
.al2-fcst-month-strip-cells {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 4px;
  align-items: end;
}
.al2-fcst-month-strip-cells .msc {
  position: relative;
  display: flex; flex-direction: column; align-items: center; justify-content: flex-end;
  min-height: 70px;
  padding: 6px 2px 4px;
  border: 1px solid transparent;
  background: #fafbfc;
  border-radius: 6px;
  cursor: pointer;
  transition: all .15s;
}
.al2-fcst-month-strip-cells .msc:hover {
  border-color: var(--al2-brand);
  background: #f0f9ff;
}
.al2-fcst-month-strip-cells .msc.on {
  border-color: var(--al2-brand);
  background: #e0f2fe;
}
.al2-fcst-month-strip-cells .msc.q1 .msc-bar { background: rgba(239, 68, 68, 0.65); }
.al2-fcst-month-strip-cells .msc.q2 .msc-bar { background: rgba(34, 197, 94, 0.65); }
.al2-fcst-month-strip-cells .msc.q3 .msc-bar { background: rgba(245, 158, 11, 0.65); }
.al2-fcst-month-strip-cells .msc.q4 .msc-bar { background: rgba(59, 130, 246, 0.65); }
.al2-fcst-month-strip-cells .msc-bar {
  width: 70%;
  min-height: 3px;
  border-radius: 3px 3px 0 0;
  transition: height .25s;
}
.al2-fcst-month-strip-cells .msc-num {
  font-size: .7rem;
  font-weight: 700;
  color: var(--al2-g800);
  margin-top: 4px;
}
.al2-fcst-month-strip-cells .msc-mo {
  font-size: .62rem;
  color: var(--al2-g500);
}
.al2-fcst-month-strip-cells .now-marker {
  position: absolute;
  top: -10px; left: 50%;
  transform: translateX(-50%);
  font-size: .7rem;
  color: #dc2626;
  animation: msc-pulse 2s ease-in-out infinite;
}
@keyframes msc-pulse {
  0%, 100% { transform: translateX(-50%) translateY(0); opacity: 1; }
  50% { transform: translateX(-50%) translateY(-2px); opacity: .7; }
}

/* (C+D+E) 인사이트 Drawer */
.al2-fcst-q-insights {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 12px;
  margin-bottom: 18px;
}
@media (max-width: 1100px) { .al2-fcst-q-insights { grid-template-columns: 1fr; } }
.al2-fcst-q-insight-card {
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 12px;
  padding: 14px 16px;
}
.al2-fcst-q-insight-card.ai { border-top: 3px solid #6366f1; }
.al2-fcst-q-insight-card.org { border-top: 3px solid #10b981; }
.al2-fcst-q-insight-card.timeline { border-top: 3px solid #f59e0b; }
.al2-fcst-q-insight-card .qi-head {
  display: flex; align-items: center; gap: 6px;
  margin-bottom: 10px;
}
.al2-fcst-q-insight-card .qi-head i { font-size: .85rem; }
.al2-fcst-q-insight-card.ai .qi-head i { color: #6366f1; }
.al2-fcst-q-insight-card.org .qi-head i { color: #10b981; }
.al2-fcst-q-insight-card.timeline .qi-head i { color: #f59e0b; }
.al2-fcst-q-insight-card .qi-title { font-size: .82rem; font-weight: 700; color: var(--al2-g800); }
.al2-fcst-q-insight-card .qi-meta { font-size: .68rem; color: var(--al2-g400); margin-left: auto; }
.al2-fcst-q-insight-card .qi-empty {
  padding: 14px 8px;
  text-align: center;
  color: var(--al2-g400);
  font-size: .76rem;
}
.al2-fcst-q-insight-card .qi-empty i { display: block; font-size: 1.2rem; margin-bottom: 6px; opacity: .5; }

/* AI TOP 3 cards */
.qi-ai-row {
  display: flex; gap: 10px;
  padding: 8px;
  border-radius: 8px;
  cursor: pointer;
  transition: background .15s;
  align-items: center;
}
.qi-ai-row:hover { background: var(--al2-g50); }
.qi-ai-row + .qi-ai-row { border-top: 1px dashed var(--al2-g100); margin-top: 4px; padding-top: 12px; }
.qi-ai-fit {
  flex: 0 0 42px;
  width: 42px; height: 42px;
  border-radius: 10px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  font-size: 1.05rem; font-weight: 800;
  color: #fff;
}
.qi-ai-fit.strong { background: linear-gradient(135deg, #10b981, #059669); }
.qi-ai-fit.mid { background: linear-gradient(135deg, #f59e0b, #d97706); }
.qi-ai-fit.low { background: linear-gradient(135deg, #94a3b8, #64748b); }
.qi-ai-fit small { font-size: .55rem; font-weight: 600; opacity: .85; }
.qi-ai-body { flex: 1; min-width: 0; }
.qi-ai-name {
  font-size: .82rem; font-weight: 700; color: var(--al2-g800);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.qi-ai-meta {
  display: flex; gap: 8px; align-items: center;
  font-size: .68rem; color: var(--al2-g500);
  margin-top: 2px;
}
.qi-ai-meta .bud { font-weight: 700; color: #b45309; }
.qi-ai-reason {
  margin-top: 4px;
  font-size: .66rem;
  color: var(--al2-g600);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}

/* Top 발주 기관 cards */
.qi-org-row {
  display: flex; gap: 10px;
  padding: 8px;
  border: 0;
  background: transparent;
  width: 100%;
  text-align: left;
  border-radius: 8px;
  cursor: pointer;
  transition: background .15s;
  align-items: center;
}
.qi-org-row:hover { background: var(--al2-g50); }
.qi-org-row + .qi-org-row { border-top: 1px dashed var(--al2-g100); }
.qi-org-rank {
  flex: 0 0 28px;
  font-size: .9rem; font-weight: 800;
  color: #10b981;
}
.qi-org-body { flex: 1; min-width: 0; }
.qi-org-name {
  font-size: .8rem; font-weight: 700; color: var(--al2-g800);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  margin-bottom: 4px;
}
.qi-org-bar {
  height: 5px;
  background: var(--al2-g100);
  border-radius: 3px;
  overflow: hidden;
  margin-bottom: 4px;
}
.qi-org-bar span {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, #10b981, #34d399);
  border-radius: 3px;
  transition: width .4s ease-out;
}
.qi-org-meta { font-size: .68rem; color: var(--al2-g500); }

/* D-Day 타임라인 */
.qi-tl-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 10px;
  padding: 8px 10px;
  background: #fffbeb;
  border-radius: 8px;
}
.qi-tl-est { font-size: .82rem; font-weight: 700; color: #92400e; }
.qi-tl-status {
  font-size: .76rem; font-weight: 800;
  padding: 3px 10px;
  border-radius: 12px;
}
.qi-tl-status.urgent { background: #fee2e2; color: #dc2626; }
.qi-tl-status.soon { background: #fef3c7; color: #b45309; }
.qi-tl-status.future { background: #dbeafe; color: #1e40af; }
.qi-tl-status.now { background: #dcfce7; color: #15803d; }
.qi-tl-status.past { background: var(--al2-g100); color: var(--al2-g500); }
.qi-tl-bands {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 6px;
}
.qi-tl-band {
  display: flex; flex-direction: column; align-items: center;
  padding: 8px 4px;
  border: 1px solid var(--al2-g100);
  background: #fff;
  border-radius: 8px;
  cursor: pointer;
  transition: all .15s;
}
.qi-tl-band:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0,0,0,.08); }
.qi-tl-band.urgent { border-color: #fecaca; background: #fef2f2; }
.qi-tl-band.soon { border-color: #fde68a; background: #fffbeb; }
.qi-tl-band.future { border-color: #bfdbfe; background: #eff6ff; }
.qi-tl-band .lbl { font-size: .7rem; font-weight: 700; color: var(--al2-g600); }
.qi-tl-band.urgent .lbl { color: #dc2626; }
.qi-tl-band.soon .lbl { color: #b45309; }
.qi-tl-band.future .lbl { color: #1e40af; }
.qi-tl-band .cnt { font-size: 1.1rem; font-weight: 800; color: var(--al2-g800); margin-top: 2px; }

/* (J) Density 토글 */
.al2-fcst-density-toggle {
  display: inline-flex;
  background: var(--al2-g100);
  border-radius: 8px;
  padding: 2px;
  gap: 2px;
}
.al2-fcst-density-toggle button {
  width: 32px; height: 28px;
  border: 0;
  background: transparent;
  border-radius: 6px;
  cursor: pointer;
  color: var(--al2-g500);
  display: inline-flex; align-items: center; justify-content: center;
  font-size: .82rem;
}
.al2-fcst-density-toggle button[aria-pressed="true"] {
  background: #fff;
  color: var(--al2-brand);
  box-shadow: 0 1px 3px rgba(0,0,0,.1);
}
.al2-fcst-density-toggle button:hover { color: var(--al2-brand); }

/* density-compact 적용 시 카드 padding 축소 */
.al2-fcst-split.density-compact .al2-fcst-split-card { padding: 8px 12px; }
.al2-fcst-split.density-compact .al2-fcst-list-row { padding: 6px 10px; min-height: 36px; }
.al2-fcst-split.density-compact .al2-fcst-list-row .al2-fcst-row-desc { display: none; }
.al2-fcst-split.density-compact .al2-fcst-split-card .al2-fcst-split-card-desc { display: none; }
.al2-fcst-split.density-compact .al2-fcst-split-card .al2-fcst-row-kws { display: none; }

/* (I) Print 모드 — Hero/Saved Views/검색바/Pagination 숨기고 Charts+Insights+List만 인쇄 */
@media print {
  body.al2-fcst-printing .al2-page:not(#page-fc-quarter),
  body.al2-fcst-printing .al2-fcst-saved-views,
  body.al2-fcst-printing .al2-fcst-cat-tabs,
  body.al2-fcst-printing .al2-fcst-hero,
  body.al2-fcst-printing .al2-fcst-unified-bar,
  body.al2-fcst-printing .al2-fcst-pagination,
  body.al2-fcst-printing .al2-fcst-active-summary,
  body.al2-fcst-printing .al2-fcst-split-detail,
  body.al2-fcst-printing #app-sidebar,
  body.al2-fcst-printing #ailink-topbar,
  body.al2-fcst-printing nav,
  body.al2-fcst-printing aside { display: none !important; }
  body.al2-fcst-printing .al2-fcst-split { grid-template-columns: 1fr !important; }
  body.al2-fcst-printing { background: #fff; }
  body.al2-fcst-printing #page-fc-quarter { display: block !important; padding: 0 !important; }
  body.al2-fcst-printing .al2-fcst-quarter-overview { box-shadow: none; page-break-inside: avoid; }
  body.al2-fcst-printing .al2-fcst-q-insights { page-break-inside: avoid; }
}

/* 차트 영역 (상단 2개) */
.al2-fcst-quarter-charts {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 16px;
  margin-bottom: 20px;
}
.al2-fcst-chart-box {
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 12px;
  padding: 18px 20px;
}
.al2-fcst-chart-title {
  display: flex; align-items: center; gap: 8px;
  font-size: .88rem; font-weight: 700; color: var(--al2-g800);
  margin-bottom: 14px;
}
.al2-fcst-chart-title i { color: var(--al2-brand); }
.al2-fcst-chart-canvas-wrap {
  position: relative;
  height: 260px;
}
.al2-fcst-chart-canvas-wrap canvas {
  max-width: 100%;
  max-height: 100%;
}

/* 분기 카드 4개 (선택 가능) */
.al2-fcst-qcards {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-bottom: 20px;
}
.al2-fcst-qcard {
  background: #fff;
  border: 2px solid var(--al2-g100);
  border-radius: 12px;
  padding: 18px 20px;
  cursor: pointer;
  transition: all .15s ease;
  position: relative;
  overflow: hidden;
}
.al2-fcst-qcard::before {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 4px;
  background: var(--al2-g200);
  transition: background .15s ease;
}
.al2-fcst-qcard.q1::before { background: var(--al2-red); }
.al2-fcst-qcard.q2::before { background: var(--al2-green); }
.al2-fcst-qcard.q3::before { background: var(--al2-yellow); }
.al2-fcst-qcard.q4::before { background: var(--al2-blue); }

.al2-fcst-qcard:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(0, 0, 0, .08);
}
.al2-fcst-qcard.selected {
  border-color: var(--al2-brand);
  box-shadow: 0 0 0 3px var(--al2-brand-dim),
              0 8px 20px rgba(108, 58, 224, .15);
}
.al2-fcst-qcard.selected::after {
  content: '✓';
  position: absolute;
  top: 12px;
  right: 14px;
  width: 22px;
  height: 22px;
  background: var(--al2-brand);
  color: #fff;
  border-radius: 50%;
  font-size: .72rem;
  font-weight: 900;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 2px 6px rgba(108, 58, 224, .3);
}

.al2-fcst-qcard-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
}
.al2-fcst-qcard-head i {
  font-size: 1.1rem;
}
.al2-fcst-qcard-name {
  font-size: .85rem;
  font-weight: 800;
  color: var(--al2-g900);
  letter-spacing: -0.01em;
}

.al2-fcst-qcard-count {
  font-size: 1.6rem;
  font-weight: 800;
  color: var(--al2-g900);
  line-height: 1.1;
  font-family: 'JetBrains Mono', monospace;
  letter-spacing: -0.02em;
  margin-bottom: 4px;
}
.al2-fcst-qcard-budget {
  font-size: .76rem;
  font-weight: 600;
  color: var(--al2-g500);
  margin-bottom: 12px;
}

.al2-fcst-qcard-bar {
  height: 5px;
  background: var(--al2-g100);
  border-radius: 99px;
  overflow: hidden;
}
.al2-fcst-qcard-fill {
  height: 100%;
  border-radius: 99px;
  transition: width .6s cubic-bezier(.22, 1, .36, 1);
}
.al2-fcst-qcard.q1 .al2-fcst-qcard-fill {
  background: linear-gradient(90deg, var(--al2-red), #f87171);
}
.al2-fcst-qcard.q2 .al2-fcst-qcard-fill {
  background: linear-gradient(90deg, var(--al2-green), #4ade80);
}
.al2-fcst-qcard.q3 .al2-fcst-qcard-fill {
  background: linear-gradient(90deg, var(--al2-yellow), #fbbf24);
}
.al2-fcst-qcard.q4 .al2-fcst-qcard-fill {
  background: linear-gradient(90deg, var(--al2-blue), #60a5fa);
}

/* 반응형 (Step 3) */
@media (max-width: 1100px) {
  .al2-fcst-quarter-charts { grid-template-columns: 1fr; }
  .al2-fcst-chart-canvas-wrap { height: 220px; }
  .al2-fcst-qcards { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px) {
  .al2-fcst-qcards { grid-template-columns: 1fr 1fr; gap: 10px; }
  .al2-fcst-qcard { padding: 14px 16px; }
  .al2-fcst-qcard-count { font-size: 1.35rem; }
  .al2-fcst-chart-canvas-wrap { height: 200px; }
}

/* ═══════════════════════════════════════════════
   19. Step 4 — AI 맞춤 추천 탭
   온보딩 + 키워드 바 + TOP 5 추천 + 점수 가이드
   ═══════════════════════════════════════════════ */

/* AI 뱃지 */
.al2-fcst-ai-badge {
  display: inline-block;
  margin-left: 8px;
  padding: 2px 8px;
  border-radius: 99px;
  background: linear-gradient(135deg, var(--al2-brand), #8b5cf6);
  color: #fff;
  font-size: .6rem;
  font-weight: 800;
  letter-spacing: 0.05em;
  vertical-align: middle;
}

/* 로딩 */
.al2-fcst-ai-loading {
  padding: 80px 20px;
  text-align: center;
  color: var(--al2-g400);
}
.al2-fcst-ai-loading i {
  font-size: 3rem;
  color: var(--al2-brand);
  margin-bottom: 16px;
  animation: al2-fcst-pulse 1.5s ease-in-out infinite;
}
.al2-fcst-ai-loading p {
  font-size: .95rem;
  font-weight: 600;
  color: var(--al2-g600);
}
@keyframes al2-fcst-pulse {
  0%, 100% { opacity: .5; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.05); }
}

/* 키워드 chip 바 (AI 탭 상단) */
.al2-fcst-ai-kwbar {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 18px;
  margin-bottom: 20px;
  background: linear-gradient(135deg, var(--al2-brand-dim), #fff);
  border: 1px solid var(--al2-brand-dim);
  border-radius: 12px;
}
.al2-fcst-ai-kwbar-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: .78rem;
  font-weight: 800;
  color: var(--al2-brand);
  flex-shrink: 0;
}
.al2-fcst-ai-kwbar-chips {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  flex: 1;
}
.al2-fcst-ai-kw-chip {
  padding: 5px 12px;
  background: #fff;
  border: 1px solid var(--al2-brand);
  border-radius: 99px;
  font-size: .74rem;
  font-weight: 700;
  color: var(--al2-brand);
  cursor: pointer;
  transition: all .12s ease;
}
.al2-fcst-ai-kw-chip:hover {
  background: var(--al2-brand);
  color: #fff;
  transform: translateY(-1px);
}

/* AI 추천 섹션 */
.al2-fcst-ai-section {
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 12px;
  padding: 22px 24px;
}
.al2-fcst-ai-sec-meta {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: .72rem;
  font-weight: 600;
  color: var(--al2-brand);
}

/* TOP 5 리스트 */
.al2-fcst-rec-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 16px;
}

.al2-fcst-rec-row {
  display: grid;
  grid-template-columns: 44px 1fr 100px 90px 40px;
  gap: 14px;
  align-items: center;
  padding: 14px 16px;
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 10px;
  cursor: pointer;
  transition: all .15s ease;
}
.al2-fcst-rec-row:hover {
  border-color: var(--al2-brand);
  transform: translateX(2px);
  box-shadow: 0 4px 16px rgba(108, 58, 224, .08);
}

/* 랭크 원형 뱃지 */
.al2-fcst-rec-rank {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--al2-g100);
  color: var(--al2-g600);
  font-size: 1rem;
  font-weight: 900;
  font-family: 'JetBrains Mono', monospace;
  flex-shrink: 0;
}
.al2-fcst-rec-rank.rank-1 {
  background: linear-gradient(135deg, #fbbf24, #f59e0b);
  color: #fff;
  box-shadow: 0 2px 8px rgba(245, 158, 11, .4);
}
.al2-fcst-rec-rank.rank-2 {
  background: linear-gradient(135deg, #cbd5e1, #94a3b8);
  color: #fff;
}
.al2-fcst-rec-rank.rank-3 {
  background: linear-gradient(135deg, #fdba74, #f97316);
  color: #fff;
}

/* 사업 정보 */
.al2-fcst-rec-info {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.al2-fcst-rec-org {
  display: flex;
  align-items: center;
  gap: 6px;
}
.al2-fcst-rec-org-type {
  font-size: .62rem;
  font-weight: 700;
  color: var(--al2-g500);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}
.al2-fcst-rec-org-name {
  font-size: .72rem;
  font-weight: 600;
  color: var(--al2-g600);
}
.al2-fcst-rec-title {
  font-size: .92rem;
  font-weight: 700;
  color: var(--al2-g900);
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.al2-fcst-rec-tags {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  margin-top: 2px;
}

/* 예산 */
.al2-fcst-rec-budget {
  font-size: .95rem;
  font-weight: 800;
  color: var(--al2-brand);
  text-align: right;
  font-family: 'JetBrains Mono', monospace;
  letter-spacing: -0.02em;
}

/* 점수 뱃지 */
.al2-fcst-rec-score {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 8px 0;
  border-radius: 10px;
  text-align: center;
}
.al2-fcst-rec-score .num {
  font-size: 1.4rem;
  font-weight: 900;
  line-height: 1;
  font-family: 'JetBrains Mono', monospace;
  letter-spacing: -0.03em;
}
.al2-fcst-rec-score .lbl {
  font-size: .58rem;
  font-weight: 700;
  margin-top: 2px;
  opacity: .75;
}
.al2-fcst-rec-score.high {
  background: linear-gradient(135deg, var(--al2-brand), #8b5cf6);
  color: #fff;
  box-shadow: 0 4px 12px rgba(108, 58, 224, .25);
}
.al2-fcst-rec-score.mid {
  background: linear-gradient(135deg, #3b82f6, #60a5fa);
  color: #fff;
}
.al2-fcst-rec-score.low {
  background: var(--al2-g100);
  color: var(--al2-g600);
}

/* 북마크 버튼 */
.al2-fcst-rec-bookmark {
  width: 36px;
  height: 36px;
  border: none;
  background: transparent;
  color: var(--al2-g300);
  cursor: pointer;
  border-radius: 8px;
  font-size: 1rem;
  transition: all .12s ease;
}
.al2-fcst-rec-bookmark:hover {
  background: var(--al2-g100);
  color: var(--al2-brand);
}
.al2-fcst-rec-bookmark.active {
  color: var(--al2-brand);
}

/* 점수 가이드 */
.al2-fcst-ai-guide {
  padding: 12px 16px;
  background: var(--al2-g50);
  border-radius: 8px;
  border: 1px dashed var(--al2-g200);
}
.al2-fcst-ai-guide-title {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: .75rem;
  font-weight: 800;
  color: var(--al2-g700);
  margin-bottom: 8px;
}
.al2-fcst-ai-guide-title i { color: var(--al2-brand); }
.al2-fcst-ai-guide-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 16px;
  font-size: .7rem;
  color: var(--al2-g600);
}
.al2-fcst-ai-guide-list span strong {
  color: var(--al2-brand);
  font-weight: 800;
  font-family: 'JetBrains Mono', monospace;
  margin-right: 4px;
}

/* ─── 온보딩 (키워드 미설정) ─── */
.al2-fcst-ai-onboard {
  max-width: 720px;
  margin: 30px auto;
  padding: 48px 40px;
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 16px;
  box-shadow: 0 4px 24px rgba(0, 0, 0, .04);
  text-align: center;
}
.al2-fcst-ai-onboard-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 84px;
  height: 84px;
  margin: 0 auto 22px;
  background: linear-gradient(135deg, var(--al2-brand), #8b5cf6);
  color: #fff;
  border-radius: 50%;
  font-size: 2rem;
  box-shadow: 0 8px 24px rgba(108, 58, 224, .3);
}
.al2-fcst-ai-onboard h2 {
  margin: 0 0 12px;
  font-size: 1.35rem;
  font-weight: 800;
  color: var(--al2-g900);
  letter-spacing: -0.01em;
}
.al2-fcst-ai-onboard p {
  margin: 0 0 32px;
  font-size: .88rem;
  font-weight: 500;
  color: var(--al2-g600);
  line-height: 1.7;
}
.al2-fcst-ai-onboard-steps {
  display: flex;
  align-items: stretch;
  justify-content: center;
  gap: 12px;
  margin-bottom: 32px;
}
.al2-fcst-ai-onboard-steps .step {
  flex: 1;
  max-width: 180px;
  padding: 18px 14px;
  background: var(--al2-g50);
  border-radius: 10px;
  text-align: center;
}
.al2-fcst-ai-onboard-steps .num {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  margin: 0 auto 10px;
  background: var(--al2-brand);
  color: #fff;
  border-radius: 50%;
  font-size: .85rem;
  font-weight: 800;
}
.al2-fcst-ai-onboard-steps .txt {
  font-size: .75rem;
  font-weight: 500;
  color: var(--al2-g600);
  line-height: 1.5;
}
.al2-fcst-ai-onboard-steps .txt strong {
  display: block;
  font-weight: 800;
  color: var(--al2-g900);
  font-size: .82rem;
  margin-bottom: 4px;
}
.al2-fcst-ai-onboard-steps .arr {
  display: flex;
  align-items: center;
  color: var(--al2-g300);
  font-size: 1.1rem;
}
.al2-fcst-ai-onboard-cta {
  padding: 14px 32px;
  font-size: .95rem;
}

/* ─── 매칭 0건 안내 ─── */
.al2-fcst-ai-nomatch {
  max-width: 560px;
  margin: 30px auto;
  padding: 40px 32px;
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 16px;
  text-align: center;
}
.al2-fcst-ai-nomatch-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 64px;
  height: 64px;
  margin: 0 auto 18px;
  background: var(--al2-g100);
  color: var(--al2-g500);
  border-radius: 50%;
  font-size: 1.5rem;
}
.al2-fcst-ai-nomatch h2 {
  margin: 0 0 10px;
  font-size: 1.15rem;
  font-weight: 800;
  color: var(--al2-g900);
}
.al2-fcst-ai-nomatch p {
  margin: 0 0 24px;
  font-size: .85rem;
  font-weight: 500;
  color: var(--al2-g600);
  line-height: 1.6;
}
.al2-fcst-ai-nomatch p strong { color: var(--al2-brand); font-weight: 700; }
.al2-fcst-ai-nomatch-stats {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-bottom: 24px;
  padding: 16px;
  background: var(--al2-g50);
  border-radius: 10px;
}
.al2-fcst-ai-nomatch-stats .stat { text-align: center; }
.al2-fcst-ai-nomatch-stats .v {
  font-size: 1.4rem;
  font-weight: 800;
  color: var(--al2-g900);
  font-family: 'JetBrains Mono', monospace;
}
.al2-fcst-ai-nomatch-stats .l {
  font-size: .68rem;
  font-weight: 600;
  color: var(--al2-g500);
  margin-top: 2px;
}
.al2-fcst-ai-nomatch-actions {
  display: flex;
  gap: 8px;
  justify-content: center;
}

/* 반응형 (Step 4) */
@media (max-width: 900px) {
  .al2-fcst-rec-row {
    grid-template-columns: 40px 1fr 80px 40px;
    gap: 10px;
  }
  .al2-fcst-rec-budget { display: none; }
  .al2-fcst-rec-score { padding: 6px 0; }
  .al2-fcst-rec-score .num { font-size: 1.15rem; }
}
@media (max-width: 640px) {
  .al2-fcst-ai-onboard { padding: 32px 20px; }
  .al2-fcst-ai-onboard-steps { flex-direction: column; gap: 10px; }
  .al2-fcst-ai-onboard-steps .step { max-width: none; }
  .al2-fcst-ai-onboard-steps .arr { transform: rotate(90deg); }
  .al2-fcst-ai-kwbar { flex-direction: column; align-items: flex-start; gap: 8px; }
  .al2-fcst-rec-row {
    grid-template-columns: 36px 1fr 70px 36px;
    gap: 8px;
    padding: 12px;
  }
}

/* ═══════════════════════════════════════════════
   v2.0 (2026-04-30) — AI 추천 페이지 Phase 1+2 개편
   Hero KPI / Smart Sections / Signal Chips / Why Panel / Inline Actions
   Keyword Insight / Trust Badge / Empty Suggestions
   ═══════════════════════════════════════════════ */

/* Hero — 기존 al2-fcst-kpi-grid 재사용, wrapper만 추가 */
.al2-fcst-ai-hero { margin-bottom: 18px; }

/* Smart Sections */
.al2-fcst-ai-sections {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-bottom: 20px;
}

.al2-fcst-ai-sec {
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-left: 4px solid var(--sec-color, var(--al2-brand));
  border-radius: 12px;
  padding: 14px 16px;
}
.al2-fcst-ai-sec-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
  gap: 12px;
  flex-wrap: wrap;
}
.al2-fcst-ai-sec .ai-sec-title {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: .9rem;
  font-weight: 800;
  color: var(--al2-g900);
}
.al2-fcst-ai-sec .ai-sec-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 8px;
  background: var(--sec-bg, var(--al2-g50));
  color: var(--sec-color, var(--al2-brand));
  font-size: .76rem;
}
.al2-fcst-ai-sec .ai-sec-name { font-weight: 800; }
.al2-fcst-ai-sec .ai-sec-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 20px;
  padding: 0 6px;
  border-radius: 10px;
  background: var(--sec-bg, var(--al2-g100));
  color: var(--sec-color, var(--al2-g700));
  font-size: .7rem;
  font-weight: 800;
}
.al2-fcst-ai-sec .ai-sec-desc {
  font-size: .7rem;
  color: var(--al2-g500);
  font-weight: 500;
}
.al2-fcst-ai-sec-empty {
  padding: 16px;
  text-align: center;
  color: var(--al2-g400);
  font-size: .78rem;
  background: var(--al2-g50);
  border-radius: 8px;
}
.al2-fcst-ai-sec-empty i { margin-right: 6px; opacity: .5; }
.al2-fcst-ai-sec-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.al2-fcst-ai-sec-more {
  margin-top: 10px;
  width: 100%;
  padding: 8px 14px;
  border: 1px dashed var(--al2-g200);
  background: transparent;
  border-radius: 8px;
  font-size: .76rem;
  color: var(--al2-g600);
  cursor: pointer;
  font-weight: 600;
  transition: all .15s;
}
.al2-fcst-ai-sec-more:hover {
  border-color: var(--sec-color, var(--al2-brand));
  color: var(--sec-color, var(--al2-brand));
  background: var(--sec-bg, var(--al2-brand-dim));
}

/* 추천 행 — 새 구조 */
.al2-fcst-ai-rec {
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 10px;
  transition: all .15s;
  overflow: hidden;
}
.al2-fcst-ai-rec:hover {
  border-color: var(--sec-color, var(--al2-brand));
  box-shadow: 0 2px 12px rgba(0, 0, 0, .04);
}
.al2-fcst-ai-rec.expanded {
  border-color: var(--sec-color, var(--al2-brand));
  box-shadow: 0 4px 16px rgba(108, 58, 224, .08);
}
.ai-rec-main {
  display: grid;
  grid-template-columns: 36px 1fr 90px 76px auto auto;
  gap: 12px;
  align-items: center;
  padding: 12px 14px;
  cursor: pointer;
}

.ai-rec-info { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.ai-rec-org { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.ai-rec-org-type {
  font-size: .58rem;
  font-weight: 800;
  color: var(--al2-g500);
  letter-spacing: .03em;
  text-transform: uppercase;
}
.ai-rec-org-name {
  font-size: .72rem;
  font-weight: 600;
  color: var(--al2-g600);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 200px;
}
.al2-fcst-ai-trust {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 1px 6px;
  border-radius: 8px;
  background: #ecfdf5;
  color: #059669;
  font-size: .62rem;
  font-weight: 700;
  border: 1px solid #a7f3d0;
}
.al2-fcst-ai-trust i { font-size: .56rem; }
.ai-rec-title {
  font-size: .9rem;
  font-weight: 700;
  color: var(--al2-g900);
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* 신호 분해 칩 */
.ai-rec-signals {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  margin-top: 2px;
}
.ai-sig {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 7px;
  border-radius: 10px;
  font-size: .64rem;
  font-weight: 600;
  background: var(--al2-g50);
  color: var(--al2-g600);
  border: 1px solid var(--al2-g100);
}
.ai-sig i { font-size: .54rem; }
.ai-sig b {
  font-weight: 800;
  margin-left: 2px;
  color: inherit;
}
.ai-sig.kw { background: #ede9fe; color: #6d28d9; border-color: #ddd6fe; }
.ai-sig.urgent { background: #fee2e2; color: #dc2626; border-color: #fecaca; }
.ai-sig.large { background: #fef3c7; color: #b45309; border-color: #fde68a; }
.ai-sig.tech { background: #dbeafe; color: #1e40af; border-color: #bfdbfe; }
.ai-sig.new { background: #fce7f3; color: #be185d; border-color: #fbcfe8; }

/* 매칭 키워드 */
.ai-rec-mkws {
  display: flex;
  gap: 3px;
  flex-wrap: wrap;
  margin-top: 2px;
}
.ai-mkw {
  display: inline-flex;
  align-items: center;
  padding: 1px 7px;
  border-radius: 8px;
  background: rgba(108, 58, 224, .08);
  color: var(--al2-brand);
  font-size: .62rem;
  font-weight: 600;
}
.ai-mkw.more {
  background: var(--al2-g100);
  color: var(--al2-g500);
}
.ai-mkw::before { content: '#'; margin-right: 1px; opacity: .6; }
.ai-mkw.more::before { content: ''; }

/* 예산 */
.ai-rec-budget {
  font-size: .88rem;
  font-weight: 800;
  color: var(--al2-brand);
  text-align: right;
  font-family: 'JetBrains Mono', monospace;
  letter-spacing: -.02em;
}

/* 점수 — 기존 .al2-fcst-rec-score 스타일 매핑 */
.ai-rec-score {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 6px 0;
  border-radius: 10px;
  text-align: center;
}
.ai-rec-score .num {
  font-size: 1.25rem;
  font-weight: 900;
  line-height: 1;
  font-family: 'JetBrains Mono', monospace;
  letter-spacing: -.03em;
}
.ai-rec-score .lbl {
  font-size: .55rem;
  font-weight: 700;
  margin-top: 2px;
  opacity: .8;
}
.ai-rec-score.high {
  background: linear-gradient(135deg, var(--al2-brand), #8b5cf6);
  color: #fff;
  box-shadow: 0 3px 10px rgba(108, 58, 224, .25);
}
.ai-rec-score.mid {
  background: linear-gradient(135deg, #3b82f6, #60a5fa);
  color: #fff;
}
.ai-rec-score.low {
  background: var(--al2-g100);
  color: var(--al2-g600);
}

/* Inline Action Bar */
.ai-rec-actions {
  display: flex;
  gap: 2px;
  align-items: center;
}
.ai-act {
  width: 30px;
  height: 30px;
  border: 0;
  background: transparent;
  border-radius: 7px;
  cursor: pointer;
  font-size: .82rem;
  color: var(--al2-g400);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all .12s;
}
.ai-act:hover { background: var(--al2-g100); color: var(--al2-g900); }
.ai-act.bm.active { color: #f59e0b; }
.ai-act.note.active { color: #6366f1; }
.ai-act.rfp:hover { background: #ede9fe; color: var(--al2-brand); }
.ai-act.coop:hover { background: #dcfce7; color: #15803d; }
.ai-act.share:hover { background: #dbeafe; color: #1e40af; }

/* Why 토글 */
.ai-rec-why-toggle {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 5px 10px;
  border: 1px solid var(--al2-g200);
  background: #fff;
  border-radius: 8px;
  font-size: .68rem;
  color: var(--al2-g600);
  cursor: pointer;
  font-weight: 700;
  transition: all .12s;
}
.ai-rec-why-toggle:hover {
  border-color: var(--al2-brand);
  color: var(--al2-brand);
  background: var(--al2-brand-dim);
}
.al2-fcst-ai-rec.expanded .ai-rec-why-toggle {
  border-color: var(--al2-brand);
  color: var(--al2-brand);
  background: var(--al2-brand-dim);
}
.ai-rec-why-toggle i { font-size: .56rem; }
.ai-rec-why-toggle .lbl { font-weight: 700; }

/* Why 패널 */
.ai-rec-why {
  padding: 14px 18px;
  background: linear-gradient(135deg, #faf5ff 0%, #fff 100%);
  border-top: 1px dashed var(--al2-g200);
  font-size: .82rem;
  line-height: 1.6;
  color: var(--al2-g700);
}
.ai-rec-why-text i {
  color: var(--al2-brand);
  margin-right: 4px;
}
.ai-rec-why-text b {
  color: var(--al2-g900);
  font-weight: 700;
}
.ai-rec-why-text .ai-why-action {
  display: inline-block;
  margin-top: 6px;
  padding: 4px 10px;
  background: var(--al2-brand-dim);
  color: var(--al2-brand);
  border-radius: 8px;
  font-weight: 700;
  font-size: .76rem;
}
.ai-rec-why-actions {
  display: flex;
  gap: 6px;
  margin-top: 10px;
  flex-wrap: wrap;
}
.al2-fcst-btn-outline.sm {
  padding: 5px 10px;
  font-size: .72rem;
}

/* 키워드 인사이트 */
.al2-fcst-ai-insight {
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 12px;
  padding: 18px 20px;
  margin: 18px 0;
}
.ai-insight-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 14px;
}
.ai-insight-head > i { color: #f59e0b; }
.ai-insight-title {
  font-size: .9rem;
  font-weight: 800;
  color: var(--al2-g900);
}
.ai-insight-meta {
  font-size: .68rem;
  color: var(--al2-g400);
  margin-left: auto;
}
.ai-insight-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
@media (max-width: 760px) { .ai-insight-grid { grid-template-columns: 1fr; } }
.ai-insight-col-head {
  font-size: .76rem;
  font-weight: 700;
  color: var(--al2-g700);
  margin-bottom: 10px;
}
.ai-insight-empty {
  padding: 14px;
  text-align: center;
  color: var(--al2-g400);
  font-size: .76rem;
  background: var(--al2-g50);
  border-radius: 8px;
}

/* 매칭 기여도 */
.ai-contrib-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.ai-contrib-row {
  display: grid;
  grid-template-columns: 110px 1fr 50px;
  gap: 10px;
  align-items: center;
  padding: 4px 6px;
  border-radius: 6px;
  cursor: pointer;
  transition: background .12s;
}
.ai-contrib-row:hover { background: var(--al2-g50); }
.ai-contrib-kw {
  font-size: .76rem;
  font-weight: 700;
  color: var(--al2-g800);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ai-contrib-bar {
  height: 6px;
  background: var(--al2-g100);
  border-radius: 3px;
  overflow: hidden;
}
.ai-contrib-bar span {
  display: block;
  height: 100%;
  background: linear-gradient(90deg, #f59e0b, #fbbf24);
  border-radius: 3px;
  transition: width .4s;
}
.ai-contrib-count {
  font-size: .68rem;
  font-weight: 700;
  color: var(--al2-g500);
  text-align: right;
}

/* 추천 키워드 chips */
.ai-suggest-list {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.ai-suggest-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 10px;
  border: 1px solid #a7f3d0;
  background: #ecfdf5;
  color: #15803d;
  border-radius: 16px;
  font-size: .74rem;
  font-weight: 600;
  cursor: pointer;
  transition: all .12s;
}
.ai-suggest-chip:hover {
  background: #15803d;
  color: #fff;
  transform: translateY(-1px);
}
.ai-suggest-chip i { font-size: .58rem; }
.ai-suggest-chip .cnt {
  margin-left: 2px;
  padding: 1px 6px;
  border-radius: 8px;
  background: rgba(255, 255, 255, .6);
  font-size: .62rem;
  font-weight: 800;
}
.ai-suggest-chip:hover .cnt { background: rgba(255, 255, 255, .25); }

/* No-match 보강 */
.al2-fcst-ai-nomatch-suggest {
  margin: 18px 0;
  padding: 14px 18px;
  background: linear-gradient(135deg, #fffbeb, #fff);
  border: 1px solid #fde68a;
  border-radius: 10px;
  text-align: left;
}
.al2-fcst-ai-nomatch-suggest .suggest-title {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: .82rem;
  font-weight: 800;
  color: #92400e;
  margin-bottom: 4px;
}
.al2-fcst-ai-nomatch-suggest .suggest-desc {
  font-size: .72rem;
  color: var(--al2-g600);
  margin-bottom: 10px;
}
.al2-fcst-ai-nomatch-suggest .suggest-chips {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}

/* 반응형 — 행 레이아웃 */
@media (max-width: 1080px) {
  .ai-rec-main {
    grid-template-columns: 32px 1fr 70px auto auto;
  }
  .ai-rec-budget { display: none; }
}
@media (max-width: 760px) {
  .ai-rec-main {
    grid-template-columns: 28px 1fr 64px;
    gap: 8px;
    padding: 10px;
  }
  .ai-rec-actions { display: none; }
  .ai-rec-why-toggle .lbl { display: none; }
  .ai-rec-title { font-size: .84rem; }
  .ai-rec-signals .ai-sig b { display: none; }
}

/* ═══════════════════════════════════════════════
   20. Step 5 — 내 관심목록 탭
   오늘의 알림 + 관심기관/관심업체 카드 + 추가 모달
   ═══════════════════════════════════════════════ */

/* 동기화 안내 배지 */
.al2-fcst-fav-sync {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-left: 8px;
  padding: 2px 8px;
  border-radius: 99px;
  background: var(--al2-brand-dim);
  color: var(--al2-brand);
  font-size: .65rem;
  font-weight: 700;
}
.al2-fcst-fav-sync i { font-size: .6rem; }

/* 오늘의 알림 */
.al2-fcst-fav-alert {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 20px;
  margin-bottom: 20px;
  background: linear-gradient(135deg, #fff4e6, #fff);
  border: 1px solid #fed7aa;
  border-radius: 12px;
}
.al2-fcst-fav-alert-icon {
  width: 44px;
  height: 44px;
  flex-shrink: 0;
  background: #f59e0b;
  color: #fff;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  box-shadow: 0 4px 12px rgba(245, 158, 11, .3);
}
.al2-fcst-fav-alert-body { flex: 1; }
.al2-fcst-fav-alert-title {
  font-size: .85rem;
  font-weight: 800;
  color: #92400e;
  margin-bottom: 3px;
}
.al2-fcst-fav-alert-desc {
  font-size: .78rem;
  font-weight: 500;
  color: var(--al2-g700);
  line-height: 1.5;
}
.al2-fcst-fav-alert-desc strong {
  color: var(--al2-brand);
  font-weight: 800;
}

/* 관심목록 섹션 */
.al2-fcst-fav-section {
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 12px;
  padding: 20px 24px;
  margin-bottom: 20px;
}

.al2-fcst-sec-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 22px;
  padding: 0 8px;
  margin-left: 6px;
  border-radius: 99px;
  background: var(--al2-brand-dim);
  color: var(--al2-brand);
  font-size: .68rem;
  font-weight: 800;
  font-family: 'JetBrains Mono', monospace;
  vertical-align: middle;
}

/* 카드 그리드 */
.al2-fcst-fav-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 12px;
}

.al2-fcst-fav-card {
  position: relative;
  padding: 16px 18px;
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 10px;
  transition: all .15s ease;
}
.al2-fcst-fav-card:hover {
  border-color: var(--al2-brand);
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(0, 0, 0, .06);
}

.al2-fcst-fav-card-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.al2-fcst-fav-card-icon {
  width: 34px;
  height: 34px;
  border-radius: 8px;
  background: var(--al2-brand-dim);
  color: var(--al2-brand);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: .88rem;
  flex-shrink: 0;
}
.al2-fcst-fav-card-icon.biz {
  background: #dbeafe;
  color: #2563eb;
}
.al2-fcst-fav-card-remove {
  width: 24px;
  height: 24px;
  margin-left: auto;
  border: none;
  background: transparent;
  color: var(--al2-g300);
  border-radius: 6px;
  cursor: pointer;
  font-size: .7rem;
  transition: all .12s ease;
}
.al2-fcst-fav-card-remove:hover {
  background: #fee2e2;
  color: var(--al2-red);
}

.al2-fcst-fav-card-name {
  font-size: .92rem;
  font-weight: 800;
  color: var(--al2-g900);
  line-height: 1.3;
  margin-bottom: 4px;
  letter-spacing: -0.01em;
  word-break: keep-all;
}
.al2-fcst-fav-card-code {
  font-size: .68rem;
  font-weight: 600;
  color: var(--al2-g500);
  font-family: 'JetBrains Mono', monospace;
  margin-bottom: 8px;
}
.al2-fcst-fav-card-note {
  font-size: .72rem;
  color: var(--al2-g600);
  line-height: 1.5;
  padding: 6px 8px;
  background: var(--al2-g50);
  border-radius: 6px;
  margin: 6px 0;
}
.al2-fcst-fav-card-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--al2-g100);
  font-size: .7rem;
  color: var(--al2-g500);
}
.al2-fcst-fav-card-stat strong {
  color: var(--al2-brand);
  font-weight: 800;
  font-family: 'JetBrains Mono', monospace;
}
.al2-fcst-fav-card-date {
  font-size: .68rem;
  color: var(--al2-g400);
  font-weight: 500;
}

/* 관계 태그 */
.al2-fcst-fav-rel {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 99px;
  font-size: .65rem;
  font-weight: 800;
  letter-spacing: 0.01em;
}
.al2-fcst-fav-rel.rel-partner    { background: #dbeafe; color: #2563eb; }
.al2-fcst-fav-rel.rel-customer   { background: #dcfce7; color: #16a34a; }
.al2-fcst-fav-rel.rel-competitor { background: #fee2e2; color: var(--al2-red); }
.al2-fcst-fav-rel.rel-supplier   { background: #fef3c7; color: #d97706; }
.al2-fcst-fav-rel.rel-prospect   { background: var(--al2-brand-dim); color: var(--al2-brand); }

/* 빈 상태 */
.al2-fcst-fav-empty {
  padding: 40px 24px;
  text-align: center;
  background: var(--al2-g50);
  border-radius: 10px;
  border: 1px dashed var(--al2-g200);
}
.al2-fcst-fav-empty i {
  font-size: 2rem;
  color: var(--al2-g300);
  margin-bottom: 12px;
}
.al2-fcst-fav-empty h4 {
  margin: 0 0 6px;
  font-size: .92rem;
  font-weight: 700;
  color: var(--al2-g700);
}
.al2-fcst-fav-empty p {
  margin: 0;
  font-size: .78rem;
  font-weight: 500;
  color: var(--al2-g500);
  line-height: 1.6;
}

.al2-fcst-fav-more {
  margin-top: 10px;
  padding: 10px;
  text-align: center;
  font-size: .76rem;
  font-weight: 600;
  color: var(--al2-g500);
  background: var(--al2-g50);
  border-radius: 8px;
}

/* ─── 관심기관/관심업체 추가 모달 ─── */
.al2-fcst-fav-modal-search {
  position: relative;
  margin-bottom: 12px;
}
.al2-fcst-fav-modal-search i {
  position: absolute;
  left: 14px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--al2-g400);
  font-size: .85rem;
}
.al2-fcst-fav-modal-search input {
  width: 100%;
  padding: 10px 14px 10px 38px;
  border: 1px solid var(--al2-g200);
  border-radius: 8px;
  font-size: .85rem;
  font-family: inherit;
}
.al2-fcst-fav-modal-search input:focus {
  outline: none;
  border-color: var(--al2-brand);
  box-shadow: 0 0 0 3px var(--al2-brand-dim);
}

.al2-fcst-fav-modal-hint {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 12px;
  margin-bottom: 12px;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  border-radius: 8px;
  font-size: .72rem;
  font-weight: 500;
  color: #1e40af;
}
.al2-fcst-fav-modal-hint i { color: #2563eb; }

/* 기관 리스트 (추가 모달 내) */
.al2-fcst-fav-modal-list {
  max-height: 280px;
  overflow-y: auto;
  border: 1px solid var(--al2-g100);
  border-radius: 8px;
  margin-bottom: 14px;
}
.al2-fcst-fav-modal-list::-webkit-scrollbar { width: 6px; }
.al2-fcst-fav-modal-list::-webkit-scrollbar-thumb {
  background: var(--al2-g200);
  border-radius: 3px;
}
.al2-fcst-fav-modal-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border-bottom: 1px solid var(--al2-g100);
  cursor: pointer;
  transition: background .12s ease;
}
.al2-fcst-fav-modal-row:last-child { border-bottom: none; }
.al2-fcst-fav-modal-row[data-pickable]:hover {
  background: var(--al2-brand-dim);
}
.al2-fcst-fav-modal-row.added {
  opacity: .55;
  cursor: default;
}
.al2-fcst-fav-modal-row-info {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.al2-fcst-fav-modal-row-type {
  font-size: .62rem;
  font-weight: 700;
  color: var(--al2-g500);
  text-transform: uppercase;
}
.al2-fcst-fav-modal-row-name {
  font-size: .82rem;
  font-weight: 700;
  color: var(--al2-g800);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.al2-fcst-fav-modal-row-count {
  padding: 3px 9px;
  border-radius: 99px;
  background: var(--al2-g100);
  color: var(--al2-g600);
  font-size: .68rem;
  font-weight: 700;
  font-family: 'JetBrains Mono', monospace;
}
.al2-fcst-fav-modal-row-add,
.al2-fcst-fav-modal-row-added {
  width: 26px;
  height: 26px;
  border-radius: 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: .75rem;
}
.al2-fcst-fav-modal-row-add {
  background: var(--al2-brand);
  color: #fff;
}
.al2-fcst-fav-modal-row-added {
  background: var(--al2-g100);
  color: var(--al2-g500);
}
.al2-fcst-fav-modal-empty {
  padding: 30px 20px;
  text-align: center;
  font-size: .8rem;
  color: var(--al2-g500);
  line-height: 1.6;
}

.al2-fcst-fav-modal-divider {
  position: relative;
  text-align: center;
  font-size: .7rem;
  font-weight: 600;
  color: var(--al2-g400);
  margin: 14px 0 10px;
}
.al2-fcst-fav-modal-divider::before,
.al2-fcst-fav-modal-divider::after {
  content: '';
  position: absolute;
  top: 50%;
  width: 38%;
  height: 1px;
  background: var(--al2-g200);
}
.al2-fcst-fav-modal-divider::before { left: 0; }
.al2-fcst-fav-modal-divider::after { right: 0; }

.al2-fcst-fav-modal-manual {
  display: flex;
  gap: 8px;
  align-items: stretch;
}
.al2-fcst-fav-modal-input {
  flex: 1;
  padding: 9px 12px;
  border: 1px solid var(--al2-g200);
  border-radius: 7px;
  font-size: .82rem;
  font-family: inherit;
  color: var(--al2-g800);
  min-width: 0;
}
.al2-fcst-fav-modal-input.code {
  max-width: 140px;
  font-family: 'JetBrains Mono', monospace;
}
.al2-fcst-fav-modal-input:focus {
  outline: none;
  border-color: var(--al2-brand);
  box-shadow: 0 0 0 3px var(--al2-brand-dim);
}
.al2-fcst-fav-modal-textarea {
  width: 100%;
  padding: 9px 12px;
  border: 1px solid var(--al2-g200);
  border-radius: 7px;
  font-size: .82rem;
  font-family: inherit;
  color: var(--al2-g800);
  resize: vertical;
}
.al2-fcst-fav-modal-textarea:focus {
  outline: none;
  border-color: var(--al2-brand);
  box-shadow: 0 0 0 3px var(--al2-brand-dim);
}

/* 관심업체 추가 모달 폼 */
.al2-fcst-fav-form-row {
  margin-bottom: 14px;
}
.al2-fcst-fav-form-row label {
  display: block;
  font-size: .72rem;
  font-weight: 700;
  color: var(--al2-g600);
  margin-bottom: 6px;
}

/* 관계 radio 선택 (5개) */
.al2-fcst-fav-rel-opts {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 6px;
}
.al2-fcst-fav-rel-opt {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 10px 4px;
  border: 2px solid var(--al2-g200);
  border-radius: 8px;
  cursor: pointer;
  transition: all .12s ease;
  text-align: center;
}
.al2-fcst-fav-rel-opt input { display: none; }
.al2-fcst-fav-rel-opt i {
  font-size: 1rem;
  color: var(--al2-g400);
  margin-bottom: 4px;
  transition: color .12s ease;
}
.al2-fcst-fav-rel-opt span {
  font-size: .7rem;
  font-weight: 700;
  color: var(--al2-g600);
}
.al2-fcst-fav-rel-opt:hover {
  border-color: var(--al2-brand);
}
.al2-fcst-fav-rel-opt.active {
  border-color: var(--al2-brand);
  background: var(--al2-brand-dim);
}
.al2-fcst-fav-rel-opt.active i,
.al2-fcst-fav-rel-opt.active span {
  color: var(--al2-brand);
}

/* 반응형 (Step 5) */
@media (max-width: 900px) {
  .al2-fcst-fav-grid { grid-template-columns: repeat(2, 1fr); }
  .al2-fcst-fav-rel-opts { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 640px) {
  .al2-fcst-fav-grid { grid-template-columns: 1fr; }
  .al2-fcst-fav-rel-opts { grid-template-columns: repeat(2, 1fr); }
  .al2-fcst-fav-modal-manual { flex-direction: column; }
  .al2-fcst-fav-modal-input.code { max-width: none; }
  .al2-fcst-fav-alert { flex-direction: column; align-items: flex-start; }
}

/* ═══════════════════════════════════════════════
   21. Step 6 — 키워드 편집 모달 (최종)
   선택된 chip + 매칭 미리보기 + 직접입력 + 인기키워드 TOP 20
   ═══════════════════════════════════════════════ */

/* 분리 운영 안내 */
.al2-fcst-kw-notice {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px;
  margin-bottom: 18px;
  background: #eff6ff;
  border: 1px solid #bfdbfe;
  border-radius: 10px;
  font-size: .78rem;
  color: #1e40af;
  line-height: 1.6;
}
.al2-fcst-kw-notice > div { flex: 1 1 260px; min-width: 0; }
.al2-fcst-kw-notice i {
  color: #2563eb;
  font-size: 1rem;
  flex-shrink: 0;
  margin-top: 2px;
}
.al2-fcst-kw-notice strong { font-weight: 800; }
.al2-fcst-kw-notice u { text-decoration-color: var(--al2-brand); text-underline-offset: 2px; }

/* 섹션 공통 */
.al2-fcst-kw-section {
  margin-bottom: 18px;
}
.al2-fcst-kw-section-title {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  font-size: .82rem;
  font-weight: 800;
  color: var(--al2-g800);
  margin-bottom: 10px;
  line-height: 1.4;
}
.al2-fcst-kw-section-title i { color: var(--al2-brand); flex-shrink: 0; }
.al2-fcst-kw-section-sub {
  margin-left: auto;
  font-size: .68rem;
  font-weight: 500;
  color: var(--al2-g400);
  white-space: nowrap;
}
@media (max-width: 600px) {
  .al2-fcst-kw-section-sub { margin-left: 0; width: 100%; white-space: normal; }
}
.al2-fcst-kw-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 20px;
  padding: 0 7px;
  margin-left: 4px;
  border-radius: 99px;
  background: var(--al2-brand-dim);
  color: var(--al2-brand);
  font-size: .65rem;
  font-weight: 800;
  font-family: 'JetBrains Mono', monospace;
}

/* 선택된 키워드 영역 */
.al2-fcst-kw-selected {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 12px;
  min-height: 48px;
  background: var(--al2-g50);
  border: 1px dashed var(--al2-g200);
  border-radius: 10px;
  align-items: flex-start;
  align-content: flex-start;
}
.al2-fcst-kw-empty-state {
  font-size: .78rem;
  color: var(--al2-g400);
  font-weight: 500;
  padding: 4px 0;
}
.al2-fcst-kw-chip-selected {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 5px 6px 5px 12px;
  background: var(--al2-brand);
  color: #fff;
  border-radius: 99px;
  font-size: .76rem;
  font-weight: 700;
  box-shadow: 0 2px 6px rgba(108, 58, 224, .2);
}
.al2-fcst-kw-chip-remove {
  width: 18px;
  height: 18px;
  border: none;
  background: rgba(255, 255, 255, .25);
  color: #fff;
  border-radius: 50%;
  cursor: pointer;
  font-size: .55rem;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .12s ease;
}
.al2-fcst-kw-chip-remove:hover {
  background: rgba(255, 255, 255, .45);
}

/* 매칭 미리보기 */
.al2-fcst-kw-preview {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 14px 18px;
  margin-bottom: 18px;
  background: linear-gradient(135deg, var(--al2-brand-dim), #fff);
  border: 1px solid var(--al2-brand);
  border-radius: 10px;
}
.al2-fcst-kw-preview-label {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: .82rem;
  font-weight: 800;
  color: var(--al2-brand);
}
.al2-fcst-kw-preview-label i { font-size: .9rem; }
.al2-fcst-kw-preview-value {
  display: flex;
  align-items: baseline;
  gap: 6px;
}
.al2-fcst-kw-preview-value span {
  font-size: 1.6rem;
  font-weight: 900;
  color: var(--al2-brand);
  font-family: 'JetBrains Mono', monospace;
  letter-spacing: -0.02em;
  transition: transform .25s ease;
}
.al2-fcst-kw-preview-value small {
  font-size: .72rem;
  font-weight: 600;
  color: var(--al2-g600);
}

/* 직접 입력 */
.al2-fcst-kw-input-row {
  display: flex;
  gap: 8px;
  align-items: stretch;
}
.al2-fcst-kw-input-row .al2-fcst-fav-modal-input {
  flex: 1;
}
.al2-fcst-kw-hint {
  margin-top: 6px;
  font-size: .68rem;
  color: var(--al2-g400);
  font-weight: 500;
}

/* 인기 키워드 */
.al2-fcst-kw-popular {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.al2-fcst-kw-popular-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px 6px 12px;
  background: #fff;
  border: 1px solid var(--al2-g200);
  border-radius: 99px;
  font-size: .76rem;
  font-weight: 700;
  color: var(--al2-g700);
  cursor: pointer;
  transition: all .12s ease;
  font-family: inherit;
}
.al2-fcst-kw-popular-chip:hover {
  border-color: var(--al2-brand);
  color: var(--al2-brand);
  transform: translateY(-1px);
}
.al2-fcst-kw-popular-chip.selected {
  background: var(--al2-brand);
  border-color: var(--al2-brand);
  color: #fff;
}
.al2-fcst-kw-popular-chip.selected .al2-fcst-kw-popular-count {
  background: rgba(255, 255, 255, .25);
  color: #fff;
}
.al2-fcst-kw-popular-count {
  display: inline-block;
  min-width: 18px;
  padding: 1px 6px;
  background: var(--al2-g100);
  color: var(--al2-g500);
  border-radius: 99px;
  font-size: .62rem;
  font-weight: 700;
  font-family: 'JetBrains Mono', monospace;
  text-align: center;
}

/* 반응형 (Step 6) */
@media (max-width: 640px) {
  .al2-fcst-kw-preview { flex-direction: column; align-items: flex-start; gap: 8px; }
  .al2-fcst-kw-input-row { flex-direction: column; }
}

/* ════════════════════════════════════════════════
   Sprint F-Intel / Pipeline / Playbook
   ════════════════════════════════════════════════ */
.al2-fcst-row-badge.announce{
  background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;
}
.al2-fcst-row-badge.announce.urgent{
  background:#fee2e2;color:#b91c1c;border-color:#fecaca;
}
.al2-fcst-row-badge.announce.warn{
  background:#fef3c7;color:#b45309;border-color:#fde68a;
}
.al2-fcst-row-badge.rel{
  background:#f5f3ff;color:#6c3ae0;border:1px solid #ddd6fe;
}

/* AI 추천 이유 섹션 */
.al2-fc-why{ margin-top:6px; }
.al2-fc-why-row{
  display:flex;align-items:center;gap:8px;padding:6px 10px;
  background:#faf8ff;border-left:3px solid #6c3ae0;border-radius:4px;
  font-size:12px;color:var(--al2-g800);margin-bottom:4px;
}
.al2-fc-why-row i{ color:#6c3ae0;width:14px; }

/* 입찰공고 연계 */
.al2-fc-pipeline{ display:flex;flex-direction:column;gap:8px;margin-top:6px; }
.al2-fc-pipeline-hint{ font-size:12px;color:var(--al2-g500); }

/* 플레이북 */
.al2-fc-pb{ display:flex;flex-direction:column;gap:6px;margin-top:6px; }
.al2-fc-pb-sub{
  font-size:11px;font-weight:700;color:var(--al2-g600);
  text-transform:uppercase;letter-spacing:0.3px;margin-top:8px;
}
.al2-fc-note{
  width:100%;min-height:70px;padding:8px 10px;
  border:1px solid var(--al2-g200);border-radius:6px;font-size:12px;
  font-family:inherit;resize:vertical;
}
.al2-fc-note:focus{ outline:none;border-color:#6c3ae0;box-shadow:0 0 0 2px rgba(108,58,224,.1); }
.al2-fc-tasks-empty{ font-size:11px;color:var(--al2-g500);padding:8px; }
.al2-fc-task{
  display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;
  font-size:12px;color:var(--al2-g800);
}
.al2-fc-task:hover{ background:var(--al2-g50); }
.al2-fc-task.done .txt{ text-decoration:line-through;color:var(--al2-g500); }
.al2-fc-task .txt{ flex:1; }
.al2-fc-task .due{ font-size:10px;color:var(--al2-g500);font-family:'JetBrains Mono',monospace; }
.al2-fc-task .del{
  width:20px;height:20px;border:0;background:transparent;color:var(--al2-g400);
  cursor:pointer;border-radius:4px;font-size:10px;
}
.al2-fc-task .del:hover{ background:#fee2e2;color:#dc2626; }
.al2-fc-task-add{ display:flex;gap:6px;margin-top:6px; }
.al2-fc-task-input{ flex:1;padding:6px 10px;font-size:12px;border:1px solid var(--al2-g200);border-radius:6px; }
.al2-fc-task-due{ padding:6px;font-size:11px;border:1px solid var(--al2-g200);border-radius:6px; }
.al2-fc-task-add-btn{
  padding:6px 14px;background:#6c3ae0;color:#fff;border:0;border-radius:6px;
  font-size:12px;font-weight:700;cursor:pointer;
}
.al2-fc-task-add-btn:hover{ background:#5b2db5; }

/* ════════════════════════════════════════════════
   Sprint F-All1 — 필터바 · 정렬 · Saved Views
   ════════════════════════════════════════════════ */
.al2-fc-filterbar{
  padding:10px 12px;margin-top:8px;background:#fafafb;
  border:1px solid var(--al2-g100);border-radius:8px;
  display:flex;flex-direction:column;gap:8px;
}
.al2-fc-filterbar-row{ display:flex;flex-wrap:wrap;align-items:center;gap:6px; }
.al2-fc-filterbar-spacer{ flex:1 1 auto; }
.al2-fc-flt-chip{
  display:inline-flex;align-items:center;gap:6px;padding:4px 4px 4px 10px;
  background:#fff;border:1px solid var(--al2-g200);border-radius:999px;
  font-size:12px;cursor:pointer;transition:all .15s;
}
.al2-fc-flt-chip:hover{ border-color:#6c3ae0;box-shadow:0 0 0 2px rgba(108,58,224,.08); }
.al2-fc-flt-chip .k{ color:var(--al2-g500);font-weight:500; }
.al2-fc-flt-chip .v{ color:var(--al2-g800);font-weight:600; }
.al2-fc-flt-chip .x{
  width:18px;height:18px;border:0;background:transparent;border-radius:50%;
  color:var(--al2-g500);cursor:pointer;font-size:11px;padding:0;
  display:inline-flex;align-items:center;justify-content:center;
}
.al2-fc-flt-chip .x:hover{ background:var(--al2-g100);color:var(--al2-g800); }
/* v3.6.7 (2026-04-30): 정렬·고급 필터 버튼을 칩과 동일한 비주얼로 통일 */
.al2-fc-flt-add{
  display:inline-flex;align-items:center;gap:5px;padding:5px 11px;
  background:#fff;border:1px solid var(--al2-g200);border-radius:99px;
  font-size:.74rem;font-weight:600;color:var(--al2-g700);cursor:pointer;
  font-family:inherit;white-space:nowrap;transition:all .12s;
}
.al2-fc-flt-add i{ color:var(--al2-brand);font-size:.74rem; }
.al2-fc-flt-add:hover{ border-color:var(--al2-brand);color:var(--al2-brand);background:var(--al2-brand-dim); }
.al2-fc-flt-clearall{
  padding:4px 10px;background:transparent;border:1px solid #fecaca;
  border-radius:99px;font-size:.7rem;font-weight:600;
  color:#dc2626;cursor:pointer;font-family:inherit;
}
.al2-fc-flt-clearall:hover{ background:#fee2e2; }
.al2-fc-sort-wrap{ display:inline-block; }
.al2-fc-sort-btn{
  display:inline-flex;align-items:center;gap:5px;padding:5px 11px;
  background:#fff;border:1px solid var(--al2-g200);border-radius:99px;
  font-size:.74rem;font-weight:600;color:var(--al2-g700);cursor:pointer;
  font-family:inherit;white-space:nowrap;transition:all .12s;
}
.al2-fc-sort-btn i{ font-size:.7rem; }
.al2-fc-sort-btn .lbl{ color:var(--al2-g500);font-weight:500; }
.al2-fc-sort-btn .val{ color:var(--al2-g800);font-weight:700; }
.al2-fc-sort-btn:hover{ border-color:var(--al2-brand);color:var(--al2-brand); }
.al2-fc-sort-btn.on{
  background:var(--al2-brand-dim);border-color:var(--al2-brand);color:var(--al2-brand);
}
.al2-fc-sort-btn.on .lbl{ color:var(--al2-brand);opacity:.7; }
.al2-fc-sort-btn.on .val{ color:var(--al2-brand); }

/* Saved Views 행 — v3.5.17: 라벨 제거, 컴팩트 통합 */
.al2-fc-views-inline{ display:inline-flex;flex-wrap:wrap;align-items:center;gap:5px; }
.al2-fc-view{
  display:inline-flex;align-items:center;gap:5px;padding:3px 8px 3px 9px;
  background:#f5f3ff;border:1px solid #ddd6fe;border-radius:99px;
  font-size:11px;color:#6c3ae0;cursor:pointer;font-weight:600;
}
.al2-fc-view:hover{ background:#6c3ae0;color:#fff; }
.al2-fc-view .del{
  font-size:10px;cursor:pointer;opacity:.6;padding:0 3px;
}
.al2-fc-view .del:hover{ opacity:1;color:#dc2626; }
.al2-fc-view-save{
  display:inline-flex;align-items:center;justify-content:center;
  width:28px;height:28px;padding:0;
  background:#fff;border:1px solid var(--al2-g200);border-radius:6px;
  color:var(--al2-g500);cursor:pointer;
  transition:all .12s;
}
.al2-fc-view-save:hover{ border-color:#6c3ae0;color:#6c3ae0; }
.al2-fc-view-save i{ font-size:13px; }

/* 인기 키워드 (동적) */
.al2-fc-popkw{ display:flex;flex-wrap:wrap;align-items:center;gap:6px; }
.al2-fc-popkw .lbl{ font-size:11px;color:var(--al2-g500);font-weight:700; }
.al2-fc-popkw-btn{
  padding:3px 10px;background:#fff;border:1px solid var(--al2-g200);border-radius:999px;
  font-size:11px;color:var(--al2-g700);cursor:pointer;
}
.al2-fc-popkw-btn:hover{ background:#6c3ae0;color:#fff;border-color:#6c3ae0; }

/* 공용 팝오버 */
.al2-fc-pop{
  background:#fff;border:1px solid var(--al2-g200);border-radius:8px;
  box-shadow:0 4px 14px rgba(0,0,0,.08);padding:4px;min-width:220px;max-width:320px;
}
.al2-fc-pop .hd{
  display:flex;align-items:center;padding:8px 10px;font-size:12px;font-weight:700;
  color:var(--al2-g800);border-bottom:1px solid var(--al2-g100);
}
.al2-fc-pop .hd .clear{
  margin-left:auto;font-size:11px;color:var(--al2-g500);border:0;background:transparent;
  cursor:pointer;
}
.al2-fc-pop .hd .clear:hover{ color:#dc2626; }
.al2-fc-pop .bd{ padding:4px;max-height:280px;overflow:auto; }
.al2-fc-pop .bd .pick{
  display:flex;align-items:center;gap:8px;width:100%;padding:6px 10px;text-align:left;
  background:transparent;border:0;border-radius:4px;cursor:pointer;font-size:12px;
  color:var(--al2-g800);
}
.al2-fc-pop .bd .pick:hover{ background:var(--al2-g50); }
.al2-fc-pop .bd .pick.current{ background:#ede9fe;color:#6c3ae0;font-weight:700; }
.al2-fc-pop .bd .pick.on{ background:#f5f3ff; color:#6c3ae0; font-weight:600; }
/* v3.6.5: 그룹 라벨 */
.al2-fc-pop .pick-group { padding: 2px 0; }
.al2-fc-pop .pick-group:not(:first-child) { border-top: 1px solid var(--al2-g100); margin-top: 2px; padding-top: 6px; }
.al2-fc-pop .pick-group-label {
  font-size: 10px; font-weight: 700; color: var(--al2-g500);
  padding: 4px 10px; text-transform: uppercase; letter-spacing: .04em;
}
.al2-fc-pop .bd .pick i{ color:var(--al2-g500);width:14px; }
.al2-fc-pop .bd .pick .dot{
  margin-left:auto;width:6px;height:6px;border-radius:50%;background:#6c3ae0;
}
.al2-fc-pop .bd label{
  display:flex;align-items:center;gap:8px;padding:6px 10px;font-size:12px;
  color:var(--al2-g800);cursor:pointer;border-radius:4px;
}
.al2-fc-pop .bd label:hover{ background:var(--al2-g50); }
.al2-fc-pop .bd label .cnt{ margin-left:auto;font-size:10px;color:var(--al2-g500); }
.al2-fc-pop .empty{ padding:12px;text-align:center;color:var(--al2-g500);font-size:11px; }

/* 키워드 picker */
.al2-fc-kw-input{
  width:100%;padding:6px 10px;font-size:12px;margin-bottom:6px;
  border:1px solid var(--al2-g200);border-radius:6px;
}
.al2-fc-kw-grid{ display:flex;flex-wrap:wrap;gap:4px; }
.al2-fc-kw-pick{
  padding:4px 10px;font-size:11px;background:#fff;border:1px solid var(--al2-g200);
  border-radius:999px;color:var(--al2-g700);cursor:pointer;
}
.al2-fc-kw-pick:hover{ border-color:#6c3ae0;color:#6c3ae0; }
.al2-fc-kw-pick.on{ background:#6c3ae0;color:#fff;border-color:#6c3ae0; }

/* 페이지 헤더 부제 — 선택한 빠른 필터 / 분기 표시 */
.al2-page-header-sub{
  font-size:0.75em;font-weight:700;color:#6c3ae0;
  margin-left:4px;background:#ede9fe;padding:2px 10px;border-radius:999px;
  vertical-align:middle;
}

/* ════════════════════════════════════════════════
   Sprint K-Preview/Power/Unify — 키워드 모달 강화
   ════════════════════════════════════════════════ */
.al2-kw-sync-btn{
  margin-left:auto;padding:5px 12px;font-size:11px;font-weight:700;
  background:#ede9fe;color:#6c3ae0;border:1px solid #ddd6fe;border-radius:6px;
  cursor:pointer;
}
.al2-kw-sync-btn:hover{ background:#6c3ae0;color:#fff;border-color:#6c3ae0; }

.al2-kw-rule-toggle{ display:flex;gap:4px; }
.al2-kw-rule{
  flex:1;padding:6px 10px;font-size:12px;background:#fff;
  border:1px solid var(--al2-g200);border-radius:6px;color:var(--al2-g700);cursor:pointer;
}
.al2-kw-rule:hover{ border-color:#6c3ae0;color:#6c3ae0; }
.al2-kw-rule.on{ background:#6c3ae0;color:#fff;border-color:#6c3ae0;font-weight:700; }

.al2-kw-chip-count{
  display:inline-flex;align-items:center;padding:1px 6px;
  background:#15803d;color:#fff;border-radius:999px;font-size:10px;font-weight:700;
  margin-left:4px;font-family:'JetBrains Mono',monospace;
}

.al2-kw-chip-exclude{
  display:inline-flex;align-items:center;gap:4px;padding:4px 4px 4px 10px;
  background:#fee2e2;color:#b91c1c;border:1px solid #fecaca;border-radius:999px;
  font-size:12px;font-weight:600;margin-right:4px;margin-bottom:4px;
}
.al2-kw-chip-exclude .al2-fcst-kw-chip-remove{ color:#b91c1c; }

.al2-kw-exclude{ display:flex;flex-wrap:wrap;gap:4px;min-height:28px; }

.al2-kw-preview-rich{ padding:14px;background:#faf8ff;border:1px solid #ede9fe;border-radius:10px; }
.al2-kw-preview-meta{ font-size:11px;font-weight:500;color:var(--al2-g500);margin-left:4px; }
.al2-kw-qbars{ display:flex;flex-direction:column;gap:4px;margin-top:10px; }
.al2-kw-qbar{ display:flex;align-items:center;gap:8px;font-size:11px; }
.al2-kw-qbar .lbl{ width:40px;color:var(--al2-g700);font-weight:600; }
.al2-kw-qbar .track{ flex:1;height:6px;background:#ede9fe;border-radius:3px;overflow:hidden; }
.al2-kw-qbar .fill{ height:100%;background:linear-gradient(90deg,#6c3ae0,#a855f7);border-radius:3px; }
.al2-kw-qbar .cnt{ width:32px;text-align:right;font-family:'JetBrains Mono',monospace;font-weight:700;color:var(--al2-g800); }

.al2-kw-samples-title{
  font-size:11px;font-weight:700;color:var(--al2-g600);margin-top:10px;margin-bottom:4px;
  text-transform:uppercase;letter-spacing:0.3px;
}
.al2-kw-samples{ display:flex;flex-direction:column;gap:4px; }
.al2-kw-sample{
  display:flex;align-items:center;gap:8px;padding:6px 10px;
  background:#fff;border:1px solid var(--al2-g150);border-radius:6px;font-size:11px;
}
.al2-kw-sample .tp{ padding:2px 6px;background:#ede9fe;color:#6c3ae0;border-radius:4px;font-weight:700; }
.al2-kw-sample .ttl{ flex:1;color:var(--al2-g800);font-weight:600; }
.al2-kw-sample .bud{ font-family:'JetBrains Mono',monospace;font-weight:700;color:var(--al2-g700); }
.al2-kw-sample-empty{ padding:10px;text-align:center;font-size:11px;color:var(--al2-g500); }

.al2-kw-activity{ display:flex;flex-wrap:wrap;gap:4px; }
.al2-kw-activity-chip{
  display:inline-flex;align-items:center;gap:4px;padding:4px 4px 4px 10px;
  background:#dbeafe;color:#1d4ed8;border:1px solid #bfdbfe;border-radius:999px;
  font-size:12px;font-weight:600;cursor:pointer;
}
.al2-kw-activity-chip:hover{ background:#1d4ed8;color:#fff;border-color:#1d4ed8; }
.al2-kw-activity-chip .cnt{
  background:rgba(255,255,255,.3);padding:1px 6px;border-radius:999px;font-size:10px;
}

.al2-kw-history{ display:flex;flex-direction:column;gap:4px; }
.al2-kw-history-row{
  display:flex;align-items:center;gap:8px;padding:6px 10px;
  background:#fff;border:1px solid var(--al2-g150);border-radius:6px;cursor:pointer;font-size:11px;text-align:left;
}
.al2-kw-history-row:hover{ border-color:#6c3ae0;background:#faf8ff; }
.al2-kw-history-row .t{ color:var(--al2-g500);width:60px; }
.al2-kw-history-row .cnt{ background:#ede9fe;color:#6c3ae0;padding:2px 8px;border-radius:999px;font-weight:700; }
.al2-kw-history-row .preview{ flex:1;color:var(--al2-g700); }

/* ════════════════════════════════════════════════
   키워드 모달 — 줄바꿈·밀도 개선
   ════════════════════════════════════════════════ */
/* 모달 전체 폭 살짝 확대 */
#fc-kw-modal .al2-fcst-modal-content { max-width: 760px; }

/* 매칭 미리보기 — label 여러 줄 허용 + meta는 다음 줄로 */
.al2-kw-preview-rich .al2-fcst-kw-preview-label{
  display:flex;flex-wrap:wrap;align-items:center;gap:6px;line-height:1.5;
}
.al2-kw-preview-meta{
  flex:1 1 100%;font-size:11px;color:var(--al2-g500);font-weight:500;margin:0;
}

/* 매칭 샘플 행 — 제목 줄임표 */
.al2-kw-sample{ min-width:0; }
.al2-kw-sample .ttl{
  flex:1;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.al2-kw-sample .tp, .al2-kw-sample .bud{ flex-shrink:0; }

/* 매칭 규칙 토글 — 좁아지면 wrap, 라벨 축약 */
.al2-kw-rule-toggle{ flex-wrap:wrap; }
.al2-kw-rule{ min-width:100px; }
@media (max-width: 540px) {
  .al2-kw-rule{ flex:1 1 48%; min-width:0; font-size:11px; padding:6px 4px; }
}

/* 동기화 버튼 — 좁은 화면에서 제목 아래로 떨어지지 않게 정렬 */
.al2-kw-sync-btn{
  flex-shrink:0;white-space:nowrap;margin-left:0;
  align-self:flex-start;
}

/* 포함/제외 칩 영역 — 여러 줄 안정화 */
.al2-fcst-kw-selected, .al2-kw-exclude{
  display:flex;flex-wrap:wrap;gap:4px;min-height:32px;align-items:flex-start;
}

/* 선택된 칩 내부: 키워드·카운트·× 안 깨지게 */
.al2-fcst-kw-chip-selected{
  display:inline-flex;align-items:center;gap:4px;max-width:100%;min-width:0;
}
.al2-fcst-kw-chip-selected .kw-label{
  max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}

/* 히스토리 row — 긴 preview 줄임표 */
.al2-kw-history-row .preview{
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;
}

/* 활동 기반 추천 chip — 긴 이름 줄임 */
.al2-kw-activity-chip{ max-width:220px; }
.al2-kw-activity-chip > :first-child{
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;
}

/* 인기 키워드 chip — 긴 이름 줄임 */
.al2-fcst-kw-popular-chip{ max-width:200px; }

/* 직접 입력 힌트 — 좁은 폭에서 깔끔하게 */
.al2-fcst-kw-hint{ font-size:11px;line-height:1.5; }

/* 섹션 간 간격 — 과도한 세로 공간 축소 */
.al2-fcst-kw-section{ margin-bottom:14px; }

/* 매칭 미리보기 패널 자체 — 상하 여백 줄임 */
.al2-kw-preview-rich{ padding:12px 14px; }

/* ════════════════════════════════════════════════
   입찰공고 keyword.png 스타일 일관성
   ════════════════════════════════════════════════ */
/* 안내 박스 — 보라톤으로 변경 (keyword.png와 통일) */
#fc-kw-modal .al2-fcst-kw-notice{
  background:#faf5ff;border-color:#e9d5ff;color:#5b21b6;
}
#fc-kw-modal .al2-fcst-kw-notice i{ color:#7c3aed; }
#fc-kw-modal .al2-fcst-kw-notice strong{ color:#5b21b6; }

/* 등록된 키워드 영역 — dashed border 제거, 자연스러운 래핑 */
#fc-kw-modal .al2-fcst-kw-selected{
  padding:0; background:transparent; border:0; min-height:auto;
}

/* 등록 칩 — keyword.png 스타일 (흰 배경 + 보라 테두리 + 카운트 뱃지) */
.al2-kw-chip-bids{
  display:inline-flex; align-items:center; gap:6px;
  padding:5px 4px 5px 12px; margin:0;
  background:#fff; border:1px solid var(--al2-g200);
  border-radius:999px; font-size:.76rem; font-weight:700;
  color:var(--al2-g800); max-width:100%; min-width:0;
}
.al2-kw-chip-bids:hover{ border-color:#c4b5fd; }
.al2-kw-chip-bids .kw-label{
  max-width:180px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.al2-kw-chip-bids .al2-kw-chip-count{
  background:#7c3aed; color:#fff; padding:2px 8px;
  border-radius:999px; font-size:.66rem;
  font-family:'JetBrains Mono', monospace; font-weight:800;
  margin-left:0;
}
.al2-kw-chip-x{
  width:20px; height:20px; border:0; background:transparent;
  color:var(--al2-g400); cursor:pointer; font-size:.65rem;
  display:inline-flex; align-items:center; justify-content:center;
  border-radius:50%;
}
.al2-kw-chip-x:hover{ background:var(--al2-g100); color:#dc2626; }

/* 추천 키워드 칩 — dashed 보라 border + 보라 텍스트 */
.al2-kw-rec-chip{
  display:inline-flex; align-items:center; gap:4px;
  padding:5px 10px; margin:0;
  background:#fff; border:1px dashed #c4b5fd;
  border-radius:999px; font-size:.74rem; font-weight:700;
  color:#7c3aed; cursor:pointer;
  transition:all .15s;
}
.al2-kw-rec-chip:hover{
  background:#7c3aed; color:#fff; border-color:#7c3aed; border-style:solid;
}
.al2-kw-rec-chip.selected{
  background:#ede9fe; color:#5b21b6; border-style:solid;
}
.al2-kw-rec-chip .al2-kw-rec-cnt{
  background:rgba(124, 58, 237, .1); color:#7c3aed;
  padding:1px 6px; border-radius:999px; font-size:.64rem;
  font-family:'JetBrains Mono', monospace; font-weight:800;
}
.al2-kw-rec-chip:hover .al2-kw-rec-cnt{
  background:rgba(255, 255, 255, .25); color:#fff;
}
.al2-kw-rec-chip.selected .al2-kw-rec-cnt{
  background:rgba(124, 58, 237, .2); color:#5b21b6;
}

/* 고급 옵션 accordion */
.al2-kw-adv{
  margin-top:14px; border:1px solid var(--al2-g150);
  border-radius:10px; background:#fafafb; overflow:hidden;
}
.al2-kw-adv summary{
  padding:10px 14px; font-size:.82rem; font-weight:700;
  color:var(--al2-g700); cursor:pointer; user-select:none;
  list-style:none;
}
.al2-kw-adv summary::-webkit-details-marker{ display:none; }
.al2-kw-adv summary::before{
  content:'▶'; display:inline-block; margin-right:6px;
  font-size:.7rem; color:var(--al2-g500);
  transition:transform .15s;
}
.al2-kw-adv[open] summary::before{ transform:rotate(90deg); }
.al2-kw-adv summary i{ color:#7c3aed; margin-right:4px; }
.al2-kw-adv summary .sub{
  font-size:.7rem; font-weight:500; color:var(--al2-g500); margin-left:4px;
}
.al2-kw-adv-body{
  padding:14px; border-top:1px solid var(--al2-g150); background:#fff;
}
.al2-kw-adv-body .al2-fcst-kw-section:last-child{ margin-bottom:0; }

/* ════════════════════════════════════════════════
   매칭 미리보기 rich — 세로 스택 레이아웃 (matching.png 깨짐 수정)
   ════════════════════════════════════════════════ */
.al2-kw-preview-rich{
  display:block !important;            /* 기존 horizontal flex 덮어쓰기 */
  padding:14px 16px;
  background:#faf5ff;
  border:1px solid #e9d5ff;
  border-radius:10px;
  margin:14px 0 18px;
}
.al2-kw-preview-rich .al2-fcst-kw-preview-label{
  display:flex; flex-wrap:wrap; align-items:center; gap:6px;
  font-size:.82rem; font-weight:800; color:#6c3ae0;
  margin-bottom:10px;
}
.al2-kw-preview-rich .al2-kw-preview-meta{
  flex:1 1 100%; width:100%;
  font-size:11px; font-weight:500; color:var(--al2-g500);
  margin:0; white-space:normal;
}
.al2-kw-preview-rich .al2-fcst-kw-preview-value{
  display:flex; align-items:baseline; gap:6px;
  margin-bottom:14px; padding-bottom:12px;
  border-bottom:1px dashed #e9d5ff;
}
.al2-kw-preview-rich .al2-fcst-kw-preview-value span{
  font-size:1.8rem; font-weight:900; color:#6c3ae0;
  font-family:'JetBrains Mono', monospace; line-height:1;
}
.al2-kw-preview-rich .al2-fcst-kw-preview-value small{
  font-size:.72rem; font-weight:600; color:var(--al2-g600);
}

/* 분기별 bar — 가로 세로 2열 grid */
.al2-kw-preview-rich .al2-kw-qbars{
  display:grid; grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:6px 14px; margin:0 0 14px;
}
@media (min-width: 640px) {
  .al2-kw-preview-rich .al2-kw-qbars{ grid-template-columns:repeat(4, minmax(0, 1fr)); }
}
.al2-kw-preview-rich .al2-kw-qbar{ display:flex; align-items:center; gap:6px; font-size:11px; min-width:0; }
.al2-kw-preview-rich .al2-kw-qbar .lbl{ width:42px; color:var(--al2-g700); font-weight:600; flex-shrink:0; }
.al2-kw-preview-rich .al2-kw-qbar .track{ flex:1; height:6px; background:#ede9fe; border-radius:3px; overflow:hidden; min-width:0; }
.al2-kw-preview-rich .al2-kw-qbar .fill{ height:100%; background:linear-gradient(90deg,#6c3ae0,#a855f7); border-radius:3px; }
.al2-kw-preview-rich .al2-kw-qbar .cnt{ width:28px; text-align:right; font-family:'JetBrains Mono', monospace; font-weight:700; color:var(--al2-g800); flex-shrink:0; }

/* 샘플 섹션 */
.al2-kw-preview-rich .al2-kw-samples-title{
  font-size:11px; font-weight:700; color:var(--al2-g600);
  margin:0 0 6px; text-transform:uppercase; letter-spacing:0.3px;
  padding-top:10px; border-top:1px dashed #e9d5ff;
}
.al2-kw-preview-rich .al2-kw-samples{ display:flex; flex-direction:column; gap:4px; }
.al2-kw-preview-rich .al2-kw-sample{
  display:flex; align-items:center; gap:8px; padding:6px 10px;
  background:#fff; border:1px solid var(--al2-g150); border-radius:6px;
  font-size:11px; min-width:0;
}
.al2-kw-preview-rich .al2-kw-sample .tp{
  padding:2px 6px; background:#ede9fe; color:#6c3ae0;
  border-radius:4px; font-weight:700; flex-shrink:0;
}
.al2-kw-preview-rich .al2-kw-sample .ttl{
  flex:1; min-width:0; color:var(--al2-g800); font-weight:600;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.al2-kw-preview-rich .al2-kw-sample .bud{
  font-family:'JetBrains Mono', monospace; font-weight:700; color:var(--al2-g700);
  flex-shrink:0;
}

/* ════════════════════════════════════════════════
   입찰공고 키워드 가져오기 가이드 카드
   ════════════════════════════════════════════════ */
.al2-kw-sync-card{
  display:flex; align-items:center; gap:12px;
  padding:12px 14px; margin-bottom:16px;
  background:linear-gradient(135deg, #f5f3ff, #fff);
  border:1px solid #ddd6fe; border-radius:10px;
}
.al2-kw-sync-icon{
  width:38px; height:38px; border-radius:50%;
  background:#ede9fe; color:#6c3ae0;
  display:flex; align-items:center; justify-content:center;
  font-size:.95rem; flex-shrink:0;
}
.al2-kw-sync-body{ flex:1; min-width:0; }
.al2-kw-sync-title{
  display:flex; align-items:center; flex-wrap:wrap; gap:6px;
  font-size:.82rem; font-weight:800; color:var(--al2-g900);
  margin-bottom:4px;
}
.al2-kw-sync-oneway{
  font-size:.62rem; font-weight:700; padding:2px 8px; border-radius:999px;
  background:#fef3c7; color:#92400e; cursor:help;
}
.al2-kw-sync-desc{
  font-size:.72rem; color:var(--al2-g600); line-height:1.5;
}
.al2-kw-sync-stats{
  display:flex; flex-wrap:wrap; align-items:center; gap:6px;
  font-size:.72rem; color:var(--al2-g700); margin-bottom:4px;
}
.al2-kw-sync-stats strong{ color:var(--al2-g900); font-family:'JetBrains Mono', monospace; }
.al2-kw-sync-stats .dot{ color:var(--al2-g300); }
.al2-kw-sync-stats .highlight{ color:#6c3ae0; font-weight:700; }
.al2-kw-sync-stats i{ color:var(--al2-g500); margin-right:3px; }
.al2-kw-sync-preview{
  font-size:.7rem; color:var(--al2-g500); font-style:italic;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.al2-kw-sync-preview.muted{ color:var(--al2-g400); }
.al2-kw-sync-btn2{
  display:inline-flex; align-items:center; gap:6px;
  padding:8px 14px; font-size:.76rem; font-weight:700;
  background:#6c3ae0; color:#fff; border:0; border-radius:6px;
  cursor:pointer; flex-shrink:0; text-decoration:none;
  transition:background .12s;
}
.al2-kw-sync-btn2:hover{ background:#5b2db5; color:#fff; }
.al2-kw-sync-btn2.disabled{
  background:var(--al2-g200); color:var(--al2-g500); cursor:not-allowed; pointer-events:none;
}

@media (max-width: 540px) {
  .al2-kw-sync-card{ flex-wrap:wrap; }
  .al2-kw-sync-btn2{ width:100%; justify-content:center; }
}

/* 기존 al2-kw-sync-btn 안내 내 작은 버튼은 숨김 (새 카드로 대체) */
.al2-fcst-kw-notice .al2-kw-sync-btn{ display:none; }

/* ═══════════════════════════════════════════════════════════════
   v3.5 (2026-04-29) — Phase 1 Modernization
     1. 데이터 소스 바 강화 (입찰정보 패턴 차용)
     2. 매칭 점수 링 SVG (솔루션랭킹 패턴 차용)
     3. 분기 타임라인 인터랙티브 (매칭 카운트 + 클릭)
     4. Split 레이아웃 (좌 카드 / 우 디테일 패널)
   ═══════════════════════════════════════════════════════════════ */

/* ─── 1. 데이터 소스 바 (입찰정보 패턴) ─── */
.al2-fcst-source-bar {
  display: flex; align-items: center; gap: 14px;
  padding: 8px 14px;
  margin: 0 0 8px;   /* v3.5.8: 우/좌 margin 제거 — 풀폭 정렬 */
  background: linear-gradient(90deg, #f0fdf4 0%, #fff 60%);
  border: 1px solid #bbf7d0; border-radius: 8px;
  font-size: .74rem; color: var(--al2-g700); font-weight: 500;
}
.al2-fcst-source-bar .src-dot {
  width: 8px; height: 8px; border-radius: 50%; background: #10b981;
  box-shadow: 0 0 0 3px rgba(16,185,129,.18);
  animation: fcSrcDot 2s ease-in-out infinite;
}
@keyframes fcSrcDot { 50% { box-shadow: 0 0 0 6px rgba(16,185,129,.06); } }
.al2-fcst-source-bar .src-divider { color: var(--al2-g300); }
.al2-fcst-source-bar .src-label { font-weight: 700; color: var(--al2-g800); }
.al2-fcst-source-bar .src-stat { font-family: var(--al2-font-mono); font-weight: 700; color: var(--al2-brand); }
.al2-fcst-source-bar .src-link {
  margin-left: auto; font-size: .72rem; color: var(--al2-g500);
  text-decoration: none; display: inline-flex; align-items: center; gap: 4px;
}
.al2-fcst-source-bar .src-link:hover { color: var(--al2-brand); }

/* ─── 2. 매칭 점수 링 SVG ─── */
.al2-fcst-fit-ring {
  position: relative; width: 44px; height: 44px; flex-shrink: 0;
  cursor: help;
}
.al2-fcst-fit-ring svg { transform: rotate(-90deg); width: 100%; height: 100%; }
.al2-fcst-fit-ring .bg { stroke: var(--al2-g100); }
.al2-fcst-fit-ring .fg {
  stroke-linecap: round; transition: stroke-dashoffset .6s ease, stroke .2s ease;
}
.al2-fcst-fit-ring.strong .fg { stroke: #10b981; }
.al2-fcst-fit-ring.mid    .fg { stroke: #f59e0b; }
.al2-fcst-fit-ring.low    .fg { stroke: #94a3b8; }
.al2-fcst-fit-ring .lbl {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-family: var(--al2-font-mono); font-weight: 700; font-size: .76rem; color: var(--al2-g800);
}
.al2-fcst-fit-ring.strong .lbl { color: #047857; }
.al2-fcst-fit-ring.mid .lbl    { color: #b45309; }
.al2-fcst-fit-ring:hover .fit-tooltip { opacity: 1; pointer-events: auto; }
.al2-fcst-fit-ring .fit-tooltip {
  position: absolute; bottom: calc(100% + 6px); left: 50%; transform: translateX(-50%);
  background: var(--al2-g900); color: #fff; font-size: .68rem; line-height: 1.4;
  padding: 7px 10px; border-radius: 6px; white-space: nowrap;
  opacity: 0; pointer-events: none; transition: opacity .12s ease;
  z-index: 10;
  box-shadow: 0 4px 12px rgba(0,0,0,.15);
}
.al2-fcst-fit-ring .fit-tooltip::after {
  content: ''; position: absolute; top: 100%; left: 50%; transform: translateX(-50%);
  border: 4px solid transparent; border-top-color: var(--al2-g900);
}

/* ─── 3. 분기 타임라인 강화 (매칭 카운트 + 클릭) ─── */
.al2-fcst-quarter { cursor: pointer; transition: transform .12s ease; }
.al2-fcst-quarter:hover { transform: translateY(-2px); }
.al2-fcst-quarter.active {
  outline: 2px solid var(--al2-brand);
  outline-offset: 2px;
}
.al2-fcst-quarter-match {
  font-size: .66rem; font-weight: 700; color: var(--al2-brand);
  background: var(--al2-brand-dim);
  padding: 2px 7px; border-radius: 99px; margin-top: 4px;
  display: inline-block;
}

/* ─── 4. Split 레이아웃 — 솔루션랭킹 패턴 (기본 풀폭 → 클릭 시 42/58) ─── */
.al2-fcst-split {
  display: grid;
  grid-template-columns: 1fr;     /* 기본: 풀폭 리스트 */
  gap: 0;
  transition: grid-template-columns .3s ease;
  margin-top: 10px;
}
.al2-fcst-split.has-detail {
  /* v3.6.12 (2026-04-30): 솔루션 랭킹 패턴(42/58) 통일 — 디테일 폭 확대 → 내부 스크롤 감소 */
  grid-template-columns: 42% 58%;
  gap: 14px;
}
.al2-fcst-split-list {
  background: #fff; border: 1px solid var(--al2-g100);
  border-radius: 12px;
  /* v3.6.12: 디테일 패널과 동일 max-height (좌·우 정렬) */
  max-height: calc(100vh - 240px); overflow-y: auto;
  position: relative;
  scrollbar-width: thin;
  scrollbar-color: var(--al2-g200) transparent;
}
.al2-fcst-split-list::-webkit-scrollbar { width: 4px; }
.al2-fcst-split-list::-webkit-scrollbar-track { background: transparent; }
.al2-fcst-split-list::-webkit-scrollbar-thumb {
  background: var(--al2-g200); border-radius: 2px;
}
.al2-fcst-split-list::-webkit-scrollbar-thumb:hover { background: var(--al2-g300); }
.al2-fcst-split-detail {
  display: none;                    /* 기본 숨김 */
  background: #fff; border: 1px solid var(--al2-g100);
  border-radius: 12px; padding: 14px 16px;
  /* v3.6.12: 헤더(80) + 카테고리탭(40) + Hero(접힘 시 0) + 검색바(60) + 활성칩(0) + 페이지네이션(50) ≈ 230 */
  max-height: calc(100vh - 240px); overflow-y: auto;
  position: sticky; top: 14px;
  scrollbar-width: thin;
  scrollbar-color: var(--al2-g200) transparent;
}
.al2-fcst-split-detail::-webkit-scrollbar { width: 4px; }
.al2-fcst-split-detail::-webkit-scrollbar-track { background: transparent; }
.al2-fcst-split-detail::-webkit-scrollbar-thumb {
  background: var(--al2-g200); border-radius: 2px;
}
.al2-fcst-split-detail::-webkit-scrollbar-thumb:hover { background: var(--al2-g300); }
.al2-fcst-split.has-detail .al2-fcst-split-detail { display: block; }

/* 닫기 버튼 (디테일 패널) */
.al2-fcst-detail-close {
  position: absolute; top: 12px; right: 14px;
  width: 32px; height: 32px; border-radius: 8px;
  border: 1px solid var(--al2-g200); background: #fff;
  color: var(--al2-g600); cursor: pointer; font-size: .9rem;
  display: inline-flex; align-items: center; justify-content: center;
  transition: all .12s;
}
.al2-fcst-detail-close:hover { border-color: var(--al2-brand); color: var(--al2-brand); }
.al2-fcst-detail-close kbd {
  margin-left: 4px; padding: 1px 4px; font-size: .6rem;
  background: var(--al2-g100); border-radius: 3px; font-family: var(--al2-font-mono);
}

/* v3.5.3 (2026-04-29): 입찰공고 패턴 — multi-column 카드 그리드 + 필드별 구조 */
#fc-project-list {
  padding: 8px;       /* v3.5.8: 14 → 8 */
}
#fc-project-list .al2-fcst-cards-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 12px;
}
.al2-fcst-split.has-detail #fc-project-list .al2-fcst-cards-grid {
  grid-template-columns: 1fr;   /* split 모드 = 단일 컬럼 */
}

/* v3.5.7 (2026-04-29): 입찰공고 패턴 — 깔끔한 단일 테두리, layout shift 없음 */
.al2-fcst-split-card {
  background: #fff;
  border: 1px solid var(--al2-g200);
  border-radius: 10px; padding: 12px 14px;
  cursor: pointer;
  transition: border-color .15s, box-shadow .15s;
  display: flex; flex-direction: column; gap: 8px;
  position: relative;
}
.al2-fcst-split-card:hover {
  border-color: var(--al2-brand);
  box-shadow: 0 1px 3px rgba(108,58,224,.08);
}
.al2-fcst-split-card.selected {
  border-color: var(--al2-brand);
  background: var(--al2-brand-dim);
  /* layout shift 방지 — 두꺼운 테두리 대신 좌측 라인 */
  box-shadow: inset 3px 0 0 var(--al2-brand);
  padding-left: 11px;     /* 좌측 라인 보상 */
}

/* v3.5.7: visited (한번 본) — Gmail/Linear 패턴 muted */
.al2-fcst-split-card.visited:not(.selected) {
  background: var(--al2-g50);
  border-color: var(--al2-g100);
}
.al2-fcst-split-card.visited:not(.selected) .al2-fcst-split-card-title {
  color: var(--al2-g500);   /* 제목 흐리게 */
  font-weight: 600;
}
.al2-fcst-split-card.visited:not(.selected) .al2-fcst-mini-fit {
  opacity: .7;
}
.al2-fcst-split-card.visited:not(.selected)::before {
  /* 좌상단 작은 점 — "이미 봤음" indicator */
  content: '';
  position: absolute; top: 8px; left: 8px;
  width: 5px; height: 5px; border-radius: 50%;
  background: var(--al2-g300);
}

/* 헤드: 분기 태그 + 매칭 점수 링 (작게) */
.al2-fcst-split-card-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: 8px; margin-bottom: 2px;
}
.al2-fcst-split-card-tags {
  display: flex; align-items: center; gap: 5px; flex-wrap: wrap; flex: 1;
}
.al2-fcst-quarter-tag {
  font-size: .64rem; font-weight: 700; padding: 2px 8px; border-radius: 99px;
  background: var(--al2-g100); color: var(--al2-g700);
  display: inline-flex; align-items: center; gap: 3px;
}
.al2-fcst-quarter-tag.q1 { background: #fee2e2; color: #991b1b; }
.al2-fcst-quarter-tag.q2 { background: #d1fae5; color: #065f46; }
.al2-fcst-quarter-tag.q3 { background: #fef3c7; color: #78350f; }
.al2-fcst-quarter-tag.q4 { background: #dbeafe; color: #1e40af; }
.al2-fcst-mini-fit {
  font-family: var(--al2-font-mono); font-size: .68rem; font-weight: 800;
  padding: 2px 8px; border-radius: 99px;
  background: var(--al2-g100); color: var(--al2-g600);
  flex-shrink: 0;
}
.al2-fcst-mini-fit.strong { background: #d1fae5; color: #047857; }
.al2-fcst-mini-fit.mid    { background: #fef3c7; color: #b45309; }
.al2-fcst-mini-fit.low    { background: var(--al2-g100); color: var(--al2-g500); }

/* 사업명 — 큰 글씨, 2줄 클램프 */
.al2-fcst-split-card-title {
  font-size: .9rem; font-weight: 700; color: var(--al2-g900);
  line-height: 1.4;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}

/* 필드 행 — 라벨: 값 패턴 */
.al2-fcst-card-fields {
  display: flex; flex-direction: column; gap: 4px;
  font-size: .74rem; color: var(--al2-g600);
}
.al2-fcst-card-field {
  display: flex; align-items: center; gap: 7px;
  white-space: nowrap; overflow: hidden;
}
.al2-fcst-card-field i {
  width: 12px; font-size: .7rem; color: var(--al2-g400); flex-shrink: 0;
}
.al2-fcst-card-field .v {
  flex: 1; min-width: 0;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  color: var(--al2-g700); font-weight: 500;
}
.al2-fcst-card-field.org .v { font-weight: 600; color: var(--al2-g800); }
.al2-fcst-card-field.budget .v {
  font-family: var(--al2-font-mono); font-weight: 700; color: var(--al2-brand);
}

/* 푸터 — 키워드 + 북마크 */
.al2-fcst-split-card-foot {
  display: flex; align-items: center; justify-content: space-between;
  gap: 8px; margin-top: 4px; padding-top: 8px;
  border-top: 1px dashed var(--al2-g100);
}
.al2-fcst-split-card-foot .kw-area { flex: 1; min-width: 0; display: flex; flex-wrap: wrap; gap: 3px; }

/* ─── 7. 뷰 토글 (카드/리스트) Phase 1.8 — 통합 toolbar 안 ─── */
.al2-fcst-view-toggle {
  display: inline-flex; gap: 0;
  background: var(--al2-g100); border-radius: 7px; padding: 2px;
}
.al2-fcst-view-toggle button {
  border: 0; background: transparent;
  padding: 4px 8px; border-radius: 5px;
  font-size: .74rem; font-weight: 600; color: var(--al2-g600);
  cursor: pointer; font-family: inherit;
  display: inline-flex; align-items: center; gap: 4px;
  transition: all .12s ease;
  width: 30px; justify-content: center;
}
.al2-fcst-view-toggle button i { font-size: .8rem; }
.al2-fcst-view-toggle button:hover { color: var(--al2-g900); }
.al2-fcst-view-toggle button[aria-pressed="true"] {
  background: #fff; color: var(--al2-brand);
  box-shadow: 0 1px 2px rgba(0,0,0,.06);
}

/* ─── 8. 리스트 뷰 (테이블 형식) Phase 1.8 ─── */
.al2-fcst-list-table {
  display: flex; flex-direction: column;
  background: #fff; border: 1px solid var(--al2-g200); border-radius: 10px;
  overflow: hidden;
}
.al2-fcst-list-head, .al2-fcst-list-row {
  display: grid;
  /* v3.5.12: 분기 컬럼 80→130 (D-day 인라인 수용) */
  grid-template-columns: 60px minmax(0, 1.6fr) minmax(0, 1fr) 130px 90px 100px 40px;
  gap: 12px; align-items: center;
  padding: 10px 14px;
}
.al2-fcst-list-head {
  background: var(--al2-g50); border-bottom: 1px solid var(--al2-g100);
  font-size: .68rem; font-weight: 700; color: var(--al2-g500);
  text-transform: uppercase; letter-spacing: .04em;
  position: sticky; top: 0; z-index: 5;
}
.al2-fcst-list-row {
  border-bottom: 1px solid var(--al2-g100);
  font-size: .82rem; color: var(--al2-g700);
  transition: background .12s ease;
  cursor: pointer;
  position: relative;
}
.al2-fcst-list-row:last-child { border-bottom: 0; }
.al2-fcst-list-row:hover { background: var(--al2-g50); }
.al2-fcst-list-row.selected {
  background: var(--al2-brand-dim);
  box-shadow: inset 3px 0 0 var(--al2-brand);
  padding-left: 11px;
}

/* v3.5.7: visited 리스트 행 */
.al2-fcst-list-row.visited:not(.selected) {
  background: #fafbfc;
}
.al2-fcst-list-row.visited:not(.selected) .lc-name-top {
  color: var(--al2-g500);
  font-weight: 500;
}
.al2-fcst-list-row.visited:not(.selected) .lc-budget,
.al2-fcst-list-row.visited:not(.selected) .lc-org {
  opacity: .75;
}

.al2-fcst-list-row .lc-fit { display: flex; justify-content: flex-start; }
.al2-fcst-list-row .lc-name {
  min-width: 0;
}
.al2-fcst-list-row .lc-name-top {
  font-weight: 700; color: var(--al2-g900); font-size: .86rem;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  margin-bottom: 2px;
}
.al2-fcst-list-row .lc-name-kws {
  display: flex; gap: 3px; flex-wrap: wrap;
}
.al2-fcst-list-row .al2-fcst-list-kw {
  font-size: .64rem; font-weight: 600; padding: 1px 6px; border-radius: 99px;
  background: var(--al2-g100); color: var(--al2-g600);
}
.al2-fcst-list-row .al2-fcst-list-kw.match {
  background: #fef9c3; color: #854d0e;
}
.al2-fcst-list-row .lc-org {
  font-size: .78rem; color: var(--al2-g700); font-weight: 500;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.al2-fcst-list-row .lc-quarter {
  display: flex; justify-content: flex-start; align-items: center;
  gap: 5px; flex-wrap: nowrap; white-space: nowrap;
}
.al2-fcst-list-row .lc-quarter .al2-fcst-dday { font-size: .64rem; }
.al2-fcst-list-row .lc-budget {
  font-family: var(--al2-font-mono); font-weight: 700; color: var(--al2-brand);
  font-size: .82rem;
}
.al2-fcst-list-row .lc-type {
  font-size: .76rem; color: var(--al2-g600);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.al2-fcst-list-row .lc-action { display: flex; justify-content: center; }

/* ─── v3.5.24 (2026-04-30): 사업 카테고리·신규-계속 배지 ─── */
.al2-fcst-cat-tag {
  display: inline-flex; align-items: center; gap: 3px;
  font-size: .64rem; font-weight: 700; padding: 2px 8px; border-radius: 99px;
  white-space: nowrap;
}
.al2-fcst-cat-tag i { font-size: .58rem; }
.al2-fcst-bizcat-tag {
  display: inline-flex; align-items: center; gap: 2px;
  font-size: .62rem; font-weight: 700; padding: 2px 7px; border-radius: 99px;
}
.al2-fcst-bizcat-tag.new {
  background: #fce7f3; color: #be185d; border: 1px solid #f9a8d4;
}
.al2-fcst-bizcat-tag.cont {
  background: var(--al2-g100); color: var(--al2-g600);
}

/* 디테일 패널 메타 행 */
.al2-fcst-detail-meta {
  display: grid; gap: 4px; margin-bottom: 8px;
  font-size: .76rem;
}
.al2-fcst-detail-meta > div {
  display: grid; grid-template-columns: 70px 1fr; gap: 8px;
  padding: 4px 0; border-bottom: 1px dashed var(--al2-g100);
}
.al2-fcst-detail-meta > div:last-child { border-bottom: 0; }
.al2-fcst-detail-meta .k { font-weight: 600; color: var(--al2-g500); font-size: .7rem; }
.al2-fcst-detail-meta .v { color: var(--al2-g800); }

/* 데이터 출처 footer */
.al2-fcst-detail-source {
  margin-top: 12px; padding: 8px 10px;
  background: var(--al2-g50); border-radius: 6px;
  font-size: .68rem; color: var(--al2-g500); line-height: 1.5;
}
.al2-fcst-detail-source i { color: var(--al2-brand); }
.al2-fcst-detail-source b { color: var(--al2-g700); }

/* ─── v3.5.24: 온보딩 가이드 모달 ─── */
.al2-fcst-onboarding-overlay {
  position: fixed; inset: 0; z-index: 9999;
  background: rgba(15,23,42,.55); backdrop-filter: blur(2px);
  display: flex; align-items: center; justify-content: center;
  padding: 20px;
  animation: fcOnFade .2s ease-out;
}
@keyframes fcOnFade { from { opacity: 0; } }

.al2-fcst-onboarding {
  position: relative;
  background: #fff; border-radius: 16px;
  width: 100%; max-width: 560px; max-height: 90vh;
  overflow-y: auto;
  box-shadow: 0 20px 60px rgba(0,0,0,.25);
  animation: fcOnSlide .25s ease-out;
  scrollbar-width: thin; scrollbar-color: var(--al2-g200) transparent;
}
@keyframes fcOnSlide { from { transform: translateY(20px); opacity: 0; } }
.al2-fcst-onboarding::-webkit-scrollbar { width: 4px; }
.al2-fcst-onboarding::-webkit-scrollbar-thumb { background: var(--al2-g200); border-radius: 2px; }

.al2-fcst-onboarding-close {
  position: absolute; top: 14px; right: 14px;
  width: 32px; height: 32px; border-radius: 50%;
  background: var(--al2-g100); border: 0;
  color: var(--al2-g500); cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: all .12s;
}
.al2-fcst-onboarding-close:hover { background: var(--al2-g200); color: var(--al2-g800); }

.al2-fcst-onboarding-head {
  text-align: center; padding: 28px 24px 20px;
  border-bottom: 1px solid var(--al2-g100);
}
.al2-fcst-onboarding-icon {
  width: 56px; height: 56px; margin: 0 auto 12px;
  background: linear-gradient(135deg, var(--al2-brand), #a78bfa);
  border-radius: 50%; display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 1.4rem;
  box-shadow: 0 6px 16px rgba(108,58,224,.25);
}
.al2-fcst-onboarding-head h2 {
  font-size: 1.25rem; font-weight: 800; color: var(--al2-g900);
  margin: 0 0 6px;
}
.al2-fcst-onboarding-head p {
  font-size: .82rem; color: var(--al2-g600); margin: 0; line-height: 1.5;
}

.al2-fcst-onboarding-body { padding: 22px 24px; }
.al2-fcst-onboarding-body section { margin-bottom: 18px; }
.al2-fcst-onboarding-body section:last-of-type { margin-bottom: 12px; }
.al2-fcst-onboarding-body h3 {
  font-size: .9rem; font-weight: 700; color: var(--al2-g900);
  margin: 0 0 8px; display: flex; align-items: center; gap: 7px;
}
.al2-fcst-onboarding-body h3 i { color: var(--al2-brand); font-size: .82rem; }
.al2-fcst-onboarding-body p {
  font-size: .82rem; color: var(--al2-g700); line-height: 1.6; margin: 0;
}
.al2-fcst-onboarding-body p b { color: var(--al2-brand); }
.al2-fcst-onboarding-body ol, .al2-fcst-onboarding-body ul {
  margin: 0; padding-left: 22px; font-size: .82rem; color: var(--al2-g700); line-height: 1.7;
}
.al2-fcst-onboarding-body ol li b, .al2-fcst-onboarding-body ul li b {
  color: var(--al2-g900);
}

.al2-fcst-ob-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
}
.al2-fcst-ob-grid > div {
  padding: 12px; background: var(--al2-g50); border-radius: 8px;
  display: flex; flex-direction: column; gap: 4px;
}
.al2-fcst-ob-grid .lbl { font-size: .76rem; font-weight: 700; color: var(--al2-g800); }
.al2-fcst-ob-grid .val { font-size: 1rem; font-weight: 800; color: var(--al2-brand); font-family: var(--al2-font-mono); }
.al2-fcst-ob-grid .desc { font-size: .7rem; color: var(--al2-g500); }

.al2-fcst-ob-footer {
  font-size: .68rem; color: var(--al2-g400); text-align: center;
  padding: 8px 0; border-top: 1px solid var(--al2-g100);
}
.al2-fcst-ob-footer b { color: var(--al2-g600); }

.al2-fcst-onboarding-actions {
  padding: 14px 24px 22px; display: flex; justify-content: center;
}
.al2-fcst-onboarding-btn {
  padding: 10px 28px; border-radius: 8px; border: 0;
  font-size: .88rem; font-weight: 700; cursor: pointer;
  font-family: inherit; transition: all .12s;
}
.al2-fcst-onboarding-btn.primary {
  background: var(--al2-brand); color: #fff;
  box-shadow: 0 4px 12px rgba(108,58,224,.25);
}
.al2-fcst-onboarding-btn.primary:hover {
  background: var(--al2-brand-dark); transform: translateY(-1px);
}

/* ─── 9. 최근 본 사업 (사이드바) Phase 1.9 ─── */
.al2-fcst-recent-list {
  padding: 4px 12px 10px;
  display: flex; flex-direction: column; gap: 4px;
}
.al2-fcst-recent-empty {
  font-size: .68rem; color: var(--al2-g400);
  padding: 8px 4px; text-align: center;
}
.al2-fcst-recent-item {
  padding: 6px 8px; border-radius: 6px;
  cursor: pointer; transition: background .12s;
  display: flex; flex-direction: column; gap: 2px;
}
.al2-fcst-recent-item:hover { background: var(--al2-g50); }
.al2-fcst-recent-item .rc-name {
  font-size: .72rem; font-weight: 600; color: var(--al2-g800);
  line-height: 1.3;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.al2-fcst-recent-item .rc-meta {
  display: flex; align-items: center; gap: 5px; flex-wrap: wrap;
  font-size: .62rem; color: var(--al2-g500);
}
.al2-fcst-recent-item .rc-org {
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: 110px;
}

/* ─── 10. NEW 배지 + D-day 태그 (Phase P0.3) ─── */
.al2-fcst-new-tag {
  display: inline-block; padding: 1px 7px; border-radius: 99px;
  background: linear-gradient(90deg, #ef4444 0%, #f97316 100%);
  color: #fff; font-size: .6rem; font-weight: 800;
  letter-spacing: .04em; line-height: 1.6;
  box-shadow: 0 1px 3px rgba(239,68,68,.35);
  vertical-align: middle;
  margin-right: 4px;
}
.al2-fcst-dday {
  display: inline-flex; align-items: center; gap: 3px;
  font-size: .64rem; font-weight: 700;
  padding: 2px 7px; border-radius: 99px;
  background: var(--al2-g100); color: var(--al2-g600);
  font-family: var(--al2-font-mono);
}
.al2-fcst-dday i { font-size: .58rem; }
.al2-fcst-dday.urgent { background: #fee2e2; color: #991b1b; }
.al2-fcst-dday.warn   { background: #fef3c7; color: #78350f; }
.al2-fcst-dday.past   { background: var(--al2-g50); color: var(--al2-g400); text-decoration: line-through; }

/* ─── 11. 리스트 헤더 sortable (Phase P0.2) ─── */
.al2-fcst-list-head .sortable {
  cursor: pointer; user-select: none;
  display: flex; align-items: center; gap: 5px;
  transition: color .12s ease;
}
.al2-fcst-list-head .sortable:hover { color: var(--al2-brand); }
.al2-fcst-list-head .sortable i { font-size: .68rem; }

/* ─── 12. 페이지 사이즈 + 페이지 번호 (Phase P0.1, v3.5.13: 한 줄 정렬) ─── */
.al2-fcst-pagination {
  display: flex; align-items: center; justify-content: flex-start;
  flex-wrap: wrap; gap: 14px; margin-top: 14px;
  padding: 10px 14px;
  background: #fff; border: 1px solid var(--al2-g100); border-radius: 10px;
}
.al2-fcst-pagesize {
  display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap;
  font-size: .76rem; color: var(--al2-g600);
}
.al2-fcst-pagesize-label { font-weight: 600; }
.al2-fcst-pagesize-btn {
  padding: 4px 10px; border-radius: 6px;
  border: 1px solid var(--al2-g200); background: #fff;
  font-size: .72rem; font-weight: 600; color: var(--al2-g600);
  cursor: pointer; font-family: inherit;
  transition: all .12s ease;
}
.al2-fcst-pagesize-btn:hover { border-color: var(--al2-brand); color: var(--al2-brand); }
.al2-fcst-pagesize-btn.on {
  background: var(--al2-brand); border-color: var(--al2-brand); color: #fff;
}
.al2-fcst-pagesize-info {
  margin-left: 8px; padding-left: 10px; border-left: 1px solid var(--al2-g200);
  font-family: var(--al2-font-mono); font-weight: 600; color: var(--al2-g500);
  font-size: .72rem;
}
.al2-fcst-pagination-btns { display: inline-flex; gap: 4px; align-items: center; }

/* split 모드일 땐 일부 컬럼 숨김 */
.al2-fcst-split.has-detail .al2-fcst-list-head,
.al2-fcst-split.has-detail .al2-fcst-list-row {
  grid-template-columns: 50px minmax(0, 1.5fr) 110px 80px 40px;
}
.al2-fcst-split.has-detail .al2-fcst-list-head .lc-org,
.al2-fcst-split.has-detail .al2-fcst-list-head .lc-type,
.al2-fcst-split.has-detail .al2-fcst-list-row .lc-org,
.al2-fcst-split.has-detail .al2-fcst-list-row .lc-type { display: none; }

/* 모바일 — 리스트도 간소화 */
@media (max-width: 768px) {
  .al2-fcst-list-head, .al2-fcst-list-row {
    grid-template-columns: 50px minmax(0, 1.5fr) 110px 90px 40px;
  }
  .al2-fcst-list-head .lc-org, .al2-fcst-list-head .lc-type,
  .al2-fcst-list-row .lc-org, .al2-fcst-list-row .lc-type { display: none; }
}

/* Detail Pane */
.al2-fcst-detail-empty {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; height: 100%; color: var(--al2-g400); padding: 60px 20px;
}
.al2-fcst-detail-empty i { font-size: 3rem; color: var(--al2-g200); margin-bottom: 14px; }
.al2-fcst-detail-empty p { font-size: .88rem; line-height: 1.5; }

.al2-fcst-detail-head {
  border-bottom: 1px solid var(--al2-g100); padding-bottom: 10px; margin-bottom: 10px;
  padding-right: 40px;   /* 닫기 버튼 공간 */
}
.al2-fcst-detail-title {
  font-size: .94rem; font-weight: 700; color: var(--al2-g900); line-height: 1.35;
  margin-bottom: 5px;
}
.al2-fcst-detail-org {
  font-size: .76rem; color: var(--al2-g600); font-weight: 600;
  display: flex; align-items: center; gap: 6px;
}
.al2-fcst-detail-kpis {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
  margin: 10px 0; padding: 10px; background: var(--al2-g50); border-radius: 8px;
}
.al2-fcst-detail-kpi { text-align: center; }
.al2-fcst-detail-kpi .v { font-size: .9rem; font-weight: 800; color: var(--al2-g900); font-family: var(--al2-font-mono); }
.al2-fcst-detail-kpi .l { font-size: .64rem; color: var(--al2-g500); margin-top: 2px; font-weight: 600; }

.al2-fcst-detail-tabs {
  display: flex; border-bottom: 1px solid var(--al2-g100); margin-bottom: 10px;
}
.al2-fcst-detail-tab {
  padding: 7px 11px; font-size: .76rem; font-weight: 600; color: var(--al2-g500);
  border: 0; background: transparent; cursor: pointer;
  border-bottom: 2px solid transparent; transition: all .12s ease;
}
.al2-fcst-detail-tab:hover { color: var(--al2-g700); }
.al2-fcst-detail-tab.on { color: var(--al2-brand); border-bottom-color: var(--al2-brand); }

.al2-fcst-detail-section { font-size: .8rem; line-height: 1.55; color: var(--al2-g700); }
.al2-fcst-detail-section h4 {
  font-size: .74rem; font-weight: 700; color: var(--al2-g800);
  margin: 10px 0 5px; display: flex; align-items: center; gap: 5px;
}
.al2-fcst-detail-section h4:first-child { margin-top: 0; }
.al2-fcst-detail-section h4 i { color: var(--al2-brand); font-size: .7rem; }
.al2-fcst-detail-section .desc {
  background: var(--al2-g50); padding: 8px 10px; border-radius: 6px;
  font-size: .76rem; line-height: 1.55;
}
.al2-fcst-detail-actions {
  display: flex; gap: 6px; flex-wrap: wrap;
  margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--al2-g200);
}
.al2-fcst-detail-actions .btn {
  flex: 1; min-width: 100px;
  padding: 7px 10px; font-size: .76rem;
}
.al2-fcst-detail-actions .btn {
  flex: 1; min-width: 130px; padding: 8px 14px;
  border-radius: 8px; font-size: .8rem; font-weight: 600;
  cursor: pointer; border: 0;
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  transition: background .12s ease;
}
.al2-fcst-detail-actions .btn-primary { background: var(--al2-brand); color: #fff; }
.al2-fcst-detail-actions .btn-primary:hover { background: var(--al2-brand-dark); }
.al2-fcst-detail-actions .btn-ghost {
  background: var(--al2-g50); color: var(--al2-g700); border: 1px solid var(--al2-g200);
}
.al2-fcst-detail-actions .btn-ghost:hover { background: var(--al2-g100); }

/* 모바일 — 디테일 열리면 리스트 숨김(디테일이 풀스크린) */
@media (max-width: 1024px) {
  .al2-fcst-split.has-detail { grid-template-columns: 1fr; }
  .al2-fcst-split.has-detail .al2-fcst-split-list { display: none; }
  .al2-fcst-split-list, .al2-fcst-split-detail { max-height: none; position: static; }
}

/* ─── 5. 통합 검색바 (Phase 1.13 — 사전공고 패턴)
 * v3.6.9 (2026-04-30): 좁은 화면에서 두 줄 분리 대신 가로 스크롤 (한 줄 유지) ─── */
.al2-fcst-unified-bar {
  display: flex; align-items: center; gap: 6px; flex-wrap: nowrap;
  padding: 8px 10px; margin: 8px 0 12px;
  background: #fff; border: 1px solid var(--al2-g200); border-radius: 10px;
  box-shadow: 0 1px 2px rgba(0,0,0,.02);
  overflow-x: auto;
  scrollbar-width: thin;
  scrollbar-color: var(--al2-g200) transparent;
}
.al2-fcst-unified-bar::-webkit-scrollbar { height: 4px; }
.al2-fcst-unified-bar::-webkit-scrollbar-track { background: transparent; }
.al2-fcst-unified-bar::-webkit-scrollbar-thumb { background: var(--al2-g200); border-radius: 2px; }

/* 모든 자식이 줄어들지 않게 */
.al2-fcst-unified-bar > * { flex-shrink: 0; }

/* 검색창 — 고정 폭 (v3.5.14: 너무 크지 않게, 칩바가 좌측으로 ) */
.al2-fcst-unified-search {
  position: relative; flex: 0 0 240px; min-width: 180px;
  display: flex; align-items: center;
}
@media (max-width: 768px) {
  .al2-fcst-unified-search { flex: 1 1 100%; }   /* 모바일은 풀폭 */
}
.al2-fcst-unified-search > i {
  position: absolute; left: 10px; color: var(--al2-g400); font-size: .82rem;
  pointer-events: none;
}
.al2-fcst-unified-search input {
  flex: 1; padding: 7px 32px 7px 32px;
  border: 1px solid var(--al2-g200); border-radius: 8px;
  font-size: .82rem; background: #fff; color: var(--al2-g900);
  font-family: inherit; transition: border-color .12s, box-shadow .12s;
  width: 100%;
}
.al2-fcst-unified-search input:focus {
  outline: none; border-color: var(--al2-brand);
  box-shadow: 0 0 0 3px var(--al2-brand-dim);
}

/* 칩 그룹 — 가운데 */
.al2-fcst-unified-chips {
  display: flex; align-items: center; gap: 4px; flex-wrap: wrap;
}
/* v3.7.9 (2026-04-30): 칩 그룹 + 차원 구분자 (분류 | + | 사업구분) */
.al2-fcst-chip-group {
  display: inline-flex; align-items: center; gap: 4px;
}
.al2-fcst-chip-divider {
  display: inline-flex; align-items: center; justify-content: center;
  width: 18px; height: 18px;
  font-size: .68rem; font-weight: 700;
  color: var(--al2-g300);
  margin: 0 2px;
  user-select: none;
}

/* 우측 그룹 (분기·뷰) */
.al2-fcst-unified-right {
  display: flex; align-items: center; gap: 6px;
  margin-left: auto;
}

/* v3.5.19: 통합 검색바 안의 inline 필터바 (멀티필터 + 정렬)
 * v3.5.20: 한 그룹으로 묶음 — 필터/정렬이 따로 줄바뀜 안 되게
 * v3.6.8 (2026-04-30): 모든 자식 flex-shrink:0 + nowrap → 정렬/고급필터 줄바뀜 방지
 * v3.6.10 (2026-04-30): .al2-fc-filterbar의 flex-direction:column 무력화 (가로 정렬) */
.al2-fc-filterbar.al2-fc-filterbar-inline {
  display: inline-flex !important;
  flex-direction: row !important;
  align-items: center;
  gap: 5px;
  flex-wrap: nowrap !important;
  flex-shrink: 0;
  white-space: nowrap;
  padding: 0 !important;
  margin: 0 !important;
  background: transparent !important;
  border: 0 !important;
}
.al2-fc-filterbar-inline > * {
  flex-shrink: 0; white-space: nowrap;
}
.al2-fc-filterbar-inline .al2-fc-flt-add,
.al2-fc-filterbar-inline .al2-fc-sort-btn {
  padding: 5px 10px; font-size: .72rem;
}

/* 모바일 — 우측 그룹 정렬 */
@media (max-width: 768px) {
  .al2-fcst-unified-right { margin-left: 0; }
}

/* legacy compat — 기존 rep-toolbar는 그대로 보존 (다른 용도) */
.al2-fcst-rep-toolbar {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
  padding: 8px 12px; margin: 8px 0 0;
  background: #fff; border: 1px solid var(--al2-g100); border-radius: 10px;
}
.al2-fcst-rep-toggle {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 12px; border-radius: 99px;
  background: #fff; border: 1.5px solid var(--al2-g200);
  font-size: .76rem; font-weight: 700; color: var(--al2-g700);
  cursor: pointer; transition: all .12s;
  font-family: inherit;
  white-space: nowrap;
}
.al2-fcst-rep-toggle:hover { border-color: var(--al2-brand); color: var(--al2-brand); }
.al2-fcst-rep-toggle.on {
  background: var(--al2-brand); border-color: var(--al2-brand); color: #fff;
}
.al2-fcst-rep-toggle.on i { color: #fde047; }
/* v3.6.11: 카운트 + disabled 상태 */
.al2-fcst-rep-toggle .rep-count {
  font-family: var(--al2-font-mono); font-weight: 700; font-size: .68rem;
  background: rgba(255,255,255,.25); color: inherit;
  padding: 1px 6px; border-radius: 99px;
  display: inline-flex; align-items: center; min-width: 18px;
}
.al2-fcst-rep-toggle:not(.on) .rep-count {
  background: var(--al2-g100); color: var(--al2-g500);
}
.al2-fcst-rep-toggle .rep-count:empty { display: none; }
.al2-fcst-rep-toggle.disabled {
  opacity: .5; cursor: not-allowed;
  background: var(--al2-g50); border-color: var(--al2-g200); color: var(--al2-g400);
}
.al2-fcst-rep-toggle.disabled:hover {
  border-color: var(--al2-g200); color: var(--al2-g400);
}

.al2-fcst-toolbar-divider {
  width: 1px; height: 22px; background: var(--al2-g200);
  margin: 0 4px;
}
.al2-fcst-toolbar-spacer { flex: 1; }

/* 매칭 키워드 highlight badge (카드 내부) */
.al2-fcst-card-kws {
  display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px;
}
.al2-fcst-card-kw {
  font-size: .68rem; font-weight: 600; padding: 2px 7px; border-radius: 99px;
  background: var(--al2-g100); color: var(--al2-g600);
  border: 1px solid transparent;
}
.al2-fcst-card-kw.match {
  background: #fef9c3; color: #854d0e; border-color: #facc15;
  box-shadow: 0 0 0 1px rgba(250,204,21,.2);
}
.al2-fcst-card-kw.match::before { content: '⭐ '; }

/* 검색 결과 highlight */
.al2-fcst-search-hl {
  background: #fef08a; color: #713f12; padding: 0 2px; border-radius: 2px;
  font-weight: 700;
}

/* ─── 6. 컴팩트 미니 통계 칩 + 접이식 타임라인 (Phase 1.6) ─── */
.al2-fcst-mini-stats {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  margin: 10px 0 0; padding: 8px 14px;
  background: #fff; border: 1px solid var(--al2-g100); border-radius: 10px;
}
.al2-fcst-mini-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 12px; border-radius: 99px;
  background: var(--al2-g50); border: 1px solid var(--al2-g100);
  font-size: .76rem; font-weight: 600; color: var(--al2-g700);
  cursor: pointer; transition: all .12s ease;
  white-space: nowrap;
}
.al2-fcst-mini-chip:hover { background: var(--al2-g100); }
.al2-fcst-mini-chip i { font-size: .76rem; }
.al2-fcst-mini-chip .lbl { color: var(--al2-g600); }
.al2-fcst-mini-chip .val {
  font-family: var(--al2-font-mono); font-weight: 800; font-size: .82rem;
  color: var(--al2-g900);
}
.al2-fcst-mini-chip.urgent i { color: #dc2626; }
.al2-fcst-mini-chip.urgent:hover { background: #fee2e2; border-color: #fca5a5; }
.al2-fcst-mini-chip.large i { color: #f59e0b; }
.al2-fcst-mini-chip.large:hover { background: #fef3c7; border-color: #fcd34d; }
.al2-fcst-mini-chip.match i { color: #6366f1; }
.al2-fcst-mini-chip.match:hover { background: #ede9fe; border-color: #c4b5fd; }
.al2-fcst-mini-chip.total i { color: var(--al2-brand); }
.al2-fcst-mini-chip.total { background: var(--al2-brand-dim); border-color: rgba(108,58,224,.2); }
.al2-fcst-mini-chip.total:hover { background: rgba(108,58,224,.18); }
.al2-fcst-mini-chip.total .val { color: var(--al2-brand); }

.al2-fcst-stats-toggle {
  padding: 5px 10px; border-radius: 7px;
  background: transparent; border: 1px solid var(--al2-g200);
  font-size: .72rem; font-weight: 600; color: var(--al2-g600);
  cursor: pointer; font-family: inherit;
  display: inline-flex; align-items: center; gap: 5px;
  transition: all .12s ease;
  white-space: nowrap;
}
.al2-fcst-stats-toggle i { transition: transform .2s ease; font-size: .68rem; }
.al2-fcst-stats-toggle:hover { border-color: var(--al2-brand); color: var(--al2-brand); }
.al2-fcst-stats-toggle[aria-expanded="true"] i { transform: rotate(180deg); }
.al2-fcst-stats-toggle[aria-expanded="true"] {
  background: var(--al2-brand-dim); border-color: var(--al2-brand); color: var(--al2-brand);
}

/* 접이식 분기 타임라인 */
.al2-fcst-timeline.collapsed {
  max-height: 0 !important; overflow: hidden !important;
  margin: 0 !important; padding: 0 !important;
  border: 0 !important; opacity: 0;
  transition: max-height .25s ease, opacity .15s ease, padding .25s ease, margin .25s ease;
}
.al2-fcst-timeline:not(.collapsed) {
  max-height: 220px; opacity: 1;
  transition: max-height .3s ease, opacity .2s ease;
}

/* ═══════════════════════════════════════════════
   v3.7.11 (2026-04-30): 빠른 액세스 + Saved Views Phase 1-5
   사이드바 동적 preset / 카운트 배지 / active / 검토 단계 / 시즌 / Saved Views
   ═══════════════════════════════════════════════ */

/* preset 아이템 — 일반 sb-item에 카운트 배지 추가 */
.al2-sb-item.al2-sb-preset {
  position: relative;
  transition: all .15s;
}
.al2-sb-item.al2-sb-preset.disabled {
  opacity: .5;
  cursor: not-allowed;
}
.al2-sb-item.al2-sb-preset.disabled:hover {
  background: transparent;
}
.al2-sb-item.al2-sb-preset.active {
  background: var(--al2-brand-dim, rgba(108, 58, 224, .1));
  border-left: 3px solid var(--al2-brand);
  font-weight: 700;
}
.al2-sb-item.al2-sb-preset.active .icon { filter: brightness(1.1); }
.al2-sb-item.al2-sb-preset.season {
  background: linear-gradient(90deg, rgba(168, 85, 247, .06), transparent);
}

/* 카운트 배지 — 작고 컬러풀 */
.al2-badge-mini {
  margin-left: auto;
  font-family: var(--al2-font-mono, 'JetBrains Mono', monospace);
  font-size: .58rem;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: 8px;
  color: #fff;
  white-space: nowrap;
  min-width: 22px;
  text-align: center;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* 미니 디바이더 (preset 그룹 내 분리) */
.al2-sb-mini-divider {
  margin: 6px 16px 4px;
  height: 1px;
  background: var(--al2-g100);
}

/* 서브 섹션 라벨 (시즌 / 검토 단계) */
.al2-sb-section-sublabel {
  padding: 4px 16px 2px;
  font-size: .62rem;
  font-weight: 700;
  color: var(--al2-g400);
  text-transform: uppercase;
  letter-spacing: .03em;
}

/* Saved Views */
.al2-sb-savedview {
  position: relative;
}
.al2-sb-savedview .lbl {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.al2-sb-savedview-del {
  margin-left: auto;
  width: 18px; height: 18px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--al2-g300);
  cursor: pointer;
  font-size: .55rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: all .15s;
}
.al2-sb-savedview:hover .al2-sb-savedview-del {
  opacity: 1;
}
.al2-sb-savedview-del:hover {
  background: #fee2e2;
  color: #dc2626;
}

.al2-fcst-savedview-empty {
  padding: 10px 16px;
  font-size: .68rem;
  color: var(--al2-g400);
  font-style: italic;
  line-height: 1.5;
}

/* ═══════════════════════════════════════════════
   v3.7.12 (2026-04-30): 키워드 매칭 가이드 Phase 1-5
   사이드바 키워드 hub (empty CTA + filled card) + 환영 배너 + Hero CTA
   페르소나 템플릿 + Onboarding Wizard + Empty state inline guide
   ═══════════════════════════════════════════════ */

/* Phase 1.1 — 사이드바 키워드 hub */
.al2-fcst-kw-hub {
  margin: 6px 12px;
  border-radius: 12px;
  padding: 12px;
  position: relative;
}
.al2-fcst-kw-hub.empty {
  background: linear-gradient(135deg, #fef3c7 0%, #fef9c3 100%);
  border: 1px solid #fde68a;
}
.al2-fcst-kw-hub.filled {
  background: rgba(108, 58, 224, .04);
  border: 1px solid var(--al2-brand-dim, #ddd6fe);
}
.al2-fcst-kw-hub .kw-hub-head {
  display: flex; align-items: center; gap: 6px;
  margin-bottom: 8px;
}
.al2-fcst-kw-hub .kw-hub-title {
  font-size: .8rem;
  font-weight: 800;
  color: var(--al2-g900);
}
.al2-fcst-kw-hub .kw-hub-pill {
  margin-left: auto;
  padding: 1px 8px;
  font-size: .58rem;
  font-weight: 800;
  border-radius: 10px;
  background: #f59e0b;
  color: #fff;
  letter-spacing: .03em;
  animation: kw-pulse 2.5s infinite;
}
@keyframes kw-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: .7; }
}
.al2-fcst-kw-hub .kw-hub-count {
  margin-left: auto;
  font-size: .66rem;
  font-weight: 800;
  color: var(--al2-brand);
  background: var(--al2-brand-dim, rgba(108, 58, 224, .1));
  padding: 1px 8px;
  border-radius: 10px;
}
.al2-fcst-kw-hub #sb-fc-kw-edit {
  margin-left: 4px;
}
.al2-fcst-kw-hub.empty .kw-hub-empty-msg {
  font-size: .72rem;
  color: var(--al2-g700);
  line-height: 1.5;
  margin-bottom: 10px;
}
.al2-fcst-kw-hub.empty .kw-hub-empty-msg b {
  color: #92400e;
  font-weight: 800;
}
.al2-fcst-kw-hub .kw-hub-cta {
  width: 100%;
  padding: 8px 12px;
  border: 0;
  border-radius: 8px;
  background: linear-gradient(135deg, var(--al2-brand), #8b5cf6);
  color: #fff;
  font-size: .76rem;
  font-weight: 700;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  box-shadow: 0 2px 8px rgba(108, 58, 224, .3);
  transition: all .15s;
}
.al2-fcst-kw-hub .kw-hub-cta:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(108, 58, 224, .4);
}
.al2-fcst-kw-hub.filled .kw-hub-match {
  font-size: .72rem;
  color: var(--al2-g600);
  margin-bottom: 8px;
}
.al2-fcst-kw-hub.filled .kw-hub-match i {
  color: var(--al2-brand);
  margin-right: 4px;
}
.al2-fcst-kw-hub.filled .kw-hub-match b {
  color: var(--al2-brand);
  font-weight: 800;
  font-family: var(--al2-font-mono, 'JetBrains Mono', monospace);
}
.al2-fcst-kw-hub.filled .kw-hub-chips {
  display: flex; flex-wrap: wrap; gap: 4px;
  max-height: 80px;
  overflow: hidden;
  margin-bottom: 6px;
}
.al2-fcst-kw-hub.filled .kw-hub-health {
  font-size: .64rem;
  font-weight: 600;
  padding: 3px 8px;
  border-radius: 8px;
  display: inline-block;
}
.al2-fcst-kw-hub .kw-hub-health.none { background: #fee2e2; color: #dc2626; }
.al2-fcst-kw-hub .kw-hub-health.low  { background: #fef3c7; color: #b45309; }
.al2-fcst-kw-hub .kw-hub-health.good { background: #dcfce7; color: #15803d; }
.al2-fcst-kw-hub .kw-hub-health.rich { background: #ede9fe; color: #6d28d9; }

/* Phase 1.3 — 신규 사용자 환영 배너 */
.al2-fcst-kw-welcome {
  margin: 0 0 14px;
  border-radius: 12px;
  background: linear-gradient(135deg, #fef3c7 0%, #fef9c3 50%, #fff 100%);
  border: 1px solid #fde68a;
  overflow: hidden;
  transition: all .3s ease-out;
}
.al2-fcst-kw-welcome .kw-welcome-inner {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 18px;
}
.al2-fcst-kw-welcome .kw-welcome-icon { font-size: 2rem; }
.al2-fcst-kw-welcome .kw-welcome-body { flex: 1; }
.al2-fcst-kw-welcome .kw-welcome-title {
  font-size: .92rem;
  font-weight: 800;
  color: #92400e;
  margin-bottom: 3px;
}
.al2-fcst-kw-welcome .kw-welcome-title b {
  background: linear-gradient(135deg, #d97706, #92400e);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}
.al2-fcst-kw-welcome .kw-welcome-desc {
  font-size: .74rem;
  color: var(--al2-g600);
}
.al2-fcst-kw-welcome .kw-welcome-actions {
  display: flex; gap: 6px; align-items: center;
}
.al2-fcst-kw-welcome .kw-welcome-cta {
  padding: 8px 14px;
  border: 0;
  border-radius: 8px;
  background: linear-gradient(135deg, var(--al2-brand), #8b5cf6);
  color: #fff;
  font-size: .76rem;
  font-weight: 700;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  box-shadow: 0 2px 8px rgba(108, 58, 224, .3);
  white-space: nowrap;
}
.al2-fcst-kw-welcome .kw-welcome-cta:hover { transform: translateY(-1px); }
.al2-fcst-kw-welcome .kw-welcome-close {
  width: 26px; height: 26px;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--al2-g500);
  cursor: pointer;
}
.al2-fcst-kw-welcome .kw-welcome-close:hover { background: rgba(0, 0, 0, .05); }

/* Phase 1.2 — Hero KPI 동적 CTA mode */
.al2-fcst-kpi-card.cta-mode {
  background: linear-gradient(135deg, #faf5ff 0%, #fce7f3 100%) !important;
  border-color: var(--al2-brand) !important;
  cursor: pointer;
  position: relative;
  animation: kw-cta-pulse 2.5s infinite;
}
.al2-fcst-kpi-card.cta-mode:hover {
  transform: translateY(-2px);
}
.al2-fcst-kpi-card.cta-mode .kpi-value {
  font-size: .82rem !important;
}
.al2-fcst-kpi-card.cta-mode .al2-hero-cta-label {
  color: var(--al2-brand);
  font-weight: 800;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: .82rem;
}
@keyframes kw-cta-pulse {
  0%, 100% { box-shadow: 0 2px 8px rgba(108, 58, 224, .15); }
  50% { box-shadow: 0 2px 16px rgba(108, 58, 224, .35); }
}

/* Phase 2.1 — 페르소나 템플릿 (모달) */
.al2-fcst-kw-personas {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 6px;
}
.al2-fcst-kw-persona-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 10px;
  border: 1px solid var(--al2-g200);
  background: #fff;
  border-radius: 16px;
  font-size: .76rem;
  font-weight: 600;
  color: var(--al2-g700);
  cursor: pointer;
  transition: all .15s;
}
.al2-fcst-kw-persona-chip:hover {
  border-color: var(--p-color, var(--al2-brand));
  color: var(--p-color, var(--al2-brand));
  background: rgba(108, 58, 224, .04);
  transform: translateY(-1px);
}
.al2-fcst-kw-persona-chip.on {
  background: var(--p-color, var(--al2-brand));
  color: #fff;
  border-color: var(--p-color, var(--al2-brand));
}
.al2-fcst-kw-persona-chip i { font-size: .82rem; }
.al2-fcst-kw-persona-chip .cnt {
  font-size: .62rem;
  padding: 1px 6px;
  border-radius: 8px;
  background: rgba(0, 0, 0, .08);
  font-weight: 800;
}
.al2-fcst-kw-persona-chip.on .cnt {
  background: rgba(255, 255, 255, .25);
}

/* Phase 5 — Onboarding Wizard */
.al2-kwz-step { margin-bottom: 18px; }
.al2-kwz-step-title {
  font-size: .9rem;
  font-weight: 800;
  color: var(--al2-g900);
  margin-bottom: 4px;
}
.al2-kwz-step-sub {
  font-size: .72rem;
  color: var(--al2-g500);
  margin-bottom: 12px;
}
.al2-kwz-personas {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 8px;
}
.al2-kwz-persona {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  border: 1.5px solid var(--al2-g200);
  background: #fff;
  border-radius: 10px;
  cursor: pointer;
  font-family: inherit;
  text-align: left;
  transition: all .15s;
}
.al2-kwz-persona:hover {
  border-color: var(--p-color, var(--al2-brand));
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, .06);
}
.al2-kwz-persona.on {
  border-color: var(--p-color, var(--al2-brand));
  background: linear-gradient(135deg, rgba(108, 58, 224, .04), #fff);
  border-width: 2px;
  padding: 9px 11px;
}
.al2-kwz-persona i {
  width: 28px; height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  background: var(--p-color, var(--al2-brand));
  color: #fff;
  font-size: .82rem;
}
.al2-kwz-persona .lbl {
  flex: 1;
  font-size: .82rem;
  font-weight: 700;
  color: var(--al2-g800);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.al2-kwz-persona .cnt {
  font-size: .65rem;
  color: var(--al2-g500);
  padding: 2px 6px;
  border-radius: 8px;
  background: var(--al2-g100);
  font-weight: 700;
}
.al2-kwz-persona.on .cnt {
  color: var(--p-color, var(--al2-brand));
  background: rgba(108, 58, 224, .08);
}

.al2-kwz-keywords {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 12px;
  background: var(--al2-g50);
  border-radius: 10px;
  max-height: 200px;
  overflow-y: auto;
}
.al2-kwz-kw {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  background: #fff;
  border: 1px solid var(--al2-g200);
  border-radius: 12px;
  font-size: .76rem;
  color: var(--al2-g800);
  cursor: pointer;
  transition: all .15s;
}
.al2-kwz-kw:hover {
  background: #fee2e2;
  border-color: #fecaca;
  color: #dc2626;
}
.al2-kwz-kw i { font-size: .58rem; opacity: .5; }
.al2-kwz-kw:hover i { opacity: 1; }

.al2-kwz-match-result {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 16px;
  background: linear-gradient(135deg, #ede9fe, #faf5ff);
  border: 1px solid #ddd6fe;
  border-radius: 10px;
  font-size: .85rem;
  color: var(--al2-g700);
}
.al2-kwz-match-result i {
  color: var(--al2-brand);
  font-size: 1.2rem;
}
.al2-kwz-match-result b {
  color: var(--al2-brand);
  font-size: 1.2rem;
  font-weight: 800;
  font-family: var(--al2-font-mono, 'JetBrains Mono', monospace);
  margin: 0 2px;
}

/* Phase 3.1 — 매칭만 0건 inline 가이드 보강 */
.al2-fcst-empty-suggest {
  margin-top: 14px;
  padding: 14px 16px;
  background: linear-gradient(135deg, #fffbeb, #fff);
  border: 1px solid #fde68a;
  border-radius: 10px;
}
.al2-fcst-empty-suggest .suggest-label {
  font-size: .78rem;
  color: #92400e;
  font-weight: 700;
  margin-bottom: 8px;
}
.al2-fcst-empty-suggest .suggest-chips {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: center;
}

/* ═══════════════════════════════════════════════
   v3.7.14 (2026-04-30): AI Top 3 클릭 흐름 — Phase A
   A1 pulse / A2 행 단위 스크롤 / A3 AI breadcrumb
   ═══════════════════════════════════════════════ */

/* A3 — AI 추천 컨텍스트 breadcrumb (디테일 패널 상단) */
.al2-fcst-ai-breadcrumb {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 8px 12px;
  margin-bottom: 12px;
  background: linear-gradient(135deg, #ede9fe 0%, #faf5ff 100%);
  border: 1px solid #ddd6fe;
  border-radius: 8px;
  color: var(--al2-brand);
  font-size: .76rem;
  font-weight: 700;
  cursor: pointer;
  transition: all .15s;
  font-family: inherit;
}
.al2-fcst-ai-breadcrumb:hover {
  background: linear-gradient(135deg, #ddd6fe 0%, #ede9fe 100%);
  transform: translateY(-1px);
  box-shadow: 0 2px 8px rgba(108, 58, 224, .15);
}
.al2-fcst-ai-breadcrumb i:first-child {
  color: var(--al2-brand);
}

/* ═══════════════════════════════════════════════
   v3.7.16 (2026-04-30): 필터 가이드 모달 — 검색 + TOC + 시각적 칩 미리보기
   ═══════════════════════════════════════════════ */
.al2-fcst-help-modal .help-modal-content {
  max-width: 880px;
  height: 80vh;
  display: flex;
  flex-direction: column;
  padding: 0;
}
.al2-fcst-help-modal .help-head-bar {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--al2-g100);
  flex-wrap: wrap;
}
.al2-fcst-help-modal .help-head-bar h3 {
  margin: 0;
  font-size: 1rem;
  font-weight: 800;
  color: var(--al2-g900);
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.al2-fcst-help-modal .help-head-bar h3 i { color: var(--al2-brand); }
.al2-fcst-help-modal .help-search-wrap {
  flex: 1;
  position: relative;
  max-width: 320px;
}
.al2-fcst-help-modal .help-search-wrap i {
  position: absolute;
  left: 10px; top: 50%;
  transform: translateY(-50%);
  color: var(--al2-g400);
  font-size: .76rem;
}
.al2-fcst-help-modal #help-search {
  width: 100%;
  padding: 6px 10px 6px 30px;
  border: 1px solid var(--al2-g200);
  border-radius: 8px;
  font-size: .82rem;
  font-family: inherit;
  outline: none;
}
.al2-fcst-help-modal #help-search:focus { border-color: var(--al2-brand); }

.al2-fcst-help-modal .help-modal-body {
  flex: 1;
  display: grid;
  grid-template-columns: 180px 1fr;
  overflow: hidden;
}
.al2-fcst-help-modal .help-toc {
  border-right: 1px solid var(--al2-g100);
  padding: 14px 8px;
  overflow-y: auto;
  background: var(--al2-g50);
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.al2-fcst-help-modal .help-toc-item {
  display: block;
  padding: 8px 12px;
  border-radius: 6px;
  font-size: .76rem;
  font-weight: 600;
  color: var(--al2-g700);
  text-decoration: none;
  transition: all .12s;
}
.al2-fcst-help-modal .help-toc-item:hover { background: #fff; color: var(--al2-brand); }
.al2-fcst-help-modal .help-toc-item.active {
  background: var(--al2-brand);
  color: #fff;
}

.al2-fcst-help-modal .help-content {
  overflow-y: auto;
  padding: 18px 22px 24px;
}
.al2-fcst-help-modal .help-sec {
  margin-bottom: 24px;
  scroll-margin-top: 16px;
}
.al2-fcst-help-modal .help-sec h4 {
  margin: 0 0 10px;
  font-size: .92rem;
  font-weight: 800;
  color: var(--al2-g900);
  display: flex;
  align-items: center;
  gap: 8px;
}
.al2-fcst-help-modal .hg-new {
  font-size: .56rem;
  font-weight: 800;
  padding: 2px 7px;
  border-radius: 8px;
  background: linear-gradient(135deg, #dc2626, #f97316);
  color: #fff;
  letter-spacing: .03em;
}
.al2-fcst-help-modal .help-row {
  font-size: .8rem;
  line-height: 1.55;
  color: var(--al2-g700);
  margin-bottom: 6px;
}
.al2-fcst-help-modal .help-row b { color: var(--al2-g900); }

.al2-fcst-help-modal .help-steps {
  margin: 0; padding-left: 22px;
  font-size: .82rem;
  line-height: 1.7;
  color: var(--al2-g700);
}
.al2-fcst-help-modal .help-steps li { margin-bottom: 6px; }
.al2-fcst-help-modal .help-steps li b { color: var(--al2-brand); }

/* 칩 시각 미리보기 */
.al2-fcst-help-modal .help-chip-group {
  margin-bottom: 14px;
  padding: 10px 12px;
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 8px;
}
.al2-fcst-help-modal .help-group-label {
  font-size: .68rem;
  font-weight: 700;
  color: var(--al2-g500);
  text-transform: uppercase;
  letter-spacing: .03em;
  margin-bottom: 8px;
}
.al2-fcst-help-modal .help-chip-row {
  display: flex; gap: 6px; flex-wrap: wrap;
  margin-bottom: 8px;
}
.al2-fcst-help-modal .preview {
  pointer-events: none;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border: 1px solid var(--al2-g200);
  border-radius: 16px;
  background: #fff;
  font-size: .72rem;
  font-weight: 600;
  color: var(--al2-g700);
}
.al2-fcst-help-modal .preview i { font-size: .68rem; }
.al2-fcst-help-modal .al2-fcst-rep-toggle.preview {
  background: linear-gradient(135deg, #fbbf24, #f59e0b);
  color: #fff;
  border: none;
  padding: 5px 12px;
}
.al2-fcst-help-modal .al2-fcst-cat-tab.preview {
  border-radius: 8px;
  background: var(--al2-g50);
  border: 1px solid var(--al2-g200);
  padding: 6px 12px;
  font-weight: 700;
}
.al2-fcst-help-modal .help-divider-plus {
  text-align: center;
  font-size: .9rem;
  font-weight: 800;
  color: var(--al2-g300);
  margin: 6px 0;
}

.al2-fcst-help-modal .help-keys {
  width: 100%;
  border-collapse: collapse;
  font-size: .8rem;
}
.al2-fcst-help-modal .help-keys td {
  padding: 6px 10px;
  border-bottom: 1px solid var(--al2-g100);
}
.al2-fcst-help-modal .help-keys td:first-child { width: 140px; }
.al2-fcst-help-modal kbd {
  display: inline-block;
  padding: 2px 7px;
  margin: 0 2px;
  background: var(--al2-g100);
  border: 1px solid var(--al2-g200);
  border-radius: 5px;
  font-family: var(--al2-font-mono, 'JetBrains Mono', monospace);
  font-size: .7rem;
  font-weight: 700;
  color: var(--al2-g800);
  box-shadow: 0 1px 0 var(--al2-g300);
}

.al2-fcst-help-modal .help-changelog {
  margin: 0;
  padding-left: 22px;
  font-size: .8rem;
  line-height: 1.7;
  color: var(--al2-g700);
}
.al2-fcst-help-modal .help-changelog li {
  margin-bottom: 4px;
  list-style: '✓ ';
  padding-left: 4px;
}
.al2-fcst-help-modal .help-changelog li b {
  color: var(--al2-brand);
}

@media (max-width: 760px) {
  .al2-fcst-help-modal .help-modal-content { height: 90vh; }
  .al2-fcst-help-modal .help-modal-body { grid-template-columns: 1fr; }
  .al2-fcst-help-modal .help-toc {
    border-right: 0;
    border-bottom: 1px solid var(--al2-g100);
    flex-direction: row;
    overflow-x: auto;
    padding: 8px;
    gap: 4px;
  }
  .al2-fcst-help-modal .help-toc-item { white-space: nowrap; }
}

/* A1 — AI 추천 클릭 시 리스트 행 빨간 테두리 (영구 표시, 디테일 닫기 시 해제)
   v3.7.15: pulse → 빨간 테두리 + 진입 시 1회 flash 애니메이션 */
.al2-fcst-split-card.al2-fcst-row-aipick,
.al2-fcst-list-row.al2-fcst-row-aipick,
.al2-fcst-table-row.al2-fcst-row-aipick {
  border: 2px solid #dc2626 !important;
  box-shadow: 0 0 0 2px rgba(220, 38, 38, .12), 0 4px 14px rgba(220, 38, 38, .12);
  background: linear-gradient(135deg, rgba(220, 38, 38, .04), transparent) !important;
  position: relative;
  z-index: 2;
}
.al2-fcst-split-card.al2-fcst-row-aipick::before,
.al2-fcst-list-row.al2-fcst-row-aipick::before,
.al2-fcst-table-row.al2-fcst-row-aipick::before {
  content: '✨ AI Pick';
  position: absolute;
  top: -10px; left: 12px;
  padding: 2px 8px;
  background: #dc2626;
  color: #fff;
  font-size: .58rem;
  font-weight: 800;
  border-radius: 8px;
  letter-spacing: .03em;
  box-shadow: 0 2px 6px rgba(220, 38, 38, .3);
  white-space: nowrap;
  z-index: 3;
}
/* 진입 시 1회 flash — pulse + scale */
.al2-fcst-row-aipick-flash {
  animation: al2-fcst-row-aipick-flash-anim 1.8s ease-out;
}
@keyframes al2-fcst-row-aipick-flash-anim {
  0% {
    transform: scale(1.012);
    box-shadow: 0 0 0 0 rgba(220, 38, 38, .65), 0 0 0 0 rgba(220, 38, 38, .35);
  }
  35% {
    transform: scale(1);
    box-shadow: 0 0 0 8px rgba(220, 38, 38, .22), 0 0 0 16px rgba(220, 38, 38, .10);
  }
  100% {
    transform: scale(1);
    box-shadow: 0 0 0 2px rgba(220, 38, 38, .12), 0 4px 14px rgba(220, 38, 38, .12);
  }
}
