:root {
	--ks-charcoal: #403b3b;
	--ks-charcoal-dark: #333131;
	--ks-charcoal-soft: #797373;
	--ks-accent: #e58125;
	--ks-text: #333;
	--ks-muted: #777;
	--ks-line: #e8e8e8;
}

html.ks-lnb-open,
body.ks-lnb-open {
	overflow: hidden;
}

/* 퍼블리싱(sub-page.html)의 body 규칙 그대로. 개별 요소에 박지 않고 여기서 상속시킨다. */
body {
	font-family: "Pretendard", "Noto Sans KR", "Malgun Gothic", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
	-webkit-font-smoothing: antialiased;
}

.ks-layout {
	color: var(--ks-text);
	line-height: 1.75;
	letter-spacing: normal;
	word-break: normal;
}

/* base.css 에는 전역 box-sizing 이 없으므로 v2 공통 영역에만 적용한다. */
.ks-header,
.ks-header *,
.ks-lnb,
.ks-lnb *,
.ks-home-hero,
.ks-home-hero *,
.ks-footer,
.ks-footer * {
	box-sizing: border-box;
}

#wrap.ks-layout {
	display: block;
	position: relative;
	/* common.css 의 `#wrap{height:100%}` 은 뷰포트 높이로 고정돼 LNB 컬럼이 늘어나지 못한다. */
	height: auto;
	min-height: 100vh;
	padding: 0;
	overflow: visible;
}

.ks-page {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
	background: #fff;
}

.ks-main {
	display: block;
	flex: 1 0 auto;
	min-width: 0;
}

.ks-header {
	position: absolute;
	top: 0;
	left: 0;
	z-index: 80;
	display: flex;
	align-items: center;
	gap: 27px;
	width: 100%;
	height: 116px;
	padding: 33px 0 33px 30px;
}

.ks-menu-button {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 20px;
	height: 50px;
	padding: 0;
	border: 0;
	color: #fff;
	background: transparent;
	cursor: pointer;
}

/* 퍼블리싱의 `.fa-bars::before` 와 같은 방식으로, 막대 하나를 그리고 나머지 둘은 box-shadow 로 깐다.
   그림자는 높이에 안 잡혀서 가운데 정렬 기준이 3px 한 줄이 되고, 세 줄 묶음은 그만큼 아래로 내려온다.
   span 3개를 세로로 쌓으면 묶음 전체가 가운데 정렬돼 7px 위로 올라가므로 위치가 달라진다. */
.ks-menu-button span {
	display: block;
	width: 18px;
	height: 3px;
	background: currentColor;
	box-shadow: 0 7px 0 currentColor, 0 14px 0 currentColor;
}

.ks-header__logo {
	flex: 0 0 auto;
	margin: 0;
	line-height: 0;
	opacity: 1;
	transition: opacity .24s ease;
}

.ks-lnb-open .ks-header__logo {
	opacity: 0;
	pointer-events: none;
}

.ks-header__logo a {
	display: flex;
	align-items: center;
	width: 200px;
	height: 50px;
}

.ks-header__logo img {
	display: block;
	width: 200px;
	height: 50px;
	object-fit: contain;
}

.ks-lnb {
	position: fixed;
	top: 0;
	left: 0;
	z-index: 110;
	width: 246px;
	height: 100vh;
	padding: 26px 0 40px;
	overflow-y: auto;
	color: #fff;
	background: var(--ks-charcoal);
	transform: translateX(-100%);
	transition: transform .28s ease;
}

.ks-lnb-open .ks-lnb {
	transform: translateX(0);
}

.ks-lnb__brand {
	padding: 0 20px 38px;
	margin-bottom: 18px;
	border-bottom: 1px solid rgba(255, 255, 255, .12);
	text-align: center;
}

/* 시안의 brand 는 img 하나뿐이라 로고가 행상자(line-height 1.75) 안에 놓인다.
   홈 링크를 감싸도 높이가 같도록 a 는 크기를 잡지 않고 흘려 둔다. */
.ks-lnb__brand a {
	display: inline;
}

.ks-lnb__brand img {
	width: 200px;
	height: 50px;
}

.ks-lnb__nav {
	padding-top: 0;
}

.ks-nav-group {
	padding: 18px 22px 8px;
	color: #a89999;
	font-size: 12px;
	font-weight: 800;
	letter-spacing: .12em;
}

.ks-nav-group--link {
	display: block;
	text-decoration: none;
}

.ks-nav-group--link:hover,
.ks-nav-group--link.active {
	color: #fff;
}

.ks-nav-link {
	display: block;
	padding: 9px 22px;
	border-left: 3px solid transparent;
	color: rgba(255, 255, 255, .7);
	font-size: 14px;
	text-decoration: none;
	transition: color .15s, background .15s, border-color .15s;
}

.ks-nav-link--sub {
	padding-left: 36px;
	font-size: 13px;
}

.ks-nav-link:hover,
.ks-nav-link:focus-visible {
	color: #fff;
	background: rgba(121, 115, 115, .25);
}

.ks-nav-link.active {
	border-left-color: var(--ks-accent);
	color: #fff;
	background: var(--ks-charcoal-soft);
	font-weight: 700;
}

.ks-home-hero {
	position: relative;
	width: 100%;
	height: 100vh;
	min-height: 640px;
	overflow: hidden;
	color: #fff;
	background: #111;
}

