/* ═══════════════════════════════════════════════════════════════
   AI Link v3 — public-org-v3.css
   공공기관 현황 모듈 전용 스타일

   Step 1: 골격 + 사이드바 + 잠금 게이트 + 4 pane + 로딩 ★
   Step 2: 공공기관 탭 (KPI/필터/카드/배너/페이징)
   Step 3: 지자체/산하기관 탭
   Step 4: 기관 상세 모달 (4탭)
   Step 5: favoriteOrgs 통합
   Step 6: 최종 검증

   원칙:
   - AL2 디자인 토큰(--al2-*)만 사용
   - al2-porg-* prefix로 module-isolated namespace
   - 공통 컴포넌트는 자체 정의 (forecast v3 와 독립, ~300줄 중복 수용)
   - 공통 기반(.al2-sidebar / .al2-main / .al2-page / .al2-badge-*)은
     /shared/css/ailink-ds.css 에 정의되어 있음 (손대지 않음)
   ═══════════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════
   1. 페이지 헤더 (공통)
   ═══════════════════════════════════════════════ */
.al2-page-header {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 16px; padding: 24px 28px 20px;
  border-bottom: 1px solid var(--al2-g100); background: #fff;
}
.al2-page-header-title {
  font-size: 1.35rem; font-weight: 800; color: var(--al2-g900);
  line-height: 1.3; letter-spacing: -0.01em;
}
.al2-page-header-desc {
  margin-top: 4px; font-size: .82rem; font-weight: 500;
  color: var(--al2-g500); line-height: 1.5;
}


/* ═══════════════════════════════════════════════
   2. 사이드바 v3 병렬 운영 태그
   ═══════════════════════════════════════════════ */
.al2-porg-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-porg-v3-tag i { margin-right: 4px; }
.al2-porg-v3-link {
  display: block;
  margin-top: 4px;
  font-size: .62rem;
  font-weight: 500;
  color: var(--al2-g500);
  text-decoration: none;
}
.al2-porg-v3-link:hover { color: var(--al2-brand); }


/* ═══════════════════════════════════════════════
   3. 4 pane 표시 제어
   ═══════════════════════════════════════════════ */
.al2-porg-pane {
  display: none;
}
.al2-porg-pane.on {
  display: block;
}


/* ═══════════════════════════════════════════════
   4. 로딩 / 빈 상태 (공통)
   ═══════════════════════════════════════════════ */
.al2-porg-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 100px 24px;
  text-align: center;
  color: var(--al2-g400);
  min-height: 360px;
}
.al2-porg-loading i {
  font-size: 2.4rem;
  color: var(--al2-brand);
  margin-bottom: 16px;
}
.al2-porg-loading p {
  margin: 0;
  font-size: .92rem;
  font-weight: 600;
  color: var(--al2-g600);
}

.al2-porg-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-porg-empty i {
  font-size: 3rem;
  color: var(--al2-g200);
  margin-bottom: 18px;
}
.al2-porg-empty p {
  margin: 0;
  font-size: 1rem;
  font-weight: 700;
  color: var(--al2-g500);
}
.al2-porg-empty span {
  display: block;
  margin-top: 6px;
  font-size: .78rem;
  font-weight: 500;
  color: var(--al2-g400);
  font-family: 'JetBrains Mono', monospace;
}


/* ═══════════════════════════════════════════════
   5. 잠금 게이트 (forecast v3 패턴 동일)
   ═══════════════════════════════════════════════ */
.al2-porg-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-porg-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-porg-locked h2 {
  margin: 0 0 10px;
  font-size: 1.35rem;
  font-weight: 800;
  color: var(--al2-g900);
  letter-spacing: -0.01em;
}

.al2-porg-locked p {
  margin: 0 0 28px;
  font-size: .88rem;
  font-weight: 500;
  color: var(--al2-g500);
  line-height: 1.6;
}
.al2-porg-locked p strong {
  color: var(--al2-brand);
  font-weight: 700;
}

.al2-porg-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-porg-locked-stat {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.al2-porg-locked-stat .v {
  font-size: 1.2rem;
  font-weight: 800;
  color: var(--al2-g900);
  font-family: 'JetBrains Mono', monospace;
}
.al2-porg-locked-stat .v.blur {
  filter: blur(4px);
  user-select: none;
}
.al2-porg-locked-stat.locked .v {
  color: var(--al2-g300);
}
.al2-porg-locked-stat .l {
  font-size: .68rem;
  font-weight: 600;
  color: var(--al2-g500);
}

.al2-porg-locked-benefits {
  list-style: none;
  padding: 0;
  margin: 0 0 28px;
  text-align: left;
}
.al2-porg-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-porg-locked-benefits li:last-child { border-bottom: none; }
.al2-porg-locked-benefits li i {
  color: var(--al2-green);
  font-size: .95rem;
}
.al2-porg-locked-benefits strong {
  color: var(--al2-brand);
  font-weight: 800;
}

.al2-porg-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-porg-locked-cta:hover {
  background: var(--al2-brand-dark, #5a2cc0);
  transform: translateY(-1px);
  box-shadow: 0 6px 16px rgba(108, 58, 224, .35);
}

/* 잠금 모드 시 사이드바 비활성화 */
body.al2-porg-locked-mode #sb-public-org .al2-sb-item:not([onclick]) {
  opacity: .4;
  pointer-events: none;
}


/* ═══════════════════════════════════════════════
   6. 반응형 (Step 1 기본)
   ═══════════════════════════════════════════════ */
@media (max-width: 768px) {
  .al2-porg-locked {
    margin: 16px;
    padding: 32px 20px;
  }
  .al2-porg-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;
  }
}

/* ═══════════════════════════════════════════════
   Step 2 — 공공기관 탭 (KPI/필터/카드/배너/페이징)
   섹션 7~14
   ═══════════════════════════════════════════════ */

/* ─── 7. 공통 body + 공유 배지 + 공통 버튼 ─── */
.al2-porg-body {
  padding: 20px 28px 40px;
}

