@charset "utf-8";
@import url(reset.css);
@import url(fonts.css);
/*@import url(common.css);*/

* {font-family:'Pretendard','맑은 고딕','Malgun Gothic','dotum' !important;}

/* =========================================
   company common css
   ========================================= */
:root {
    --main-color: #0060A1;
    --gutter: clamp(20px, 4vw, 40px);   /* 좌우 여백 : 모바일 20 → PC 40 */
}
.wrap {line-height: 1.2; word-break: keep-all; text-align:left;}   /* keep-all : 한글 단어 중간 줄바꿈 방지 */
.section {padding: 70px 0;}
.section.bg-gray {background-color: #F5F6F8;}
.business .inner-wrap {display:flex; align-items:flex-start; justify-content:space-between;gap:40px;}
.inner-wrap {position:relative;  max-width: 1400px; margin: 0 auto 40px; padding: 0 var(--gutter); box-sizing: content-box;}
.head-wrap {margin-bottom: 64px; text-align:left; position:sticky; top:var(--sticky-top, 20px); width:450px; flex-shrink:0;}   /* 스크롤할 때 내용 옆에 붙어 있음 (1024 이하에서 해제) */
.head-wrap span {display: inline-block; margin-bottom: 4px; color: var(--main-color); font-size: clamp(14px, 1.67vw, 24px); font-weight: 600; letter-spacing: 0.2em;}
.head-wrap h2 {font-size: clamp(32px, 4.45vw, 64px); font-weight: 600;}

 /* sticky 보호 : 바깥 요소(body, #wrap, #container)에 overflow:hidden 이 있으면 sticky 가 동작하지 않음
   → clip 으로 바꾸면 가로 넘침은 똑같이 잘리고 sticky 는 동작 (flow-root : overflow:hidden 의 float 감싸기 역할 대신) */
body, #wrap, #container {overflow-x: clip; overflow-y: visible;}
#wrap, #container {display: flow-root;}

 /* 상단배너 */
.inner {
	width: 100%; 
	/* max-width: 1400px;  */
	margin: 0 auto; 
	padding: 100px 0 0;
}
.main-title-wrap {margin-bottom: 60px; }
.main-title {
	font-size: 72px; 
	margin-bottom: 18px; 
	font-weight: 700;
	color: #111;
	letter-spacing: -0.02em;
	line-height:1.2;
}
.main-title-wrap span {
	font-size:19px;
	color:#777;
}

/* Visual Section */
.visual {
	position: relative; 
	height: 100vh;
}
.bottom-fixed {
	width: 100%; 
	position: relative;
}
.fixed-visual {
	position: relative; 
	width: 100%; 
	height: 100vh; 
	display: flex; 
	align-items: center; 
	justify-content: center;
}
.motion-visual {
	position: relative; 
	overflow: hidden; 
	width: 90%; 
	max-width: 1200px;
	height: 65vh; 
	border-radius: 24px;
	box-shadow: 0 20px 60px rgba(0,0,0,0.15);
}

/* Image Styles */
.img-wrap {
	position: absolute;
	width: 100%;
	height: 100%;
	top: 0;
	left: 0;
}
.img-wrap img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.img-dimd {
	position: absolute;
	width: 100%;
	height: 100%;
	background: linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,0.7) 100%);
	opacity: 0;
	top: 0;
	left: 0;
	z-index: 1;
}

/* Text Styles */