.ks-home-slides,
.ks-home-slide,
.ks-home-shade {
	position: absolute;
	inset: 0;
}

/* 퍼블리싱(main-page.html)의 .main-visual 과 동일한 크롭·확대 기준. */
.ks-home-slide {
	inset: -6%;
	background-repeat: no-repeat;
	background-position: center;
	background-size: cover;
	opacity: 0;
	transform: scale(.92);
	transform-origin: center;
	transition: opacity 1.2s ease, transform 5s linear;
	will-change: opacity, transform;
}

.ks-home-slide.is-active {
	opacity: 1;
	transform: scale(1);
}

.ks-home-shade {
	z-index: 1;
	background: rgba(0, 0, 0, .3);
}

.ks-home-copy {
	position: absolute;
	top: 50%;
	left: 50%;
	z-index: 2;
	width: 100%;
	padding: 0 24px;
	text-align: center;
	opacity: 0;
	visibility: hidden;
	transform: translate(-50%, -50%);
	transition: opacity .7s ease .35s, visibility .7s;
	pointer-events: none;
}

.ks-home-copy.is-active {
	opacity: 1;
	visibility: visible;
}

.ks-home-copy h2 {
	margin: 0;
	color: #fff;
	font-size: 60px;
	font-weight: 800;
	line-height: 1.25;
	letter-spacing: 0;
	white-space: nowrap;
}

.ks-home-copy .split-line {
	display: block;
	overflow: hidden;
}

/* GSAP 가 투명도·단어 애니메이션을 맡을 때도 가운데 정렬 transform 은 유지해야 한다. */
.ks-home-hero.is-gsap .ks-home-copy {
	opacity: 0;
	visibility: hidden;
	transform: translate(-50%, -50%);
	transition: none;
}

.ks-home-hero.is-gsap .ks-home-slide {
	transition: none;
}

.ks-home-copy p {
	display: block;
	margin: 28px 0 0;
	color: #fff;
	font-size: 24px;
	font-weight: 400;
	line-height: 1.45;
	letter-spacing: 0;
	white-space: nowrap;
}

.ks-footer {
	flex: 0 0 auto;
	padding: 30px 10px;
	background: #fff;
	text-align: center;
	font-size: 14px;
	line-height: 17px;
}

.ks-footer a {
	color: #333;
	text-decoration: none;
}

.ks-footer p {
	margin: 0;
	color: #999;
}

.ks-footer__info {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-wrap: wrap;
	gap: 10px;
	margin-top: 10px;
}

.ks-footer__info a {
	color: inherit;
}

@media (max-width: 1000px) {
	.ks-footer {
		word-break: keep-all;
	}

	.ks-footer__info {
		flex-direction: column;
		gap: 5px;
		margin-bottom: 10px;
	}
}

/* 기존 서브 콘텐츠는 공통 헤더 아래에서 시작한다. */
.ks-layout:not(.ks-layout--home) .ks-header {
	position: fixed;
	background: var(--ks-charcoal);
}

.ks-layout:not(.ks-layout--home) .ks-main {
	padding-top: 116px;
}

@media (min-width: 1001px) {
	#wrap.ks-layout--sub {
		display: flex;
		align-items: stretch;
	}

	/* 고정 LNB 는 배경이 문서 전체 높이로 늘어나고, 메뉴만 화면 안에 붙어 있는다. */
	.ks-layout--sub .ks-lnb {
		position: static;
		align-self: stretch;
		height: auto;
		min-height: 100vh;
		padding: 0;
		overflow: visible;
		transform: none;
		flex-shrink: 0;
		z-index: 40;
	}

	.ks-layout--sub .ks-lnb__inner {
		position: sticky;
		top: 0;
		max-height: 100vh;
		padding: 26px 0 40px;
		overflow-y: auto;
		overscroll-behavior: contain;
	}

	.ks-layout--sub .ks-header {
		display: none;
	}

	.ks-layout--sub .ks-page {
		flex: 1 1 auto;
		min-width: 0;
		min-height: 100vh;
	}

	/* `.ks-layout:not(.ks-layout--home) .ks-main` 보다 특정도가 높아야 헤더 자리가 사라진다. */
	#wrap.ks-layout--sub .ks-main {
		display: block;
		width: 100%;
		padding-top: 0;
	}

	.ks-layout--sub .ks-admin-bar {
		top: 0;
	}
}

.ks-layout:not(.ks-layout--home) .sub-visual {
	margin-top: 0;
}

/* 관리자 화면 편집·게시글 양식에서는 화면 이동 요소를 감춘다(이동은 관리자 LNB 담당). */
#wrap.ks-layout--edit .ks-lnb,
#wrap.ks-layout--edit .ks-menu-button,
#wrap.ks-layout--edit .ks-quick {
	display: none !important;
}

#wrap.ks-layout--edit .ks-header {
	justify-content: center;
}

.ks-custom-page {
	width: 100%;
	min-height: 70vh;
	background: #fff;
}

.ks-custom-page__frame {
	display: block;
	width: 100%;
	min-height: 70vh;
	border: 0;
	background: #fff;
}

/* 퍼블리싱과 동일한 홈 카피 축소 지점. */
@media (max-width: 1180px) {
	.ks-home-copy h2 {
		font-size: 46px;
		white-space: normal;
		word-break: normal;
		overflow-wrap: anywhere;
	}

	.ks-home-copy p {
		font-size: 20px;
		white-space: normal;
		word-break: normal;
		overflow-wrap: anywhere;
	}
}

