/* ==========================================================================
   바이오 키트 — Elementor 무료판에 없는 것만 담는다. 색·글꼴·여백은 위젯 Style 탭에서.
   ========================================================================== */
:root {
	--bk-ink: #0B1A2B;
	--bk-ink-2: #3A4A5C;
	--bk-mute: #5B6B7C;
	--bk-line: #DCE5EA;
	--bk-paper: #F4F8F8;
	--bk-night: #071526;
	--bk-teal: #12B5A4;      /* 그래픽·큰 글자 전용 */
	--bk-teal-dk: #0A6B62;   /* 흰 바탕 작은 글자 (6.4:1) */
	--bk-violet: #7B61FF;    /* 그래픽 전용 */
	--bk-violet-dk: #5243C9; /* 흰 바탕 작은 글자 (7.0:1) */
	--bk-blue: #3E8EF0;
	--bk-grad: linear-gradient(120deg, #12B5A4 0%, #3E8EF0 55%, #7B61FF 100%);
	--bk-grad-text: linear-gradient(110deg, #0A6B62 0%, #1F5FBF 50%, #5243C9 100%);
	--bk-grad-text-dark: linear-gradient(110deg, #5EEAD4 0%, #8EC5FF 50%, #B5A8FF 100%);
	--bk-ease: cubic-bezier(.22, 1, .36, 1);
	--bk-hh: 104px;          /* 떠 있는 헤더가 차지하는 높이 */
}
@media (max-width: 1024px) { :root { --bk-hh: 84px; } }

/* ---- 한글 줄바꿈: 단어 중간에서 끊지 않는다 (Elementor 에 컨트롤이 없는 CJK 속성) ---- */
.elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor,
.elementor-widget-image-box .elementor-image-box-title,
.elementor-widget-image-box .elementor-image-box-description,
.elementor-widget-icon-box .elementor-icon-box-title,
.elementor-widget-icon-box .elementor-icon-box-description,
.elementor-widget-icon-list .elementor-icon-list-text,
.elementor-widget-button .elementor-button-text,
.elementor-tab-title, .elementor-tab-content,
.e-n-accordion-item-title-text, .e-n-tab-title-text,
.bk-st, .bk-pl, .bk-hs__tip, .bk-hs__list, .bk-pub, .bk-lt {
	word-break: keep-all;
	overflow-wrap: break-word;
}
.elementor-widget-button .elementor-button { white-space: nowrap; }
/* 링크 걸린 이미지: Elementor 기본 <a> 가 inline-block 이라 고정 높이 사진이 원본 비율 폭으로 줄어든다 (73661 실측) */
.elementor-widget-image a { display: block; }
.elementor-counter-number-wrapper, .bk-num { font-variant-numeric: tabular-nums; }
/* 숫자와 단위('억 원')가 두 줄로 갈라지지 않게 */
.elementor-counter-number-wrapper { white-space: nowrap; }
/* 숫자 옆 작은 단위 (제목 위젯 안 <span class="bk-unit">) */
.bk-unit { font-size: .5em; font-weight: 500; margin-left: 2px; letter-spacing: 0; }

.screen-reader-text {
	position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden;
	clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

/* ==========================================================================
   헤더 — 화면 위에 떠 있는 유리 알약. 고정은 컨테이너 컨트롤(position:fixed), 흐림·전환만 여기서.
   ========================================================================== */
.bk-header { pointer-events: none; }
.bk-header > .e-con-inner, .bk-header > .e-con { pointer-events: auto; }
.bk-glass {
	-webkit-backdrop-filter: blur(18px) saturate(1.5); backdrop-filter: blur(18px) saturate(1.5);
	transition: background-color .35s var(--bk-ease), box-shadow .35s var(--bk-ease), padding .35s var(--bk-ease), transform .45s var(--bk-ease);
}
html.bk-scrolled .bk-glass { background-color: rgba(255, 255, 255, .9) !important; box-shadow: 0 1px 0 rgba(11, 26, 43, .04), 0 18px 44px rgba(11, 26, 43, .12) !important; }
body.admin-bar .bk-header { top: 32px !important; }
@media (max-width: 782px) { body.admin-bar .bk-header { top: 46px !important; } }
/* 헤더 메뉴: 배경 포인터를 알약 모양으로 (HFE 는 모서리 컨트롤이 없다) */
.bk-header .hfe-pointer__background .menu-item.parent a.hfe-menu-item:before { border-radius: 999px; }
/* HFE 드롭다운: 메뉴와 하위 메뉴 사이를 지나는 동안 닫히지 않게 (호버 브리지) */
.hfe-nav-menu .sub-menu::before { content: ""; position: absolute; left: 0; right: 0; top: -22px; height: 22px; }
/* 키보드 초점 */
.hfe-nav-menu a.hfe-menu-item:focus-visible,
.hfe-nav-menu a.hfe-sub-menu-item:focus-visible,
.elementor-button:focus-visible,
.bk-pl__chip:focus-visible, .bk-pub__chip:focus-visible, .bk-hs__pt:focus-visible, .bk-lt__row:focus-visible {
	outline: 2px solid var(--bk-teal-dk); outline-offset: 3px;
}

/* ==========================================================================
   공통 장식
   ========================================================================== */
/* 섹션 머리 칩 — 그라데이션 점 + 글자 (제목 위젯에 bk-chip) */
.bk-chip .elementor-heading-title {
	display: inline-flex; align-items: center; gap: 10px; padding: 7px 16px 7px 12px; border-radius: 999px;
	background: rgba(18, 181, 164, .09); border: 1px solid rgba(18, 181, 164, .28);
}
.bk-chip .elementor-heading-title::before {
	content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--bk-grad); box-shadow: 0 0 0 3px rgba(18, 181, 164, .16);
}
.bk-chip.is-dark .elementor-heading-title { background: rgba(94, 234, 212, .08); border-color: rgba(94, 234, 212, .28); }

/* 제목 안 <strong> = 굵은 그라데이션 강조 (제목 위젯에 bk-hl) — 글자 대비는 양 끝 색 기준 6.4:1 이상 */
.bk-hl .elementor-heading-title strong, .bk-hl .elementor-heading-title b {
	font-weight: 700; background: var(--bk-grad-text); -webkit-background-clip: text; background-clip: text; color: transparent;
	-webkit-box-decoration-break: clone; box-decoration-break: clone;
}
.bk-hl.is-dark .elementor-heading-title strong, .bk-hl.is-dark .elementor-heading-title b { background-image: var(--bk-grad-text-dark); }

/* 빛 번짐 배경 (컨테이너에 bk-aura / bk-aura-2 / bk-night) */
.bk-aura, .bk-aura-2, .bk-night { position: relative; isolation: isolate; }
.bk-aura::after, .bk-aura-2::after, .bk-night::after {
	content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
	border-radius: inherit; /* 둥근 카드 모서리 밖으로 번짐이 삐져나오지 않게(독립 검증 발견) */
}
.bk-aura::after {
	background:
		radial-gradient(42% 52% at 12% 18%, rgba(18, 181, 164, .16), transparent 70%),
		radial-gradient(38% 46% at 88% 22%, rgba(123, 97, 255, .14), transparent 70%),
		radial-gradient(46% 50% at 62% 96%, rgba(62, 142, 240, .10), transparent 70%);
}
.bk-aura-2::after {
	background:
		radial-gradient(40% 50% at 90% 10%, rgba(18, 181, 164, .12), transparent 70%),
		radial-gradient(36% 46% at 6% 88%, rgba(123, 97, 255, .10), transparent 70%);
}
.bk-night::after {
	background:
		radial-gradient(40% 55% at 8% 8%, rgba(18, 181, 164, .22), transparent 70%),
		radial-gradient(42% 60% at 96% 92%, rgba(123, 97, 255, .22), transparent 70%);
}
/* 세포 점무늬 (컨테이너에 bk-dots) — 배경 위 별도 층. 컨테이너 배경(background-image 그라데이션)을 덮어쓰면 안 된다(1.0.1 에서 남색 바탕이 지워졌다) */
.bk-dots { position: relative; isolation: isolate; }
.bk-dots::after {
	content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; border-radius: inherit;
	background-image: radial-gradient(rgba(11, 26, 43, .09) 1px, transparent 1.4px); background-size: 24px 24px;
}
.bk-dots.is-dark::after { background-image: radial-gradient(rgba(234, 243, 246, .07) 1px, transparent 1.4px); }
.bk-night.bk-dots::after {
	background-image:
		radial-gradient(40% 55% at 8% 8%, rgba(18, 181, 164, .22), transparent 70%),
		radial-gradient(42% 60% at 96% 92%, rgba(123, 97, 255, .22), transparent 70%),
		radial-gradient(rgba(234, 243, 246, .07) 1px, transparent 1.4px);
	background-size: auto, auto, 24px 24px;
}

/* 유리 흐림 (컨테이너에 bk-blur — 바탕색·테두리·그림자는 컨테이너 컨트롤) */
.bk-blur { -webkit-backdrop-filter: blur(16px) saturate(1.4); backdrop-filter: blur(16px) saturate(1.4); }

/* 카드: 호버하면 살짝 뜨고 그라데이션 테두리가 켜진다 (컨테이너에 bk-card) */
.bk-card { position: relative; transition: transform .5s var(--bk-ease), box-shadow .5s var(--bk-ease); }
.bk-card::before {
	content: ""; position: absolute; inset: 0; border-radius: inherit; padding: 1.5px; pointer-events: none; z-index: 2;
	background: var(--bk-grad); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
	-webkit-mask-composite: xor; mask-composite: exclude; opacity: 0; transition: opacity .45s var(--bk-ease);
}
.bk-card:hover { transform: translateY(-6px); box-shadow: 0 26px 60px rgba(11, 26, 43, .12); }
.bk-card:hover::before, .bk-card:focus-within::before { opacity: 1; }
a.bk-card { text-decoration: none; }
@media (prefers-reduced-motion: reduce) { .bk-card, .bk-card:hover { transform: none; } }

/* 사진 둥근 모서리 안에서 호버 확대 (카드 컨테이너에 bk-zoom) */
.bk-zoom .elementor-widget-image .elementor-widget-container { overflow: hidden; border-radius: inherit; }
.bk-zoom img { transition: transform 1s var(--bk-ease); }
.bk-zoom:hover img { transform: scale(1.05); }

/* 초점 리빌 — 현미경 초점이 맞듯 흐릿함이 걷히며 나타난다 (이미지 위젯에 bk-focus) */
.bk-focus .elementor-widget-container { overflow: hidden; }
html.bk-js .bk-focus img { filter: blur(16px) saturate(.6); transform: scale(1.08); opacity: .35; transition: filter 1.4s var(--bk-ease), transform 1.8s var(--bk-ease), opacity 1s var(--bk-ease); }
html.bk-js .bk-focus.is-in img { filter: none; transform: none; opacity: 1; }
.elementor-editor-active .bk-focus img { filter: none !important; transform: none !important; opacity: 1 !important; }
@media (prefers-reduced-motion: reduce) { html.bk-js .bk-focus img { filter: none; transform: none; opacity: 1; transition: none; } }

/* 데스크톱에서 왼쪽 제목 고정 (오른쪽 목록이 길 때) */
@media (min-width: 1025px) { .bk-sticky { position: sticky; top: calc(var(--bk-hh) + 16px); align-self: flex-start; } }

/* 모바일 가로 스냅 줄 */
@media (max-width: 767px) {
	.bk-snap > .e-con-inner, .bk-snap.e-con-full {
		flex-wrap: nowrap !important; overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch;
		scrollbar-width: none; padding-bottom: 8px;
	}
	.bk-snap > .e-con-inner::-webkit-scrollbar, .bk-snap.e-con-full::-webkit-scrollbar { display: none; }
	.bk-snap > .e-con-inner > .e-con, .bk-snap.e-con-full > .e-con { flex: 0 0 84% !important; max-width: 84% !important; scroll-snap-align: start; }
}

/* 모바일 하단 고정 문의 바 (푸터 템플릿의 bk-mbar 컨테이너 — 위치·색·버튼은 Elementor 컨트롤, 여기서는 본문 아래 여백·맨위로 버튼 위치만) */
@media (max-width: 767px) {
	body:has(.bk-mbar) { padding-bottom: calc(66px + env(safe-area-inset-bottom, 0px)); }
	body:has(.bk-mbar) .hfe-scroll-to-top-button { bottom: 82px !important; }
	/* mobileN 백링크(mu-plugin, 인라인 bottom:8px)가 문의 바를 덮지 않게 바 위로 (10-16) */
	body:has(.bk-mbar) #mn-backlink { bottom: calc(71px + env(safe-area-inset-bottom, 0px)) !important; }
	.bk-mbar { padding-bottom: env(safe-area-inset-bottom, 0px) !important; }
	.bk-mbar a.e-con:focus-visible { outline: 2px solid #fff; outline-offset: -4px; }
}

/* 서브 페이지 형제 탭 — 알약 줄 (모바일은 가로로 넘긴다) */
.bk-tabs .elementor-button { transition: background-color .3s, color .3s, box-shadow .3s; }
@media (max-width: 767px) {
	.bk-tabs { flex-wrap: nowrap !important; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
	.bk-tabs::-webkit-scrollbar { display: none; }
	.bk-tabs > .elementor-element { flex: 0 0 auto; }
}
.bk-crumb-now { color: var(--bk-ink); font-weight: 600; }

/* 숫자 카드의 그라데이션 숫자 (카운터 위젯에 bk-gnum) */
.bk-gnum .elementor-counter-number-wrapper { background: var(--bk-grad-text); -webkit-background-clip: text; background-clip: text; color: transparent !important; }
.bk-gnum.is-dark .elementor-counter-number-wrapper { background-image: var(--bk-grad-text-dark); }

/* 이미지 박스 제목 안 직함 (<span class="bk-role">) */
.bk-role { display: block; margin-top: 6px; font-size: 14px; font-weight: 500; letter-spacing: 0; color: var(--bk-teal-dk); }
/* 지도 둥근 모서리 (구글 지도 위젯에 bk-map — 위젯 반경만으로는 iframe 모서리가 안 잘린다) */
.bk-map .elementor-widget-container { overflow: hidden; border-radius: 28px; }
.bk-map iframe { display: block; }

/* 표 — 텍스트 편집기 위젯 안 HTML 표 (위젯에 bk-table). Elementor 무료판에는 표 위젯이 없다 */
.bk-table { overflow-x: auto; }
.bk-table table { width: 100%; border-collapse: collapse; font-size: 15px; line-height: 1.6; margin: 0; border: 0; }
/* Hello 테마 기본 table 규칙(셀 사방 1px 테두리 · 홀수 행 줄무늬 · 셀 여백 15px)이 남아 글자가 세로선에 붙었다(독립 검증 발견) → 지운다 */
.bk-table table th, .bk-table table td { border: 0; }
.bk-table table tbody > tr > td, .bk-table table tbody > tr > th { background-color: transparent; }
.bk-table table thead th { text-align: left; padding: 0 16px 12px 0; font-size: 13px; font-weight: 700; letter-spacing: .04em; color: var(--bk-mute); border-bottom: 2px solid var(--bk-ink); vertical-align: bottom; }
.bk-table table tbody th, .bk-table table tbody td { padding: 15px 16px 15px 0; border-bottom: 1px solid var(--bk-line); vertical-align: top; text-align: left; }
.bk-table tbody th { font-weight: 600; color: var(--bk-ink); }
.bk-table td { color: var(--bk-ink-2); font-variant-numeric: tabular-nums; }
.bk-table table .is-num { text-align: right; padding-right: 0; padding-left: 16px; }
.bk-table table tbody > tr.is-hl > th, .bk-table table tbody > tr.is-hl > td { background-color: #F1FAF8; }
.bk-table table tbody > tr.is-hl > th { box-shadow: inset 3px 0 0 var(--bk-teal); padding-left: 12px; }
@media (max-width: 767px) { .bk-table table { font-size: 14px; } .bk-table table tbody th, .bk-table table tbody td { padding: 12px 12px 12px 0; } .bk-table table .is-num { padding-left: 10px; } }

/* ==========================================================================
   위젯
   ========================================================================== */

/* DNA 나선 */
.bk-helix { position: relative; width: 100%; height: 620px;
	/* 나선이 캔버스 위·아래 경계에서 잘려 보이지 않게 끝을 흐린다 */
	-webkit-mask-image: linear-gradient(180deg, transparent 0, #000 16%, #000 84%, transparent 100%);
	mask-image: linear-gradient(180deg, transparent 0, #000 16%, #000 84%, transparent 100%); }
.bk-helix__cv { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }

/* 스크롤 하이라이트 문장 */
.bk-st { --bk-st-dim: rgba(11, 26, 43, .16); --bk-st-lit: var(--bk-ink); margin: 0; color: var(--bk-st-lit); }
.bk-st__w { transition: color .35s var(--bk-ease); }
.bk-st__w.is-acc { background: var(--bk-grad-text); -webkit-background-clip: text; background-clip: text; color: transparent; font-weight: 700; }
html.bk-js .bk-st__w { color: var(--bk-st-dim); }
html.bk-js .bk-st__w.is-acc { opacity: .32; transition: opacity .35s var(--bk-ease); color: transparent; }
html.bk-js .bk-st__w.is-lit { color: var(--bk-st-lit); }
html.bk-js .bk-st__w.is-acc.is-lit { opacity: 1; color: transparent; }
.elementor-editor-active .bk-st__w { color: var(--bk-st-lit) !important; opacity: 1 !important; }
.elementor-editor-active .bk-st__w.is-acc { color: transparent !important; }
@media (prefers-reduced-motion: reduce) {
	html.bk-js .bk-st__w { color: var(--bk-st-lit); }
	html.bk-js .bk-st__w.is-acc { opacity: 1; color: transparent; }
}

/* 파이프라인 차트 */
.bk-pl {
	--bk-pl-a: #12B5A4; --bk-pl-b: #7B61FF; --bk-pl-line: var(--bk-line); --bk-pl-text: var(--bk-ink); --bk-pl-sub: var(--bk-mute);
	--bk-pl-track: rgba(11, 26, 43, .04); --bk-pl-chip: rgba(11, 26, 43, .05);
	color: var(--bk-pl-text);
}
.bk-pl.is-dark { --bk-pl-line: rgba(234, 243, 246, .14); --bk-pl-text: #EAF3F6; --bk-pl-sub: rgba(234, 243, 246, .72); --bk-pl-track: rgba(234, 243, 246, .05); --bk-pl-chip: rgba(234, 243, 246, .08); }
.bk-pl__filters { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 28px; }
/* Elementor 킷 버튼 규칙(.elementor-kit-N button, 0,1,1)이 모든 <button> 에 남색 배경·여백을 입힌다 → 위젯 범위 클래스를 붙여 (0,2,0) 이상으로 */
.bk-pl .bk-pl__chip, .bk-pl .bk-pl__chip:focus {
	appearance: none; border: 1px solid var(--bk-pl-line); background: var(--bk-pl-chip); color: var(--bk-pl-text); border-radius: 999px;
	padding: 9px 18px; font-family: inherit; font-size: 14px; font-weight: 600; letter-spacing: 0; line-height: 1.4; cursor: pointer;
	transition: background-color .25s, color .25s, border-color .25s;
}
.bk-pl .bk-pl__chip:hover { border-color: var(--bk-pl-sub); background: var(--bk-pl-chip); color: var(--bk-pl-text); }
.bk-pl .bk-pl__chip.is-on, .bk-pl .bk-pl__chip.is-on:hover, .bk-pl .bk-pl__chip.is-on:focus { background: var(--bk-pl-text); color: #fff; border-color: var(--bk-pl-text); }
.bk-pl.is-dark .bk-pl__chip.is-on, .bk-pl.is-dark .bk-pl__chip.is-on:hover, .bk-pl.is-dark .bk-pl__chip.is-on:focus { color: var(--bk-night); }
.bk-pl__head, .bk-pl__row { display: grid; grid-template-columns: 230px 190px minmax(0, 1fr); align-items: center; gap: 0 24px; }
.bk-pl__head { padding: 0 0 14px; border-bottom: 1px solid var(--bk-pl-line); font-size: 13px; font-weight: 700; letter-spacing: .04em; color: var(--bk-pl-sub); }
.bk-pl__stages { display: grid; grid-template-columns: repeat(var(--n), minmax(0, 1fr)); }
.bk-pl__stages span { padding-left: 10px; border-left: 1px solid var(--bk-pl-line); }
.bk-pl__rows { list-style: none; margin: 0; padding: 0; }
.bk-pl__row { padding: 22px 0; border-bottom: 1px solid var(--bk-pl-line); }
.bk-pl__row[hidden] { display: none; }
.bk-pl__prog { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
/* 사이트 링크색(.elementor-kit-N a, 0,1,1)보다 우선해야 어두운 바탕에서도 보인다 */
.bk-pl .bk-pl__code { font-size: 18px; font-weight: 700; letter-spacing: -.01em; color: var(--bk-pl-text); text-decoration: none; font-variant-numeric: tabular-nums; }
.bk-pl a.bk-pl__code:hover { color: var(--bk-pl-b); }
.bk-pl__name { font-size: 14px; color: var(--bk-pl-sub); }
.bk-pl__ind { font-size: 15px; font-weight: 500; line-height: 1.5; color: var(--bk-pl-text); }
.bk-pl__lane { min-width: 0; }
.bk-pl__track {
	position: relative; height: 34px; border-radius: 999px; background: var(--bk-pl-track);
	background-image: linear-gradient(90deg, var(--bk-pl-line) 1px, transparent 1px); background-size: calc(100% / var(--n)) 100%;
}
.bk-pl__bar {
	position: absolute; left: 0; top: 0; bottom: 0; width: calc(var(--p) * 100%); min-width: 34px; border-radius: 999px;
	background: linear-gradient(90deg, var(--bk-pl-a), var(--bk-pl-b)); box-shadow: 0 6px 18px rgba(62, 142, 240, .22);
	display: flex; align-items: center; justify-content: flex-end;
}
html.bk-js .bk-pl .bk-pl__bar { transform: scaleX(0); transform-origin: left; transition: transform 1.4s var(--bk-ease); }
html.bk-js .bk-pl.is-in .bk-pl__bar { transform: none; }
.bk-pl__row:nth-child(2) .bk-pl__bar { transition-delay: .08s; }
.bk-pl__row:nth-child(3) .bk-pl__bar { transition-delay: .16s; }
.bk-pl__row:nth-child(4) .bk-pl__bar { transition-delay: .24s; }
.bk-pl__row:nth-child(5) .bk-pl__bar { transition-delay: .32s; }
.bk-pl__row:nth-child(n+6) .bk-pl__bar { transition-delay: .4s; }
.bk-pl__now { margin-right: 6px; padding: 5px 11px; border-radius: 999px; background: rgba(255, 255, 255, .94); color: #0B1A2B; font-size: 12px; font-weight: 700; white-space: nowrap; box-shadow: 0 2px 8px rgba(11, 26, 43, .12); }
/* 막대가 라벨보다 짧으면 라벨이 막대 왼쪽 밖·화면 끝으로 삐져나왔다(390, 독립 검증 발견) → 막대 끝 오른쪽 바깥에 */
.bk-pl__bar.is-out .bk-pl__now { position: absolute; left: 100%; top: 50%; transform: translateY(-50%); margin: 0 0 0 8px; }
.bk-pl__note { margin: 10px 0 0; font-size: 13px; line-height: 1.6; color: var(--bk-pl-sub); }
.elementor-editor-active .bk-pl .bk-pl__bar { transform: none !important; }
@media (prefers-reduced-motion: reduce) { html.bk-js .bk-pl .bk-pl__bar { transform: none; transition: none; } }
@media (max-width: 1024px) {
	.bk-pl__head, .bk-pl__row { grid-template-columns: 180px 150px minmax(0, 1fr); gap: 0 16px; }
}
@media (max-width: 767px) {
	.bk-pl__head { display: none; }
	.bk-pl__row { grid-template-columns: 1fr; gap: 6px; padding: 20px 0; }
	.bk-pl__prog { flex-direction: row; align-items: baseline; gap: 10px; flex-wrap: wrap; }
	.bk-pl__ind { font-size: 14px; color: var(--bk-pl-sub); }
	.bk-pl__track { height: 30px; margin-top: 6px; }
}

/* 핫스팟 이미지 */
.bk-hs { --bk-hs-dot: #0A6B62; --bk-hs-tip: #FFFFFF; position: relative; }
.bk-hs__stage { position: relative; }
.bk-hs__img { display: block; width: 100%; height: auto; }
.bk-hs .bk-hs__pt, .bk-hs .bk-hs__pt:focus {
	position: absolute; width: 40px; height: 40px; margin: -20px 0 0 -20px; padding: 0; border: 0; border-radius: 50%; cursor: pointer; z-index: 3;
	background: var(--bk-hs-dot); color: #fff; font-family: inherit; font-size: 14px; font-weight: 700; line-height: 1; display: grid; place-items: center;
	box-shadow: 0 0 0 6px rgba(18, 181, 164, .22), 0 8px 22px rgba(11, 26, 43, .2); transition: transform .3s var(--bk-ease), background-color .3s;
}
.bk-hs__pt::after { content: ""; position: absolute; inset: -6px; border-radius: 50%; border: 2px solid rgba(18, 181, 164, .5); animation: bk-pulse 2.4s var(--bk-ease) infinite; }
.bk-hs .bk-hs__pt:hover, .bk-hs .bk-hs__pt.is-on, .bk-hs .bk-hs__pt.is-on:focus { transform: scale(1.1); background: #5243C9; color: #fff; }
@keyframes bk-pulse { 0% { transform: scale(.85); opacity: .9; } 100% { transform: scale(1.6); opacity: 0; } }
.bk-hs__tip {
	position: absolute; z-index: 4; width: min(320px, 70%); margin: 0 0 0 30px; transform: translateY(-50%); padding: 18px 20px; border-radius: 18px;
	background: var(--bk-hs-tip); box-shadow: 0 24px 60px rgba(11, 26, 43, .18); border: 1px solid rgba(11, 26, 43, .06);
}
.bk-hs__tip.is-left { margin: 0 0 0 -30px; transform: translate(-100%, -50%); }
.bk-hs__tip.is-up { transform: translateY(-90%); }
.bk-hs__tip.is-left.is-up { transform: translate(-100%, -90%); }
.bk-hs__tip[hidden] { display: none; }
.bk-hs__tt { display: block; font-size: 17px; font-weight: 700; color: var(--bk-ink); margin-bottom: 6px; }
.bk-hs__td { display: block; font-size: 14px; line-height: 1.7; color: var(--bk-ink-2); }
.bk-hs__list { display: none; list-style: none; margin: 18px 0 0; padding: 0; }
.bk-hs__list li { display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 12px; padding: 14px 0; border-top: 1px solid var(--bk-line); }
.bk-hs__list .bk-hs__num { width: 28px; height: 28px; border-radius: 50%; background: var(--bk-hs-dot); color: #fff; font-size: 13px; font-weight: 700; display: grid; place-items: center; }
.bk-hs__list strong { font-size: 16px; color: var(--bk-ink); }
.bk-hs__list p { margin: 4px 0 0; font-size: 14px; line-height: 1.7; color: var(--bk-ink-2); }
@media (prefers-reduced-motion: reduce) { .bk-hs__pt::after { animation: none; } }
@media (max-width: 767px) {
	.bk-hs .bk-hs__pt, .bk-hs .bk-hs__pt:focus { width: 30px; height: 30px; margin: -15px 0 0 -15px; font-size: 12px; box-shadow: 0 0 0 4px rgba(18, 181, 164, .22); }
	.bk-hs__tip { display: none !important; }
	.bk-hs__list { display: block; }
}

/* 흐르는 띠 */
.bk-mq { --bk-mq-gap: 56px; --bk-mq-sep: var(--bk-teal); overflow: hidden; position: relative; }
.bk-mq::before, .bk-mq::after { content: ""; position: absolute; top: 0; bottom: 0; width: 80px; z-index: 2; pointer-events: none; }
.bk-mq::before { left: 0; background: linear-gradient(90deg, var(--bk-mq-fade, #fff), transparent); }
.bk-mq::after { right: 0; background: linear-gradient(270deg, var(--bk-mq-fade, #fff), transparent); }
.bk-mq__track { display: flex; width: max-content; animation: bk-mq var(--dur, 48s) linear infinite; }
.bk-mq.is-rev .bk-mq__track { animation-direction: reverse; }
.bk-mq:hover .bk-mq__track { animation-play-state: paused; }
.bk-mq__list { display: flex; align-items: center; gap: var(--bk-mq-gap); list-style: none; margin: 0; padding: 0 var(--bk-mq-gap) 0 0; }
.bk-mq__item { display: inline-flex; align-items: center; gap: var(--bk-mq-gap); white-space: nowrap; font-size: 20px; font-weight: 500; color: var(--bk-ink); }
.bk-mq__item::after { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--bk-mq-sep); flex: 0 0 auto; }
.bk-mq__img { height: 32px; width: auto; }
@keyframes bk-mq { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) {
	.bk-mq__track { animation: none; width: auto; }
	.bk-mq__list { flex-wrap: wrap; row-gap: 14px; }
	.bk-mq__list[aria-hidden="true"] { display: none; }
	.bk-mq__item { white-space: normal; }
	.bk-mq::before, .bk-mq::after { display: none; }
}

/* 논문·특허 목록 */
.bk-pub__bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 18px; }
.bk-pub__filters { display: flex; flex-wrap: wrap; gap: 8px; }
.bk-pub .bk-pub__chip, .bk-pub .bk-pub__chip:focus {
	appearance: none; border: 1px solid var(--bk-line); background: #fff; color: var(--bk-ink); border-radius: 999px; padding: 9px 16px;
	font-family: inherit; font-size: 14px; font-weight: 600; letter-spacing: 0; line-height: 1.4; cursor: pointer; transition: background-color .25s, color .25s, border-color .25s;
}
.bk-pub .bk-pub__chip:hover { background: #fff; color: var(--bk-ink); border-color: var(--bk-mute); }
.bk-pub .bk-pub__chip span { font-weight: 500; color: var(--bk-mute); margin-left: 2px; }
.bk-pub .bk-pub__chip.is-on, .bk-pub .bk-pub__chip.is-on:hover, .bk-pub .bk-pub__chip.is-on:focus { background: var(--bk-ink); border-color: var(--bk-ink); color: #fff; }
.bk-pub .bk-pub__chip.is-on span { color: rgba(255, 255, 255, .78); }
.bk-pub__search { flex: 0 1 320px; min-width: 220px; }
.bk-pub__q {
	width: 100%; box-sizing: border-box; padding: 12px 18px 12px 44px; border: 1px solid var(--bk-line); border-radius: 999px; font: inherit; font-size: 16px; color: var(--bk-ink);
	background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%235B6B7C' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='8' cy='8' r='6'/%3E%3Cpath d='m13 13 4 4'/%3E%3C/svg%3E") no-repeat 18px center;
}
.bk-pub__q:focus { outline: none; border-color: var(--bk-teal-dk); box-shadow: 0 0 0 4px rgba(18, 181, 164, .16); }
.bk-pub__count { margin: 0 0 6px; font-size: 14px; color: var(--bk-mute); }
.bk-pub__n { font-weight: 700; color: var(--bk-ink); font-variant-numeric: tabular-nums; }
.bk-pub__list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--bk-ink); }
.bk-pub__item { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 0 28px; padding: 22px 0; border-bottom: 1px solid var(--bk-line); }
.bk-pub__item[hidden] { display: none; }
.bk-pub__meta { display: flex; flex-direction: column; gap: 6px; align-items: flex-start; }
.bk-pub__type { padding: 4px 11px; border-radius: 999px; background: #E3F5F2; color: #0A6B62; font-size: 12px; font-weight: 700; }
.bk-pub__item[data-type="특허"] .bk-pub__type { background: #EFEDFD; color: #5243C9; }
.bk-pub__item[data-type="학회 발표"] .bk-pub__type { background: #E6F0FD; color: #1F5FBF; }
.bk-pub__year { font-size: 15px; font-weight: 700; color: var(--bk-ink); font-variant-numeric: tabular-nums; }
.bk-pub__title { margin: 0; font-size: 17px; font-weight: 600; line-height: 1.55; color: var(--bk-ink); }
.bk-pub__title a { color: inherit; text-decoration: none; }
.bk-pub__title a:hover { color: var(--bk-teal-dk); }
.bk-pub__src { margin: 6px 0 0; font-size: 14px; font-style: italic; color: var(--bk-ink-2); }
.bk-pub__au { margin: 4px 0 0; font-size: 13px; color: var(--bk-mute); }
.bk-pub__empty { margin: 0; padding: 28px 0; color: var(--bk-mute); }
@media (max-width: 767px) {
	.bk-pub__search { flex: 1 1 100%; }
	.bk-pub__item { grid-template-columns: 1fr; gap: 8px; }
	.bk-pub__meta { flex-direction: row; align-items: center; }
}

/* 막대 차트 */
.bk-bc { --bk-bc-h: 300px; --bk-bc-1a: #12B5A4; --bk-bc-1b: #3E8EF0; --bk-bc-2: #B5A8FF; margin: 0; }
.bk-bc__cap { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 6px 16px; margin-bottom: 10px; }
.bk-bc__title { font-size: 18px; font-weight: 700; color: var(--bk-ink); }
.bk-bc__unit { font-size: 13px; color: var(--bk-mute); }
.bk-bc__legend { display: flex; gap: 18px; margin-bottom: 18px; font-size: 13px; color: var(--bk-ink-2); }
.bk-bc__legend span::before { content: ""; display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin-right: 7px; vertical-align: -1px; }
.bk-bc__legend .is-s1::before { background: linear-gradient(180deg, var(--bk-bc-1b), var(--bk-bc-1a)); }
.bk-bc__legend .is-s2::before { background: var(--bk-bc-2); }
.bk-bc__plot { position: relative; height: var(--bk-bc-h); padding-top: 28px; box-sizing: content-box; }
.bk-bc__grid { position: absolute; inset: 28px 0 30px; display: flex; flex-direction: column; justify-content: space-between; pointer-events: none; }
.bk-bc__grid i { display: block; height: 1px; background: var(--bk-line); }
.bk-bc__cols { position: relative; display: flex; align-items: flex-end; justify-content: space-around; gap: 10px; height: 100%; }
.bk-bc__col { flex: 1 1 0; display: flex; flex-direction: column; align-items: center; height: 100%; justify-content: flex-end; }
.bk-bc__bars { display: flex; align-items: flex-end; justify-content: center; gap: 6px; width: 100%; height: calc(100% - 30px); }
.bk-bc__bar { position: relative; width: min(46px, 40%); height: calc(var(--v) * 100%); min-height: 2px; border-radius: 10px 10px 4px 4px; background: linear-gradient(180deg, var(--bk-bc-1b), var(--bk-bc-1a)); }
.bk-bc__plot:not(.is-two) .bk-bc__bar { width: min(64px, 56%); }
.bk-bc__bar.is-s2 { background: var(--bk-bc-2); }
.bk-bc__col:not(.is-hl) .bk-bc__bar.is-s1 { opacity: .55; }
.bk-bc__bar em { position: absolute; left: 50%; bottom: 100%; transform: translate(-50%, -6px); font-style: normal; font-size: 13px; font-weight: 700; color: var(--bk-ink); white-space: nowrap; font-variant-numeric: tabular-nums; }
.bk-bc__x { height: 30px; display: flex; align-items: flex-end; font-size: 14px; font-weight: 600; color: var(--bk-ink-2); font-variant-numeric: tabular-nums; }
html.bk-js .bk-bc .bk-bc__bar { transform: scaleY(0); transform-origin: bottom; transition: transform 1.2s var(--bk-ease); }
html.bk-js .bk-bc.is-in .bk-bc__bar { transform: none; }
html.bk-js .bk-bc .bk-bc__bar em { opacity: 0; transition: opacity .5s .9s; }
html.bk-js .bk-bc.is-in .bk-bc__bar em { opacity: 1; }
.bk-bc__note { margin: 14px 0 0; font-size: 13px; color: var(--bk-mute); }
.elementor-editor-active .bk-bc .bk-bc__bar { transform: none !important; }
.elementor-editor-active .bk-bc .bk-bc__bar em { opacity: 1 !important; }
@media (prefers-reduced-motion: reduce) { html.bk-js .bk-bc .bk-bc__bar { transform: none; transition: none; } html.bk-js .bk-bc .bk-bc__bar em { opacity: 1; } }
@media (max-width: 767px) { .bk-bc__bar em { font-size: 11px; } .bk-bc__x { font-size: 12px; } }

/* 게시판 최신글 */
.bk-lt { list-style: none; margin: 0; padding: 0; }
.bk-lt.is-list { border-top: 1px solid var(--bk-ink); }
.bk-lt.is-list .bk-lt__row { display: grid; grid-template-columns: 96px auto minmax(0, 1fr) auto; align-items: baseline; gap: 0 14px; padding: 19px 4px; border-bottom: 1px solid var(--bk-line); color: inherit; text-decoration: none; }
.bk-lt__date { font-size: 14px; font-weight: 600; color: var(--bk-mute); font-variant-numeric: tabular-nums; }
.bk-lt__badge { padding: 3px 10px; border-radius: 999px; background: #0A6B62; color: #fff; font-size: 12px; font-weight: 700; }
.bk-lt__item:not(.is-notice) .bk-lt__badge { display: none; }
.bk-lt.is-list .bk-lt__title { font-size: 17px; font-weight: 500; line-height: 1.5; color: var(--bk-ink); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; transition: color .25s; }
.bk-lt.is-list .bk-lt__item.is-notice .bk-lt__title { font-weight: 700; }
.bk-lt.is-list .bk-lt__row:not(:has(.bk-lt__badge)) { grid-template-columns: 96px minmax(0, 1fr) auto; }
a.bk-lt__row:hover .bk-lt__title { color: var(--bk-teal-dk); }
.bk-lt__file { font-size: 12px; font-weight: 700; padding: 3px 9px; border-radius: 999px; border: 1px solid var(--bk-line); color: var(--bk-mute); }
.bk-lt.is-cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; }
.bk-lt.is-cards .bk-lt__row { display: flex; flex-direction: column; height: 100%; color: inherit; text-decoration: none; border-radius: 22px; overflow: hidden; background: #fff; box-shadow: 0 1px 0 rgba(11, 26, 43, .04), 0 14px 40px rgba(11, 26, 43, .06); transition: transform .5s var(--bk-ease), box-shadow .5s var(--bk-ease); }
.bk-lt.is-cards a.bk-lt__row:hover { transform: translateY(-6px); box-shadow: 0 26px 60px rgba(11, 26, 43, .12); }
.bk-lt__thumb { display: block; aspect-ratio: 16 / 10; overflow: hidden; background: #EAF4F3; }
.bk-lt__thumb img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 1s var(--bk-ease); }
.bk-lt.is-cards a.bk-lt__row:hover .bk-lt__thumb img { transform: scale(1.05); }
.bk-lt__body { display: flex; flex-direction: column; gap: 8px; padding: 22px 24px 26px; }
.bk-lt.is-cards .bk-lt__title { font-size: 18px; font-weight: 700; line-height: 1.45; color: var(--bk-ink); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.bk-lt__ex { font-size: 14px; line-height: 1.7; color: var(--bk-mute); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.bk-lt__empty { margin: 0; padding: 24px 0; color: var(--bk-mute); }
@media (max-width: 1024px) { .bk-lt.is-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) {
	.bk-lt.is-list .bk-lt__row, .bk-lt.is-list .bk-lt__row:not(:has(.bk-lt__badge)) { grid-template-columns: auto minmax(0, 1fr); gap: 4px 10px; padding: 16px 2px; }
	.bk-lt.is-list .bk-lt__date { grid-column: 1 / -1; font-size: 13px; }
	.bk-lt.is-list .bk-lt__title { font-size: 16px; white-space: normal; }
	.bk-lt.is-list .bk-lt__file { display: none; }
	.bk-lt.is-cards { grid-template-columns: 1fr; gap: 20px; }
}

/* ==========================================================================
   문의 폼 (Contact Form 7 숏코드 — 숏코드 위젯의 고급 › CSS 클래스에 bk-form)
   ========================================================================== */
.bk-form .wpcf7-form p { margin: 0 0 22px; }
.bk-form .bk-row { display: grid; grid-template-columns: 1fr 1fr; gap: 0 22px; }
@media (max-width: 767px) { .bk-form .bk-row { grid-template-columns: 1fr; } }
.bk-form .bk-label { display: block; margin-bottom: 8px; font-size: 14px; font-weight: 700; color: var(--bk-ink); }
.bk-form .bk-label em { font-style: normal; color: var(--bk-teal-dk); }
.bk-form input[type="text"], .bk-form input[type="tel"], .bk-form input[type="email"], .bk-form input[type="number"],
.bk-form input[type="date"], .bk-form select, .bk-form textarea {
	width: 100%; box-sizing: border-box; padding: 15px 18px; border: 1px solid #CBD6DD; border-radius: 14px;
	background: #fff; color: var(--bk-ink); font: inherit; font-size: 16px; transition: border-color .25s, box-shadow .25s;
}
.bk-form select {
	appearance: none; background-image: linear-gradient(45deg, transparent 50%, #5B6B7C 50%), linear-gradient(135deg, #5B6B7C 50%, transparent 50%);
	background-position: calc(100% - 22px) 52%, calc(100% - 17px) 52%; background-size: 5px 5px, 5px 5px; background-repeat: no-repeat; padding-right: 44px;
}
.bk-form input:focus, .bk-form select:focus, .bk-form textarea:focus { outline: none; border-color: var(--bk-teal-dk); box-shadow: 0 0 0 4px rgba(18, 181, 164, .16); }
.bk-form textarea { min-height: 170px; resize: vertical; }
.bk-form ::placeholder { color: #6E7C8A; }
.bk-form .wpcf7-radio .wpcf7-list-item, .bk-form .wpcf7-checkbox .wpcf7-list-item { margin: 0 8px 8px 0; }
.bk-form .wpcf7-radio label, .bk-form .wpcf7-checkbox label {
	display: inline-flex; align-items: center; gap: 8px; min-height: 42px; padding: 0 16px; border: 1px solid #CBD6DD; border-radius: 999px;
	font-size: 15px; line-height: 1.5; word-break: keep-all; color: var(--bk-ink-2); cursor: pointer; transition: border-color .25s, background-color .25s;
}
@media (max-width: 767px) {
	.bk-form .wpcf7-radio label, .bk-form .wpcf7-checkbox label { border-radius: 14px; padding: 10px 14px; align-items: flex-start; }
	.bk-form .wpcf7-radio input, .bk-form .wpcf7-checkbox input { margin-top: 2px; flex: 0 0 auto; }
}
.bk-form .wpcf7-radio label:has(input:checked), .bk-form .wpcf7-checkbox label:has(input:checked) { border-color: var(--bk-teal-dk); background: #E3F5F2; color: var(--bk-ink); }
.bk-form .wpcf7-radio input, .bk-form .wpcf7-checkbox input, .bk-form .wpcf7-acceptance input { width: 18px; height: 18px; margin: 0; accent-color: var(--bk-teal-dk); }
.bk-form .wpcf7-acceptance .wpcf7-list-item { margin: 0; }
.bk-form .wpcf7-acceptance label { display: inline-flex; align-items: flex-start; gap: 10px; font-size: 14px; line-height: 1.6; word-break: keep-all; color: var(--bk-ink-2); cursor: pointer; }
.bk-form .wpcf7-acceptance input { margin-top: 3px; flex: 0 0 auto; }
.bk-form .wpcf7-file { font-size: 15px; max-width: 100%; color: var(--bk-ink-2); }
.bk-form input[type="file"]::file-selector-button {
	margin-right: 12px; padding: 10px 18px; border: 1px solid #CBD6DD; border-radius: 999px; background: #fff; color: var(--bk-ink);
	font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; transition: border-color .25s, background-color .25s;
}
.bk-form input[type="file"]::file-selector-button:hover { border-color: var(--bk-teal-dk); background: #E3F5F2; }
.bk-form .wpcf7-form .wpcf7-submit, .bk-form .wpcf7-form .wpcf7-submit:focus {
	appearance: none; border: 0; border-radius: 999px; background: linear-gradient(110deg, #0A6B62, #5243C9); color: #fff; padding: 19px 46px;
	font-family: inherit; font-size: 16px; font-weight: 700; cursor: pointer; box-shadow: 0 14px 34px rgba(82, 67, 201, .24); transition: transform .3s var(--bk-ease), box-shadow .3s;
}
.bk-form .wpcf7-form .wpcf7-submit:hover { background: linear-gradient(110deg, #5243C9, #0A6B62); color: #fff; transform: translateY(-2px); box-shadow: 0 20px 44px rgba(82, 67, 201, .32); }
.bk-form .wpcf7-form .wpcf7-submit:disabled, .bk-form .wpcf7-form .wpcf7-submit:disabled:hover { opacity: .45; cursor: not-allowed; transform: none; }
.bk-form .wpcf7-not-valid-tip { margin-top: 6px; font-size: 13px; color: #B42318; }
.bk-form .wpcf7 form .wpcf7-response-output { margin: 18px 0 0; padding: 14px 18px; border-radius: 14px; font-size: 14px; }
.bk-form .wpcf7-spinner { vertical-align: middle; }
.bk-form .bk-note { font-size: 13px; color: var(--bk-mute); margin: -10px 0 20px; }
