/* ============================================================
   BizPoint Design System — Refactored
   수정 내역:
   1. body.bp-platform / .bp-footer 중복 선언 → 1회 통합
   2. .bp-table 이중 정의 → 페이지 스코프 분리
   3. !important 남용 제거 (flex/grid 구조로 해결)
   4. display:flex + grid-template-columns 충돌 수정
   5. [class*="card"] 와일드카드 → 명시적 클래스로 교체
   6. :has() 폴백 추가
   ============================================================ */

/* ============================================================
   1. CSS 변수 (Design Token)
   ============================================================ */
:root {
  --bp-bg: #f4f7ff;
  --bp-bg-soft: #edf2ff;
  --bp-surface: rgba(255,255,255,.92);
  --bp-surface-strong: #ffffff;
  --bp-border: rgba(91,73,246,.14);
  --bp-text: #17213a;
  --bp-muted: #6f7891;
  --bp-primary: #5a49f6;
  --bp-primary-2: #7b3ff2;
  --bp-accent: #8e58ff;
  --bp-danger: #ef4f5f;
  --bp-warning: #f2a51f;
  --bp-success: #17a46f;
  --bp-info: #2f80ed;
  --bp-shadow: 0 18px 48px rgba(63,54,135,.12);
  --bp-shadow-sm: 0 10px 28px rgba(63,54,135,.08);
  --bp-radius-sm: 14px;
  --bp-radius-md: 20px;
  --bp-radius-lg: 30px;
  --bp-container: 1240px;
}

/* ============================================================
   2. Reset / Base
   ============================================================ */
*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  min-height: 100%;
  margin: 0;
  padding: 0;
}

/* ============================================================
   3. body.bp-platform — 단일 선언 (중복 제거)
   ============================================================ */