@media (max-width: 768px) {
	.ks-header {
		height: 92px;
		gap: 18px;
		padding: 21px 0 21px 18px;
	}

	.ks-header__logo a,
	.ks-header__logo img {
		width: 160px;
		height: 40px;
	}

	.ks-lnb__brand img {
		width: 160px;
		height: 40px;
	}

	.ks-layout:not(.ks-layout--home) .ks-main {
		padding-top: 92px;
	}

	.ks-lnb {
		width: 246px;
		max-width: 82vw;
	}

	.ks-home-hero {
		min-height: 560px;
	}

	.ks-home-copy h2 {
		font-size: 32px;
	}

	.ks-home-copy p {
		margin-top: 18px;
		font-size: 16px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.ks-home-slide,
	.ks-home-copy,
	.ks-lnb {
		transition: none;
	}
}

/* 제품 서브페이지 7블록 */
.ks-sub,
.ks-sub *,
.ks-admin-bar,
.ks-admin-bar * {
	box-sizing: border-box;
}

.ks-wrap {
	max-width: 1080px;
	margin: 0 auto;
	padding: 0 24px;
}

.ks-sub section {
	padding: 76px 0;
	margin: 0;
}

.ks-sub .ks-alt {
	background: #f4f6f9;
}

.ks-hero {
	background: linear-gradient(90deg, #333131 0%, #403b3b 100%);
	color: #fff;
	padding: 76px 0 66px;
}

.ks-breadcrumb {
	font-size: 14px;
	color: rgba(255, 255, 255, .7);
	margin-bottom: 20px;
}

.ks-breadcrumb span {
	margin: 0 6px;
}

.ks-eyebrow {
	display: inline-block;
	font-size: 12px;
	letter-spacing: .16em;
	font-weight: 700;
	color: rgba(255, 255, 255, .7);
	border: 1px solid rgba(255, 255, 255, .7);
	border-radius: 1px;
	padding: 5px 12px;
	margin-bottom: 18px;
}

.ks-hero h1 {
	font-size: 40px;
	line-height: 1.32;
	font-weight: 700;
	letter-spacing: -.02em;
	margin: 0 0 16px;
	color: #fff;
}

.ks-lead {
	font-size: 17px;
	color: rgba(255, 255, 255, .8);
	max-width: 740px;
	font-weight: 700;
	margin: 0;
}

.ks-hero-cta {
	margin-top: 32px;
	display: flex;
	gap: 12px;
	flex-wrap: wrap;
}

.ks-btn {
	display: inline-block;
	padding: 13px 28px;
	font-size: 14.5px;
	font-weight: 700;
	border-radius: 4px;
	text-decoration: none;
	transition: .18s;
}

.ks-btn-primary {
	background: #fff;
	color: #3a3636 !important;
}

.ks-btn-primary:hover {
	background: rgba(255, 255, 255, .9);
}

.ks-btn-ghost {
	color: #fff !important;
	border: 1px solid rgba(255, 255, 255, .5);
}

.ks-btn-ghost:hover {
	background: rgba(255, 255, 255, .1);
}

.ks-cta .ks-btn-primary {
	background: var(--ks-charcoal);
	color: #fff !important;
}

.ks-cta .ks-btn-ghost {
	background: transparent;
	color: var(--ks-text) !important;
	border: 1px solid var(--ks-text);
}

.ks-btn-line {
	color: #0a2540 !important;
	border: 1px solid #c3cbd6;
	background: #fff;
}

.ks-btn-line:hover {
	border-color: #0a2540;
}

.ks-sec-head {
	margin-bottom: 40px;
}

.ks-sec-num {
	font-size: 11.5px;
	font-weight: 800;
	letter-spacing: .18em;
	color: var(--ks-accent);
	display: block;
	margin-bottom: 12px;
}

.ks-sec-head h2 {
	font-size: 28px;
	font-weight: 800;
	letter-spacing: -.02em;
	color: var(--ks-text);
	margin: 0 0 12px;
}

.ks-sec-head p {
	font-size: 16px;
	color: var(--ks-text);
	max-width: 820px;
	margin: 0;
}

.ks-rule {
	width: 40px;
	height: 3px;
	background: var(--ks-charcoal);
	margin-bottom: 18px;
}

.ks-overview {
	display: grid;
	grid-template-columns: 1.15fr .85fr;
	gap: 52px;
	align-items: start;
}

.ks-overview p {
	font-size: 16px;
	color: var(--ks-text);
	margin: 0 0 18px;
	line-height: 27px;
}

.ks-fact-box {
	background: var(--ks-charcoal);
	color: #fff;
	padding: 30px;
	border-radius: 4px;
}

.ks-fact-box h3 {
	font-size: 13px;
	letter-spacing: .1em;
	color: #fff;
	font-weight: 700;
	margin: 0 0 18px;
}

.ks-fact-box ul {
	list-style: none;
	margin: 0;
	padding: 0;
}

.ks-fact-box li {
	font-size: 14.5px;
	padding: 10px 0;
	border-bottom: 1px solid rgba(255, 255, 255, .14);
	color: #fff;
}

.ks-fact-box li:last-child {
	border-bottom: 0;
}

.ks-grid {
	display: grid;
	gap: 18px;
}

.ks-grid-3 {
	grid-template-columns: repeat(6, 1fr);
}

.ks-grid-3 > .ks-card {
	grid-column: span 2;
}

.ks-grid-3 > .ks-card:last-child:nth-child(3n+1) {
	grid-column: 1 / -1;
}

.ks-grid-3 > .ks-card:nth-last-child(2):nth-child(3n+1),
.ks-grid-3 > .ks-card:last-child:nth-child(3n+2) {
	grid-column: span 3;
}

.ks-card {
	background: #fff;
	border: 1px solid var(--ks-line);
	border-radius: 4px;
	padding: 28px 26px;
	transition: .2s;
}

.ks-card:hover {
	border-color: var(--ks-accent);
	box-shadow: 0 6px 24px rgba(10, 37, 64, .08);
	transform: translateY(-2px);
}

.ks-ico {
	width: 42px;
	height: 42px;
	border-radius: 3px;
	background: #e8edf3;
	color: #0a2540;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 15px;
	font-weight: 800;
	margin-bottom: 16px;
}

.ks-card h3 {
	font-size: 16.5px;
	font-weight: 700;
	color: var(--ks-text);
	margin: 0 0 10px;
}

.ks-card p {
	font-size: 14px;
	color: #5a6675;
	line-height: 1.7;
	margin: 0;
}

.ks-adv {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	border-top: 1px solid var(--ks-line);
}

.ks-adv-item {
	padding: 30px 26px 30px 0;
	border-bottom: 1px solid var(--ks-line);
	display: flex;
	gap: 20px;
}

.ks-adv-item:nth-child(odd) {
	padding-right: 38px;
}

.ks-adv-item:nth-child(even) {
	padding-left: 38px;
	border-left: 1px solid var(--ks-line);
}

.ks-adv-item:last-child:nth-child(odd) {
	grid-column: 1 / -1;
	padding-right: 0;
}

.ks-adv-no {
	font-size: 12.5px;
	font-weight: 800;
	color: var(--ks-accent);
	flex-shrink: 0;
	padding-top: 4px;
}

.ks-adv-body h3 {
	font-size: 16.5px;
	font-weight: 700;
	color: var(--ks-text);
	margin: 0 0 8px;
}

.ks-adv-body p {
	font-size: 14px;
	color: #5a6675;
	margin: 0;
}

.ks-tags {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
}

.ks-tag {
	border: 1px solid #c3cbd6;
	color: #0a2540;
	border-radius: 100px;
	padding: 8px 19px;
	font-size: 14px;
	font-weight: 600;
	background: #fff;
}

.ks-case-grid {
	display: grid;
	grid-template-columns: repeat(6, 1fr);
	gap: 18px;
}

.ks-case-grid > .ks-case {
	grid-column: span 2;
}

/* 3의 배수가 아닌 마지막 줄은 남은 폭을 나눠 갖는다(퍼블리싱 .case-grid 와 동일). */
.ks-case-grid > .ks-case:last-child:nth-child(3n+1) {
	grid-column: 1 / -1;
}

.ks-case-grid > .ks-case:nth-last-child(2):nth-child(3n+1),
.ks-case-grid > .ks-case:last-child:nth-child(3n+2) {
	grid-column: span 3;
}

.ks-case {
	background: #fff;
	border: 1px solid var(--ks-line);
	border-radius: 4px;
	padding: 26px;
	display: flex;
	flex-direction: column;
	transition: .2s;
}

.ks-case:hover {
	border-color: var(--ks-accent);
	box-shadow: 0 6px 24px rgba(10, 37, 64, .08);
	transform: translateY(-2px);
}

.ks-client {
	font-size: 11.5px;
	font-weight: 800;
	letter-spacing: .1em;
	color: var(--ks-accent);
	margin-bottom: 12px;
}

.ks-case h3 {
	font-size: 16px;
	font-weight: 700;
	color: var(--ks-text);
	line-height: 1.55;
	margin: 0 0 12px;
}

.ks-case p {
	font-size: 13.5px;
	color: #5a6675;
	flex: 1;
	margin: 0;
}

.ks-date {
	font-size: 12px;
	color: #8a96a6;
	margin-top: 16px;
	padding-top: 14px;
	border-top: 1px solid var(--ks-line);
}

.ks-logo-strip {
	margin-top: 32px;
	padding: 26px 22px;
	background: #fff;
	border: 1px solid var(--ks-line);
	border-radius: 4px;
}

.ks-logo-strip h4 {
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .08em;
	color: #8a96a6;
	margin: 0 0 15px;
	text-align: center;
}

.ks-logos {
	display: flex;
	flex-wrap: wrap;
	gap: 9px 10px;
	justify-content: center;
}

.ks-logos span {
	font-size: 13.5px;
	font-weight: 700;
	color: #0a2540;
	opacity: .62;
	padding: 6px 13px;
	border-radius: 2px;
	background: #f4f6f9;
}

.ks-case-more {
	text-align: center;
	margin-top: 26px;
}

.ks-cta {
	background: #f4f4f4;
	color: var(--ks-text);
	text-align: center;
	padding: 70px 0;
}

.ks-cta h2 {
	font-size: 26px;
	font-weight: 800;
	margin: 0 0 14px;
	letter-spacing: -.02em;
	color: var(--ks-text);
}

.ks-cta p {
	color: #999;
	font-size: 15.5px;
	margin: 0 0 30px;
}

.ks-cta-btns {
	display: flex;
	gap: 12px;
	justify-content: center;
	flex-wrap: wrap;
}

.ks-quick {
	position: fixed;
	top: calc(50% + 14px);
	right: 0;
	z-index: 80;
	width: 80px;
	transform: translateY(-50%);
	text-align: center;
}

.ks-quick__link {
	display: flex;
	height: 80px;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 9px;
	color: #fff !important;
	font-size: 13px;
	font-weight: 500;
	line-height: 1;
	text-decoration: none !important;
}

/* 아이콘은 흰 원 안에서 블록 배경색을 그대로 쓴다. */
.ks-quick__icon {
	display: flex;
	width: 40px;
	height: 40px;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background: #fff;
}

.ks-quick__glyph {
	fill: currentColor;
}

.ks-quick__glyph--headset {
	width: 21px;
	height: 21px;
}

.ks-quick__glyph--handshake {
	width: 24px;
	height: 19px;
}

/* 화면 오른쪽 끝에 붙는 탭이라 왼쪽 바깥쪽 모서리만 둥글다. */
.ks-quick__link--product {
	border-radius: 16px 0 0 0;
	background: var(--ks-accent);
}

.ks-quick__link--product .ks-quick__icon {
	color: var(--ks-accent);
}

.ks-quick__link--partner {
	border-radius: 0 0 0 16px;
	background: var(--ks-charcoal);
}

.ks-quick__link--partner .ks-quick__icon {
	color: var(--ks-charcoal);
}

.ks-quick__top {
	width: 100%;
	height: 36px;
	padding: 0;
	border: 0;
	background: transparent;
	color: #333;
	font-family: inherit;
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
}

.ks-quick__top span {
	margin-left: 5px;
	font-size: 10px;
}

.ks-quick a:focus-visible,
.ks-quick button:focus-visible {
	outline: 2px solid #1d6fd8;
	outline-offset: 2px;
}

.ks-admin-bar {
	position: sticky;
	top: 116px;
	z-index: 90;
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
	padding: 10px 24px;
	background: #fff8e1;
	border-bottom: 1px solid #f0e0a8;
	color: #7a5c00;
	font-size: 13px;
}

.ks-admin-bar button,
.ks-admin-bar a {
	padding: 6px 12px;
	border: 1px solid #d4b45a;
	background: #fff;
	color: #7a5c00;
	font-size: 12.5px;
	font-weight: 700;
	text-decoration: none;
	cursor: pointer;
}

.ks-admin-bar [data-ks-save],
.ks-admin-bar [data-ks-cancel] {
	display: none;
}

.ks-admin-bar.is-editing [data-ks-save],
.ks-admin-bar.is-editing [data-ks-cancel] {
	display: inline-block;
}

.ks-sub.is-editing [data-ks-path] {
	outline: 1px dashed #e58125;
	outline-offset: 3px;
	min-height: 1em;
}

.ks-layout--product .article {
	padding: 0;
	max-width: none;
}

@media (max-width: 1000px) {
	.ks-hero h1 {
		font-size: 30px;
		word-break: normal;
		overflow-wrap: anywhere;
	}

	.ks-lead {
		word-break: normal;
		overflow-wrap: anywhere;
	}

	.ks-overview,
	.ks-grid-3,
	.ks-adv,
	.ks-case-grid {
		grid-template-columns: 1fr;
	}

	.ks-grid-3 > .ks-card,
	.ks-grid-3 > .ks-card:last-child:nth-child(3n+1),
	.ks-grid-3 > .ks-card:nth-last-child(2):nth-child(3n+1),
	.ks-grid-3 > .ks-card:last-child:nth-child(3n+2),
	.ks-case-grid > .ks-case,
	.ks-case-grid > .ks-case:last-child:nth-child(3n+1),
	.ks-case-grid > .ks-case:nth-last-child(2):nth-child(3n+1),
	.ks-case-grid > .ks-case:last-child:nth-child(3n+2),
	.ks-adv-item:last-child:nth-child(odd) {
		grid-column: auto;
	}

	.ks-adv-item:nth-child(even) {
		padding-left: 0;
		border-left: 0;
	}

	.ks-adv-item:nth-child(odd) {
		padding-right: 0;
	}

	.ks-sub section {
		padding: 52px 0;
	}
}

@media (max-width: 768px) {
	.ks-admin-bar {
		top: 92px;
	}
}

.ks-bbs,
.ks-bbs *,
.ks-form,
.ks-form * {
	box-sizing: border-box;
}

.ks-bbs {
	padding: 56px 0 64px;
	background: #fff;
}

.ks-bbs__count {
	margin: 0 0 22px;
	color: var(--ks-muted);
	font-size: 14px;
}

.ks-bbs__count span {
	color: var(--ks-text);
	font-weight: 700;
}

.ks-post-card {
	display: flex;
	gap: 28px;
	margin-bottom: 18px;
	padding: 22px 24px;
	border: 1px solid var(--ks-line);
	background: #fff;
	text-decoration: none !important;
	color: inherit;
}

.ks-post-card:hover {
	border-color: #cfcfcf;
}

.ks-post-thumb {
	flex: 0 0 220px;
	width: 220px;
	height: 140px;
	overflow: hidden;
	background: #ececec;
}

.ks-post-thumb img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.ks-post-body {
	flex: 1 1 auto;
	min-width: 0;
	display: flex;
	flex-direction: column;
}

.ks-post-body h2,
.ks-post-body h3 {
	margin: 0 0 10px;
	color: var(--ks-text);
	font-size: 20px;
	font-weight: 700;
	line-height: 1.45;
}

.ks-post-press {
	margin: 0 0 8px;
	color: var(--ks-accent);
	font-size: 13px;
	font-weight: 800;
}

.ks-post-body p {
	margin: 0;
	color: #777;
	font-size: 14.5px;
	line-height: 1.7;
}

.ks-post-date {
	margin-top: auto;
	padding-top: 16px;
	color: #999;
	font-size: 13px;
	text-align: right;
}

.ks-bbs-empty {
	padding: 48px 0;
	color: var(--ks-muted);
	text-align: center;
}

/* 페이지네이션은 게시판·파트너사 목록이 같은 마크업을 쓰므로 한 곳에서만 정의한다.
   숫자·화살표·현재 페이지가 모두 같은 크기의 사각형이어야 하므로 칸 크기는
   글자 수와 무관하게 min-width 가 아니라 width 로 고정한다. */
.ks-pager {
	display: flex;
	justify-content: center;
	margin: 32px 0 0;
}

.ks-pager__body {
	display: flex;
	align-items: center;
	gap: 7px;
}

.ks-pager a,
.ks-pager span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	box-sizing: border-box;
	width: 30px;
	height: 30px;
	margin: 0;
	padding: 0;
	border: 1px solid #ddd;
	color: #555 !important;
	background: #fff;
	font-size: 12px;
	line-height: 1;
	text-decoration: none !important;
}

.ks-pager .is-active {
	border-color: var(--ks-charcoal);
	color: #fff !important;
	background: var(--ks-charcoal);
	font-weight: 700;
}

.ks-pager__arrow {
	font-size: 14px;
}

.ks-pager .is-disabled {
	color: #bbb !important;
	background: #fafafa;
}

.ks-view {
	padding: 64px 0 40px;
	background: #fff;
}

.ks-view__title {
	margin: 0 0 28px;
	padding-top: 18px;
	border-top: 1px solid #111;
	color: var(--ks-text);
	font-size: 28px;
	font-weight: 800;
	line-height: 1.4;
}

.ks-view__meta {
	margin-bottom: 8px;
	color: var(--ks-accent);
	font-size: 13px;
	font-weight: 800;
}

.ks-view__body {
	color: var(--ks-text);
	font-size: 16px;
	line-height: 1.85;
}

.ks-view__body img {
	max-width: 100%;
	height: auto;
}

.ks-view__image {
	margin-bottom: 28px;
	text-align: center;
}

.ks-view__image img {
	max-width: 100%;
	height: auto;
}

.ks-view__youtube {
	position: relative;
	margin: 0 0 28px;
	padding-top: 56.25%;
}

.ks-view__youtube iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

.ks-view__actions {
	display: flex;
	justify-content: center;
	gap: 10px;
	flex-wrap: wrap;
	margin: 48px 0 8px;
}

.ks-form-section {
	padding: 56px 0 40px;
	background: #fff;
}

.ks-form {
	max-width: 920px;
	margin: 0 auto;
}

.ks-form__grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 22px 28px;
}