.al2-porg-sync-badge {
  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-porg-sync-badge i { font-size: .6rem; }

.al2-porg-btn-outline,
.al2-porg-btn-primary,
.al2-porg-btn-icon {
  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-porg-btn-outline {
  border-color: var(--al2-g200);
  background: #fff;
  color: var(--al2-g700);
}
.al2-porg-btn-outline:hover {
  border-color: var(--al2-brand);
  color: var(--al2-brand);
}
.al2-porg-btn-outline.sm {
  padding: 6px 10px;
  font-size: .72rem;
}
.al2-porg-btn-primary {
  background: var(--al2-brand);
  color: #fff;
  box-shadow: 0 2px 8px rgba(108, 58, 224, .2);
}
.al2-porg-btn-primary:hover {
  background: var(--al2-brand-dark, #5a2cc0);
  box-shadow: 0 4px 12px rgba(108, 58, 224, .3);
}
.al2-porg-btn-icon {
  width: 36px;
  height: 36px;
  padding: 0;
  justify-content: center;
  border-color: var(--al2-g200);
  background: #fff;
  color: var(--al2-g600);
}
.al2-porg-btn-icon:hover {
  border-color: var(--al2-brand);
  color: var(--al2-brand);
}
.al2-porg-btn-link {
  background: none;
  border: none;
  color: var(--al2-brand);
  font-size: .72rem;
  font-weight: 600;
  cursor: pointer;
  padding: 4px 8px;
}
.al2-porg-btn-link:hover { text-decoration: underline; }


/* ─── 8. KPI 카드 3개 ─── */
.al2-porg-kpi-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  margin-bottom: 20px;
}
.al2-porg-kpi {
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 12px;
  padding: 18px 22px;
  cursor: pointer;
  transition: all .15s ease;
  position: relative;
  overflow: hidden;
}
.al2-porg-kpi::before {
  content: '';
  position: absolute;
  top: 0; left: 0;
  width: 4px; height: 100%;
  background: var(--al2-g200);
  transition: background .15s ease;
}
.al2-porg-kpi:hover {
  border-color: var(--al2-brand);
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(0, 0, 0, .06);
}
.al2-porg-kpi.total::before    { background: var(--al2-blue); }
.al2-porg-kpi.expiring::before { background: var(--al2-red); }
.al2-porg-kpi.favorite::before { background: var(--al2-yellow); }

.al2-porg-kpi-label {
  font-size: .72rem;
  font-weight: 600;
  color: var(--al2-g500);
  margin-bottom: 6px;
}
.al2-porg-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-porg-kpi-desc {
  margin-top: 4px;
  font-size: .68rem;
  font-weight: 500;
  color: var(--al2-g400);
}


/* ─── 9. 빠른 필터 바 ─── */
.al2-porg-qf-bar {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 18px;
  margin-bottom: 16px;
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 12px;
}
.al2-porg-qf-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: .76rem;
  font-weight: 800;
  color: var(--al2-g700);
  flex-shrink: 0;
}
.al2-porg-qf-label i { color: var(--al2-brand); }
.al2-porg-qf-buttons {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.al2-porg-qf-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 12px;
  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;
}
.al2-porg-qf-btn:hover {
  border-color: var(--al2-brand);
  color: var(--al2-brand);
}
.al2-porg-qf-btn.active {
  background: var(--al2-brand);
  color: #fff;
  border-color: var(--al2-brand);
}
.al2-porg-qf-btn.hot {
  background: linear-gradient(135deg, #ef4444, #f97316);
  color: #fff;
  border-color: transparent;
  box-shadow: 0 2px 8px rgba(239, 68, 68, .25);
}
.al2-porg-qf-btn.hot:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(239, 68, 68, .35);
}


/* ─── 10. 임기 만료 배너 ─── */
.al2-porg-expiring-banner {
  margin-bottom: 16px;
  background: linear-gradient(135deg, #fff4e6, #fff);
  border: 1px solid #fed7aa;
  border-radius: 12px;
  overflow: hidden;
}
.al2-porg-expiring-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px;
  cursor: pointer;
  transition: background .12s ease;
}
.al2-porg-expiring-head:hover { background: rgba(245, 158, 11, .05); }

.al2-porg-expiring-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: .85rem;
  font-weight: 800;
  color: #92400e;
}
.al2-porg-expiring-title i { color: #f59e0b; font-size: 1rem; }
.al2-porg-expiring-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 24px;
  height: 22px;
  padding: 0 8px;
  border-radius: 99px;
  background: #f59e0b;
  color: #fff;
  font-size: .68rem;
  font-weight: 800;
  font-family: 'JetBrains Mono', monospace;
}
.al2-porg-expiring-toggle {
  width: 28px;
  height: 28px;
  border: none;
  background: rgba(245, 158, 11, .15);
  color: #92400e;
  border-radius: 6px;
  cursor: pointer;
  font-size: .7rem;
  transition: transform .2s ease;
}
.al2-porg-expiring-banner.expanded .al2-porg-expiring-toggle {
  transform: rotate(180deg);
}

.al2-porg-expiring-list {
  max-height: 0;
  overflow: hidden;
  transition: max-height .3s ease;
}
.al2-porg-expiring-banner.expanded .al2-porg-expiring-list {
  max-height: 600px;
}

.al2-porg-exp-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 18px;
  border-top: 1px solid #fed7aa;
  cursor: pointer;
  transition: background .12s ease;
}
.al2-porg-exp-row:hover { background: rgba(245, 158, 11, .08); }
.al2-porg-exp-row.urgent { background: rgba(239, 68, 68, .04); }