body.bp-platform {
  min-height: 100vh;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  color: var(--bp-text);
  font-family: "Pretendard", "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", system-ui, sans-serif;
  letter-spacing: -0.02em;
  background:
    radial-gradient(circle at 12% 6%, rgba(142,88,255,.13), transparent 24%),
    radial-gradient(circle at 88% 12%, rgba(90,73,246,.12), transparent 26%),
    linear-gradient(180deg, #f9fbff, var(--bp-bg-soft));
}

.bp-platform a {
  text-decoration: none;
}

/* ============================================================
   4. Layout Shell — flex 구조로 footer 하단 고정
   ============================================================ */
body.bp-platform > main.bp-shell,
body.bp-platform > .bp-shell {
  flex: 1 0 auto;
  width: 100%;
}

/* ============================================================
   5. Container
   ============================================================ */
.bp-container {
  width: min(100% - 48px, var(--bp-container));
  margin: 0 auto;
}

/* ============================================================
   6. Header
   ============================================================ */
.bp-site-header {
  flex: 0 0 auto;
  position: sticky;
  top: 0;
  z-index: 1000;
  background: rgba(255,255,255,.78);
  border-bottom: 1px solid rgba(91,73,246,.10);
  backdrop-filter: blur(14px);
}

.bp-site-header .bp-container {
  max-width: var(--bp-container);
}

.bp-header-inner {
  min-height: 68px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.bp-brand {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: #263276;
  font-size: 1.24rem;
  font-weight: 900;
}

.bp-brand-mark {
  width: 11px;
  height: 11px;
  border-radius: 999px;
  background: linear-gradient(135deg, var(--bp-primary), var(--bp-accent));
  box-shadow: 0 0 0 6px rgba(91,73,246,.10);
}

.bp-nav {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  min-height: 44px;
}

.bp-nav .bp-btn {
  white-space: nowrap;
}

/* ============================================================
   7. Footer — 단일 선언, !important 없이 flex 구조로 처리
   ============================================================ */
.bp-footer,
body.bp-platform > footer.bp-footer {
  flex: 0 0 auto;
  width: 100%;
  margin-top: 56px;
  padding: 22px 0;
  border-top: 1px solid rgba(91,73,246,.10);
  background: rgba(255,255,255,.72);
  color: #7b849d;
  text-align: center;
  font-size: .92rem;
}

.bp-footer .bp-container {
  width: min(100% - 48px, var(--bp-container));
  max-width: var(--bp-container);
  margin-left: auto;
  margin-right: auto;
}

.bp-footer a {
  color: var(--bp-primary);
  font-weight: 850;
}

/* ============================================================
   8. Shell padding
   ============================================================ */
.bp-shell {
  width: 100%;
  padding: 28px 0 44px;
}

/* ============================================================
   9. Buttons
   ============================================================ */
.bp-btn,
.btn.bp-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 10px 16px;
  border-radius: 13px;
  border: 1px solid rgba(91,73,246,.14);
  background: rgba(255,255,255,.86);
  color: var(--bp-text);
  font-weight: 800;
  line-height: 1;
  transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
}

.bp-btn:hover,
.btn.bp-btn:hover {
  transform: translateY(-1px);
}

.bp-btn-primary,
.btn.bp-btn-primary {
  border: 0;
  color: #fff;
  background: linear-gradient(135deg, var(--bp-primary), var(--bp-primary-2));
  box-shadow: 0 5px 5px rgba(91,73,246,.24);
}

.bp-btn-danger {
  border: 0;
  color: #fff;
  background: linear-gradient(135deg, #ef5b5b, #d9374b);
}

/* ============================================================
   10. Hero
   ============================================================ */
.bp-hero-band {
  display: grid;
  grid-template-columns: 1.08fr .92fr;
  gap: 24px;
  align-items: center;
  padding: 30px;
  border-radius: 32px;
  border: 1px solid var(--bp-border);
  background: linear-gradient(180deg, rgba(255,255,255,.94), rgba(255,255,255,.78));
  box-shadow: var(--bp-shadow-sm);
  backdrop-filter: blur(10px);
}

.bp-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 14px;
  padding: 8px 14px;
  border-radius: 999px;
  color: var(--bp-primary);
  font-size: .92rem;
  font-weight: 900;
  background: rgba(91,73,246,.10);
  border: 1px solid rgba(91,73,246,.14);
}

.bp-hero-title {
  margin: 0;
  font-size: clamp(2rem, 4vw, 3.35rem);
  line-height: 1.17;
  font-weight: 950;
}

.bp-gradient {
  background: linear-gradient(135deg, var(--bp-primary), var(--bp-accent));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

.bp-hero-desc {
  margin: 0 0 16px;
  color: var(--bp-muted);
  font-size: 1rem;
  line-height: 1.85;
}

.bp-chip-row {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.bp-chip {
  display: inline-flex;
  align-items: center;
  padding: 9px 12px;
  border-radius: 999px;
  color: #53607e;
  background: rgba(255,255,255,.86);
  border: 1px solid rgba(91,73,246,.12);
  font-size: .92rem;
  font-weight: 800;
}

/* ============================================================
   11. Grid System
   ============================================================ */
.bp-grid-main {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 24px;
  align-items: stretch;
  margin-top: 24px;
}

.bp-grid-2 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 20px;
}

.bp-grid-3 {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 18px;
}

.bp-grid-4 {
  display: grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: 16px;
}

/* ============================================================
   12. Card
   ============================================================ */
.bp-card {
  height: 100%;
  border-radius: var(--bp-radius-lg);
  border: 1px solid var(--bp-border);
  background: var(--bp-surface);
  box-shadow: var(--bp-shadow-sm);
  overflow: hidden;
}

.bp-card-header {
  padding: 18px 20px;
  border-bottom: 1px solid rgba(91,73,246,.08);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
}

.bp-card-title {
  margin: 0;
  color: #2f3a74;
  font-size: 1.08rem;
  font-weight: 950;
}

.bp-card-body {
  padding: 20px;
}

/* ============================================================
   13. Section / Typography
   ============================================================ */
.bp-section {
  margin-top: 28px;
}

.bp-section-title {
  margin: 0 0 16px;
  font-size: 1.35rem;
  font-weight: 950;
}

.bp-muted {
  color: var(--bp-muted);
}

.bp-page-title {
  margin: 0 0 18px;
  font-size: clamp(1.8rem, 3vw, 2.5rem);
  font-weight: 950;
}

.bp-page-desc {
  margin: -6px 0 24px;
  color: var(--bp-muted);
  line-height: 1.8;
}

/* ============================================================
   14. Form
   ============================================================ */
.bp-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 14px;
}

.bp-span-2 {
  grid-column: span 2;
}

.bp-label,
.bp-platform label {
  display: block;
  margin-bottom: 8px;
  color: #4e5a80;
  font-size: .92rem;
  font-weight: 850;
}

.bp-platform input,
.bp-platform select,
.bp-platform textarea,
.bp-input {
  width: 100%;
  min-height: 50px;
  padding: 11px 14px;
  border-radius: var(--bp-radius-sm);
  border: 1px solid rgba(91,73,246,.16);
  color: var(--bp-text);
  background: rgba(255,255,255,.88);
  outline: none;
  box-shadow: none;
}

.bp-platform input::placeholder,
.bp-platform textarea::placeholder {
  color: #9ca5ba;
}

.bp-platform input:focus,
.bp-platform select:focus,
.bp-platform textarea:focus,
.bp-input:focus {
  border-color: rgba(91,73,246,.38);
  box-shadow: 0 0 0 4px rgba(91,73,246,.10);
}

.bp-form-note {
  margin-top: 12px;
  color: #7c86a0;
  font-size: .9rem;
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
}

/* ============================================================
   15. Preview Card
   ============================================================ */
.bp-preview-card {
  overflow: hidden;
}

.bp-preview-head {
  padding: 22px 24px 18px;
  color: #fff;
  background: linear-gradient(135deg, #5a3df6, #8440f1);
}

.bp-score-row {
  display: flex;
  align-items: flex-end;
  gap: 14px;
  margin-top: 10px;
}

.bp-score-num {
  font-size: clamp(3rem, 7vw, 4.4rem);
  line-height: .95;
  font-weight: 950;
}

.bp-grade {
  display: inline-flex;
  align-items: center;
  padding: 5px 11px;
  border-radius: 999px;
  font-weight: 950;
  background: rgba(255,255,255,.15);
  border: 1px solid rgba(255,255,255,.24);
}

.bp-preview-body {
  padding: 20px;
  background: rgba(255,255,255,.78);
}

.bp-metric {
  display: grid;
  grid-template-columns: 54px 1fr 40px;
  gap: 10px;
  align-items: center;
  margin-bottom: 12px;
  font-size: .94rem;
}

.bp-progress {
  position: relative;
  height: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: rgba(91,73,246,.14);
}

.bp-progress span {
  position: absolute;
  inset: 0 auto 0 0;
  width: var(--value, 0%);
  border-radius: inherit;
  background: linear-gradient(90deg, var(--bp-primary), var(--bp-accent));
}

.bp-progress.danger span {
  background: linear-gradient(90deg, #ff7966, var(--bp-danger));
}

.bp-progress.warning span {
  background: linear-gradient(90deg, #f6b43d, var(--bp-warning));
}

.bp-preview-foot {
  display: grid;
  grid-template-columns: repeat(3, minmax(0,1fr));
  gap: 12px;
  padding: 14px 18px;
  background: rgba(255,255,255,.88);
  border-top: 1px solid rgba(91,73,246,.08);
}

.bp-stat {
  text-align: center;
}

.bp-stat strong {
  display: block;
  margin-bottom: 4px;
  color: var(--bp-primary);
}

.bp-stat span {
  color: var(--bp-muted);
  font-size: .9rem;
}

/* ============================================================
   16. Feature
   ============================================================ */
.bp-feature {
  padding: 26px 22px;
  text-align: center;
}

.bp-feature-icon {
  width: 58px;
  height: 58px;
  margin: 0 auto 16px;
  display: grid;
  place-items: center;
  border-radius: 18px;
  color: var(--bp-primary);
  font-size: 1.35rem;
  font-weight: 950;
  background: linear-gradient(135deg, rgba(91,73,246,.14), rgba(142,88,255,.16));
}

.bp-feature h3,
.bp-feature h4 {
  margin: 0 0 10px;
  font-size: 1.08rem;
  font-weight: 950;
}

.bp-feature p {
  margin: 0;
  color: var(--bp-muted);
  line-height: 1.7;
}

/* ============================================================
   17. KPI
   ============================================================ */
.bp-kpi {
  padding: 22px 20px;
}

.bp-kpi small {
  display: block;
  margin-bottom: 8px;
  color: var(--bp-muted);
  font-weight: 800;
}

.bp-kpi strong {
  display: block;
  font-size: 1.8rem;
  font-weight: 950;
}

.bp-kpi span {
  color: var(--bp-muted);
}

/* ============================================================
   18. Table — 전역 기본 (collapse)
   ============================================================ */
.bp-table-wrap {
  overflow: auto;
  border-radius: 20px;
  border: 1px solid var(--bp-border);
  background: var(--bp-surface);
  box-shadow: var(--bp-shadow-sm);
}

.bp-table {
  width: 100%;
  min-width: 760px;
  border-collapse: collapse;
}

.bp-table th,
.bp-table td {
  padding: 14px 16px;
  border-bottom: 1px solid rgba(91,73,246,.08);
  text-align: left;
  vertical-align: middle;
}

.bp-table th {
  color: #46527c;
  background: rgba(91,73,246,.07);
  font-size: .92rem;
  font-weight: 950;
}

.bp-table td {
  color: #28344f;
  background: rgba(255,255,255,.72);
}

/* ============================================================
   18-B. Table — 진단결과 페이지 전용 스코프 (separate)
   ============================================================ */
body[data-bp-diagnosis-result-v2] .bp-table-wrap {
  overflow-x: auto;
}

body[data-bp-diagnosis-result-v2] .bp-table {
  border-collapse: separate;
  border-spacing: 0 10px;
  min-width: 0;
}

body[data-bp-diagnosis-result-v2] .bp-table th {
  padding: 0 14px 8px;
  text-align: left;
  color: #6b7692;
  font-size: .9rem;
  font-weight: 950;
  white-space: nowrap;
  background: transparent;
  border: 0;
}

body[data-bp-diagnosis-result-v2] .bp-table td {
  padding: 16px 14px;
  background: #fff;
  border-top: 1px solid rgba(91,73,246,.10);
  border-bottom: 1px solid rgba(91,73,246,.10);
  color: #263149;
  font-weight: 700;
  vertical-align: middle;
}

body[data-bp-diagnosis-result-v2] .bp-table td:first-child {
  border-left: 1px solid rgba(91,73,246,.10);
  border-radius: 16px 0 0 16px;
}

body[data-bp-diagnosis-result-v2] .bp-table td:last-child {
  border-right: 1px solid rgba(91,73,246,.10);
  border-radius: 0 16px 16px 0;
}

/* ============================================================
   19. Badge
   ============================================================ */
.bp-badge {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 5px 10px;
  border-radius: 999px;
  color: #4b56a8;
  background: rgba(91,73,246,.10);
  font-size: .82rem;
  font-weight: 900;
}

.bp-badge.success {
  color: #0d7853;
  background: rgba(23,164,111,.12);
}

.bp-badge.warning {
  color: #9a6400;
  background: rgba(242,165,31,.16);
}

.bp-badge.danger {
  color: #b82e42;
  background: rgba(239,79,95,.12);
}

/* ============================================================
   20. Admin Layout / Sidebar
   ============================================================ */
.bp-admin-layout {
  display: grid;
  grid-template-columns: 250px 1fr;
  gap: 22px;
  align-items: start;
  min-height: calc(100vh - 180px);
}

.bp-sidebar {
  position: sticky;
  top: 88px;
  padding: 16px;
  border-radius: 24px;
  border: 1px solid var(--bp-border);
  background: var(--bp-surface);
  box-shadow: var(--bp-shadow-sm);
}

.bp-sidebar a {
  display: flex;
  align-items: center;
  min-height: 42px;
  padding: 10px 12px;
  border-radius: 12px;
  color: #3f4a70;
  font-weight: 850;
}

.bp-sidebar a.active,
.bp-sidebar a:hover {
  color: var(--bp-primary);
  background: rgba(91,73,246,.09);
}

/* ============================================================
   21. Result Score
   ============================================================ */
.bp-result-score {
  display: grid;
  grid-template-columns: minmax(220px, 320px) 1fr;
  gap: 24px;
  align-items: stretch;
}

.bp-big-score {
  min-height: 210px;
  border-radius: 28px;
  padding: 28px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  background:
    radial-gradient(circle at 30% 20%, rgba(255,255,255,.30), transparent 28%),
    linear-gradient(135deg, #5b49f6, #00b894);
  color: #fff;
  box-shadow: 0 5px 5px rgba(91,73,246,.22);
}

.bp-big-score span {
  font-weight: 850;
  opacity: .92;
}

.bp-big-score strong {
  display: block;
  margin: 8px 0;
  font-size: clamp(3.2rem, 8vw, 5.4rem);
  line-height: .95;
  letter-spacing: -.08em;
}

.bp-callout {
  padding: 18px 20px;
  border-radius: 20px;
  border: 1px solid rgba(91,73,246,.14);
  background: rgba(255,255,255,.76);
}

.bp-callout.warning {
  border-color: rgba(242,165,31,.28);
  background: rgba(255,247,229,.82);
}

.bp-result-empty {
  padding: 30px;
  border-radius: 24px;
  background: rgba(91,73,246,.06);
  border: 1px solid rgba(91,73,246,.12);
  color: #5c6680;
  font-weight: 750;
  line-height: 1.7;
}

/* ============================================================
   22. Map
   ============================================================ */
.bp-address-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 10px;
}

.bp-address-row .bp-btn {
  min-width: 108px;
}

.bp-map-card .bp-card-body {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.bp-map {
  width: 100%;
  min-height: 448px;
  height: 52vh;
  max-height: 620px;
  border-radius: 22px;
  overflow: hidden;
  border: 1px solid rgba(91,73,246,.14);
  background: #e8edf7;
}

.bp-map-help {
  color: var(--bp-muted);
  font-size: .94rem;
  line-height: 1.6;
}

/* .bp-map-coords: CSS로 숨기지 말고 필요 없으면 HTML에서 제거할 것
   JS에서 좌표를 읽는 코드가 있다면 visibility:hidden 대신
   data 속성으로 관리하는 것을 권장 */
.bp-map-coords {
  display: none;
}

/* ============================================================
   23. Auth Guard / Overlay
   ============================================================ */
.bp-auth-guard-pending main.bp-shell {
  visibility: hidden;
}

.bp-auth-required-overlay {
  position: fixed;
  inset: 0;
  z-index: 10000;
  display: grid;
  place-items: center;
  padding: 24px;
  background: rgba(14,20,41,.52);
  backdrop-filter: blur(10px);
}

.bp-auth-required-card {
  width: min(100%, 440px);
  border-radius: 28px;
  padding: 30px;
  background: rgba(255,255,255,.96);
  box-shadow: 0 5px 5px rgba(21,28,52,.24);
  border: 1px solid rgba(91,73,246,.16);
  text-align: center;
}

.bp-auth-required-card h2 {
  margin: 0 0 12px;
  font-size: 1.45rem;
  letter-spacing: -.04em;
  color: #18213a;
}

.bp-auth-required-card p {
  margin: 0;
  color: #66708b;
  line-height: 1.7;
  font-weight: 600;
}

.bp-auth-required-card .bp-btn {
  margin-top: 22px;
  width: 100%;
  justify-content: center;
}

.bp-input-invalid,
input.bp-input-invalid,
select.bp-input-invalid,
textarea.bp-input-invalid {
  border-color: #ef4f5f;
  box-shadow: 0 0 0 4px rgba(239,79,95,.12);
}

.bp-address-row.bp-input-invalid {
  border-radius: 18px;
  box-shadow: 0 0 0 4px rgba(239,79,95,.12);
}

/* ============================================================
   24. Diagnosis Loading Progress
   ============================================================ */
.bp-diagnosis-loading-overlay {
  position: fixed;
  inset: 0;
  z-index: 11000;
  display: grid;
  place-items: center;
  padding: 24px;
  background:
    radial-gradient(circle at 20% 20%, rgba(91,73,246,.20), transparent 28%),
    radial-gradient(circle at 80% 80%, rgba(0,184,148,.16), transparent 30%),
    rgba(12,18,36,.68);
  backdrop-filter: blur(14px);
}

.bp-diagnosis-loading-card {
  width: min(100%, 560px);
  border-radius: 30px;
  padding: 32px;
  background: rgba(255,255,255,.97);
  border: 1px solid rgba(91,73,246,.18);
  box-shadow: 0 5px 5px rgba(13,20,42,.28);
}

.bp-diagnosis-loading-top {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 20px;
}

.bp-diagnosis-spinner {
  width: 48px;
  height: 48px;
  border-radius: 999px;
  border: 4px solid rgba(91,73,246,.14);
  border-top-color: #5b49f6;
  animation: bpDiagnosisSpin .86s linear infinite;
  flex: 0 0 auto;
}

@keyframes bpDiagnosisSpin {
  to { transform: rotate(360deg); }
}

.bp-diagnosis-loading-title {
  margin: 0;
  font-size: 1.35rem;
  letter-spacing: -.04em;
  color: #17203a;
}

.bp-diagnosis-loading-desc {
  margin: 6px 0 0;
  color: #687390;
  line-height: 1.6;
  font-weight: 650;
}

.bp-diagnosis-progress-track {
  width: 100%;
  height: 12px;
  border-radius: 999px;
  background: rgba(91,73,246,.10);
  overflow: hidden;
  margin: 18px 0 22px;
}

.bp-diagnosis-progress-bar {
  width: 12%;
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #5b49f6, #00b894);
  transition: width .38s ease;
}

.bp-diagnosis-steps {
  display: grid;
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.bp-diagnosis-step {
  display: flex;
  align-items: center;
  gap: 10px;
  color: #7a849f;
  font-weight: 750;
  font-size: .95rem;
}

.bp-diagnosis-step-dot {
  width: 22px;
  height: 22px;
  border-radius: 999px;
  display: inline-grid;
  place-items: center;
  flex: 0 0 auto;
  background: rgba(91,73,246,.10);
  color: #5b49f6;
  font-size: .78rem;
  font-weight: 900;
}

.bp-diagnosis-step.is-active {
  color: #17203a;
}

.bp-diagnosis-step.is-active .bp-diagnosis-step-dot {
  background: #5b49f6;
  color: #fff;
  box-shadow: 0 5px 5px rgba(91,73,246,.25);
}

.bp-diagnosis-step.is-done {
  color: #2f3a56;
}

.bp-diagnosis-step.is-done .bp-diagnosis-step-dot {
  background: rgba(0,184,148,.14);
  color: #00a884;
}

.bp-diagnosis-loading-note {
  margin: 18px 0 0;
  padding: 12px 14px;
  border-radius: 16px;
  background: rgba(91,73,246,.07);
  color: #5c6680;
  font-size: .9rem;
  line-height: 1.55;
  font-weight: 650;
}

/* ============================================================
   25. Center Search Toast
   ============================================================ */
.bp-center-search-toast {
  position: fixed;
  left: 50%;
  top: 50%;
  z-index: 12000;
  transform: translate(-50%, -50%);
  width: min(92vw, 460px);
  padding: 20px 22px;
  border-radius: 22px;
  background: rgba(239,79,95,.97);
  color: #fff;
  text-align: center;
  box-shadow: 0 5px 5px rgba(239,79,95,.32);
  opacity: 0;
  animation: bpCenterSearchToastIn .2s ease forwards;
}

.bp-center-search-toast__title {
  display: block;
  font-size: 1.05rem;
  font-weight: 950;
  letter-spacing: -.03em;
  line-height: 1.35;
}

.bp-center-search-toast__desc {
  display: block;
  margin-top: 7px;
  font-size: .93rem;
  font-weight: 800;
  line-height: 1.45;
  opacity: .96;
}

.bp-center-search-toast__hint {
  display: block;
  margin-top: 6px;
  font-size: .86rem;
  font-weight: 700;
  line-height: 1.45;
  opacity: .88;
}

@keyframes bpCenterSearchToastIn {
  from {
    opacity: 0;
    transform: translate(-50%, -46%);
  }
  to {
    opacity: 1;
    transform: translate(-50%, -50%);
  }
}

.bp-center-search-toast.is-hide {
  opacity: 0;
  transform: translate(-50%, -54%);
  transition: all .22s ease;
}

/* ============================================================
   26. Diagnosis Entry Card (index 링크 카드)
   ============================================================ */
.bp-diagnosis-entry-card {
  cursor: pointer;
  position: relative;
  transition:
    transform .18s ease,
    box-shadow .18s ease,
    border-color .18s ease;
}

.bp-diagnosis-entry-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 5px 5px rgba(91,73,246,.18);
  border-color: rgba(91,73,246,.26);
}

.bp-diagnosis-entry-card:focus-visible {
  outline: 4px solid rgba(91,73,246,.24);
  outline-offset: 4px;
}

.bp-diagnosis-entry-card .bp-btn-primary,
.bp-diagnosis-entry-card input,
.bp-diagnosis-entry-card select {
  pointer-events: none;
}

/* ============================================================
   27. Diagnosis Result — 공통 UI
   ============================================================ */
.bp-result-title-row {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 18px;
  flex-wrap: wrap;
  margin-bottom: 24px;
}

.bp-result-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

/* ============================================================
   28. Index 페이지 hover — 와일드카드 제거, 명시적 클래스만
   ============================================================ */
body.bp-index .bp-card,
body.bp-index .bp-feature,
body.bp-index .bp-kpi,
body.bp-index .bp-preview-card,
body.bp-index .bp-callout {
  overflow: hidden;
  transition: transform 0.24s ease, box-shadow 0.24s ease;
  will-change: transform;
}

body.bp-index .bp-card:hover,
body.bp-index .bp-feature:hover,
body.bp-index .bp-kpi:hover,
body.bp-index .bp-preview-card:hover,
body.bp-index .bp-callout:hover {
  transform: translateY(-2px);
  box-shadow: 0 5px 5px rgba(29,39,86,.08);
}

body.bp-index .bp-card img,
body.bp-index .bp-feature img,
body.bp-index .bp-preview-card img {
  transition: transform 0.28s ease;
  transform-origin: center center;
}

body.bp-index .bp-card:hover img,
body.bp-index .bp-feature:hover img,
body.bp-index .bp-preview-card:hover img {
  transform: scale(1.03);
}

/* ============================================================
   29. Diagnosis My List
   ============================================================ */
body.bp-diagnosis-my .bp-shell {
  padding-top: 36px;
}

body.bp-diagnosis-my .bp-container {
  max-width: 1120px;
}

body.bp-diagnosis-my h1 {
  margin-bottom: 8px;
  letter-spacing: -0.055em;
}

body.bp-diagnosis-my .bp-container > p {
  margin-bottom: 28px;
  color: #7b8498;
}

body.bp-diagnosis-my table {
  width: 100%;
  border-collapse: separate;
  border-spacing: 0 8px;
  background: transparent;
  font-size: 14px;
}

body.bp-diagnosis-my thead th {
  padding: 0 16px 10px;
  background: transparent;
  border: 0;
  color: #7a8498;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: -0.02em;
  white-space: nowrap;
}

body.bp-diagnosis-my tbody tr {
  background: rgba(255,255,255,.96);
  box-shadow: 0 5px 5px rgba(25,32,70,.045);
  transition: transform 0.18s ease, box-shadow 0.18s ease, background-color 0.18s ease;
}

body.bp-diagnosis-my tbody tr:hover {
  transform: translateY(-1px);
  background: #ffffff;
  box-shadow: 0 5px 5px rgba(25,32,70,.075);
}

body.bp-diagnosis-my tbody td {
  padding: 16px;
  border-top: 1px solid rgba(109,95,245,.08);
  border-bottom: 1px solid rgba(109,95,245,.08);
  color: #17213a;
  font-size: 14px;
  font-weight: 700;
  vertical-align: middle;
  white-space: nowrap;
}

body.bp-diagnosis-my tbody td:first-child {
  border-left: 1px solid rgba(109,95,245,.08);
  border-radius: 16px 0 0 16px;
  color: #334155;
  font-weight: 900;
  text-align: center;
}

body.bp-diagnosis-my tbody td:last-child {
  border-right: 1px solid rgba(109,95,245,.08);
  border-radius: 0 16px 16px 0;
  text-align: center;
}

body.bp-diagnosis-my tbody td:nth-child(2) {
  max-width: 420px;
  overflow: hidden;
  text-overflow: ellipsis;
  color: #111827;
  font-weight: 900;
}

body.bp-diagnosis-my tbody td:nth-child(3),
body.bp-diagnosis-my tbody td:nth-child(4),
body.bp-diagnosis-my tbody td:nth-child(5),
body.bp-diagnosis-my tbody td:nth-child(6) {
  text-align: center;
}

body.bp-diagnosis-my tbody td:nth-child(7) {
  text-align: center;
  color: #059669;
  font-size: 12px;
  font-weight: 900;
}

body.bp-diagnosis-my tbody td:nth-child(7) span,
body.bp-diagnosis-my tbody td:nth-child(7) em,
body.bp-diagnosis-my tbody td:nth-child(7) strong {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 46px;
  min-height: 26px;
  padding: 5px 10px;
  border-radius: 999px;
  background: #dcfce7;
  color: #059669;
  font-style: normal;
  font-size: 12px;
  font-weight: 900;
}

body.bp-diagnosis-my tbody td:last-child a,
body.bp-diagnosis-my tbody td:last-child button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 58px;
  min-height: 34px;
  padding: 8px 14px;
  border-radius: 12px;
  border: 1px solid rgba(109,95,245,.18);
  background: #ffffff;
  color: #17213a;
  font-size: 13px;
  font-weight: 900;
  text-decoration: none;
  transition: background-color 0.18s ease, border-color 0.18s ease, transform 0.18s ease;
}

body.bp-diagnosis-my tbody td:last-child a:hover,
body.bp-diagnosis-my tbody td:last-child button:hover {
  transform: translateY(-1px);
  border-color: rgba(109,95,245,.42);
  background: #f4f1ff;
  color: #5a49f6;
}

/* ============================================================
   30. Result Commercial
   ============================================================ */
.bp-data-status-card strong {
  font-size: 16px;
  line-height: 1.35;
  letter-spacing: -0.02em;
  word-break: keep-all;
}

.bp-data-status-card small {
  color: #475569;
  font-weight: 800;
  letter-spacing: -0.02em;
}

.bp-data-status-card span {
  color: #64748b;
  font-size: 12px;
  line-height: 1.45;
  word-break: keep-all;
}

#bp-result-meta {
  color: #64748b;
  font-weight: 700;
  letter-spacing: -0.02em;
}

/* ============================================================
   31. Diagnosis Result v2 페이지 — body 스코프
   ============================================================ */
body[data-bp-diagnosis-result-v2] {
  background:
    radial-gradient(circle at 20% 0%, rgba(124,92,255,.10), transparent 30%),
    linear-gradient(180deg, #f7f8ff 0%, #eef3ff 100%);
}

body[data-bp-diagnosis-result-v2] main,
body[data-bp-diagnosis-result-v2] .bp-container {
  max-width: 1320px;
}

body[data-bp-diagnosis-result-v2] .bp-grid-2,
body[data-bp-diagnosis-result-v2] .bp-result-grid,
body[data-bp-diagnosis-result-v2] .bp-result-detail-grid,
body[data-bp-diagnosis-result-v2] .bp-dashboard-grid {
  align-items: start;
}

body[data-bp-diagnosis-result-v2] .bp-card {
  border: 1px solid rgba(124,92,255,.13);
  box-shadow: 0 5px 5px rgba(15,23,42,.06);
}

body[data-bp-diagnosis-result-v2] .bp-card h2,
body[data-bp-diagnosis-result-v2] .bp-card h3,
body[data-bp-diagnosis-result-v2] .bp-card h4 {
  letter-spacing: -0.035em;
}

body[data-bp-diagnosis-result-v2] #bpGuidance,
body[data-bp-diagnosis-result-v2] #bpEvidence,
body[data-bp-diagnosis-result-v2] .bp-ai-evidence,
body[data-bp-diagnosis-result-v2] .bp-result-evidence {
  line-height: 1.92;
  color: #475569;
  word-break: keep-all;
}

body[data-bp-diagnosis-result-v2] #bpGuidance strong,
body[data-bp-diagnosis-result-v2] #bpEvidence strong,
body[data-bp-diagnosis-result-v2] .bp-ai-evidence strong,
body[data-bp-diagnosis-result-v2] .bp-result-evidence strong {
  color: #0f172a;
}

/* :has() 폴백 — 지원하는 브라우저는 has()로, 아닌 경우 클래스 직접 처리 */
body[data-bp-diagnosis-result-v2] .bp-score-bars,
body[data-bp-diagnosis-result-v2] .bp-score-list,
body[data-bp-diagnosis-result-v2] #bpScoreInterpretation,
body[data-bp-diagnosis-result-v2] #bpScoreBars,
body[data-bp-diagnosis-result-v2] #bpItemScoreBars {
  margin-top: 12px;
  align-self: start;
}

@supports selector(:has(*)) {
  body[data-bp-diagnosis-result-v2] .bp-card:has(#bpScoreInterpretation),
  body[data-bp-diagnosis-result-v2] .bp-card:has(#bpScoreBars),
  body[data-bp-diagnosis-result-v2] .bp-card:has(#bpItemScoreBars),
  body[data-bp-diagnosis-result-v2] .bp-card:has(.bp-score-bars),
  body[data-bp-diagnosis-result-v2] .bp-card:has(.bp-score-list) {
    align-self: start;
    min-height: 0;
  }
}

body[data-bp-diagnosis-result-v2] #bpDataStatus,
body[data-bp-diagnosis-result-v2] #bp-data-status {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  align-items: stretch;
}

body[data-bp-diagnosis-result-v2] #bp-data-status .bp-card,
body[data-bp-diagnosis-result-v2] #bpDataStatus .bp-card {
  min-height: 112px;
}

body[data-bp-diagnosis-result-v2] .bp-card p {
  word-break: keep-all;
}

body[data-bp-diagnosis-result-v2] .bp-card hr,
body[data-bp-diagnosis-result-v2] .bp-divider {
  border-color: rgba(148,163,184,.22);
}

/* ============================================================
   32. Header Nav — Active / CTA / Mobile
   ============================================================ */
.bp-nav-item-normalized {
  transition:
    background-color .18s ease,
    color .18s ease,
    border-color .18s ease,
    box-shadow .18s ease,
    transform .18s ease;
}

.bp-nav-page-current {
  background: #f2eeff;
  border-color: rgba(109,74,255,.34);
  color: #4c1d95;
  box-shadow: inset 0 0 0 1px rgba(109,74,255,.12), 0 5px 5px rgba(76,29,149,.08);
  font-weight: 900;
}

.bp-nav-page-current:hover {
  color: #3b1587;
  background: #ebe4ff;
  transform: translateY(-1px);
}

.bp-nav-cta-fixed {
  background: linear-gradient(135deg, #6d4aff 0%, #7c3aed 100%);
  border-color: rgba(109,74,255,.72);
  color: #ffffff;
  box-shadow: 0 5px 5px rgba(109,74,255,.24);
  font-weight: 900;
}

.bp-nav-cta-fixed:hover {
  color: #ffffff;
  transform: translateY(-1px);
  box-shadow: 0 5px 5px rgba(109,74,255,.30);
}

.bp-nav-page-current::before {
  content: "";
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-right: 6px;
  border-radius: 999px;
  background: #6d4aff;
  vertical-align: middle;
}

/* 모바일 햄버거 */
.bp-mobile-menu-toggle-fixed {
  display: none;
  width: 44px;
  height: 44px;
  border: 1px solid rgba(109,74,255,.20);
  border-radius: 14px;
  background: rgba(255,255,255,.92);
  box-shadow: 0 5px 5px rgba(15,23,42,.08);
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 5px;
  cursor: pointer;
  z-index: 1201;
}

.bp-mobile-menu-toggle-fixed span {
  display: block;
  width: 20px;
  height: 2px;
  border-radius: 99px;
  background: #24135f;
  transition: transform .18s ease, opacity .18s ease;
}

body.bp-mobile-nav-open .bp-mobile-menu-toggle-fixed span:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}

body.bp-mobile-nav-open .bp-mobile-menu-toggle-fixed span:nth-child(2) {
  opacity: 0;
}

body.bp-mobile-nav-open .bp-mobile-menu-toggle-fixed span:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

/* ============================================================
   33. ECharts / AI Result Sections
   ============================================================ */
.bp-ai-echarts-result {
  margin: 28px 0;
  padding: 28px;
  border-radius: 28px;
  border: 1px solid rgba(90,73,246,.16);
  background:
    radial-gradient(circle at 8% 8%, rgba(90,73,246,.12), transparent 30%),
    radial-gradient(circle at 92% 0%, rgba(125,64,242,.12), transparent 32%),
    rgba(255,255,255,.94);
  box-shadow: 0 5px 5px rgba(23,33,58,.08);
}

.bp-ai-echarts-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
  margin-bottom: 22px;
}

.bp-ai-echarts-kicker {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 30px;
  padding: 6px 12px;
  border-radius: 999px;
  background: rgba(90,73,246,.10);
  color: #4f3fd8;
  font-size: 12px;
  font-weight: 800;
}

.bp-ai-echarts-kicker::before {
  content: "";
  width: 8px;
  height: 8px;
  border-radius: 99px;
  background: linear-gradient(135deg, #5a49f6, #7d40f2);
  box-shadow: 0 0 0 6px rgba(90,73,246,.12);
}

.bp-ai-echarts-title {
  margin: 14px 0 8px;
  color: var(--bp-text);
  font-size: clamp(24px, 3vw, 36px);
  line-height: 1.15;
  font-weight: 900;
  letter-spacing: -0.055em;
}

.bp-ai-echarts-desc {
  max-width: 920px;
  margin: 0;
  color: #66708a;
  font-size: 15px;
  line-height: 1.75;
  letter-spacing: -0.02em;
}

.bp-ai-echarts-status {
  flex: 0 0 auto;
  min-width: 210px;
  padding: 16px;
  border-radius: 22px;
  background: #fff;
  border: 1px solid rgba(90,73,246,.16);
  box-shadow: 0 5px 5px rgba(23,33,58,.07);
}

.bp-ai-echarts-status small {
  display: block;
  color: #66708a;
  font-size: 12px;
  font-weight: 800;
}

.bp-ai-echarts-status strong {
  display: block;
  margin-top: 8px;
  color: #17213a;
  font-size: 28px;
  line-height: 1;
  font-weight: 950;
  letter-spacing: -0.04em;
}

.bp-ai-echarts-status span {
  display: block;
  margin-top: 8px;
  color: #5a49f6;
  font-size: 13px;
  font-weight: 800;
}

.bp-ai-echarts-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0,1fr));
  gap: 18px;
  margin-top: 18px;
}

.bp-ai-echarts-card {
  min-height: 390px;
  padding: 18px;
  border-radius: 24px;
  background: #fff;
  border: 1px solid rgba(23,33,58,.08);
  box-shadow: 0 5px 5px rgba(23,33,58,.06);
}

.bp-ai-echarts-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 10px;
}