.ks-form__field {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.ks-form__field--full {
	grid-column: 1 / -1;
}

.ks-form label {
	color: var(--ks-text);
	font-size: 14px;
	font-weight: 700;
}

.ks-form label span {
	color: #d34a4a;
}

.ks-form input[type="text"],
.ks-form input[type="email"],
.ks-form textarea {
	width: 100%;
	/* board.css 가 input[type=text] 에만 35px 를 강제해 이메일 칸만 높아진다. */
	height: auto;
	padding: 13px 14px;
	border: 1px solid #d8d8d8;
	border-radius: 4px;
	color: var(--ks-text);
	font-size: 14.5px;
	font-family: inherit;
	background: #fff;
}

.ks-form input:focus,
.ks-form textarea:focus {
	outline: 0;
	border-color: var(--ks-accent);
}

/* common.css 의 전역 `::placeholder{color:white}` 때문에 base.css 가 따로 지정하지 않는
   입력(이메일 칸)은 안내문구가 보이지 않는다. */
.ks-form input::-webkit-input-placeholder,
.ks-form textarea::-webkit-input-placeholder {
	color: #aaa;
	font-size: inherit;
	opacity: 1;
}

.ks-form input::placeholder,
.ks-form textarea::placeholder {
	color: #aaa;
	font-size: inherit;
	opacity: 1;
}

.ks-form textarea {
	min-height: 160px;
	resize: vertical;
}

.ks-form__hint {
	margin: 0 0 18px;
	color: var(--ks-muted);
	font-size: 14px;
}

.ks-privacy {
	max-height: 140px;
	overflow-y: auto;
	padding: 16px 18px;
	border: 1px solid var(--ks-line);
	background: #f7f7f7;
	color: #666;
	font-size: 13px;
	line-height: 1.7;
}

/* 개인정보취급방침 공개 문서 */
.ks-policy {
	padding: 76px 0;
	background: #f4f6f9;
}

.ks-policy__document {
	padding: 42px 46px;
	border: 1px solid var(--ks-line);
	border-radius: 4px;
	background: #fff;
}

.ks-policy__content {
	color: var(--ks-text);
	font-size: 15px;
	line-height: 1.85;
	overflow-wrap: anywhere;
	word-break: keep-all;
}

.ks-policy__empty {
	margin: 0;
	padding: 48px 0;
	color: var(--ks-muted);
	text-align: center;
}

.ks-form__agree {
	display: flex;
	align-items: center;
	gap: 8px;
	margin-top: 12px;
	font-size: 14px;
}

.ks-form__actions {
	display: flex;
	justify-content: center;
	gap: 12px;
	flex-wrap: wrap;
	margin-top: 32px;
}

.ks-form .ks-btn-primary {
	background: var(--ks-charcoal);
	color: #fff !important;
	border: 0;
	cursor: pointer;
}

.ks-section-tabs,
.ks-section-tabs *,
.ks-partners,
.ks-partners *,
.ks-company-content,
.ks-company-content * {
	box-sizing: border-box;
}

.ks-section-tabs {
	border-bottom: 1px solid var(--ks-line);
	background: #fff;
}

.ks-section-tabs .ks-wrap {
	display: flex;
	gap: 0;
}

.ks-section-tabs a {
	position: relative;
	min-width: 150px;
	padding: 20px 28px;
	color: #777;
	font-size: 15px;
	font-weight: 700;
	text-align: center;
	text-decoration: none;
}

.ks-section-tabs a::after {
	position: absolute;
	right: 0;
	bottom: -1px;
	left: 0;
	height: 3px;
	background: transparent;
	content: "";
}

.ks-section-tabs a.active {
	color: var(--ks-text);
}

.ks-section-tabs a.active::after {
	background: var(--ks-accent);
}

.ks-section-heading {
	margin-bottom: 34px;
}

.ks-section-heading__eyebrow {
	display: block;
	margin-bottom: 10px;
	color: var(--ks-accent);
	font-size: 12px;
	font-weight: 800;
	letter-spacing: .16em;
}

.ks-section-heading h2 {
	margin: 0 0 12px;
	color: var(--ks-text);
	font-size: 30px;
	font-weight: 800;
}

.ks-section-heading p {
	margin: 0;
	color: var(--ks-muted);
	font-size: 15px;
}

.ks-partners {
	padding: 64px 0 72px;
	background: #f7f8fa;
}

/* 퍼블리싱 시안의 도입사례 카드와 동일하게 한 줄에 3개를 배치한다. */
.ks-logo-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 18px;
	align-items: stretch;
}