.text {position: absolute;bottom: 80px;left: 80px;right: 80px;color: #fff;z-index: 2;opacity: 0;transform: translateY(30px);transition: opacity 0.8s ease-out, transform 0.8s ease-out;}
.text.active {opacity: 1;transform: translateY(0);}
.text > * {opacity: 0;transform: translateY(20px);transition: opacity 0.8s ease-out, transform 0.8s ease-out;}
.text.active > * {opacity: 1;transform: translateY(0);}
.text .text-label {transition-delay: 0.1s;}
.text .text-title {transition-delay: 0.25s;}
.text .text-stats {transition-delay: 0.45s;}

.text-label {display: flex;align-items: center;gap: 14px;margin-bottom: 24px;font-size: 14px;font-weight: 600;letter-spacing: 0.2em;color: rgba(255,255,255,0.8);}
.text-label::before {content: '';width: 40px;height: 1px;background: currentColor;}
.text-title {max-width: 1080px;font-size: 36px;font-weight: 500;line-height: 1.5;letter-spacing: -0.02em;color: rgba(255,255,255,0.72);word-break: keep-all; text-align:left;}
.text-title em {font-style: normal;font-weight: 700;color: #fff;}

/* 핵심 수치 */
.text-stats {position: relative;display: flex;margin-top: 48px;padding-top: 32px;list-style: none;}
.text-stats::before {content: '';position: absolute;top: 0;left: 0;width: 100%;height: 1px;background: rgba(255,255,255,0.3);transform: scaleX(0);transform-origin: left;transition: transform 1.2s cubic-bezier(0.65, 0, 0.35, 1) 0.5s;}
.text.active .text-stats::before {transform: scaleX(1);}
.text-stats li {flex: 1;min-width: 0;}
.text-stats li + li {padding-left: 40px;border-left: 1px solid rgba(255,255,255,0.15);}
.text-stats strong {display: block;font-size: 48px;font-weight: 700;line-height: 1;letter-spacing: -0.02em;font-variant-numeric: tabular-nums;}
.text-stats .unit {margin-left: 4px;font-size: 22px;font-weight: 600;}
.text-stats .label {display: block;margin-top: 12px;font-size: 15px;color: rgba(255,255,255,0.7);}
/* Content After Visual */
.content-section {padding: 150px 40px; max-width: 1400px; margin: 0 auto;}
.content-section h2 {font-size: 48px; font-weight: 700; margin-bottom: 40px; color: #111;}
.content-section p {font-size: 18px; line-height: 1.8; color: #666; margin-bottom: 20px;}

.business {
    --line: #CDCDCD;
    --line-dl: #B2B2B2;
    --text: #444;
    --sub: #707070;
    --tint: #EEF4FA;
    --sticky-top: 80px;       /* 왼쪽 제목 고정 위치 : 상단에 고정 헤더가 있으면 '헤더 높이 + 20px' 로 */
	
	--main: var(--main-color, #0060A1);
    --ink: #111;
    --text: #444;
    --sub: #707070;
    --line: #E3E3E3;
    --tint: #F2F7FC;
    --inner: 1400px;
    --gutter: 40px;
    --header-h: 0px;  
}

/* 초기화 : :where() 로 우선순위 0 → reset.css / company.css 가 항상 이김 */
:where(.business *, .business *::before, .business *::after) {box-sizing: border-box;}
:where(.business) :where(h2, h3, h4, p, ul, ol, figure, dl, dd) {margin: 0; padding: 0;}
:where(.business) :where(ul, ol) {list-style: none;}
:where(.business) :where(img) {display: block; max-width: 100%; height: auto;}
:where(.business) :where(a) {color: inherit; text-decoration: none;}
:where(.business) :where(button) {margin: 0; padding: 0; border: 0; background: none; font: inherit; color: inherit; text-align: left; cursor: pointer;}
.business .sr-only {position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;}

/* 담당자 문의 Section */

.sec-head .eyebrow {display: block; margin-bottom: 14px; font-size: 24px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--main);}
/* 왼쪽 제목(고정) + 오른쪽 내용 */
.split {display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 40px;}
.split-aside {position: sticky; top: calc(var(--header-h) + 40px); align-self: start;}

.about-lead {font-size: clamp(19px, 1.6vw, 24px); font-weight: 600; line-height: 1.6; letter-spacing: -.01em;}
.info-list {margin-top: 40px; border-top: 1px solid var(--ink);}
.info-list > div {display: grid; grid-template-columns: 160px minmax(0, 1fr); align-items: baseline; gap: 24px; padding: 22px 0; border-bottom: 1px solid var(--line);}
.info-list dt {font-size: 16px; font-weight: 600; color: var(--sub);}
.info-list dd {font-size: 17px; line-height: 1.6;}

.biz-cta {display: inline-flex; align-items: center; gap: 14px; margin-top: 40px; padding: 15px 26px 15px 28px; border: 1px solid var(--ink); border-radius: 999px; font-size: 16px; font-weight: 600; transition: background-color .2s, color .2s;}
.biz-cta::after {content: ""; width: 7px; height: 7px; border-top: 1.5px solid currentColor; border-right: 1.5px solid currentColor; transform: rotate(45deg);}
.biz-cta:hover {background-color: var(--ink); color: #fff;}
.biz-cta:focus-visible {outline: 2px solid var(--main); outline-offset: 3px;}
.contact-panel {--line: #DCE3EA;
    display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr) minmax(0, 1fr); gap: 48px clamp(32px, 4vw, 48px);
    padding: clamp(40px, 5vw, 72px); border-radius: 24px; background-color: #F4F7FA;}
.contact-head h2 {font-size: clamp(26px, 2.2vw, 40px); font-weight: 700; line-height: 1.4; letter-spacing: -.02em;}
.contact-head p {margin-top: 16px; font-size: 16px; line-height: 1.7; color: var(--text);}
.contact-head .biz-cta {margin-top: 16px;}
.biz-cta.is-fill {border-color: var(--ink); background-color: var(--ink); color: #fff;}
.biz-cta.is-fill:hover {border-color: var(--main); background-color: var(--main);}

.contact-label {margin-bottom: 14px; font-size: 16px; font-weight: 600; color: var(--main);}
.contact-panel .info-list {margin-top: 0;}
.contact-panel .info-list > div {grid-template-columns: 64px minmax(0, 1fr); gap: 16px; padding: 16px 0;}
.contact-panel .info-list dt {font-size: 15px;}
.contact-panel .info-list dd {font-size: 16px; overflow-wrap: anywhere;}
.contact-panel .info-list dd a:hover {color: var(--main); text-decoration: underline;}

.dl-list {border-top: 1px solid var(--ink);}
.dl-list li {display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px 12px; padding: 16px 0; border-bottom: 1px solid var(--line);}
.dl-name {font-size: 16px; font-weight: 600;}
.dl-btns {display: flex; gap: 6px;}
.dl-btn {display: inline-flex; align-items: center; gap: 8px; padding: 7px 12px 7px 14px; border: 1px solid #7D7D7D; border-radius: 999px; background-color: #fff; font-size: 14px; white-space: nowrap; transition: border-color .2s, color .2s;}
.dl-btn::after {content: ""; width: 6px; height: 6px; margin-top: -3px; border-right: 1.5px solid currentColor; border-bottom: 1.5px solid currentColor; transform: rotate(45deg);}
.dl-btn:hover {border-color: var(--main); color: var(--main);}
.dl-btn:focus-visible {outline: 2px solid var(--main); outline-offset: 2px;}

/* Sticky */
/* 왼쪽 제목(고정) + 오른쪽 내용 */


/* =========================================
   staffing.css
   ========================================= */
.staffing .head-wrap {width:400px; flex-shrink:0;}


.case-list {display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 40px; width:100%;}
.case-list li {padding: 28px 0 40px; border-top: 1px solid #000;}
.case-num {font-size: 16px; font-weight: 600; color: var(--main-color); font-variant-numeric: tabular-nums;}
.case-list p {margin-top: 18px; margin-bottom:20px; font-size: 32px; font-weight: 600; line-height: 1.5; color: #111;}
.case-list li span:last-child {font-size:16px; color:#444; font-weight:500; word-break:break-all;}
.case-list .case-title {margin-top: 18px; font-size: 22px; font-weight: 600; line-height: 1.45; color: #111;}
.case-list .case-desc {margin-top: 12px; font-size: 17px; font-weight: 400; line-height: 1.6; color: var(--text);}

.proc {width:100%;}
.proc-group + .proc-group {margin-top: 48px;}
.proc-group-name {margin-bottom: 14px; font-size: 15px; font-weight: 600; color: var(--main-color);}
.proc-list {border-top: 1px solid #000;}
.proc-item {display: grid; grid-template-columns: 56px minmax(0, 220px) minmax(0, 1fr); align-items: center; gap: 0 24px; padding: 26px 0; border-bottom: 1px solid var(--line);}
.proc-list.no-tag .proc-item {grid-template-columns: 64px minmax(0, 240px) minmax(0, 1fr);}
.proc-num {font-size: 18px; font-weight: 600; color: var(--main-color); font-variant-numeric: tabular-nums;}
.proc-name {font-size: 20px; font-weight: 600; color: #111;}
.proc-desc {font-size: 16px; line-height: 1.6; color: var(--text);}

/* 담당 태그 : .keyword-wrap 과 같은 알약 모양 */
.proc-tag {justify-self: end; padding: 6px 12px; border: 1px solid #7D7D7D; border-radius: 999px; font-size: 14px; line-height: 1.2; color: #333; white-space: nowrap;}
.proc-tag.is-client {border-color: var(--main-color); color: var(--main-color);}
.proc-tag.is-both {border-color: transparent; background-color: #DCE8F5; color: var(--main-color);}

/* =========================================
   outsourcing.css
   ========================================= */
.cmp-table {width: 100%; border-collapse: collapse; border-top: 2px solid var(--ink); table-layout: fixed;}
.cmp-table col.c-label {width: 24%;}
.cmp-table th,
.cmp-table td {padding: 24px 28px; border-bottom: 1px solid var(--line); font-size: 17px; line-height: 1.6; text-align: left; vertical-align: top;}
.cmp-table thead th {padding-top: 28px; padding-bottom: 28px; font-size: 19px; font-weight: 700;}
.cmp-table tbody th {font-weight: 600; color: var(--sub);}
.cmp-table .is-focus {background-color: var(--tint);}
.cmp-table thead .is-focus {color: var(--main);}
.cmp-table tbody td.is-focus {font-weight: 600;}
.cmp-note {margin-top: 28px; padding-left: 16px; border-left: 2px solid var(--main); font-size: 16px; line-height: 1.75; color: var(--text);}

.section.field .inner-wrap {flex-direction:column; gap:0;}
.section.field .head-wrap {margin-bottom:0; position:static;}   /* 세로 배치라 sticky 해제 (목록이 제목 밑으로 지나가지 않게) */
.field-wrap {display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 0 clamp(32px, 4.5vw, 80px); align-items: start; margin-top: clamp(40px, 4vw, 40px); width: 100%;}
.field-group + .field-group {margin-top: 36px;}
.field-group-name {margin-bottom: 12px; font-size: 14px; font-weight: 600; color: var(--main);}
.field-list {border-top: 1px solid var(--ink);}
.field-item {border-bottom: 1px solid var(--line);}
.field-btn {display: flex; align-items: center; gap: 20px; width: 100%; padding: 19px 16px 19px 12px; font-size: 19px; font-weight: 500; transition: background-color .2s, color .2s;}
.field-btn .num {flex-shrink: 0; width: 24px; font-size: 14px; font-weight: 600; color: var(--sub); font-variant-numeric: tabular-nums;}
.field-btn .name {flex: 1;}
.field-btn::after {content: ""; flex-shrink: 0; width: 8px; height: 8px; border-top: 1.5px solid currentColor; border-right: 1.5px solid currentColor; opacity: .4; transform: rotate(45deg); transition: transform .25s, opacity .2s;}
.field-btn:focus-visible {outline: 2px solid var(--main); outline-offset: -2px;}
.field-item.is-active .field-btn {background-color: var(--tint); color: var(--main); font-weight: 700;}
.field-item.is-active .num {color: var(--main);}
.field-item.is-active .field-btn::after {opacity: 1;}
.field-detail {display: none;}

.field-panel {position: sticky; top: calc(var(--header-h) + 40px);}
.panel-body {transition: opacity .15s;}
.field-panel.is-changing .panel-body {opacity: 0;}
.panel-fig {width:720px; height:540px;}
.panel-fig img {width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 20px; background-color: #E9EDF1;}
.panel-group {margin: 28px 0 8px; font-size: 14px; font-weight: 600; color: var(--main);}
.panel-name {font-size: 28px; font-weight: 700; letter-spacing: -.01em;}
/* 설명은 두 줄 높이로 고정 → 분야를 바꿔도 아래 키워드가 위아래로 튀지 않음 */
.panel-desc {margin-top: 10px; font-size: 16px; line-height: 1.7; color: var(--text);}
.field-desc {margin-top: 18px; font-size: 15px; line-height: 1.7; color: var(--text);}
.field-detail .keyword-wrap {margin-top: 10px;}

.keyword-wrap {display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 10px;}
.keyword-wrap span {padding: 6px 12px; border: 1px solid #7D7D7D; border-radius: 999px; font-size: 14px;}

/* =========================================
   responsive
   - PC(1480~) 규칙은 위쪽 그대로, 아래는 화면이 좁아질 때만 덮어씀
   ========================================= */

/* ~1479 : 도급 패널 사진을 칸 너비에 맞춤 (720px 고정이면 1480 아래에서 화면을 넘침) */
@media (max-width: 1479px) {
    .panel-fig {width: 100%; height: auto;}
}

/* ~1279 : 노트북 */
@media (max-width: 1279px) {
    .main-title {font-size: 60px;}
    .text-title {font-size: 30px;}

    .head-wrap,
    .staffing .head-wrap {width: 320px;}
    .case-list p {font-size: 26px;}

    .proc-item {grid-template-columns: 48px minmax(0, 180px) minmax(0, 1fr); gap: 0 20px;}
    .proc-name {font-size: 19px;}

    .contact-panel {grid-template-columns: repeat(2, minmax(0, 1fr));}
    .contact-head {grid-column: 1 / -1;}
}

/* ~1024 : 태블릿 — 제목 → 내용 세로 배치, sticky 해제 */
@media (max-width: 1024px) {
    .business {--gutter: 32px;}
    .wrap {padding: 40px 0;}
    .section {padding: 56px 0;}

    /* 상단 배너 */
    .inner {padding-top: 72px;}
    .main-title-wrap {margin-bottom: 48px; padding: 0 var(--gutter);}   /* 공통 CSS 의 .wrapper 에 좌우 여백이 이미 있으면 padding 은 지워 주세요 */
    .main-title {font-size: 48px;}
    .main-title-wrap span {font-size: 17px; line-height: 1.5;}
    .text {left: 48px; right: 48px; bottom: 48px;}
    .text-title {font-size: 24px;}

    /* 세로 배치 : align-items 를 stretch 로 바꿔야 내용이 화면 폭을 다 씀 */
    .business .inner-wrap {flex-direction: column; align-items: stretch; gap: 0;}
    .head-wrap,
    .staffing .head-wrap {position: static; width: auto; margin-bottom: 40px;}
    .section.field .head-wrap {margin-bottom: 0;}

    .case-list p {font-size: 24px;}

    /* 도급 분야 : 오른쪽 패널 숨기고 아코디언 */
    .field-wrap {grid-template-columns: 1fr; margin-top: 32px;}
    .field-panel {display: none;}
    .field-item.is-active .field-btn {background: none; color: inherit; font-weight: 500;}
    .field-item.is-active .num {color: var(--sub);}
    .field-btn::after {transform: rotate(135deg);}
    .field-item.is-open .field-btn {color: var(--main); font-weight: 700;}
    .field-item.is-open .num {color: var(--main);}
    .field-item.is-open .field-btn::after {opacity: 1; transform: rotate(-45deg);}
    .field-item.is-open .field-detail {display: block; padding: 4px 12px 28px;}
    .field-detail img {width: 100%; aspect-ratio: 16 / 10; object-fit: cover; border-radius: 14px; background-color: #E9EDF1;}
}

/* ~768 : 모바일 */
@media (max-width: 768px) {
    .business {--gutter: 20px;}
    .wrap {padding: 20px 0;}
    .section {padding: 48px 0;}
    .inner-wrap {margin-bottom: 0;}
    .pc-only {display: none;}

    /* 상단 배너 */
    .inner {padding-top: 48px;}
    .main-title-wrap {margin-bottom: 32px;}
    .main-title {margin-bottom: 14px; font-size: 30px; line-height: 1.3;}
    .main-title-wrap span {font-size: 15px;}
    .motion-visual {width: 95%; height: 50vh;}
    .text {left: 24px; right: 24px; bottom: 32px;}
    .text-label {gap: 10px; margin-bottom: 14px; font-size: 12px;}
    .text-label::before {width: 24px;}
    .text-title {font-size: 16px; line-height: 1.6;}

    /* 제목 */
    .head-wrap,
    .staffing .head-wrap {margin-bottom: 32px;}

    /* 특징 목록 : 1열, 설명 안의 <br> 은 모바일에서 무시 */
    .case-list {grid-template-columns: 1fr;}
    .case-list li {padding: 20px 0 28px;}
    .case-list p {margin: 12px 0 10px; font-size: 20px;}
    .case-list li span:last-child {font-size: 15px; line-height: 1.6; word-break: keep-all;}
    .case-list li span:last-child br {display: none;}

    /* 업무 프로세스 : 번호 + 단계명 / 설명은 아래 줄 */
    .proc-group + .proc-group {margin-top: 36px;}
    .proc-group-name {font-size: 14px;}
    .proc-item,
    .proc-list.no-tag .proc-item {grid-template-columns: 32px minmax(0, 1fr); grid-template-areas: "num name" ". desc"; gap: 6px 10px; padding: 18px 0;}
    .proc-num {grid-area: num; font-size: 15px;}
    .proc-name {grid-area: name; font-size: 17px;}
    .proc-desc {grid-area: desc; font-size: 15px;}

    /* 파견 vs 도급 비교표 */
    .cmp-table col.c-label {width: 28%;}
    .cmp-table th,
    .cmp-table td {padding: 14px 10px; font-size: 14px;}
    .cmp-table thead th {padding-top: 16px; padding-bottom: 16px; font-size: 15px;}

    /* 도급 분야 */
    .field-btn {gap: 14px; padding: 17px 12px 17px 8px; font-size: 17px;}
    .field-desc {font-size: 14px;}
    .keyword-wrap span {padding: 5px 10px; font-size: 13px;}

    /* 헤드헌팅이란 */
    .about-lead {font-size: 17px;}
    .info-list {margin-top: 28px;}
    .info-list > div {grid-template-columns: 88px minmax(0, 1fr); gap: 12px; padding: 16px 0;}
    .info-list dt {font-size: 14px;}
    .info-list dd {font-size: 15px;}

    /* 문의 + 자료 */
    .contact-panel {grid-template-columns: 1fr; gap: 36px; padding: 32px 20px; border-radius: 16px;}
    .sec-head .eyebrow {margin-bottom: 10px; font-size: 14px;}
    .contact-head h2 {font-size: 24px;}
    .contact-head p {font-size: 15px;}
    .biz-cta {padding: 13px 22px 13px 24px; font-size: 15px;}
    .contact-panel .info-list > div {grid-template-columns: 56px minmax(0, 1fr); padding: 14px 0;}
    .dl-list li {flex-direction: column; align-items: flex-start;}
}

@media (max-width: 480px) {
    .main-title {font-size: 26px;}
    .text-title {font-size: 15px;}
}

/* 동작 줄이기 설정 사용자 */
@media (prefers-reduced-motion: reduce) {
    .field-btn, .field-btn::after, .panel-body, .biz-cta, .dl-btn {transition: none;}
}