.bp-ai-echarts-card-head h3 {
  margin: 0;
  color: #17213a;
  font-size: 16px;
  font-weight: 900;
  letter-spacing: -0.035em;
}

.bp-ai-echarts-card-head span {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 4px 9px;
  border-radius: 999px;
  background: rgba(90,73,246,.10);
  color: #4f3fd8;
  font-size: 11px;
  font-weight: 800;
}

.bp-ai-echarts-canvas {
  width: 100%;
  min-height: 320px;
}

.bp-ai-echarts-analysis {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 18px;
  margin-top: 18px;
}

.bp-ai-echarts-panel {
  padding: 22px;
  border-radius: 24px;
  background: #fff;
  border: 1px solid rgba(23,33,58,.08);
  box-shadow: 0 5px 5px rgba(23,33,58,.06);
}

.bp-ai-echarts-panel h3 {
  margin: 0 0 14px;
  color: #17213a;
  font-size: 18px;
  font-weight: 900;
  letter-spacing: -0.035em;
}

.bp-ai-echarts-section {
  padding: 14px 0;
  border-top: 1px solid rgba(23,33,58,.08);
}

.bp-ai-echarts-section:first-of-type {
  border-top: 0;
  padding-top: 0;
}

.bp-ai-echarts-section h4 {
  margin: 0 0 7px;
  color: #17213a;
  font-size: 14px;
  font-weight: 900;
}