.ks-logo-card {
	display: flex;
	min-width: 0;
	height: 100%;
	flex-direction: column;
	border: 1px solid var(--ks-line);
	border-radius: 4px;
	background: #fff;
	color: inherit;
	text-decoration: none !important;
	transition: border-color .18s, transform .18s, box-shadow .18s;
}

a.ks-logo-card:hover {
	border-color: #c8c8c8;
	transform: translateY(-2px);
	box-shadow: 0 10px 24px rgba(25, 30, 38, .08);
}

.ks-logo-card__image {
	display: flex;
	height: 132px;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	padding: 24px 28px;
	border-bottom: 1px solid #eee;
	background: #fff;
}

.ks-logo-card__image img {
	display: block;
	max-width: 100%;
	max-height: 100%;
	width: auto;
	height: auto;
	object-fit: contain;
}

.ks-logo-card__image span {
	color: #333;
	font-size: 18px;
	font-weight: 800;
}

.ks-logo-card__body {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	padding: 20px 22px 22px;
}

.ks-logo-card__body > span {
	display: block;
	margin-bottom: 6px;
	color: var(--ks-accent);
	font-size: 12px;
	font-weight: 800;
}

.ks-logo-card__body h3 {
	margin: 0;
	color: var(--ks-text);
	font-size: 17px;
	font-weight: 800;
	line-height: 1.45;
}