.al2-porg-exp-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
  min-width: 0;
}
.al2-porg-exp-name {
  font-size: .82rem;
  font-weight: 700;
  color: var(--al2-g900);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.al2-porg-exp-meta {
  font-size: .7rem;
  font-weight: 500;
  color: var(--al2-g500);
}


/* ─── 11. 검색 / 필터 / 정렬 툴바 ─── */
.al2-porg-search-toolbar {
  display: flex;
  gap: 8px;
  margin-bottom: 12px;
  flex-wrap: wrap;
  align-items: center;
}
.al2-porg-search-box {
  position: relative;
  display: flex;
  align-items: center;
  flex: 1;
  min-width: 240px;
}
.al2-porg-search-box > i {
  position: absolute;
  left: 14px;
  color: var(--al2-g400);
  font-size: .85rem;
}
.al2-porg-search-box input {
  width: 100%;
  padding: 9px 40px 9px 38px;
  border: 1px solid var(--al2-g200);
  border-radius: 8px;
  font-size: .82rem;
  background: #fff;
  color: var(--al2-g900);
  font-family: inherit;
  transition: all .15s ease;
}
.al2-porg-search-box input:focus {
  outline: none;
  border-color: var(--al2-brand);
  box-shadow: 0 0 0 3px var(--al2-brand-dim);
}
.al2-porg-search-clear {
  position: absolute;
  right: 8px;
  width: 22px;
  height: 22px;
  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: .6rem;
}
.al2-porg-search-clear:hover { background: var(--al2-g200); }

.al2-porg-filter-select {
  padding: 9px 30px 9px 12px;
  border: 1px solid var(--al2-g200);
  border-radius: 8px;
  background: #fff
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'><path d='M1 3l4 4 4-4' stroke='%236b7280' stroke-width='1.5' fill='none' stroke-linecap='round'/></svg>")
    no-repeat right 10px center;
  font-size: .78rem;
  font-weight: 500;
  color: var(--al2-g700);
  font-family: inherit;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  min-width: 130px;
  transition: all .15s ease;
}
.al2-porg-filter-select:hover {
  border-color: var(--al2-brand);
}
.al2-porg-filter-select:focus {
  outline: none;
  border-color: var(--al2-brand);
  box-shadow: 0 0 0 3px var(--al2-brand-dim);
}
.al2-porg-filter-select.sort {
  min-width: 160px;
}


/* ─── 12. 적용된 필터 태그 + 결과 카운트 ─── */
.al2-porg-active-filters {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 10px 14px;
  margin-bottom: 12px;
  background: var(--al2-brand-dim);
  border-radius: 8px;
}
.al2-porg-active-label {
  font-size: .72rem;
  font-weight: 700;
  color: var(--al2-brand);
}
.al2-porg-filter-tags {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  flex: 1;
}
.al2-porg-filter-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 4px 3px 10px;
  background: #fff;
  border: 1px solid var(--al2-brand);
  border-radius: 99px;
  font-size: .7rem;
  font-weight: 700;
  color: var(--al2-brand);
}
.al2-porg-filter-tag button {
  width: 16px;
  height: 16px;
  border: none;
  background: var(--al2-brand-dim);
  color: var(--al2-brand);
  border-radius: 50%;
  cursor: pointer;
  font-size: .55rem;
  display: flex;
  align-items: center;
  justify-content: center;
}
.al2-porg-filter-tag button:hover {
  background: var(--al2-brand);
  color: #fff;
}

.al2-porg-result-info {
  font-size: .82rem;
  font-weight: 600;
  color: var(--al2-g600);
  margin-bottom: 14px;
}
.al2-porg-result-info i { margin-right: 4px; color: var(--al2-g400); }
.al2-porg-result-info strong {
  color: var(--al2-brand);
  font-weight: 800;
  font-family: 'JetBrains Mono', monospace;
  font-size: .92rem;
}


/* ─── 13. 카드 그리드 ─── */
.al2-porg-card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 14px;
  margin-bottom: 20px;
}

.al2-porg-card {
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 12px;
  padding: 18px 20px;
  display: flex;
  flex-direction: column;
  transition: all .15s ease;
}
.al2-porg-card:hover {
  border-color: var(--al2-brand);
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(108, 58, 224, .08);
}