.bp-ai-echarts-section p {
  margin: 0;
  color: #5f6b82;
  font-size: 13px;
  line-height: 1.75;
  letter-spacing: -0.015em;
}

.bp-ai-echarts-score-list {
  display: grid;
  gap: 10px;
}

.bp-ai-echarts-score-row {
  display: grid;
  grid-template-columns: 92px 1fr 44px;
  gap: 10px;
  align-items: center;
  color: #334155;
  font-size: 13px;
  font-weight: 800;
}

.bp-ai-echarts-track {
  overflow: hidden;
  height: 10px;
  border-radius: 999px;
  background: #eef2ff;
}

.bp-ai-echarts-fill {
  display: block;
  height: 100%;
  border-radius: 999px;
  background: linear-gradient(90deg, #5a49f6, #7d40f2);
}

.bp-ai-echarts-fill.is-risk {
  background: linear-gradient(90deg, #f59e0b, #ef4444);
}

.bp-ai-echarts-actions {
  display: grid;
  grid-template-columns: repeat(4, minmax(0,1fr));
  gap: 14px;
  margin-top: 18px;
}

.bp-ai-echarts-action {
  padding: 18px;
  border-radius: 22px;
  background: #fff;
  border: 1px solid rgba(23,33,58,.08);
  box-shadow: 0 5px 5px rgba(23,33,58,.055);
}

.bp-ai-echarts-action h4 {
  margin: 0 0 10px;
  color: #17213a;
  font-size: 15px;
  font-weight: 900;
}

.bp-ai-echarts-action ul {
  display: grid;
  gap: 8px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.bp-ai-echarts-action li {
  position: relative;
  padding-left: 16px;
  color: #66708a;
  font-size: 13px;
  line-height: 1.55;
}

.bp-ai-echarts-action li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.58em;
  width: 7px;
  height: 7px;
  border-radius: 99px;
  background: #5a49f6;
}

.bp-ai-echarts-license {
  margin-top: 18px;
  padding: 14px 16px;
  border-radius: 18px;
  background: rgba(255,247,237,.92);
  border: 1px solid rgba(251,146,60,.3);
  color: #8a4b0f;
  font-size: 12px;
  line-height: 1.65;
}

.bp-ai-echarts-fallback {
  display: grid;
  place-items: center;
  min-height: 260px;
  padding: 20px;
  border-radius: 18px;
  background: #f7f5ff;
  color: #66708a;
  text-align: center;
}

/* ============================================================
   34. Responsive Breakpoints
   ============================================================ */

/* 1200px 이하 */
@media (max-width: 1199.98px) {
  .bp-grid-4 {
    grid-template-columns: repeat(2, minmax(0,1fr));
  }
}

/* 980px 이하 */
@media (max-width: 980px) {
  .bp-ai-echarts-result {
    padding: 20px;
    border-radius: 24px;
  }

  .bp-ai-echarts-head,
  .bp-ai-echarts-analysis {
    grid-template-columns: 1fr;
  }

  .bp-ai-echarts-status {
    width: 100%;
  }

  .bp-ai-echarts-grid,
  .bp-ai-echarts-actions {
    grid-template-columns: 1fr;
  }

  .bp-ai-echarts-card {
    min-height: 340px;
  }

  .bp-ai-echarts-canvas {
    min-height: 280px;
  }

  body[data-bp-diagnosis-result-v2] .bp-grid-2,
  body[data-bp-diagnosis-result-v2] .bp-result-grid,
  body[data-bp-diagnosis-result-v2] .bp-result-detail-grid,
  body[data-bp-diagnosis-result-v2] .bp-dashboard-grid {
    grid-template-columns: 1fr;
  }

  body[data-bp-diagnosis-result-v2] #bp-data-status,
  body[data-bp-diagnosis-result-v2] #bpDataStatus {
    grid-template-columns: 1fr 1fr;
  }
}

/* 991.98px 이하 */
@media (max-width: 991.98px) {
  .bp-container {
    width: min(100% - 32px, var(--bp-container));
  }

  .bp-hero-band,
  .bp-grid-main,
  .bp-grid-2,
  .bp-grid-3,
  .bp-admin-layout,
  .bp-result-score {
    grid-template-columns: 1fr;
  }

  .bp-sidebar {
    position: static;
  }

  .bp-form-grid {
    grid-template-columns: 1fr;
  }

  .bp-span-2 {
    grid-column: span 1;
  }

  .bp-header-inner {
    align-items: flex-start;
  }

  .bp-nav {
    width: 100%;
    justify-content: flex-start;
  }

  .bp-nav .bp-btn {
    flex: 0 0 auto;
  }

  .bp-big-score {
    min-height: 180px;
  }

  .bp-map {
    height: 420px;
    min-height: 360px;
  }

  body.bp-diagnosis-my .bp-container {
    max-width: 100%;
    overflow-x: auto;
  }

  body.bp-diagnosis-my table {
    min-width: 920px;
  }
}

/* 820px 이하 — 모바일 nav */
@media (max-width: 820px) {
  .bp-mobile-menu-toggle-fixed {
    display: inline-flex;
  }

  /* 수정: display:flex로 통일, grid-template-columns 제거 (충돌 방지) */
  .bp-mobile-nav-target {
    position: absolute;
    top: calc(100% + 10px);
    left: 12px;
    right: 12px;
    display: none;
    flex-direction: column;
    gap: 10px;
    padding: 14px;
    border: 1px solid rgba(109,74,255,.16);
    border-radius: 22px;
    background: rgba(255,255,255,.97);
    box-shadow: 0 5px 5px rgba(15,23,42,.16);
    z-index: 1200;
  }

  body.bp-mobile-nav-open .bp-mobile-nav-target {
    display: flex;
  }

  .bp-mobile-nav-target a,
  .bp-mobile-nav-target button {
    width: 100%;
    justify-content: center;
    min-height: 44px;
  }

  header,
  .bp-header,
  .bp-topbar,
  .bp-shell-header {
    position: sticky;
    top: 0;
    z-index: 1190;
  }

  /* 진단결과 모바일 중앙 정렬 */
  body[data-bp-diagnosis-result-v2] {
    overflow-x: hidden;
  }

  body[data-bp-diagnosis-result-v2] main,
  body[data-bp-diagnosis-result-v2] .bp-container,
  body[data-bp-diagnosis-result-v2] .bp-page,
  body[data-bp-diagnosis-result-v2] .bp-section,
  body[data-bp-diagnosis-result-v2] .bp-shell,
  body[data-bp-diagnosis-result-v2] .bp-content {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    margin-left: auto;
    margin-right: auto;
    padding-left: 16px;
    padding-right: 16px;
    box-sizing: border-box;
  }

  body[data-bp-diagnosis-result-v2] .bp-grid,
  body[data-bp-diagnosis-result-v2] .bp-grid-2,
  body[data-bp-diagnosis-result-v2] .bp-grid-3,
  body[data-bp-diagnosis-result-v2] .bp-grid-4,
  body[data-bp-diagnosis-result-v2] .bp-result-grid,
  body[data-bp-diagnosis-result-v2] .bp-result-detail-grid,
  body[data-bp-diagnosis-result-v2] .bp-dashboard-grid {
    width: 100%;
    max-width: 560px;
    min-width: 0;
    margin-left: auto;
    margin-right: auto;
    grid-template-columns: minmax(0, 1fr);
    justify-items: stretch;
    align-items: start;
    gap: 18px;
  }

  body[data-bp-diagnosis-result-v2] .bp-card,
  body[data-bp-diagnosis-result-v2] .bp-panel,
  body[data-bp-diagnosis-result-v2] .bp-kpi,
  body[data-bp-diagnosis-result-v2] .bp-result-summary,
  body[data-bp-diagnosis-result-v2] .bp-chart-card {
    width: 100%;
    max-width: 560px;
    min-width: 0;
    margin-left: auto;
    margin-right: auto;
    box-sizing: border-box;
  }

  body[data-bp-diagnosis-result-v2] #bpDataStatus,
  body[data-bp-diagnosis-result-v2] #bp-data-status {
    width: 100%;
    max-width: 560px;
    margin-left: auto;
    margin-right: auto;
    grid-template-columns: minmax(0, 1fr);
  }

  body[data-bp-diagnosis-result-v2] canvas,
  body[data-bp-diagnosis-result-v2] svg {
    max-width: 100%;
  }
}