.ks-logo-card__body p {
	display: -webkit-box;
	overflow: hidden;
	margin: 9px 0 0;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	line-clamp: 3;
	color: var(--ks-muted);
	font-size: 13px;
	line-height: 1.65;
}

.ks-partners__filter {
	display: flex;
	align-items: center;
	justify-content: space-between;
	margin: -8px 0 24px;
	padding: 14px 18px;
	border: 1px solid var(--ks-line);
	background: #fff;
}

.ks-partners__filter strong {
	color: var(--ks-text);
	font-size: 15px;
}

.ks-partners__filter a {
	color: var(--ks-accent);
	font-size: 13px;
	font-weight: 700;
}

.ks-company-content {
	padding: 64px 0 72px;
	background: #fff;
}

.ks-legacy-content {
	width: 100%;
	min-width: 0;
	overflow: hidden;
	color: var(--ks-text);
	font-size: 15px;
	line-height: 1.8;
}

.ks-legacy-content > .article,
.ks-legacy-content .article-wrap,
.ks-legacy-content .sub-1-1,
.ks-legacy-content .sub-1-2,
.ks-legacy-content .sub-1-3,
.ks-legacy-content .sub-2-1,
.ks-legacy-content .sub-2-2,
.ks-legacy-content .sub-4-3 {
	width: 100% !important;
	max-width: 100% !important;
	margin-right: 0 !important;
	margin-left: 0 !important;
}