.al2-porg-card-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 12px;
}
.al2-porg-card-title {
  flex: 1;
  min-width: 0;
}
.al2-porg-card-title h3 {
  margin: 0 0 6px;
  font-size: .95rem;
  font-weight: 800;
  color: var(--al2-g900);
  line-height: 1.3;
  letter-spacing: -0.01em;
  word-break: keep-all;
}
.al2-porg-card-badges {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}
.al2-porg-type-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  color: #fff;
  font-size: .62rem;
  font-weight: 800;
  letter-spacing: -0.01em;
}
.al2-porg-size-badge {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 8px;
  border-radius: 4px;
  background: var(--al2-g100);
  color: var(--al2-g700);
  font-size: .62rem;
  font-weight: 700;
  font-family: 'JetBrains Mono', monospace;
}
.al2-porg-size-badge i { font-size: .58rem; }
.al2-porg-size-badge.huge  { background: #fee2e2; color: #b91c1c; }
.al2-porg-size-badge.big   { background: #fed7aa; color: #c2410c; }
.al2-porg-size-badge.mid   { background: #fef3c7; color: #b45309; }
.al2-porg-size-badge.small { background: var(--al2-g100); color: var(--al2-g600); }

.al2-porg-fav-btn {
  width: 32px;
  height: 32px;
  border: none;
  background: transparent;
  color: var(--al2-g300);
  border-radius: 8px;
  cursor: pointer;
  font-size: 1rem;
  flex-shrink: 0;
  transition: all .12s ease;
}
.al2-porg-fav-btn:hover {
  background: var(--al2-g100);
  color: #f59e0b;
}
.al2-porg-fav-btn.active {
  color: #f59e0b;
}

.al2-porg-card-body {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 12px;
  flex: 1;
}
.al2-porg-info-row {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: .76rem;
}
.al2-porg-info-row .label {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  width: 56px;
  flex-shrink: 0;
  color: var(--al2-g500);
  font-weight: 600;
  font-size: .68rem;
}
.al2-porg-info-row .label i {
  width: 12px;
  text-align: center;
  font-size: .65rem;
}
.al2-porg-info-row .value {
  flex: 1;
  color: var(--al2-g800);
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.al2-porg-card-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 0;
  margin-bottom: 12px;
  border-top: 1px solid var(--al2-g100);
  border-bottom: 1px solid var(--al2-g100);
}
.al2-porg-term-info {
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.al2-porg-term-info .label {
  font-size: .62rem;
  font-weight: 600;
  color: var(--al2-g500);
}
.al2-porg-term-info .dates {
  font-size: .76rem;
  font-weight: 700;
  color: var(--al2-g800);
  font-family: 'JetBrains Mono', monospace;
}

.al2-porg-dday {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 99px;
  background: var(--al2-g100);
  color: var(--al2-g600);
  font-size: .72rem;
  font-weight: 800;
  font-family: 'JetBrains Mono', monospace;
}
.al2-porg-dday.urgent  { background: #fee2e2; color: #dc2626; }
.al2-porg-dday.warning { background: #fef3c7; color: #b45309; }
.al2-porg-dday.expired { background: var(--al2-g200); color: var(--al2-g500); }

.al2-porg-card-actions {
  display: flex;
  gap: 6px;
}
.al2-porg-btn-card {
  flex: 1;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  padding: 8px 10px;
  border-radius: 7px;
  font-size: .72rem;
  font-weight: 700;
  cursor: pointer;
  transition: all .12s ease;
  font-family: inherit;
  border: 1px solid transparent;
}
.al2-porg-btn-card.secondary {
  background: var(--al2-g50);
  color: var(--al2-g700);
  border-color: var(--al2-g200);
}
.al2-porg-btn-card.secondary:hover {
  border-color: var(--al2-brand);
  color: var(--al2-brand);
}
.al2-porg-btn-card.primary {
  background: var(--al2-brand);
  color: #fff;
}
.al2-porg-btn-card.primary:hover {
  background: var(--al2-brand-dark, #5a2cc0);
}


/* ─── 14. 빈 상태 / 페이징 ─── */
.al2-porg-empty-state {
  grid-column: 1 / -1;
  padding: 60px 24px;
  text-align: center;
  color: var(--al2-g400);
}
.al2-porg-empty-state i {
  font-size: 2.4rem;
  color: var(--al2-g200);
  margin-bottom: 14px;
}
.al2-porg-empty-state h3 {
  margin: 0;
  font-size: 1rem;
  font-weight: 700;
  color: var(--al2-g600);
}
.al2-porg-empty-state p {
  margin: 6px 0 0;
  font-size: .8rem;
  color: var(--al2-g400);
}

.al2-porg-pagination {
  display: flex;
  gap: 4px;
  justify-content: center;
  margin-top: 20px;
}
.al2-porg-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-porg-page-btn:hover:not(:disabled) {
  border-color: var(--al2-brand);
  color: var(--al2-brand);
}
.al2-porg-page-btn.active {
  background: var(--al2-brand);
  color: #fff;
  border-color: var(--al2-brand);
}
.al2-porg-page-btn:disabled { opacity: .4; cursor: not-allowed; }


/* ─── 반응형 (Step 2) ─── */
@media (max-width: 1100px) {
  .al2-porg-kpi-grid { grid-template-columns: 1fr; }
  .al2-porg-card-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
  .al2-porg-body { padding: 16px; }
  .al2-porg-card-grid { grid-template-columns: 1fr; }
  .al2-porg-search-toolbar { flex-direction: column; align-items: stretch; }
  .al2-porg-search-box { min-width: 0; }
  .al2-porg-filter-select { width: 100%; }
  .al2-porg-qf-bar { flex-direction: column; align-items: flex-start; gap: 10px; }
}

/* ═══════════════════════════════════════════════
   Step 3 — 지자체 + 산하기관 탭
   섹션 15~18
   ═══════════════════════════════════════════════ */

/* ─── 15. KPI 4분할 (산하기관) ─── */
.al2-porg-kpi-grid.kpi-4 {
  grid-template-columns: repeat(4, 1fr);
}
.al2-porg-kpi.so-public::before     { background: #2563eb; }
.al2-porg-kpi.so-invested::before   { background: #16a34a; }
.al2-porg-kpi.so-contributed::before{ background: #d97706; }


/* ─── 16. 지자체 카드 ─── */
.al2-porg-lg-card {
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 12px;
  padding: 16px 18px;
  cursor: pointer;
  transition: all .15s ease;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.al2-porg-lg-card:hover {
  border-color: var(--al2-brand);
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(108, 58, 224, .08);
}

.al2-porg-lg-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.al2-porg-lg-type-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 4px;
  font-size: .65rem;
  font-weight: 800;
  letter-spacing: -0.01em;
  color: #fff;
}
.al2-porg-lg-type-badge.metro    { background: #7c3aed; }
.al2-porg-lg-type-badge.city     { background: #2563eb; }
.al2-porg-lg-type-badge.county   { background: #16a34a; }
.al2-porg-lg-type-badge.district { background: #ea580c; }

.al2-porg-lg-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.al2-porg-lg-name {
  margin: 0;
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--al2-g900);
  line-height: 1.3;
  letter-spacing: -0.01em;
  word-break: keep-all;
}
.al2-porg-lg-head-name {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: .82rem;
  font-weight: 600;
  color: var(--al2-g700);
}
.al2-porg-lg-head-name i {
  color: var(--al2-g400);
  font-size: .75rem;
}
.al2-porg-lg-info {
  display: flex;
  align-items: center;
  gap: 12px;
  padding-top: 10px;
  border-top: 1px solid var(--al2-g100);
  font-size: .72rem;
  font-weight: 600;
  color: var(--al2-g600);
}
.al2-porg-lg-info i {
  margin-right: 3px;
  color: var(--al2-g400);
  font-size: .68rem;
}
.al2-porg-lg-pop {
  font-family: 'JetBrains Mono', monospace;
}
.al2-porg-lg-term {
  font-family: 'JetBrains Mono', monospace;
  font-size: .68rem;
}


/* ─── 17. 산하기관 카테고리 칩 바 ─── */
.al2-porg-cat-bar {
  display: flex;
  align-items: flex-start;
  gap: 14px;
  padding: 14px 18px;
  margin-bottom: 16px;
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 12px;
}
.al2-porg-cat-label {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: .76rem;
  font-weight: 800;
  color: var(--al2-g700);
  flex-shrink: 0;
  padding-top: 4px;
}
.al2-porg-cat-label i { color: var(--al2-brand); }
.al2-porg-cat-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.al2-porg-cat-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 11px;
  border: 1px solid var(--al2-g200);
  border-radius: 99px;
  background: #fff;
  font-size: .72rem;
  font-weight: 700;
  color: var(--al2-g600);
  cursor: pointer;
  transition: all .12s ease;
  font-family: inherit;
}
.al2-porg-cat-chip:hover {
  border-color: var(--al2-brand);
  color: var(--al2-brand);
}
.al2-porg-cat-chip.active {
  background: var(--al2-brand);
  border-color: var(--al2-brand);
  color: #fff;
}
.al2-porg-cat-chip span {
  display: inline-block;
  min-width: 18px;
  padding: 1px 6px;
  background: var(--al2-g100);
  color: var(--al2-g500);
  border-radius: 99px;
  font-size: .6rem;
  font-weight: 700;
  font-family: 'JetBrains Mono', monospace;
  text-align: center;
}
.al2-porg-cat-chip.active span {
  background: rgba(255, 255, 255, .25);
  color: #fff;
}


/* ─── 18. 산하기관 행 리스트 ─── */
.al2-porg-so-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 20px;
}

.al2-porg-so-row {
  background: #fff;
  border: 1px solid var(--al2-g100);
  border-radius: 10px;
  padding: 14px 18px;
  cursor: pointer;
  transition: all .15s ease;
}
.al2-porg-so-row:hover {
  border-color: var(--al2-brand);
  transform: translateX(2px);
  box-shadow: 0 4px 12px rgba(108, 58, 224, .06);
}

.al2-porg-so-main {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
}
.al2-porg-so-name-group {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
  flex: 1;
}
.al2-porg-so-name {
  margin: 0;
  font-size: .92rem;
  font-weight: 800;
  color: var(--al2-g900);
  line-height: 1.3;
  word-break: keep-all;
}
.al2-porg-so-gov {
  font-size: .7rem;
  font-weight: 600;
  color: var(--al2-g500);
}

.al2-porg-so-badges {
  display: flex;
  flex-direction: column;
  gap: 4px;
  align-items: flex-end;
  flex-shrink: 0;
}
.al2-porg-so-op-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 4px;
  font-size: .62rem;
  font-weight: 800;
  letter-spacing: -0.01em;
  color: #fff;
}
.al2-porg-so-op-badge.so-public      { background: #2563eb; }
.al2-porg-so-op-badge.so-invested    { background: #16a34a; }
.al2-porg-so-op-badge.so-contributed { background: #d97706; }
.al2-porg-so-op-badge.so-other       { background: var(--al2-g500); }

.al2-porg-so-inst-badge {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 4px;
  background: var(--al2-g100);
  color: var(--al2-g700);
  font-size: .62rem;
  font-weight: 700;
}

.al2-porg-so-sub {
  display: flex;
  gap: 16px;
  flex-wrap: wrap;
  font-size: .72rem;
  font-weight: 500;
  color: var(--al2-g600);
}
.al2-porg-so-sub i {
  margin-right: 4px;
  color: var(--al2-g400);
}


/* ─── 반응형 (Step 3) ─── */
@media (max-width: 1100px) {
  .al2-porg-kpi-grid.kpi-4 { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 768px) {
  .al2-porg-cat-bar { flex-direction: column; align-items: flex-start; gap: 10px; }
  .al2-porg-so-main { flex-direction: column; gap: 8px; }
  .al2-porg-so-badges { flex-direction: row; align-items: flex-start; }
  .al2-porg-so-sub { gap: 10px; }
}

/* ═══════════════════════════════════════════════
   Step 4 — 기관 상세 모달 (4탭)
   섹션 19~24
   ═══════════════════════════════════════════════ */

/* ─── 19. 모달 컨테이너 + overlay ─── */
.al2-porg-modal {
  position: fixed;
  top: 0; left: 0;
  width: 100vw; height: 100vh;
  z-index: 999999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  box-sizing: border-box;
  opacity: 0;
  visibility: hidden;
  transition: opacity .2s ease, visibility .2s;
}
.al2-porg-modal.show {
  opacity: 1;
  visibility: visible;
}

.al2-porg-modal-overlay {
  position: absolute;
  top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(15, 23, 42, .55);
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
}

.al2-porg-modal-content {
  position: relative;
  background: #fff;
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, .3);
  max-width: 720px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  transform: translateY(20px) scale(.97);
  transition: transform .25s ease;
}
.al2-porg-modal.show .al2-porg-modal-content {
  transform: translateY(0) scale(1);
}
.al2-porg-modal-content.lg {
  max-width: 580px;
}

/* 닫기 버튼 (좌상단 fixed) */
.al2-porg-modal-close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 36px;
  height: 36px;
  border: none;
  background: var(--al2-g100);
  color: var(--al2-g600);
  border-radius: 50%;
  cursor: pointer;
  font-size: .9rem;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10;
  transition: all .12s ease;
}
.al2-porg-modal-close:hover {
  background: var(--al2-g200);
  color: var(--al2-g900);
  transform: rotate(90deg);
}


/* ─── 20. 모달 헤더 ─── */
.al2-porg-modal-header {
  padding: 24px 28px 16px;
  border-bottom: 1px solid var(--al2-g100);
}

.al2-porg-modal-title-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 12px;
}
.al2-porg-modal-title-row h2 {
  margin: 0;
  font-size: 1.25rem;
  font-weight: 800;
  color: var(--al2-g900);
  line-height: 1.3;
  letter-spacing: -0.01em;
  flex: 1;
  word-break: keep-all;
  padding-right: 36px;
}
.al2-porg-modal-header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.al2-porg-fav-btn.modal {
  width: 36px;
  height: 36px;
  font-size: 1.05rem;
}

.al2-porg-modal-tags {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}

.al2-porg-modal-meta {
  display: flex;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
  font-size: .76rem;
  font-weight: 600;
  color: var(--al2-g600);
}
.al2-porg-modal-meta i {
  margin-right: 4px;
  color: var(--al2-g400);
}
.al2-porg-modal-meta a {
  color: var(--al2-brand);
  text-decoration: none;
}
.al2-porg-modal-meta a:hover { text-decoration: underline; }


/* ─── 21. 모달 탭 네비게이션 ─── */
.al2-porg-modal-tabs {
  display: flex;
  gap: 0;
  padding: 0 28px;
  border-bottom: 1px solid var(--al2-g100);
  background: #fff;
  position: sticky;
  top: 0;
  z-index: 5;
}

.al2-porg-modal-tab {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 14px 16px;
  background: transparent;
  border: none;
  border-bottom: 2px solid transparent;
  font-size: .82rem;
  font-weight: 700;
  color: var(--al2-g500);
  cursor: pointer;
  transition: all .15s ease;
  font-family: inherit;
  margin-bottom: -1px;
  position: relative;
}
.al2-porg-modal-tab:hover {
  color: var(--al2-g800);
}
.al2-porg-modal-tab.active {
  color: var(--al2-brand);
  border-bottom-color: var(--al2-brand);
}
.al2-porg-modal-tab i {
  font-size: .82rem;
}

.al2-porg-memo-dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-left: 4px;
  background: var(--al2-red);
  border-radius: 50%;
  vertical-align: middle;
}


/* ─── 22. 모달 body / 탭 패널 ─── */
.al2-porg-modal-body {
  padding: 24px 28px 28px;
  flex: 1;
}

.al2-porg-tab-panel {
  display: none;
}
.al2-porg-tab-panel.active {
  display: block;
}


/* ─── 23. 영업정보 탭 ─── */
.al2-porg-metric-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin-bottom: 18px;
}
.al2-porg-metric {
  background: var(--al2-g50);
  border: 1px solid var(--al2-g100);
  border-radius: 10px;
  padding: 14px 12px;
  text-align: center;
  text-decoration: none;
  color: inherit;
  transition: all .12s ease;
  display: block;
}
.al2-porg-metric.clickable {
  cursor: pointer;
}
.al2-porg-metric.clickable:hover {
  border-color: var(--al2-brand);
  background: var(--al2-brand-dim);
  transform: translateY(-2px);
}
.al2-porg-metric-icon {
  font-size: 1.1rem;
  color: var(--al2-brand);
  margin-bottom: 6px;
}
.al2-porg-metric-value {
  font-size: 1.15rem;
  font-weight: 800;
  color: var(--al2-g900);
  margin-bottom: 2px;
  font-family: 'JetBrains Mono', monospace;
  letter-spacing: -0.01em;
}
.al2-porg-metric-label {
  font-size: .68rem;
  font-weight: 600;
  color: var(--al2-g500);
}

/* 영업 팁 박스 */
.al2-porg-sales-tip {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 16px;
  margin-bottom: 18px;
  border-radius: 10px;
  border: 1px solid;
}
.al2-porg-sales-tip.warning {
  background: #fff7ed;
  border-color: #fed7aa;
  color: #92400e;
}
.al2-porg-sales-tip.info {
  background: #eff6ff;
  border-color: #bfdbfe;
  color: #1e40af;
}
.al2-porg-sales-tip i {
  font-size: 1.1rem;
  flex-shrink: 0;
  margin-top: 2px;
}
.al2-porg-sales-tip strong {
  display: block;
  font-size: .82rem;
  font-weight: 800;
  margin-bottom: 4px;
}
.al2-porg-sales-tip p {
  margin: 0;
  font-size: .76rem;
  font-weight: 500;
  line-height: 1.55;
}

/* 섹션 타이틀 (모달 내부 공통) */
.al2-porg-section-title {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 0 0 10px;
  font-size: .85rem;
  font-weight: 800;
  color: var(--al2-g800);
}
.al2-porg-section-title i { color: var(--al2-brand); }

/* 빠른 액션 */
.al2-porg-quick-actions {
  margin-bottom: 18px;
}
.al2-porg-action-buttons {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.al2-porg-action-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 9px 14px;
  border-radius: 8px;
  font-size: .78rem;
  font-weight: 700;
  cursor: pointer;
  transition: all .12s ease;
  font-family: inherit;
  border: 1px solid transparent;
  text-decoration: none;
}
.al2-porg-action-btn.primary {
  background: var(--al2-brand);
  color: #fff;
  box-shadow: 0 2px 6px rgba(108, 58, 224, .2);
}
.al2-porg-action-btn.primary:hover {
  background: var(--al2-brand-dark, #5a2cc0);
  transform: translateY(-1px);
}
.al2-porg-action-btn.secondary {
  background: var(--al2-g50);
  color: var(--al2-g700);
  border-color: var(--al2-g200);
}
.al2-porg-action-btn.secondary:hover {
  border-color: var(--al2-brand);
  color: var(--al2-brand);
}

/* 영업 체크리스트 */
.al2-porg-checklist {
  background: var(--al2-g50);
  border: 1px solid var(--al2-g100);
  border-radius: 10px;
  padding: 14px 18px;
}
.al2-porg-checklist ul {
  list-style: none;
  padding: 0;
  margin: 0 0 8px;
}
.al2-porg-checklist li {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 0;
  font-size: .8rem;
  font-weight: 600;
  color: var(--al2-g700);
  cursor: pointer;
  border-bottom: 1px solid var(--al2-g100);
  transition: color .12s ease;
}
.al2-porg-checklist li:last-child { border-bottom: none; }
.al2-porg-checklist li:hover { color: var(--al2-brand); }
.al2-porg-checklist li i {
  font-size: .9rem;
  color: var(--al2-g400);
}
.al2-porg-checklist li.checked {
  color: var(--al2-g400);
  text-decoration: line-through;
}
.al2-porg-checklist li.checked i {
  color: var(--al2-green);
}
.al2-porg-hint {
  margin: 4px 0 0;
  font-size: .68rem;
  color: var(--al2-g400);
  font-weight: 500;
}


/* ─── 24. 기관장 / 기관개요 / 메모 탭 ─── */

/* 기관장 카드 */
.al2-porg-ceo-card {
  background: var(--al2-g50);
  border: 1px solid var(--al2-g100);
  border-radius: 12px;
  padding: 20px;
}
.al2-porg-ceo-main {
  display: flex;
  align-items: center;
  gap: 16px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--al2-g100);
  margin-bottom: 18px;
}
.al2-porg-ceo-avatar {
  width: 64px;
  height: 64px;
  border-radius: 50%;
  background: var(--al2-brand-dim);
  color: var(--al2-brand);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.6rem;
  flex-shrink: 0;
}
.al2-porg-ceo-details h3 {
  margin: 0 0 4px;
  font-size: 1.2rem;
  font-weight: 800;
  color: var(--al2-g900);
}
.al2-porg-ceo-position {
  margin: 0 0 8px;
  font-size: .76rem;
  font-weight: 600;
  color: var(--al2-g500);
}
.al2-porg-ceo-term {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.al2-porg-ceo-term .label {
  font-size: .68rem;
  font-weight: 700;
  color: var(--al2-g500);
}
.al2-porg-ceo-term .dates {
  font-size: .78rem;
  font-weight: 700;
  color: var(--al2-g800);
  font-family: 'JetBrains Mono', monospace;
}

.al2-porg-ceo-career h4 {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 0 0 10px;
  font-size: .82rem;
  font-weight: 800;
  color: var(--al2-g800);
}
.al2-porg-ceo-career h4 i { color: var(--al2-brand); }
.al2-porg-ceo-career p {
  margin: 0;
  font-size: .8rem;
  font-weight: 500;
  color: var(--al2-g700);
  line-height: 1.7;
}
.al2-porg-ceo-empty {
  text-align: center;
  padding: 20px 0;
  font-size: .8rem;
  font-weight: 500;
  color: var(--al2-g400);
}

/* 기관개요 정보 그리드 */
.al2-porg-info-section {
  margin-bottom: 20px;
}
.al2-porg-info-section:last-child { margin-bottom: 0; }

.al2-porg-info-section h4 {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 0 0 12px;
  font-size: .85rem;
  font-weight: 800;
  color: var(--al2-g800);
}
.al2-porg-info-section h4 i { color: var(--al2-brand); }

.al2-porg-info-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  background: var(--al2-g50);
  border: 1px solid var(--al2-g100);
  border-radius: 10px;
  padding: 14px;
}
.al2-porg-info-item {
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.al2-porg-info-item.full {
  grid-column: 1 / -1;
}
.al2-porg-info-item label {
  font-size: .65rem;
  font-weight: 700;
  color: var(--al2-g500);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}
.al2-porg-info-item span {
  font-size: .82rem;
  font-weight: 600;
  color: var(--al2-g800);
}

.al2-porg-info-text {
  margin: 0;
  font-size: .8rem;
  font-weight: 500;
  color: var(--al2-g700);
  line-height: 1.7;
  background: var(--al2-g50);
  border: 1px solid var(--al2-g100);
  border-radius: 10px;
  padding: 14px;
  white-space: normal;
  word-break: keep-all;
}

/* 메모 탭 */
.al2-porg-memo-section h4 {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 0 0 6px;
  font-size: .85rem;
  font-weight: 800;
  color: var(--al2-g800);
}
.al2-porg-memo-section h4 i { color: var(--al2-yellow); }
.al2-porg-memo-desc {
  margin: 0 0 12px;
  font-size: .76rem;
  font-weight: 500;
  color: var(--al2-g500);
  line-height: 1.5;
}
.al2-porg-memo-desc strong {
  color: var(--al2-g700);
  font-weight: 700;
}
.al2-porg-memo-textarea {
  width: 100%;
  padding: 12px 14px;
  border: 1px solid var(--al2-g200);
  border-radius: 10px;
  background: #fff;
  font-size: .82rem;
  font-family: inherit;
  color: var(--al2-g800);
  line-height: 1.6;
  resize: vertical;
  box-sizing: border-box;
}
.al2-porg-memo-textarea:focus {
  outline: none;
  border-color: var(--al2-brand);
  box-shadow: 0 0 0 3px var(--al2-brand-dim);
}
.al2-porg-memo-actions {
  display: flex;
  gap: 8px;
  margin-top: 10px;
}


/* ─── 반응형 (Step 4) ─── */
@media (max-width: 768px) {
  .al2-porg-modal { padding: 12px; }
  .al2-porg-modal-content { max-height: 95vh; }
  .al2-porg-modal-header { padding: 20px 18px 14px; }
  .al2-porg-modal-title-row h2 { font-size: 1.1rem; padding-right: 32px; }
  .al2-porg-modal-tabs { padding: 0 18px; }
  .al2-porg-modal-tab { padding: 12px 10px; font-size: .76rem; }
  .al2-porg-modal-body { padding: 18px; }
  .al2-porg-metric-grid { grid-template-columns: 1fr; gap: 8px; }
  .al2-porg-info-grid { grid-template-columns: 1fr; }
  .al2-porg-action-buttons { flex-direction: column; align-items: stretch; }
  .al2-porg-action-btn { justify-content: center; }
}

/* ════════════════════════════════════════════════
   Sprint PO-Intel/Signal/Compare
   ════════════════════════════════════════════════ */

/* 오늘의 영업 신호 위젯 */
.al2-po-signals{
  margin:16px 0 18px; padding:16px;
  background:linear-gradient(135deg, #fef2f2, #fff);
  border:1px solid #fecaca; border-radius:12px;
}
.po-signals-title{
  font-size:.88rem; font-weight:800; color:#7f1d1d;
  margin-bottom:12px; display:flex; align-items:center; gap:6px;
}
.po-signals-grid{
  display:grid; grid-template-columns:repeat(2, 1fr); gap:10px;
}
@media (min-width: 768px) {
  .po-signals-grid{ grid-template-columns:repeat(4, 1fr); }
}
.po-signal-card{
  padding:12px; background:#fff; border:1px solid var(--al2-g150);
  border-radius:10px; text-align:center; position:relative;
}
.po-signal-card.urgent{ border-left:4px solid #dc2626; }
.po-signal-card.hot{ border-left:4px solid #f59e0b; }
.po-signal-card.newlead{ border-left:4px solid #10b981; }
.po-signal-card.fav{ border-left:4px solid #6c3ae0; }
.po-signal-icon{ font-size:1.1rem; color:var(--al2-g400); margin-bottom:4px; }
.po-signal-card.urgent .po-signal-icon{ color:#dc2626; }
.po-signal-card.hot .po-signal-icon{ color:#f59e0b; }
.po-signal-card.newlead .po-signal-icon{ color:#10b981; }
.po-signal-card.fav .po-signal-icon{ color:#6c3ae0; }
.po-signal-num{
  font-size:1.6rem; font-weight:900; color:var(--al2-g900);
  font-family:'JetBrains Mono', monospace; line-height:1;
}
.po-signal-label{
  font-size:.75rem; font-weight:700; color:var(--al2-g800);
  margin-top:4px;
}
.po-signal-desc{ font-size:.68rem; color:var(--al2-g500); margin-top:2px; }

/* Saved Views bar */
.al2-po-views{
  display:flex; flex-wrap:wrap; align-items:center; gap:6px;
  padding:10px 12px; margin-bottom:14px;
  background:#f9fafb; border:1px solid var(--al2-g150); border-radius:8px;
}
.al2-po-views .label{ font-size:11px; color:var(--al2-g500); font-weight:700; margin-right:4px; }
.po-view-empty{ font-size:11px; color:var(--al2-g400); font-style:italic; }
.po-view-chip{
  display:inline-flex; align-items:center; gap:6px; padding:4px 8px 4px 10px;
  background:#ede9fe; color:#6c3ae0; border:1px solid #ddd6fe;
  border-radius:6px; font-size:12px; font-weight:600; cursor:pointer;
}
.po-view-chip:hover{ background:#6c3ae0; color:#fff; border-color:#6c3ae0; }
.po-view-chip .del{ font-size:10px; opacity:.6; padding:0 4px; cursor:pointer; }
.po-view-chip .del:hover{ opacity:1; color:#dc2626; }
.po-view-save{
  display:inline-flex; align-items:center; gap:4px; padding:4px 10px;
  background:#fff; border:1px solid var(--al2-g200); border-radius:6px;
  font-size:12px; color:var(--al2-g600); cursor:pointer; margin-left:auto;
}
.po-view-save:hover{ border-color:#6c3ae0; color:#6c3ae0; }

/* 카드 선택 체크박스 */
.al2-po-card-select{
  position:absolute; top:10px; left:10px; z-index:2;
  width:22px; height:22px;
  display:flex; align-items:center; justify-content:center;
  cursor:pointer;
}
.al2-po-card-select input[type="checkbox"]{
  width:16px; height:16px; cursor:pointer; accent-color:#6c3ae0;
}
.al2-porg-card{ position:relative; padding-left:6px; }
.al2-porg-card.selected{
  box-shadow:0 0 0 2px #6c3ae0, 0 4px 12px rgba(108,58,224,.15);
}

/* 카드 인텔 뱃지 */
.al2-po-intel-badges{
  display:flex; flex-wrap:wrap; gap:4px; margin-bottom:10px;
}
.po-ib{
  display:inline-flex; align-items:center; gap:4px;
  padding:3px 8px; border-radius:999px; font-size:10px; font-weight:700;
}
.po-ib i{ font-size:9px; }
.po-ib.stats{ background:#ddd6fe; color:#5b21b6; }
.po-ib.muted{ background:var(--al2-g100); color:var(--al2-g400); }
.po-ib.active{ background:#fee2e2; color:#b91c1c; }
.po-ib.my{ background:#fef3c7; color:#92400e; }

/* 플로팅 비교 버튼 */
.al2-po-compare-float{
  position:fixed; bottom:24px; left:50%; transform:translateX(-50%) translateY(120%);
  z-index:100; display:flex; align-items:center; gap:10px;
  padding:10px 14px; background:#1f2937; color:#fff;
  border-radius:999px; box-shadow:0 8px 24px rgba(0,0,0,.24);
  transition:transform .2s ease;
}
.al2-po-compare-float.on{ transform:translateX(-50%) translateY(0); }
.po-compare-text{ font-size:13px; font-weight:600; }
.po-compare-btn{
  padding:6px 14px; background:#6c3ae0; color:#fff; border:0;
  border-radius:999px; font-size:13px; font-weight:700; cursor:pointer;
}
.po-compare-btn:hover:not(:disabled){ background:#5b2db5; }
.po-compare-btn:disabled{ background:rgba(255,255,255,.2); cursor:not-allowed; color:#9ca3af; }
.po-compare-clear{
  width:24px; height:24px; border:0; background:rgba(255,255,255,.1);
  color:#fff; border-radius:50%; cursor:pointer; font-size:12px;
}
.po-compare-clear:hover{ background:rgba(255,255,255,.2); }

/* 비교 모달 테이블 */
.al2-po-compare-table{
  width:100%; border-collapse:collapse; font-size:13px;
}
.al2-po-compare-table th, .al2-po-compare-table td{
  padding:10px 12px; border:1px solid var(--al2-g150); text-align:left;
}
.al2-po-compare-table thead th{
  background:#f5f3ff; color:#5b21b6; font-weight:800; font-size:13px;
  position:sticky; top:0;
}
.al2-po-compare-table tbody th{
  background:#fafafb; color:var(--al2-g600); font-weight:700;
  width:120px; font-size:12px;
}
.al2-po-compare-table tbody td{
  color:var(--al2-g800); font-weight:500;
}

/* ════════════════════════════════════════════════
   Sprint PO-View — 카드 / 리스트 뷰 토글
   ════════════════════════════════════════════════ */
.al2-porg-result-info{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  flex-wrap:wrap;
}
.al2-po-view-toggle{
  display:inline-flex; border:1px solid var(--al2-g200);
  border-radius:6px; overflow:hidden; background:#fff;
}
.al2-po-view-btn{
  display:inline-flex; align-items:center; gap:6px;
  padding:7px 14px; font-size:.78rem; font-weight:700;
  background:none; border:0; color:var(--al2-g500);
  cursor:pointer; transition:all .15s;
}
.al2-po-view-btn + .al2-po-view-btn{ border-left:1px solid var(--al2-g200); }
.al2-po-view-btn:hover{ color:#6c3ae0; }
.al2-po-view-btn.on{ background:#6c3ae0; color:#fff; }
.al2-po-view-btn i{ font-size:.75rem; }
@media (max-width: 540px) {
  .al2-po-view-btn span{ display:none; }
  .al2-po-view-btn{ padding:7px 10px; }
}

/* 리스트 뷰 테이블 */
.al2-po-list-view{ margin-top:12px; overflow-x:auto; }
.al2-po-list-table{
  width:100%; border-collapse:collapse; font-size:13px;
  background:#fff; border:1px solid var(--al2-g150); border-radius:8px;
  overflow:hidden;
}
.al2-po-list-table thead th{
  padding:10px 12px; background:#f9fafb; color:var(--al2-g700);
  font-weight:700; font-size:12px; text-align:left;
  border-bottom:1px solid var(--al2-g150);
  white-space:nowrap;
}
.al2-po-list-table tbody td{
  padding:10px 12px; border-bottom:1px solid var(--al2-g100);
  color:var(--al2-g800); vertical-align:middle;
}
.al2-po-list-table tbody tr:hover{ background:#faf5ff; }
.al2-po-list-table tbody tr.selected{ background:#ede9fe; }
.al2-po-list-table tbody tr.selected:hover{ background:#ddd6fe; }
.al2-po-list-table .col-chk{ width:28px; }
.al2-po-list-table .col-fav{ width:34px; text-align:center; }
.al2-po-list-table .col-name{ min-width:200px; }
.al2-po-list-table .col-name strong{ color:var(--al2-g900); font-weight:700; }
.al2-po-list-table .col-type,
.al2-po-list-table .col-ministry,
.al2-po-list-table .col-city,
.al2-po-list-table .col-ceo{
  font-size:12px; color:var(--al2-g600);
  max-width:140px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.al2-po-list-table .col-emp{
  font-family:'JetBrains Mono', monospace; font-weight:700;
  text-align:right; width:72px;
}
.al2-po-list-table .col-term{ white-space:nowrap; }
.al2-po-list-table .col-intel{ min-width:160px; }
.al2-po-list-table .col-intel .po-ib{ margin-right:2px; }
.al2-po-list-table .col-action{ width:76px; white-space:nowrap; }
.al2-po-list-btn{
  width:28px; height:28px; border:1px solid var(--al2-g200);
  background:#fff; border-radius:6px; color:var(--al2-g600);
  cursor:pointer; font-size:11px; margin-right:2px;
}
.al2-po-list-btn:hover{ border-color:#6c3ae0; color:#6c3ae0; }
.al2-porg-fav-btn.sm{
  width:26px; height:26px; padding:0; border-radius:50%;
  border:1px solid var(--al2-g200); background:#fff;
  color:var(--al2-g400); cursor:pointer;
}
.al2-porg-fav-btn.sm.active{ background:#fef3c7; border-color:#fbbf24; color:#b45309; }