/* 575.98px 이하 */
@media (max-width: 575.98px) {
  .bp-header-inner {
    flex-direction: column;
    align-items: stretch;
    padding: 12px 0;
  }

  .bp-nav {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    width: 100%;
  }

  .bp-nav .bp-btn {
    width: 100%;
  }

  .bp-hero-band {
    padding: 22px 18px;
  }

  .bp-preview-foot,
  .bp-grid-4 {
    grid-template-columns: 1fr;
  }

  .bp-metric {
    grid-template-columns: 52px 1fr 36px;
  }

  .bp-shell {
    padding-top: 18px;
  }

  .bp-footer,
  body.bp-platform > footer.bp-footer {
    margin-top: 38px;
    padding: 18px 0;
  }

  .bp-footer .bp-container {
    width: min(100% - 32px, var(--bp-container));
  }

  .bp-address-row {
    grid-template-columns: 1fr;
  }

  .bp-map {
    height: 340px;
    min-height: 320px;
  }

  .bp-diagnosis-entry-card:hover {
    transform: none;
  }

  .bp-diagnosis-loading-card {
    padding: 24px;
    border-radius: 24px;
  }

  .bp-diagnosis-loading-top {
    align-items: flex-start;
  }

  .bp-diagnosis-loading-title {
    font-size: 1.18rem;
  }
}

/* 640px 이하 */
@media (max-width: 640px) {
  body[data-bp-diagnosis-result-v2] #bp-data-status,
  body[data-bp-diagnosis-result-v2] #bpDataStatus {
    grid-template-columns: 1fr;
  }

  body[data-bp-diagnosis-result-v2] .bp-card {
    border-radius: 22px;
  }
}

/* 360px 이하 */
@media (max-width: 360px) {
  body[data-bp-diagnosis-result-v2] main,
  body[data-bp-diagnosis-result-v2] .bp-container,
  body[data-bp-diagnosis-result-v2] .bp-page,
  body[data-bp-diagnosis-result-v2] .bp-section,
  body[data-bp-diagnosis-result-v2] .bp-shell,
  body[data-bp-diagnosis-result-v2] .bp-content {
    padding-left: 12px;
    padding-right: 12px;
  }

  body[data-bp-diagnosis-result-v2] .bp-card,
  body[data-bp-diagnosis-result-v2] .bp-panel,
  body[data-bp-diagnosis-result-v2] .bp-kpi {
    border-radius: 18px;
  }
}

/* ============================================================
   35. Result Top Card
   ============================================================ */
.bp-result-top-card {
  overflow: hidden;
}

/* ============================================================
   36. Nearby Analysis — Map / List / Stats / Legend
   ============================================================ */
.bp-result-nearby-shell {
  margin-top: 28px;
  padding: 28px;
}

.bp-result-nearby-head {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 20px;
}

.bp-result-nearby-title {
  margin: 10px 0 6px;
  font-size: 30px;
  line-height: 1.25;
  letter-spacing: -0.04em;
}

.bp-result-nearby-desc {
  margin: 0;
  color: #64748b;
  font-size: 14px;
}

.bp-dot {
  margin: 0 6px;
}

.bp-result-nearby-stat-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 14px;
  margin-bottom: 20px;
}

.bp-result-nearby-stat {
  padding: 16px 18px;
  border-radius: 18px;
  background: #ffffff;
  border: 1px solid rgba(124, 92, 255, 0.12);
  box-shadow: 0 5px 5px rgba(15, 23, 42, 0.04);
}

.bp-result-nearby-stat-label {
  font-size: 13px;
  color: #64748b;
  margin-bottom: 8px;
}

.bp-result-nearby-stat-value {
  font-size: 24px;
  font-weight: 800;
  color: #0f172a;
}

.bp-result-nearby-map-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(320px, .9fr);
  gap: 20px;
  align-items: start;
  margin-bottom: 20px;
}

.bp-result-nearby-map-card,
.bp-result-nearby-list-card,
.bp-result-nearby-analysis-card {
  padding: 22px;
}

.bp-result-nearby-card-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 14px;
}

.bp-result-nearby-card-head h3 {
  margin: 0;
  font-size: 20px;
  letter-spacing: -0.03em;
}

.bp-result-nearby-map {
  width: 100%;
  height: 460px;
  border-radius: 18px;
  overflow: hidden;
  background: #eef2ff;
  border: 1px solid rgba(148, 163, 184, 0.22);
}

.bp-result-nearby-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 14px;
  margin-top: 12px;
}

.bp-legend-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: #475569;
}

.bp-legend-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 999px;
}

.bp-dot-selected  { background: #2563eb; }
.bp-dot-food      { background: #ef6c00; }
.bp-dot-stop      { background: #4f46e5; }
.bp-dot-parking   { background: #0f766e; }
.bp-dot-building  { background: #475569; }
.bp-dot-street    { background: #db2777; }

.bp-result-nearby-helper {
  margin-top: 10px;
  color: #64748b;
  font-size: 13px;
}

.bp-result-nearby-selected {
  padding: 14px 16px;
  border-radius: 16px;
  background: linear-gradient(180deg, #f8f9ff 0%, #ffffff 100%);
  border: 1px solid rgba(124, 92, 255, 0.12);
  margin-bottom: 14px;
}

.bp-result-nearby-selected strong {
  display: block;
  margin-bottom: 8px;
  color: #0f172a;
}

.bp-result-nearby-selected-body {
  color: #64748b;
  font-size: 13px;
  line-height: 1.6;
}

.bp-result-nearby-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  max-height: 470px;
  overflow: auto;
  padding-right: 4px;
}

.bp-result-nearby-analysis-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.bp-result-analysis-box {
  padding: 16px 18px;
  border-radius: 16px;
  background: #fff;
  border: 1px solid rgba(124, 92, 255, 0.10);
}

.bp-result-analysis-box-wide {
  grid-column: span 2;
}

.bp-result-analysis-label {
  font-size: 13px;
  color: #64748b;
  margin-bottom: 8px;
}

.bp-result-analysis-value {
  color: #0f172a;
  font-size: 18px;
  font-weight: 800;
  line-height: 1.6;
}

.bp-result-analysis-inline {
  font-size: 16px;
}

.bp-result-analysis-copy {
  font-size: 15px;
  font-weight: 600;
  color: #334155;
}

.bp-business-share-row {
  display: grid;
  gap: 9px;
  padding: 14px 0;
  border-bottom: 1px solid rgba(91, 73, 246, .10);
}

.bp-business-share-row:last-child {
  border-bottom: 0;
}

.bp-business-share-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  color: #17213a;
  font-size: .94rem;
  font-weight: 850;
}

.bp-business-share-head strong {
  color: #263276;
  font-size: .96rem;
  white-space: nowrap;
}

.bp-business-share-track {
  height: 10px;
  overflow: hidden;
  border-radius: 999px;
  background: rgba(91, 73, 246, .10);
}

.bp-business-share-track span {
  display: block;
  width: var(--value, 0%);
  height: 100%;
  border-radius: inherit;
  background: linear-gradient(90deg, #5a49f6, #17a46f);
}

/* ============================================================
   37. chip-soft / empty
   ============================================================ */
.bp-chip-soft {
  display: inline-flex;
  align-items: center;
  padding: 6px 12px;
  border-radius: 999px;
  color: #5a49f6;
  background: rgba(91, 73, 246, 0.08);
  border: 1px solid rgba(91, 73, 246, 0.12);
  font-size: .88rem;
  font-weight: 800;
}

.bp-empty {
  padding: 30px;
  border-radius: 20px;
  background: rgba(91, 73, 246, 0.05);
  border: 1px solid rgba(91, 73, 246, 0.10);
  color: #7b849d;
  text-align: center;
  font-size: .95rem;
  line-height: 1.7;
}

/* ============================================================
   38. Nearby Responsive (추가 breakpoint)
   ============================================================ */
@media (max-width: 1100px) {
  .bp-result-nearby-stat-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .bp-result-nearby-map-layout {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 820px) {
  .bp-result-nearby-shell {
    padding: 20px;
  }

  .bp-result-nearby-title {
    font-size: 24px;
  }

  .bp-result-nearby-stat-grid {
    grid-template-columns: 1fr 1fr;
  }

  .bp-result-nearby-map {
    height: 340px;
  }

  .bp-result-nearby-analysis-grid {
    grid-template-columns: 1fr;
  }

  .bp-result-analysis-box-wide {
    grid-column: span 1;
  }
}

@media (max-width: 560px) {
  .bp-result-nearby-shell {
    padding: 16px;
  }

  .bp-result-nearby-stat-grid {
    grid-template-columns: 1fr;
  }

  .bp-result-nearby-map {
    height: 300px;
  }

  .bp-result-nearby-card-head {
    flex-direction: column;
    align-items: flex-start;
  }
}

/* BP_GLOBAL_CONTAINER_1240_AND_RESULT_NEARBY_FIX_START */
:root {
  --bp-container: 1240px;
}

/* 모든 주요 페이지 컨테이너 폭 기준 통일 */
.bp-container {
  width: min(calc(100% - 48px), var(--bp-container));
  max-width: var(--bp-container);
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
}

/* 기존 페이지별 편차 보정 */
body.bp-diagnosis-my .bp-container,
body[data-bp-diagnosis-result-v2] .bp-container,
body.bp-index .bp-container,
body.bp-platform .bp-container {
  width: min(calc(100% - 48px), var(--bp-container));
  max-width: var(--bp-container);
  margin-left: auto;
  margin-right: auto;
  box-sizing: border-box;
}

/* 결과페이지 지도/주변데이터는 1240px 컨테이너 안에서 정렬 */
body[data-bp-diagnosis-result-v2] #bp-result-nearby-shell {
  width: 100%;
  max-width: var(--bp-container);
  margin-left: auto;
  margin-right: auto;
}

/* 데이터 없을 때 큰 빈 지도 대신 안내 카드처럼 보이게 */
.bp-result-nearby-map.bp-result-nearby-map-empty {
  min-height: 180px;
  height: auto;
  display: grid;
  place-items: center;
  padding: 24px;
  background: #f4f6ff;
}

.bp-result-nearby-map-empty .bp-empty {
  max-width: 520px;
  color: #64748b;
  font-size: 14px;
  line-height: 1.7;
  text-align: center;
  word-break: keep-all;
}

.bp-nearby-item-provider {
  margin-top: 6px;
  color: #94a3b8;
  font-size: 12px;
  line-height: 1.4;
}

.bp-map-pin {
  width: 28px;
  height: 28px;
  border: 2px solid rgba(255, 255, 255, .94);
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-size: 11px;
  font-weight: 900;
  box-shadow: 0 5px 5px rgba(15, 23, 42, .20);
}

.bp-map-div-icon-wrap {
  background: transparent !important;
  border: 0 !important;
}

.bp-map-popup {
  min-width: 180px;
  line-height: 1.6;
  font-size: 13px;
}

@media (max-width: 820px) {
  .bp-container,
  body.bp-diagnosis-my .bp-container,
  body[data-bp-diagnosis-result-v2] .bp-container,
  body.bp-index .bp-container,
  body.bp-platform .bp-container {
    width: min(calc(100% - 28px), var(--bp-container));
    max-width: var(--bp-container);
  }

  body[data-bp-diagnosis-result-v2] #bp-result-nearby-shell {
    max-width: 560px;
  }
}

@media (max-width: 420px) {
  .bp-container,
  body.bp-diagnosis-my .bp-container,
  body[data-bp-diagnosis-result-v2] .bp-container,
  body.bp-index .bp-container,
  body.bp-platform .bp-container {
    width: min(calc(100% - 20px), var(--bp-container));
  }
}
/* BP_GLOBAL_CONTAINER_1240_AND_RESULT_NEARBY_FIX_END */

/* BP_CONTAINER_CENTER_AND_MAP_RADIUS_FIX_START */
:root {
  --bp-container: 1240px;
}

/* 모든 주요 페이지 컨테이너 중앙 정렬 최종 보강 */
.bp-container,
body.bp-platform .bp-container,
body.bp-index .bp-container,
body.bp-diagnosis-my .bp-container,
body[data-bp-diagnosis-result-v2] .bp-container {
  width: min(calc(100% - 48px), var(--bp-container));
  max-width: var(--bp-container);
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box;
}

/* 결과페이지 주요 섹션 중앙 유지 */
body[data-bp-diagnosis-result-v2] main,
body[data-bp-diagnosis-result-v2] .bp-shell,
body[data-bp-diagnosis-result-v2] #bp-result-nearby-shell {
  margin-left: auto !important;
  margin-right: auto !important;
}

/* 지도 반경 원 표시 보정 */
.bp-map-radius-circle {
  pointer-events: none;
}

.leaflet-container .bp-map-radius-circle {
  filter: drop-shadow(0 8px 18px rgba(109, 74, 255, 0.16));
}

/* 지도 영역이 컨테이너 안에서 좌우 균형 유지 */
body[data-bp-diagnosis-result-v2] .bp-result-nearby-shell,
body[data-bp-diagnosis-result-v2] #bp-result-nearby-shell {
  width: 100%;
  max-width: var(--bp-container);
}

@media (max-width: 820px) {
  .bp-container,
  body.bp-platform .bp-container,
  body.bp-index .bp-container,
  body.bp-diagnosis-my .bp-container,
  body[data-bp-diagnosis-result-v2] .bp-container {
    width: min(calc(100% - 28px), var(--bp-container));
  }

  body[data-bp-diagnosis-result-v2] #bp-result-nearby-shell {
    max-width: 560px;
  }
}

@media (max-width: 420px) {
  .bp-container,
  body.bp-platform .bp-container,
  body.bp-index .bp-container,
  body.bp-diagnosis-my .bp-container,
  body[data-bp-diagnosis-result-v2] .bp-container {
    width: min(calc(100% - 20px), var(--bp-container));
  }
}
/* BP_CONTAINER_CENTER_AND_MAP_RADIUS_FIX_END */

/* BP_MAP_RADIUS_SELECTED_COMPETITOR_FIX_START */
/* 선택 위치 기준 마커를 일반 마커보다 명확하게 표시 */
.bp-map-selected-icon-wrap {
  z-index: 10000 !important;
}

.bp-map-selected-pin {
  width: 46px;
  height: 46px;
  border: 4px solid rgba(255, 255, 255, 0.98);
  border-radius: 999px;
  background: radial-gradient(circle at 35% 30%, #60a5fa 0%, #2563eb 55%, #1d4ed8 100%);
  color: #ffffff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow:
    0 0 0 5px rgba(37, 99, 235, 0.18), 0 5px 5px rgba(37, 99, 235, 0.36);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: -0.04em;
}

.bp-map-selected-pin span {
  transform: translateY(-1px);
}

/* 지도 반경 원 */
.bp-map-radius-circle {
  pointer-events: none;
}

.leaflet-overlay-pane .bp-map-radius-circle,
.leaflet-container .bp-map-radius-circle {
  filter: drop-shadow(0 8px 18px rgba(109, 74, 255, 0.18));
}

/* 범례: 유사업종 */
.bp-dot-competitor {
  background: #dc2626;
}

/* 선택 위치/유사업종 범례가 작아도 구분되도록 */
.bp-legend-item {
  white-space: nowrap;
}

.bp-result-nearby-map {
  position: relative;
}

/* 컨테이너 중앙 정렬 최종 보강 */
:root {
  --bp-container: 1240px;
}

.bp-container,
body.bp-platform .bp-container,
body.bp-index .bp-container,
body.bp-diagnosis-my .bp-container,
body[data-bp-diagnosis-result-v2] .bp-container {
  width: min(calc(100% - 48px), var(--bp-container));
  max-width: var(--bp-container);
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box;
}

body[data-bp-diagnosis-result-v2] main,
body[data-bp-diagnosis-result-v2] .bp-shell,
body[data-bp-diagnosis-result-v2] #bp-result-nearby-shell {
  margin-left: auto !important;
  margin-right: auto !important;
}

body[data-bp-diagnosis-result-v2] .bp-result-nearby-shell,
body[data-bp-diagnosis-result-v2] #bp-result-nearby-shell {
  width: 100%;
  max-width: var(--bp-container);
}

@media (max-width: 820px) {
  .bp-container,
  body.bp-platform .bp-container,
  body.bp-index .bp-container,
  body.bp-diagnosis-my .bp-container,
  body[data-bp-diagnosis-result-v2] .bp-container {
    width: min(calc(100% - 28px), var(--bp-container));
  }

  body[data-bp-diagnosis-result-v2] #bp-result-nearby-shell {
    max-width: 560px;
  }
}