.ks-legacy-content .sub-title-1 {
	display: none;
}

.ks-legacy-content img,
.ks-legacy-content iframe,
.ks-legacy-content table {
	max-width: 100% !important;
}

.ks-legacy-content img {
	height: auto !important;
}

.ks-legacy-content [style*="width"],
.ks-legacy-content [style*="margin-left"],
.ks-legacy-content [style*="margin-right"] {
	max-width: 100% !important;
}

.ks-legacy-content section,
.ks-legacy-content .sub-1-1,
.ks-legacy-content .sub-1-2,
.ks-legacy-content .sub-1-3,
.ks-legacy-content .sub-2-1,
.ks-legacy-content .sub-2-2 {
	padding: 44px 0 !important;
	border-bottom: 1px solid var(--ks-line);
	background: #fff !important;
}

.ks-legacy-content h2 {
	color: var(--ks-text);
	font-weight: 800;
}

.ks-legacy-content .history {
	width: 100% !important;
	max-width: 100% !important;
}

.ks-legacy-content .history .left-year,
.ks-legacy-content .history .right-year {
	width: 44% !important;
	max-width: calc(50% - 30px) !important;
}

.ks-legacy-content .history .left-year {
	margin-right: 56% !important;
}

.ks-legacy-content .history .right-year {
	margin-left: 56% !important;
}