@media (max-width: 420px) {
  .bp-container,
  body.bp-platform .bp-container,
  body.bp-index .bp-container,
  body.bp-diagnosis-my .bp-container,
  body[data-bp-diagnosis-result-v2] .bp-container {
    width: min(calc(100% - 20px), var(--bp-container));
  }
}
/* BP_MAP_RADIUS_SELECTED_COMPETITOR_FIX_END */

/* BP_MAP_LAYER_PRIORITY_RADIUS_FIX_START */
/* Leaflet 레이어 우선순위: 낮음 -> 높음
   반경 원 < 특화거리 < 건축물 < 주차장 < 정류소 < 일반음식점 < 유사업종 < 선택 위치 */
.bp-dot-selected { background: #2563eb; }
.bp-dot-competitor { background: #dc2626; }
.bp-dot-food { background: #ef6c00; }
.bp-dot-stop { background: #4f46e5; }
.bp-dot-parking { background: #0f766e; }
.bp-dot-building { background: #475569; }
.bp-dot-street { background: #db2777; }

.bp-map-selected-icon-wrap {
  z-index: 10000 !important;
}

.bp-map-selected-pin {
  width: 48px;
  height: 48px;
  border: 4px solid rgba(255, 255, 255, 0.98);
  border-radius: 999px;
  background: radial-gradient(circle at 35% 30%, #60a5fa 0%, #2563eb 58%, #1d4ed8 100%);
  color: #ffffff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow:
    0 0 0 6px rgba(37, 99, 235, 0.18), 0 5px 5px rgba(37, 99, 235, 0.36);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: -0.04em;
}

.bp-map-selected-pin span {
  transform: translateY(-1px);
}

.bp-map-radius-circle {
  pointer-events: none;
}

.leaflet-overlay-pane .bp-map-radius-circle,
.leaflet-container .bp-map-radius-circle {
  filter: drop-shadow(0 8px 18px rgba(109, 74, 255, 0.20));
}

.bp-legend-item {
  white-space: nowrap;
}

/* 컨테이너 중앙 정렬 유지 */
:root {
  --bp-container: 1240px;
}

.bp-container,
body.bp-platform .bp-container,
body.bp-index .bp-container,
body.bp-diagnosis-my .bp-container,
body[data-bp-diagnosis-result-v2] .bp-container {
  width: min(calc(100% - 48px), var(--bp-container));
  max-width: var(--bp-container);
  margin-left: auto !important;
  margin-right: auto !important;
  box-sizing: border-box;
}

body[data-bp-diagnosis-result-v2] main,
body[data-bp-diagnosis-result-v2] .bp-shell,
body[data-bp-diagnosis-result-v2] #bp-result-nearby-shell {
  margin-left: auto !important;
  margin-right: auto !important;
}

body[data-bp-diagnosis-result-v2] .bp-result-nearby-shell,
body[data-bp-diagnosis-result-v2] #bp-result-nearby-shell {
  width: 100%;
  max-width: var(--bp-container);
}

@media (max-width: 820px) {
  .bp-container,
  body.bp-platform .bp-container,
  body.bp-index .bp-container,
  body.bp-diagnosis-my .bp-container,
  body[data-bp-diagnosis-result-v2] .bp-container {
    width: min(calc(100% - 28px), var(--bp-container));
  }

  body[data-bp-diagnosis-result-v2] #bp-result-nearby-shell {
    max-width: 560px;
  }
}

@media (max-width: 420px) {
  .bp-container,
  body.bp-platform .bp-container,
  body.bp-index .bp-container,
  body.bp-diagnosis-my .bp-container,
  body[data-bp-diagnosis-result-v2] .bp-container {
    width: min(calc(100% - 20px), var(--bp-container));
  }
}
/* BP_MAP_LAYER_PRIORITY_RADIUS_FIX_END */

/* BP_MAP_RADIUS_LAYER_FINAL_20260503_START */
.bp-dot-selected { background: #2563eb; }
.bp-dot-competitor { background: #dc2626; }
.bp-dot-food { background: #ef6c00; }
.bp-dot-stop { background: #4f46e5; }
.bp-dot-parking { background: #0f766e; }
.bp-dot-building { background: #475569; }
.bp-dot-street { background: #db2777; }

.leaflet-bpPaneRadius-pane { z-index: 600 !important; }
.leaflet-bpPaneSpecial-pane { z-index: 610 !important; }
.leaflet-bpPaneBuilding-pane { z-index: 620 !important; }
.leaflet-bpPaneParking-pane { z-index: 630 !important; }
.leaflet-bpPaneBus-pane { z-index: 640 !important; }
.leaflet-bpPaneFood-pane { z-index: 650 !important; }
.leaflet-bpPaneCompetitor-pane { z-index: 690 !important; }
.leaflet-bpPaneSelected-pane { z-index: 760 !important; }

.bp-map-selected-icon-wrap {
  z-index: 10000 !important;
}

.bp-map-selected-pin {
  width: 48px;
  height: 48px;
  border: 4px solid rgba(255, 255, 255, 0.98);
  border-radius: 999px;
  background: radial-gradient(circle at 35% 30%, #60a5fa 0%, #2563eb 58%, #1d4ed8 100%);
  color: #ffffff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow:
    0 0 0 6px rgba(37, 99, 235, 0.18), 0 5px 5px rgba(37, 99, 235, 0.36);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: -0.04em;
}

.bp-map-selected-pin span {
  transform: translateY(-1px);
}

.bp-map-radius-circle,
svg .bp-map-radius-circle,
.leaflet-overlay-pane .bp-map-radius-circle,
.leaflet-container .bp-map-radius-circle {
  stroke: #6d4aff !important;
  stroke-width: 5px !important;
  stroke-opacity: 1 !important;
  fill: #6d4aff !important;
  fill-opacity: 0.13 !important;
  filter: drop-shadow(0 8px 18px rgba(109, 74, 255, 0.24));
  pointer-events: none;
}

.bp-legend-item {
  white-space: nowrap;
}
/* BP_MAP_RADIUS_LAYER_FINAL_20260503_END */

/* BP_MAP_RADIUS_VISIBILITY_FINAL_20260503_START */
/* 반경 원은 Leaflet 기본 overlay pane에 표시한다. */
.leaflet-overlay-pane svg path.bp-map-radius-circle,
.leaflet-container svg path.bp-map-radius-circle,
.bp-map-radius-circle {
  stroke: #7c3aed !important;
  stroke-width: 6px !important;
  stroke-opacity: 1 !important;
  fill: #7c3aed !important;
  fill-opacity: 0.12 !important;
  stroke-dasharray: 12 7 !important;
  filter: drop-shadow(0 8px 20px rgba(124, 58, 237, 0.32));
  pointer-events: none !important;
}

/* 반경 텍스트 라벨 */
.bp-map-radius-label-wrap {
  background: transparent !important;
  border: 0 !important;
  z-index: 9500 !important;
}

.bp-map-radius-label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 82px;
  height: 28px;
  padding: 0 10px;
  border-radius: 999px;
  background: rgba(124, 58, 237, 0.95);
  color: #ffffff;
  border: 2px solid rgba(255, 255, 255, 0.96);
  box-shadow: 0 5px 5px rgba(124, 58, 237, 0.30);
  font-size: 12px;
  font-weight: 900;
  letter-spacing: -0.03em;
  white-space: nowrap;
}

/* 범례 기준점 문구가 길어져도 줄바꿈 최소화 */
.bp-result-nearby-legend {
  align-items: center;
}

.bp-legend-item {
  white-space: nowrap;
}
/* BP_MAP_RADIUS_VISIBILITY_FINAL_20260503_END */

/* BP_MAP_RADIUS_POPUP_POLISH_20260503_START */
/* 결과 지도 반경 원: 얇은 실선 */
.leaflet-overlay-pane svg path.bp-map-radius-circle,
.leaflet-container svg path.bp-map-radius-circle,
.bp-map-radius-circle {
  stroke: #7c3aed !important;
  stroke-width: 2px !important;
  stroke-opacity: 0.95 !important;
  stroke-dasharray: none !important;
  fill: #7c3aed !important;
  fill-opacity: 0.07 !important;
  filter: none !important;
  pointer-events: none !important;
}

/* Leaflet 마커 상세 팝업은 항상 최상위 */
.leaflet-popup-pane {
  z-index: 9999999999999999999 !important;
}

.leaflet-popup {
  z-index: 9999999999999999999 !important;
}

.leaflet-tooltip-pane {
  z-index: 9999999999999999998 !important;
}
/* BP_MAP_RADIUS_POPUP_POLISH_20260503_END */

/* BP_ADMIN_OPS_V1_START */
.bp-admin-page .bp-container {
  max-width: 1240px;
  margin-left: auto;
  margin-right: auto;
}

.bp-admin-main {
  min-width: 0;
}

.bp-admin-page-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  margin-bottom: 22px;
}

.bp-admin-kpi-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin-bottom: 18px;
}

.bp-admin-kpi-grid-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.bp-admin-grid-2 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
  margin-bottom: 18px;
}

.bp-admin-panel {
  margin-bottom: 18px;
}

.bp-admin-table-wrap {
  overflow-x: auto;
  border-radius: 16px;
  border: 1px solid rgba(124, 58, 237, 0.12);
}

.bp-admin-table {
  width: 100%;
  border-collapse: collapse;
  min-width: 880px;
  background: #fff;
}

.bp-admin-table th,
.bp-admin-table td {
  padding: 12px 14px;
  border-bottom: 1px solid rgba(15, 23, 42, 0.08);
  text-align: left;
  vertical-align: middle;
  font-size: 14px;
}

.bp-admin-table th {
  background: #f8f7ff;
  color: #1f1a44;
  font-weight: 800;
  white-space: nowrap;
}

.bp-admin-table td small {
  display: block;
  color: #6b7280;
  margin-top: 3px;
  font-size: 12px;
}

.bp-admin-table .bp-num {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.bp-admin-empty {
  text-align: center !important;
  color: #6b7280;
  padding: 28px !important;
}

.bp-admin-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 52px;
  padding: 5px 9px;
  border-radius: 999px;
  background: #eef2ff;
  color: #4338ca;
  font-size: 12px;
  font-weight: 800;
}

.bp-admin-pill.is-on {
  background: #dcfce7;
  color: #166534;
}

.bp-admin-pill.is-off {
  background: #fee2e2;
  color: #991b1b;
}

.bp-btn-sm {
  min-height: 34px;
  padding: 7px 12px;
  font-size: 13px;
}

@media (max-width: 980px) {
  .bp-admin-page-head,
  .bp-admin-grid-2 {
    grid-template-columns: 1fr;
  }

  .bp-admin-page-head {
    display: block;
  }

  .bp-admin-page-head .bp-btn {
    margin-top: 12px;
  }

  .bp-admin-kpi-grid,
  .bp-admin-kpi-grid-3 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 640px) {
  .bp-admin-kpi-grid,
  .bp-admin-kpi-grid-3 {
    grid-template-columns: 1fr;
  }

  .bp-admin-table {
    min-width: 760px;
  }
}
/* BP_ADMIN_OPS_V1_END */

/* BP_RESULT_NAVIGATION_LOADING_START */
.bp-result-navigation-loading {
  position: fixed;
  inset: 0;
  z-index: 999999999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(15, 23, 42, 0.46);
  backdrop-filter: blur(8px);
}

.bp-result-navigation-loading-card {
  width: min(360px, 100%);
  padding: 28px 24px;
  border-radius: 24px;
  background: rgba(255, 255, 255, 0.96);
  box-shadow: 0 5px 5px rgba(15, 23, 42, 0.26);
  text-align: center;
  border: 1px solid rgba(124, 58, 237, 0.16);
}

.bp-result-navigation-loading-card strong {
  display: block;
  margin-top: 16px;
  color: #111827;
  font-size: 18px;
  font-weight: 900;
  line-height: 1.35;
}

.bp-result-navigation-loading-card span {
  display: block;
  margin-top: 8px;
  color: #64748b;
  font-size: 14px;
  line-height: 1.55;
}

.bp-result-navigation-spinner {
  width: 46px;
  height: 46px;
  margin: 0 auto;
  border-radius: 999px;
  border: 4px solid rgba(124, 58, 237, 0.18);
  border-top-color: #7c3aed;
  animation: bp-result-navigation-spin 0.78s linear infinite;
}

@keyframes bp-result-navigation-spin {
  to {
    transform: rotate(360deg);
  }
}

.bp-result-navigation-loading-active {
  cursor: wait;
}
/* BP_RESULT_NAVIGATION_LOADING_END */

/* BP_RESULT_V2_LOADING_START */
.bp-result-v2-loading {
  position: fixed;
  inset: 0;
  z-index: 999999999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(248, 250, 252, 0.82);
  backdrop-filter: blur(10px);
}

.bp-result-v2-loading.is-hiding {
  opacity: 0;
  transition: opacity 0.18s ease;
}

.bp-result-v2-loading-card {
  width: min(380px, 100%);
  padding: 30px 26px;
  border-radius: 26px;
  background: rgba(255, 255, 255, 0.98);
  box-shadow: 0 5px 5px rgba(15, 23, 42, 0.22);
  border: 1px solid rgba(124, 58, 237, 0.16);
  text-align: center;
}

.bp-result-v2-loading-card strong {
  display: block;
  margin-top: 16px;
  color: #111827;
  font-size: 18px;
  font-weight: 900;
  line-height: 1.35;
}

.bp-result-v2-loading-card span {
  display: block;
  margin-top: 8px;
  color: #64748b;
  font-size: 14px;
  line-height: 1.55;
}

.bp-result-v2-spinner {
  width: 48px;
  height: 48px;
  margin: 0 auto;
  border-radius: 999px;
  border: 4px solid rgba(124, 58, 237, 0.18);
  border-top-color: #7c3aed;
  animation: bp-result-v2-spin 0.78s linear infinite;
}

@keyframes bp-result-v2-spin {
  to {
    transform: rotate(360deg);
  }
}

.bp-result-v2-loading-active {
  cursor: wait;
}
/* BP_RESULT_V2_LOADING_END */

/* BP_MOBILE_NAV_ANIMATION_RESTORE_START */
@media (max-width: 820px) {
  body.bp-platform .bp-site-header {
    overflow: visible;
  }

  body.bp-platform .bp-header-inner {
    position: relative;
  }

  body.bp-platform .bp-site-header .bp-mobile-nav-target {
    display: flex;
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    transform: translateY(-12px) scale(0.985);
    transform-origin: top center;
    transition:
      opacity 0.22s ease,
      transform 0.22s cubic-bezier(0.2, 0.8, 0.2, 1),
      visibility 0s linear 0.22s;
    will-change: opacity, transform;
  }

  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target {
    display: flex;
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0) scale(1);
    transition:
      opacity 0.22s ease,
      transform 0.22s cubic-bezier(0.2, 0.8, 0.2, 1),
      visibility 0s linear 0s;
  }

  body.bp-platform .bp-site-header .bp-mobile-nav-target a,
  body.bp-platform .bp-site-header .bp-mobile-nav-target button {
    opacity: 0;
    transform: translateY(-5px);
    transition:
      opacity 0.18s ease,
      transform 0.18s ease,
      background 0.16s ease,
      box-shadow 0.16s ease,
      border-color 0.16s ease;
  }

  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target a,
  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target button {
    opacity: 1;
    transform: translateY(0);
  }

  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target a:nth-child(1),
  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target button:nth-child(1) {
    transition-delay: 0.03s;
  }

  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target a:nth-child(2),
  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target button:nth-child(2) {
    transition-delay: 0.06s;
  }

  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target a:nth-child(3),
  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target button:nth-child(3) {
    transition-delay: 0.09s;
  }

  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target a:nth-child(4),
  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target button:nth-child(4) {
    transition-delay: 0.12s;
  }

  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target a:nth-child(5),
  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target button:nth-child(5) {
    transition-delay: 0.15s;
  }

  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target a:nth-child(6),
  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target button:nth-child(6) {
    transition-delay: 0.18s;
  }

  body:not(.bp-mobile-nav-open).bp-platform .bp-site-header .bp-mobile-nav-target a,
  body:not(.bp-mobile-nav-open).bp-platform .bp-site-header .bp-mobile-nav-target button {
    transition-delay: 0s;
  }

  body.bp-platform .bp-mobile-menu-toggle-fixed {
    transition:
      transform 0.18s ease,
      box-shadow 0.18s ease,
      background 0.18s ease,
      border-color 0.18s ease;
  }

  body.bp-platform .bp-mobile-menu-toggle-fixed:active {
    transform: scale(0.96);
  }
}

@media (prefers-reduced-motion: reduce) {
  body.bp-platform .bp-site-header .bp-mobile-nav-target,
  body.bp-platform .bp-site-header .bp-mobile-nav-target a,
  body.bp-platform .bp-site-header .bp-mobile-nav-target button,
  body.bp-platform .bp-mobile-menu-toggle-fixed,
  body.bp-platform .bp-mobile-menu-toggle-fixed span {
    transition: none;
    animation: none;
  }
}
/* BP_MOBILE_NAV_ANIMATION_RESTORE_END */

/* BP_MOBILE_LAYOUT_FINAL_POLISH_START */
@media (max-width: 820px) {
  :root {
    --bp-mobile-gutter: 14px;
  }

  body.bp-platform {
    overflow-x: hidden;
  }

  body.bp-platform .bp-container {
    width: calc(100% - 28px);
    max-width: none;
    margin-left: auto;
    margin-right: auto;
  }

  body.bp-platform .bp-shell {
    padding: 18px 0 30px;
  }

  body.bp-platform .bp-site-header {
    overflow: visible;
  }

  body.bp-platform .bp-header-inner {
    position: relative;
    min-height: 58px;
    padding-top: 7px;
    padding-bottom: 7px;
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    gap: 10px;
  }

  body.bp-platform .bp-brand {
    min-height: 40px;
    max-width: calc(100% - 56px);
    font-size: 1.06rem;
    line-height: 1.15;
  }

  body.bp-platform .bp-brand-mark {
    width: 10px;
    height: 10px;
    box-shadow: 0 0 0 5px rgba(91,73,246,.10);
  }

  body.bp-platform .bp-mobile-menu-toggle-fixed {
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
    margin-left: auto;
    display: inline-flex;
    position: relative;
    z-index: 1202;
    transition:
      transform .18s ease,
      box-shadow .18s ease,
      background .18s ease,
      border-color .18s ease;
  }

  body.bp-platform .bp-mobile-menu-toggle-fixed:active {
    transform: scale(.96);
  }

  body.bp-platform .bp-site-header .bp-mobile-nav-target {
    position: absolute;
    top: calc(100% + 8px);
    left: var(--bp-mobile-gutter);
    right: var(--bp-mobile-gutter);
    z-index: 1201;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    width: auto;
    max-height: calc(100dvh - 82px);
    padding: 10px;
    overflow-y: auto;
    border: 1px solid rgba(91,73,246,.16);
    border-radius: 20px;
    background: rgba(255,255,255,.98);
    box-shadow: 0 5px 5px rgba(15,23,42,.18);
    backdrop-filter: blur(12px);
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    transform: translateY(-10px) scale(.985);
    transform-origin: top center;
    transition:
      opacity .22s ease,
      transform .22s cubic-bezier(.2,.8,.2,1),
      visibility 0s linear .22s;
    will-change: opacity, transform;
  }

  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0) scale(1);
    transition:
      opacity .22s ease,
      transform .22s cubic-bezier(.2,.8,.2,1),
      visibility 0s linear 0s;
  }

  body.bp-platform .bp-site-header .bp-mobile-nav-target a,
  body.bp-platform .bp-site-header .bp-mobile-nav-target button,
  body.bp-platform .bp-site-header .bp-mobile-nav-target .bp-btn {
    width: 100%;
    min-height: 42px;
    padding: 10px 8px;
    border-radius: 13px;
    justify-content: center;
    font-size: .9rem;
    line-height: 1.15;
    white-space: nowrap;
    opacity: 0;
    transform: translateY(-5px);
    transition:
      opacity .18s ease,
      transform .18s ease,
      background .16s ease,
      box-shadow .16s ease,
      border-color .16s ease;
  }

  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target a,
  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target button,
  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target .bp-btn {
    opacity: 1;
    transform: translateY(0);
  }

  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target .bp-btn:nth-child(1) { transition-delay: .03s; }
  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target .bp-btn:nth-child(2) { transition-delay: .06s; }
  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target .bp-btn:nth-child(3) { transition-delay: .09s; }
  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target .bp-btn:nth-child(4) { transition-delay: .12s; }
  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target .bp-btn:nth-child(5) { transition-delay: .15s; }
  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target .bp-btn:nth-child(6) { transition-delay: .18s; }

  body.bp-platform .bp-page-title {
    margin-bottom: 8px;
    font-size: 1.55rem;
    line-height: 1.25;
    letter-spacing: -.045em;
  }

  body.bp-platform .bp-page-desc {
    margin: 0 0 16px;
    font-size: .92rem;
    line-height: 1.62;
  }

  body.bp-platform .bp-section {
    margin-top: 18px;
  }

  body.bp-platform .bp-section-title {
    margin-bottom: 10px;
    font-size: 1.18rem;
  }

  body.bp-platform .bp-card {
    border-radius: 20px;
  }

  body.bp-platform .bp-card-header {
    padding: 13px 14px;
    gap: 8px;
  }

  body.bp-platform .bp-card-title {
    font-size: 1rem;
  }

  body.bp-platform .bp-card-body {
    padding: 14px;
  }

  body.bp-platform .bp-grid-main,
  body.bp-platform .bp-grid-2,
  body.bp-platform .bp-grid-3 {
    grid-template-columns: 1fr;
    gap: 14px;
  }

  body.bp-platform .bp-grid-4 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  body.bp-platform .bp-kpi {
    padding: 15px 14px;
    border-radius: 18px;
  }

  body.bp-platform .bp-kpi small {
    margin-bottom: 5px;
    font-size: .82rem;
  }

  body.bp-platform .bp-kpi strong {
    font-size: 1.28rem;
    line-height: 1.22;
  }

  body.bp-platform .bp-kpi span {
    font-size: .82rem;
    line-height: 1.35;
  }

  body[data-bp-diagnosis-result-v2] .bp-result-score {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  body[data-bp-diagnosis-result-v2] .bp-big-score {
    min-height: 132px;
    padding: 20px;
    border-radius: 22px;
  }

  body[data-bp-diagnosis-result-v2] .bp-big-score strong {
    font-size: 3.25rem;
  }

  body[data-bp-diagnosis-result-v2] .bp-callout {
    padding: 14px;
    border-radius: 16px;
    line-height: 1.58;
  }

  body[data-bp-diagnosis-result-v2] #bpDataStatus,
  body[data-bp-diagnosis-result-v2] #bp-data-status {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin-top: 10px;
  }

  body[data-bp-diagnosis-result-v2] .bp-result-nearby-shell {
    padding: 0;
  }

  body[data-bp-diagnosis-result-v2] .bp-result-nearby-shell .bp-card-body,
  body[data-bp-diagnosis-result-v2] .bp-result-nearby-shell .bp-grid-2 {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  body[data-bp-diagnosis-result-v2] .bp-result-nearby-map,
  body[data-bp-diagnosis-result-v2] #bpNearbyMap {
    min-height: 260px;
    height: 260px;
    max-height: 280px;
    border-radius: 16px;
  }

  body[data-bp-diagnosis-result-v2] .bp-result-nearby-marker-list,
  body[data-bp-diagnosis-result-v2] #bpNearbyMarkerList {
    max-height: 260px;
  }

  body[data-bp-diagnosis-result-v2] .bp-result-nearby-helper,
  body[data-bp-diagnosis-result-v2] .bp-map-help {
    font-size: .82rem;
    line-height: 1.45;
  }

  body[data-bp-diagnosis-result-v2] .bp-map-legend,
  body[data-bp-diagnosis-result-v2] .bp-result-nearby-legend {
    gap: 7px;
    font-size: .78rem;
    line-height: 1.35;
  }

  body[data-bp-diagnosis-result-v2] .bp-chart-card,
  body[data-bp-diagnosis-result-v2] .bp-ai-echarts-card {
    min-height: auto;
  }

  body[data-bp-diagnosis-result-v2] canvas,
  body[data-bp-diagnosis-result-v2] svg {
    max-width: 100%;
  }

  body[data-bp-diagnosis-result-v2] .bp-metric {
    grid-template-columns: 44px 1fr 32px;
    gap: 7px;
    margin-bottom: 9px;
    font-size: .82rem;
  }

  body[data-bp-diagnosis-result-v2] .bp-footer,
  body.bp-platform .bp-footer {
    margin-top: 30px;
    padding: 16px 0;
    font-size: .78rem;
    line-height: 1.55;
  }

  .leaflet-popup-content {
    max-width: 220px;
    font-size: 12px;
    line-height: 1.35;
  }
}

@media (max-width: 380px) {
  body.bp-platform .bp-container {
    width: calc(100% - 20px);
  }

  body.bp-platform .bp-site-header .bp-mobile-nav-target {
    left: 10px;
    right: 10px;
    grid-template-columns: 1fr;
  }

  body[data-bp-diagnosis-result-v2] #bpDataStatus,
  body[data-bp-diagnosis-result-v2] #bp-data-status,
  body.bp-platform .bp-grid-4 {
    grid-template-columns: 1fr;
  }

  body[data-bp-diagnosis-result-v2] .bp-result-nearby-map,
  body[data-bp-diagnosis-result-v2] #bpNearbyMap {
    min-height: 230px;
    height: 230px;
  }
}

@media (prefers-reduced-motion: reduce) {
  body.bp-platform .bp-site-header .bp-mobile-nav-target,
  body.bp-platform .bp-site-header .bp-mobile-nav-target a,
  body.bp-platform .bp-site-header .bp-mobile-nav-target button,
  body.bp-platform .bp-site-header .bp-mobile-nav-target .bp-btn,
  body.bp-platform .bp-mobile-menu-toggle-fixed,
  body.bp-platform .bp-mobile-menu-toggle-fixed span {
    transition: none;
    animation: none;
  }
}
/* BP_MOBILE_LAYOUT_FINAL_POLISH_END */

/* BP_MOBILE_HEADER_ONE_LINE_FINAL_START */
@media (max-width: 820px) {
  body.bp-platform .bp-site-header,
  body.bp-platform header,
  body.bp-platform .bp-header,
  body.bp-platform .bp-topbar,
  body.bp-platform .bp-shell-header {
    position: sticky;
    top: 0;
    z-index: 1190;
    overflow: visible;
  }

  body.bp-platform .bp-site-header .bp-container {
    width: calc(100% - 24px);
    max-width: none;
    margin-left: auto;
    margin-right: auto;
    padding-left: 0;
    padding-right: 0;
  }

  body.bp-platform .bp-header-inner {
    position: relative;
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-height: 56px;
    padding-top: 7px;
    padding-bottom: 7px;
  }

  body.bp-platform .bp-brand {
    flex: 1 1 auto;
    min-width: 0;
    max-width: calc(100% - 54px);
    min-height: 38px;
    display: inline-flex;
    align-items: center;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-size: 1.05rem;
    line-height: 1.1;
  }

  body.bp-platform .bp-brand span,
  body.bp-platform .bp-brand strong {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }

  body.bp-platform .bp-brand-mark {
    flex: 0 0 auto;
    width: 10px;
    height: 10px;
    box-shadow: 0 0 0 5px rgba(91, 73, 246, .10);
  }

  body.bp-platform .bp-mobile-menu-toggle-fixed {
    position: relative;
    inset: auto;
    flex: 0 0 42px;
    width: 42px;
    height: 42px;
    margin: 0 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 5px;
    border-radius: 14px;
    z-index: 1202;
    transform: none;
  }

  body.bp-platform .bp-mobile-menu-toggle-fixed:active {
    transform: scale(.96);
  }

  body.bp-platform .bp-site-header .bp-mobile-nav-target {
    position: absolute;
    top: calc(100% + 8px);
    left: 0;
    right: 0;
    z-index: 1201;
    width: 100%;
    max-height: calc(100dvh - 76px);
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 10px;
    overflow-y: auto;
    border: 1px solid rgba(109, 74, 255, .16);
    border-radius: 20px;
    background: rgba(255, 255, 255, .98);
    box-shadow: 0 5px 5px rgba(15, 23, 42, .18);
    backdrop-filter: blur(12px);
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    transform: translateY(-8px) scale(.985);
    transform-origin: top center;
    transition:
      opacity .2s ease,
      transform .2s cubic-bezier(.2,.8,.2,1),
      visibility 0s linear .2s;
  }

  body.bp-mobile-nav-open.bp-platform .bp-site-header .bp-mobile-nav-target {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0) scale(1);
    transition:
      opacity .2s ease,
      transform .2s cubic-bezier(.2,.8,.2,1),
      visibility 0s linear 0s;
  }

  body.bp-platform .bp-site-header .bp-mobile-nav-target a,
  body.bp-platform .bp-site-header .bp-mobile-nav-target button,
  body.bp-platform .bp-site-header .bp-mobile-nav-target .bp-btn {
    width: 100%;
    min-height: 42px;
    padding: 10px 12px;
    justify-content: center;
    border-radius: 13px;
    font-size: .92rem;
    line-height: 1.1;
    white-space: nowrap;
  }

  body.bp-platform .bp-shell {
    padding-top: 16px;
  }

  body.bp-platform .bp-container {
    width: calc(100% - 24px);
    max-width: none;
    margin-left: auto;
    margin-right: auto;
  }
}

@media (max-width: 420px) {
  body.bp-platform .bp-site-header .bp-container,
  body.bp-platform .bp-container {
    width: calc(100% - 20px);
  }

  body.bp-platform .bp-header-inner {
    min-height: 54px;
  }

  body.bp-platform .bp-brand {
    max-width: calc(100% - 50px);
    font-size: 1rem;
  }

  body.bp-platform .bp-mobile-menu-toggle-fixed {
    flex-basis: 40px;
    width: 40px;
    height: 40px;
  }
}
/* BP_MOBILE_HEADER_ONE_LINE_FINAL_END */