.ks-legacy-content .history .his-cont p {
	width: 100% !important;
}

.ks-legacy-content #map {
	width: 100% !important;
	border: 1px solid var(--ks-line);
}

.ks-legacy-content .icon-box-body-7 {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: 18px;
	padding: 0 !important;
}

.ks-legacy-content .icon-box-8 {
	display: flex !important;
	flex-direction: column;
	align-items: center;
	justify-content: flex-start;
	gap: 12px;
	width: auto !important;
	height: 100% !important;
	margin: 0 !important;
	padding: 32px 22px !important;
	border: 1px solid var(--ks-line);
	border-radius: 4px;
	background: #f7f8fa;
	box-sizing: border-box;
	text-align: center;
}

.ks-legacy-content .icon-box-8 img {
	width: auto !important;
	max-width: 76px !important;
	height: auto !important;
	margin: 0 auto !important;
}

.ks-legacy-content .icon-box-8 p {
	min-height: 0 !important;
	height: auto !important;
	margin: 0 !important;
	line-height: 1.65 !important;
}

.ks-legacy-content .icon-box-8 p:empty {
	display: none;
}

.ks-legacy-content .procedure-body {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 18px;
	flex-wrap: nowrap;
	width: 100%;
	margin-right: 0;
	margin-left: 0;
	overflow: visible;
}

.ks-legacy-content .procedure-box {
	flex: 1 1 0;
	width: auto !important;
	min-width: 0;
	margin: 0 !important;
	float: none;
}

.ks-legacy-content .proce-arrow-1,
.ks-legacy-content .proce-arrow-2,
.ks-legacy-content .proce-arrow-3 {
	position: static;
	flex: 0 0 34px;
	width: 34px;
	height: 70px;
}

.ks-legacy-content .recruit-body {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 12px;
	text-align: left;
}

.ks-legacy-content .recruit-body p {
	margin: 0;
	padding: 16px 18px;
	border: 1px solid var(--ks-line);
	background: #f7f8fa;
}

@media (max-width: 1000px) {
	.ks-quick {
		display: none;
	}

	.ks-logo-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ks-legacy-content .icon-box-body-7 {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.ks-post-card {
		flex-direction: column;
		gap: 16px;
	}

	.ks-post-thumb {
		width: 100%;
		flex-basis: auto;
		height: 180px;
	}

	.ks-form__grid {
		grid-template-columns: 1fr;
	}

	.ks-view__title {
		font-size: 22px;
	}
}

@media (max-width: 600px) {
	.ks-policy {
		padding: 44px 0;
	}

	.ks-policy__document {
		padding: 26px 22px;
	}

	.ks-policy__content {
		font-size: 14px;
		word-break: normal;
	}

	.ks-section-tabs .ks-wrap {
		overflow-x: auto;
	}

	.ks-section-tabs a {
		min-width: 116px;
		padding: 16px 18px;
		white-space: nowrap;
	}

	.ks-section-heading h2 {
		font-size: 25px;
	}

	.ks-partners,
	.ks-company-content {
		padding: 44px 0 54px;
	}

	.ks-logo-grid {
		grid-template-columns: 1fr;
	}

	.ks-legacy-content .icon-box-body-7,
	.ks-legacy-content .recruit-body {
		grid-template-columns: 1fr;
	}

	.ks-legacy-content .procedure-body {
		flex-direction: column;
	}

	.ks-legacy-content .procedure-box {
		width: 100% !important;
	}

	.ks-legacy-content .proce-arrow-1,
	.ks-legacy-content .proce-arrow-2,
	.ks-legacy-content .proce-arrow-3 {
		display: block;
		flex-basis: 52px;
		width: 52px;
		height: 52px;
		transform: rotate(90deg);
	}

	.ks-logo-card__image {
		height: 132px;
	}

	.ks-legacy-content [style*="width"],
	.ks-legacy-content [style*="margin-left"],
	.ks-legacy-content [style*="margin-right"] {
		width: 100% !important;
		max-width: 100% !important;
		margin-right: 0 !important;
		margin-left: 0 !important;
	}

	.ks-legacy-content .history .left-year,
	.ks-legacy-content .history .right-year {
		width: 100% !important;
		max-width: 100% !important;
		margin-right: 0 !important;
		margin-left: 0 !important;
	}
}
