Files
mobipin.noname.company/css/styles.css
zenn 239f61c506 ESG 스크롤 복귀와 기술 역량 이미지 정렬·지도 표시 개선
- ESG 푸터에서 위로 스크롤하면 문서 영역이 먼저 복귀하도록 처리
- 섹션 전환 중 문서 내부 스크롤을 막아 상단 잘림 방지
- 기술 역량 이미지의 상단 여백과 가용 높이를 본문 기준으로 정렬
- 이미지 진입 애니메이션을 고려해 텍스트 겹침과 화면 이탈 방지
- 기술 역량 프로젝트 순서·설명 및 개별 이미지 배치 설정 정리
- 기술 역량 데이터에 맞춰 검색용 정적 HTML 동기화
- 지도 검색용 도로명 주소와 층·호수 안내를 분리해 건물 위치 핀 표시
- 지도 기본 확대 수준을 16으로 설정하고 한국어 표시 적용
- 회사 소개·조직도와 개인정보 동의 거부 안내 문구 정리

검증:
- JavaScript 구문 검사 및 git diff --check 통과
- ESG 세 문서의 푸터 복귀·내부 스크롤·키보드 이동 확인
- 기술 역량 29개 슬라이드의 데스크톱 이미지 정렬 및 모바일 이동 확인
- 본사·지사 지도 위치 핀, 상세 주소, 외부 지도 링크 확인
2026-09-30 17:55:10 +09:00

3296 lines
60 KiB
CSS

/* 공통: 색상, 기본 요소, 헤더와 네비게이션 */
:root {
--bg: #07090d;
--bg-soft: #10141b;
--panel: rgba(16, 20, 27, .78);
--panel-solid: #121821;
--line: rgba(255, 255, 255, .14);
--line-strong: rgba(255, 255, 255, .26);
--text: #f5f7fb;
--muted: #aab3c2;
--dim: #697484;
--accent: #9ee9ff;
--accent-2: #67f0b5;
--warn: #ffca75;
--max: 1180px;
--ease: cubic-bezier(.2, .8, .2, 1);
}
* {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
margin: 0;
background: var(--bg);
color: var(--text);
font-family: "Pretendard Variable", Pretendard, "Noto Sans KR", system-ui, sans-serif;
letter-spacing: 0;
overflow-x: hidden;
word-break: keep-all;
overflow-wrap: break-word;
}
body.capabilities-body {
overflow: hidden;
}
a {
color: inherit;
text-decoration: none;
}
button,
input,
select,
textarea {
font: inherit;
}
button {
color: inherit;
}
.site-header {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 20;
display: flex;
align-items: center;
justify-content: space-between;
height: 72px;
padding: 0 clamp(18px, 4vw, 54px);
background: linear-gradient(180deg, rgba(7, 9, 13, .88), rgba(7, 9, 13, .48));
border-bottom: 1px solid transparent;
backdrop-filter: blur(18px);
transition: background .28s var(--ease), border-color .28s var(--ease);
}
.site-header.is-scrolled {
background: rgba(7, 9, 13, .9);
border-color: var(--line);
}
.brand {
display: inline-flex;
align-items: center;
gap: 12px;
font-size: 13px;
font-weight: 850;
letter-spacing: .16em;
}
.brand-logo {
display: block;
width: 112px;
height: auto;
}
.desktop-nav {
display: flex;
align-items: center;
gap: 4px;
}
.desktop-nav a {
padding: 10px 14px;
color: var(--muted);
font-size: 14px;
border: 1px solid transparent;
border-radius: 999px;
transition: color .2s var(--ease), border-color .2s var(--ease), background .2s var(--ease);
}
.desktop-nav a:hover,
.desktop-nav a[aria-current="page"] {
color: var(--text);
border-color: var(--line);
background: rgba(255, 255, 255, .05);
}
.nav-toggle {
display: none;
width: 42px;
height: 42px;
border: 1px solid var(--line);
border-radius: 6px;
background: rgba(255, 255, 255, .04);
align-items: center;
justify-content: center;
flex-direction: column;
gap: 5px;
cursor: pointer;
}
.page-dots {
position: fixed;
z-index: 12;
top: 50%;
right: clamp(26px, 4vw, 68px);
display: grid;
justify-items: center;
gap: 3px;
width: 50px;
padding: 13px 8px;
border: 1px solid rgba(255, 255, 255, .1);
border-radius: 999px;
background: rgba(6, 15, 18, .56);
box-shadow: 0 10px 30px rgba(0, 0, 0, .18), inset 0 1px rgba(255, 255, 255, .06);
backdrop-filter: blur(12px);
transform: translateY(-50%);
}
.page-dot {
position: relative;
display: flex;
align-items: center;
justify-content: center;
width: 32px;
min-height: 17px;
padding: 0;
border: 0;
background: transparent;
cursor: pointer;
}
.page-dot-mark {
width: 12px;
height: 2px;
border-radius: 999px;
background: rgba(255, 255, 255, .32);
box-shadow: 0 0 0 1px rgba(0, 0, 0, .08);
transition: width .2s var(--ease), height .2s var(--ease), background .2s var(--ease), box-shadow .2s var(--ease);
}
.page-dot:hover .page-dot-mark,
.page-dot:focus-visible .page-dot-mark {
width: 20px;
background: rgba(255, 255, 255, .72);
}
.page-dot.is-active .page-dot-mark {
width: 28px;
height: 3px;
background: #fff;
box-shadow: 0 0 12px rgba(158, 233, 255, .5);
}
.page-dot-label {
position: absolute;
top: 50%;
right: calc(100% + 16px);
width: max-content;
max-width: 180px;
padding: 7px 10px;
border-radius: 4px;
background: rgba(7, 9, 13, .9);
color: #fff;
font-size: 13px;
font-weight: 750;
line-height: 1.25;
text-align: right;
white-space: nowrap;
opacity: 0;
pointer-events: none;
transform: translate(6px, -50%);
transition: opacity .18s var(--ease), transform .18s var(--ease);
}
.page-dot-label::after {
content: "";
position: absolute;
top: 50%;
right: -5px;
width: 10px;
height: 10px;
background: inherit;
transform: translateY(-50%) rotate(45deg);
}
.page-dot:hover .page-dot-label,
.page-dot:focus-visible .page-dot-label {
opacity: 1;
transform: translate(0, -50%);
}
.nav-toggle span {
width: 18px;
height: 2px;
background: var(--text);
transition: transform .25s var(--ease), opacity .2s var(--ease);
}
.nav-toggle.is-open span:first-child {
transform: translateY(7px) rotate(45deg);
}
.nav-toggle.is-open span:nth-child(2) {
opacity: 0;
}
.nav-toggle.is-open span:last-child {
transform: translateY(-7px) rotate(-45deg);
}
.mobile-menu {
position: fixed;
z-index: 19;
top: 72px;
left: 0;
right: 0;
bottom: 0;
display: none;
padding: 24px 28px max(24px, env(safe-area-inset-bottom));
background: #0b1013;
overflow-y: auto;
overscroll-behavior: contain;
visibility: hidden;
opacity: 0;
transform: translateY(-12px);
transition: opacity .28s var(--ease), transform .35s var(--ease), visibility .35s;
}
.mobile-menu.is-open {
visibility: visible;
opacity: 1;
transform: translateY(0);
}
.mobile-menu > a {
position: relative;
display: grid;
grid-template-columns: minmax(0, 1fr) 24px;
align-content: center;
gap: 7px 16px;
min-height: 112px;
padding: 20px 0;
color: var(--text);
border-bottom: 1px solid var(--line);
opacity: 0;
transform: translateY(16px);
transition: opacity .3s var(--ease), transform .4s var(--ease), color .2s;
}
.mobile-menu.is-open > a {
opacity: 1;
transform: translateY(0);
transition-delay: calc(var(--menu-index) * 45ms);
}
.mobile-menu-label {
grid-column: 1;
color: var(--dim);
font-size: 12px;
line-height: 1.4;
}
.mobile-menu-title {
grid-column: 1;
font-size: 30px;
font-weight: 700;
line-height: 1.25;
}
.mobile-menu > a img {
grid-column: 2;
grid-row: 1 / 3;
align-self: center;
width: 24px;
height: 24px;
filter: brightness(0) invert(1);
opacity: .5;
}
.mobile-menu > a[aria-current="page"],
.mobile-menu > a:hover {
color: var(--accent-2);
}
.mobile-menu > a[aria-current="page"] .mobile-menu-label {
color: var(--accent-2);
}
.mobile-menu > a[aria-current="page"]::before {
content: "";
position: absolute;
left: -14px;
top: 50%;
width: 3px;
height: 26px;
background: var(--accent-2);
transform: translateY(-50%);
}
.mobile-menu-signature {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
gap: 12px;
margin-top: auto;
padding-top: 32px;
color: var(--muted);
font-size: 11px;
line-height: 1.5;
}
.mobile-menu-signature a {
color: var(--accent);
font-size: 12px;
}
body.mobile-navigation-open {
overflow: hidden;
}
@media (prefers-reduced-motion: reduce) {
.mobile-menu,
.mobile-menu > a,
.nav-toggle span {
transition: none;
}
}
/* 홈 */
.home-hero {
min-height: 100svh;
position: relative;
overflow: hidden;
}
.hero-media,
.feature-bg {
position: absolute;
inset: 0;
background-position: center;
background-size: cover;
transform: scale(1.02);
}
.hero-media {
background-image:
linear-gradient(90deg, rgba(7, 9, 13, .94) 0%, rgba(7, 9, 13, .66) 38%, rgba(7, 9, 13, .18) 72%),
linear-gradient(180deg, rgba(7, 9, 13, .1), rgba(7, 9, 13, .9)),
url("../assets/images-webp/home-background.webp");
animation: slow-zoom 18s ease-in-out infinite alternate;
}
.hero-grid {
position: relative;
z-index: 1;
width: min(var(--max), calc(100% - 48px));
min-height: 100svh;
margin: 0 auto;
display: grid;
grid-template-columns: minmax(0, 1fr) 300px;
align-items: end;
gap: 36px;
padding: 132px 0 104px;
}
.hero-copy {
max-width: 770px;
}
.eyebrow,
.section-label {
margin: 0;
color: var(--accent);
font-size: 12px;
font-weight: 800;
letter-spacing: .18em;
text-transform: uppercase;
}
h1,
h2,
h3,
p {
margin-top: 0;
}
.hero-copy h1,
.feature-content h1,
.contact-hero h1 {
margin: 18px 0 22px;
font-size: clamp(42px, 6.3vw, 82px);
line-height: 1.05;
letter-spacing: 0;
}
.hero-lead,
.feature-content p,
.contact-hero p {
max-width: 660px;
color: #d1d7e2;
font-size: clamp(16px, 1.5vw, 20px);
line-height: 1.75;
word-break: keep-all;
}
.hero-actions {
display: flex;
flex-wrap: wrap;
gap: 10px;
margin-top: 34px;
}
.button {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 46px;
padding: 0 18px;
border-radius: 6px;
font-weight: 750;
border: 1px solid var(--line);
transition: transform .2s var(--ease), border-color .2s var(--ease), background .2s var(--ease);
}
.button:hover {
transform: translateY(-2px);
border-color: var(--line-strong);
}
.button-primary {
color: #031113;
background: linear-gradient(135deg, var(--accent), var(--accent-2));
border-color: transparent;
}
.button-ghost {
color: var(--text);
background: rgba(255, 255, 255, .06);
}
.hero-panel {
display: grid;
gap: 1px;
background: var(--line);
border: 1px solid var(--line);
backdrop-filter: blur(14px);
}
.hero-panel div {
padding: 22px;
background: rgba(10, 14, 20, .72);
}
.hero-panel strong {
display: block;
margin-bottom: 6px;
color: var(--accent-2);
font-size: 28px;
}
.hero-panel span {
color: var(--muted);
font-size: 13px;
}
.hero-footer {
position: absolute;
z-index: 1;
left: clamp(24px, 4vw, 54px);
right: clamp(24px, 4vw, 54px);
bottom: 22px;
display: flex;
justify-content: space-between;
gap: 20px;
padding-top: 16px;
border-top: 1px solid rgba(255, 255, 255, .25);
color: var(--dim);
font-size: 12px;
font-weight: 750;
text-transform: uppercase;
}
.section {
width: min(var(--max), calc(100% - 48px));
margin: 0 auto;
padding: 108px 0;
}
.intro {
display: grid;
grid-template-columns: 180px minmax(0, 1fr);
gap: 30px;
}
.intro-copy h2 {
margin-bottom: 18px;
font-size: clamp(30px, 4vw, 54px);
line-height: 1.14;
}
.intro-copy p {
color: var(--muted);
font-size: 17px;
line-height: 1.85;
}
.proof-strip {
grid-column: 2;
display: grid;
grid-template-columns: repeat(3, 1fr);
border-top: 1px solid var(--line);
border-left: 1px solid var(--line);
}
.proof-strip article {
min-height: 240px;
padding: 28px;
border-right: 1px solid var(--line);
border-bottom: 1px solid var(--line);
background:
linear-gradient(180deg, rgba(255, 255, 255, .055), rgba(255, 255, 255, .018));
}
.proof-strip span,
.preview-card span,
.office-list span {
display: block;
margin-bottom: 18px;
color: var(--accent);
font-size: 12px;
font-weight: 800;
letter-spacing: .16em;
text-transform: uppercase;
}
.proof-strip strong {
display: block;
margin-bottom: 14px;
font-size: 23px;
line-height: 1.25;
}
.proof-strip p {
color: var(--muted);
line-height: 1.7;
}
.showcase-preview {
display: grid;
grid-template-columns: 1fr 1fr;
min-height: 620px;
}
.home-body .intro {
width: 100%;
grid-template-columns: minmax(0, 1fr);
gap: 24px;
padding: 72px max(24px, calc((100% - 1180px) / 2));
align-content: center;
}
.home-body .intro-copy h2 {
max-width: 1000px;
margin: 0 0 20px;
font-size: 40px;
}
.home-body .intro-copy p {
max-width: 1000px;
margin: 0;
font-size: 16px;
}
.home-body .proof-strip {
grid-column: 1;
margin-top: 12px;
}
.home-body .proof-strip article {
min-height: 0;
padding: 24px;
}
.home-body .preview-card strong {
max-width: none;
font-size: 34px;
line-height: 1.2;
overflow-wrap: anywhere;
}
.home-body .preview-card p {
margin: 0;
font-size: 15px;
}
@media (min-width: 861px) and (min-height: 700px) {
html.home-page {
scroll-snap-type: none;
scroll-padding-top: 72px;
}
.home-body .home-hero,
.home-body .intro,
.home-body .showcase-preview {
scroll-snap-align: start;
}
.home-body .intro {
min-height: calc(100dvh - 72px);
padding-top: 48px;
padding-bottom: 48px;
}
.home-body .showcase-preview {
height: calc(100dvh - 72px);
min-height: 0;
grid-template-rows: repeat(2, minmax(0, 1fr));
}
.home-body .preview-card {
min-height: 0;
padding: 28px 40px;
}
.home-body .preview-card span {
margin-bottom: 12px;
}
}
@media (max-width: 860px) {
.mobile-menu {
display: flex;
flex-direction: column;
}
.mobile-menu > a {
flex-shrink: 0;
}
.home-body .intro-copy h2 {
font-size: 30px;
}
.home-body .preview-card strong {
font-size: 28px;
}
}
.preview-card {
position: relative;
display: flex;
flex-direction: column;
justify-content: flex-end;
min-height: 620px;
padding: clamp(28px, 5vw, 72px);
overflow: hidden;
isolation: isolate;
}
.preview-card::before {
content: "";
position: absolute;
inset: 0;
z-index: -2;
background-size: cover;
background-position: center;
transition: transform .8s var(--ease), filter .8s var(--ease);
}
.preview-card::after {
content: "";
position: absolute;
inset: 0;
z-index: -1;
background:
linear-gradient(180deg, rgba(7, 9, 13, .08), rgba(7, 9, 13, .92)),
linear-gradient(90deg, rgba(7, 9, 13, .8), rgba(7, 9, 13, .1));
}
.preview-card:hover::before {
transform: scale(1.06);
filter: saturate(1.12);
}
.preview-card.automotive::before {
background-image: url("../assets/images/automotive/automotive_01_background.jpeg");
}
.preview-card.robotics::before {
background-image: url("../assets/images/robotics/robotics_02_background.png");
}
.preview-card.solution::before {
background-image: url("../assets/images/solution/solution_04_background.png");
}
.preview-card.si::before {
background-image: url("../assets/images/si/si_05_background.png");
}
.preview-card strong {
max-width: 440px;
margin-bottom: 16px;
font-size: clamp(32px, 4.8vw, 64px);
line-height: 1.03;
}
.preview-card p {
max-width: 520px;
color: #d9dee7;
line-height: 1.75;
}
/* 기술 역량 */
.feature-bg {
opacity: 1;
animation: feature-breathe 12s ease-in-out infinite alternate;
background-position: center;
background-size: cover;
transition: opacity .35s var(--ease), transform .8s var(--ease);
}
@keyframes feature-breathe {
0% {
filter: brightness(.92) saturate(.96);
transform: scale(1);
}
100% {
filter: brightness(1.04) saturate(1.05);
transform: scale(1.035);
}
}
.feature-bg::after {
content: "";
position: absolute;
inset: 0;
background:
linear-gradient(90deg, rgba(7, 9, 13, .9) 0%, rgba(7, 9, 13, .62) 42%, rgba(7, 9, 13, .18) 78%),
linear-gradient(180deg, rgba(7, 9, 13, .08), rgba(7, 9, 13, .86));
}
.capabilities-workbench.is-table-slide .feature-bg::after {
background:
linear-gradient(180deg, rgba(2, 8, 18, .2), rgba(2, 8, 18, .62)),
rgba(2, 8, 18, .18);
}
.capabilities-workbench.is-certification-slide {
background: #061322;
}
.capabilities-workbench.is-certification-slide .feature-bg {
opacity: 0;
}
.capabilities-workbench.is-certification-slide .feature-bg::after {
display: none;
}
.feature-content {
position: absolute;
top: var(--capabilities-content-top);
left: var(--capabilities-gutter);
z-index: 2;
align-self: flex-start;
width: min(720px, 54%);
max-height: calc(100dvh - var(--capabilities-content-top) - 96px);
overflow-y: auto;
overscroll-behavior: contain;
scrollbar-width: thin;
}
.feature-content h1 {
max-width: 760px;
margin: 18px 0 12px;
font-size: 42px;
line-height: 1.2;
}
.feature-content p {
white-space: pre-line;
font-size: 15px;
line-height: 1.8;
}
.feature-content .feature-subtitle {
margin: 0 0 40px;
max-width: 660px;
color: rgba(255, 255, 255, .62);
font-size: 16px;
font-weight: 800;
line-height: 1.5;
white-space: normal;
}
.feature-object {
position: absolute;
z-index: 1;
right: clamp(190px, 17vw, 330px);
top: calc((100% + var(--capabilities-content-top) - 96px) / 2);
bottom: auto;
width: min(44vw, 720px);
height: auto;
max-height: max(0px, calc(100dvh - var(--capabilities-content-top) - 96px));
object-fit: contain;
opacity: 0;
pointer-events: none;
filter: drop-shadow(0 28px 46px rgba(0, 0, 0, .48));
transform: translate(0, -50%);
translate: calc(var(--object-fit-x, 0px) - 36px) var(--object-fit-y, 0px);
transition: opacity .28s var(--ease), translate .28s var(--ease);
}
.feature-object.is-visible {
opacity: .96;
translate: var(--object-fit-x, 0px) var(--object-fit-y, 0px);
transform: translate(0, -50%) scale(1);
}
.feature-object.is-right-edge {
right: 0;
bottom: auto;
top: 50%;
width: clamp(420px, 39vw, 720px);
max-height: none;
height: auto;
transform: translate(0, -50%) scale(.98);
}
.feature-object.is-right-edge.is-visible {
transform: translate(0, -50%) scale(1);
}
.feature-object.is-right-bottom {
right: 0;
left: auto;
bottom: 0;
top: auto;
width: clamp(440px, 44vw, 820px);
max-height: none;
height: auto;
transform: translateX(2%) scale(.98);
}
.feature-object.is-right-bottom.is-visible {
transform: translateX(2%) scale(1);
}
/* Coordinates are relative to the slide; anchors are relative to the image. */
.feature-object.is-custom-layout {
left: var(--object-x, 100%);
top: var(--object-y, 100%);
right: auto;
bottom: auto;
width: var(--object-width, 44%);
height: var(--object-height, auto);
max-width: var(--object-max-width, none);
max-height: var(--object-max-height, none);
transform: translate(var(--object-anchor-x, -100%), var(--object-anchor-y, -100%)) scale(.98);
transform-origin: right bottom;
}
.feature-object.is-custom-layout.is-visible {
transform: translate(var(--object-anchor-x, -100%), var(--object-anchor-y, -100%));
}
.feature-object-secondary {
filter: drop-shadow(0 28px 46px rgba(0, 0, 0, .34));
}
.mobile-certificate-gallery {
display: none;
}
.feature-object.is-motion-bottom:not(.is-visible) {
translate: var(--object-fit-x, 0px) calc(var(--object-fit-y, 0px) + 36px);
}
.feature-object.is-repositioning {
transition: none;
}
.capabilities-workbench.is-certification-slide .feature-subtitle,
.capabilities-workbench.is-certification-slide [data-feature-description] {
display: none;
}
@media (min-width: 861px) {
/* Reserve space for the title and toolbar instead of anchoring to viewport percentages. */
.is-certification-slide .feature-object.is-custom-layout,
.is-certification-slide .feature-object.is-custom-layout.is-visible {
left: 35%;
top: var(--certificate-top, 240px);
width: 26%;
height: max(0px, calc(100% - var(--certificate-top, 240px) - 116px));
max-height: none;
object-fit: contain;
transform: translate(-50%, 0);
}
.is-certification-slide .feature-object-secondary.is-custom-layout,
.is-certification-slide .feature-object-secondary.is-custom-layout.is-visible {
left: 65%;
}
}
.feature-table-wrap {
position: relative;
z-index: 2;
width: min(1320px, calc(100% - 220px));
margin: auto;
}
.feature-summary-table {
width: 100%;
border-collapse: collapse;
color: #20242b;
background: rgba(245, 247, 249, .82);
box-shadow: 0 24px 70px rgba(0, 0, 0, .22);
backdrop-filter: blur(5px);
}
.feature-summary-table th {
height: 54px;
color: #fff;
background: rgba(36, 87, 171, .96);
font-size: 18px;
font-weight: 850;
text-align: center;
}
.feature-summary-table th,
.feature-summary-table td {
border: 1px solid rgba(20, 27, 38, .38);
}
.feature-summary-table td {
height: 48px;
padding: 0 22px;
font-size: 17px;
font-weight: 700;
}
.feature-summary-table td:last-child {
width: 30%;
text-align: center;
}
.capabilities-toolbar {
position: absolute;
z-index: 2;
left: var(--capabilities-gutter);
right: var(--capabilities-gutter);
top: 90px;
display: flex;
gap: 8px;
padding-bottom: 18px;
border-bottom: 1px solid rgba(255, 255, 255, .24);
}
.capabilities-toolbar button,
.autoplay-toggle {
min-width: 86px;
min-height: 40px;
padding: 0 16px;
border: 1px solid var(--line);
border-radius: 999px;
color: var(--muted);
background: rgba(255, 255, 255, .06);
cursor: pointer;
}
.capabilities-toolbar button.is-active {
color: #031113;
background: var(--accent);
border-color: transparent;
font-weight: 800;
}
.workbench-stage > .autoplay-toggle {
position: absolute;
z-index: 2;
right: clamp(24px, 5vw, 72px);
bottom: 28px;
color: var(--text);
background: rgba(255, 255, 255, .12);
}
.autoplay-toggle,
.mobile-autoplay {
position: relative;
overflow: hidden;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 7px;
}
.autoplay-toggle img,
.mobile-autoplay img,
.autoplay-toggle span:not(.autoplay-progress),
.mobile-autoplay span:not(.autoplay-progress) {
position: relative;
z-index: 1;
}
.autoplay-toggle img,
.mobile-autoplay img {
width: 18px;
height: 18px;
filter: invert(1);
opacity: .88;
}
.autoplay-progress {
position: absolute;
z-index: 0;
inset: 0 auto 0 0;
width: 0%;
background: linear-gradient(90deg, rgba(158, 233, 255, .55), rgba(103, 240, 181, .24));
opacity: .9;
pointer-events: none;
}
.autoplay-toggle.is-running .autoplay-progress,
.mobile-autoplay.is-running .autoplay-progress {
animation: autoplay-fill var(--autoplay-duration, 9000ms) linear forwards;
}
.autoplay-toggle.is-paused .autoplay-progress,
.mobile-autoplay.is-paused .autoplay-progress {
width: 0%;
animation: none;
}
@keyframes autoplay-fill {
from {
width: 0%;
}
to {
width: 100%;
}
}
.mobile-slide-controls {
display: none;
}
.mobile-slide-status {
display: none;
}
.capabilities-workbench {
--capabilities-gutter: clamp(56px, 7vw, 132px);
--capabilities-content-top: 212px;
position: fixed;
inset: 0;
height: 100dvh;
overflow: hidden;
display: block;
background: var(--bg);
}
.workbench-stage {
min-height: 0;
height: 100%;
position: relative;
top: 0;
display: flex;
align-items: center;
overflow: hidden;
padding: var(--capabilities-content-top) var(--capabilities-gutter) 96px;
}
.project-dots {
position: absolute;
z-index: 6;
top: 50%;
right: clamp(26px, 4vw, 68px);
width: 50px;
padding: 12px 0;
transform: translateY(-50%);
}
.project-progress {
display: grid;
gap: 3px;
justify-items: center;
padding: 13px 8px;
border: 1px solid rgba(255, 255, 255, .1);
border-radius: 999px;
background: rgba(6, 15, 18, .56);
box-shadow: 0 10px 30px rgba(0, 0, 0, .18), inset 0 1px rgba(255, 255, 255, .06);
backdrop-filter: blur(12px);
transition: border-color .2s var(--ease), background .2s var(--ease), box-shadow .2s var(--ease);
}
.project-dots:hover:not(.is-closed-after-click) .project-progress,
.project-dots:focus-within:not(.is-closed-after-click) .project-progress {
border-color: rgba(255, 255, 255, .16);
background: rgba(6, 15, 18, .72);
box-shadow: 0 14px 36px rgba(0, 0, 0, .24), inset 0 1px rgba(255, 255, 255, .08);
}
.project-menu {
position: absolute;
top: 50%;
right: -12px;
width: 360px;
max-height: min(680px, calc(100dvh - 220px));
display: grid;
grid-template-rows: auto minmax(0, 1fr) auto;
padding: 10px 12px;
border: 1px solid rgba(255, 255, 255, .14);
border-radius: 8px;
background: rgba(5, 17, 19, .96);
backdrop-filter: blur(14px);
transform: translateY(-50%);
visibility: hidden;
pointer-events: none;
opacity: 0;
transition: opacity .2s var(--ease), visibility .2s;
}
.project-dots:hover:not(.is-closed-after-click) .project-menu,
.project-dots:focus-within:not(.is-closed-after-click) .project-menu {
visibility: visible;
pointer-events: auto;
opacity: 1;
}
.project-dots:hover:not(.is-closed-after-click) .project-progress,
.project-dots:focus-within:not(.is-closed-after-click) .project-progress {
visibility: hidden;
}
.project-menu-list {
min-height: 0;
overflow-y: auto;
overscroll-behavior: contain;
scrollbar-width: thin;
display: grid;
gap: 8px;
padding: 8px 0;
}
.project-preview {
position: relative;
display: flex;
align-items: flex-end;
justify-content: flex-end;
height: 96px;
min-height: 96px;
overflow: hidden;
padding: 12px 14px;
border: 1px solid rgba(255, 255, 255, .14);
border-radius: 4px;
background: #102025;
color: #fff;
text-align: right;
cursor: pointer;
}
.project-preview::after {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(180deg, rgba(0, 0, 0, .12), rgba(0, 0, 0, .8));
pointer-events: none;
}
.project-preview:hover,
.project-preview.is-active {
border-color: var(--accent);
}
.project-preview .project-title {
position: relative;
z-index: 1;
font-size: 13px;
font-weight: 700;
line-height: 1.5;
word-break: keep-all;
overflow-wrap: anywhere;
text-shadow: 0 1px 3px rgba(0, 0, 0, .8);
}
.project-preview .thumbnail-background {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
object-fit: cover;
}
.project-category-link {
display: flex;
justify-content: space-between;
align-items: center;
gap: 10px;
min-height: 48px;
padding: 8px;
border: 0;
background: transparent;
color: rgba(255, 255, 255, .6);
cursor: pointer;
font-size: 12px;
}
.project-category-link:first-child {
border-bottom: 1px solid rgba(255, 255, 255, .14);
}
.project-category-link:last-child {
border-top: 1px solid rgba(255, 255, 255, .14);
}
.project-category-link img {
width: 16px;
height: 16px;
filter: brightness(0) invert(1);
}
.project-category-direction {
display: inline-flex;
align-items: center;
gap: 4px;
flex-shrink: 0;
}
.project-category-link.is-next .project-category-direction {
flex-direction: row-reverse;
}
.project-category-link strong {
font-size: 14px;
color: var(--accent);
text-transform: uppercase;
}
.project-category-link:hover {
color: #fff;
}
.dot-button {
position: relative;
z-index: 1;
display: flex;
align-items: center;
justify-content: center;
gap: 0;
width: 32px;
min-width: 32px;
min-height: 17px;
padding: 0;
border: 0;
color: rgba(255, 255, 255, .52);
background: transparent;
cursor: pointer;
}
.dot-mark {
width: 12px;
height: 2px;
display: block;
border-radius: 999px;
background: rgba(255, 255, 255, .32);
box-shadow: 0 0 0 1px rgba(0, 0, 0, .08);
transition: width .22s var(--ease), height .22s var(--ease), background .22s var(--ease), box-shadow .22s var(--ease);
}
.dot-button:hover .dot-mark {
width: 20px;
background: rgba(255, 255, 255, .72);
}
.dot-button.is-active .dot-mark {
width: 28px;
height: 3px;
background: #fff;
box-shadow: 0 0 12px rgba(158, 233, 255, .5);
}
.capabilities-footer {
display: none;
}
.capabilities-seo {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
clip: rect(0 0 0 0);
clip-path: inset(50%);
white-space: normal;
}
@media (prefers-reduced-motion: reduce) {
.feature-bg {
animation: none;
}
.feature-object {
transition: none;
}
}
code {
color: var(--accent-2);
}
/* 회사소개 */
.about-page {
background: #f3f4f3;
color: #07192d;
}
.about-page .eyebrow {
color: #2aa6df;
}
.about-hero,
.about-section {
width: min(1320px, calc(100% - 64px));
margin: 0 auto;
padding: 104px 0;
}
.about-hero {
min-height: auto;
display: grid;
grid-template-columns: minmax(0, .9fr) minmax(380px, 1.1fr);
gap: 44px;
align-items: center;
padding-top: 132px;
padding-bottom: 84px;
}
.about-hero-copy h1,
.about-section h2 {
margin: 18px 0 26px;
color: #07192d;
font-size: clamp(38px, 5vw, 72px);
line-height: 1.06;
}
.about-hero-copy > p,
.about-section > p {
max-width: 1100px;
color: #69717b;
font-size: clamp(18px, 2vw, 27px);
font-weight: 650;
line-height: 1.65;
}
.capability-showcase {
margin-top: 42px;
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 16px;
}
.capability-showcase article {
min-height: 360px;
position: relative;
display: flex;
flex-direction: column;
justify-content: flex-end;
overflow: hidden;
padding: 24px;
color: #fff;
border-radius: 8px;
isolation: isolate;
}
.capability-showcase article::after {
content: "";
position: absolute;
inset: 0;
z-index: -1;
background: linear-gradient(180deg, rgba(7, 9, 13, .06), rgba(7, 9, 13, .88));
}
.capability-showcase img {
position: absolute;
inset: 0;
z-index: -2;
width: 100%;
height: 100%;
object-fit: cover;
}
.capability-showcase span {
color: #9ee9ff;
font-size: 14px;
font-weight: 900;
}
.capability-showcase strong {
display: block;
margin: 8px 0 4px;
font-size: 32px;
line-height: 1.1;
}
.capability-showcase small {
color: #c6d0dc;
font-weight: 850;
}
.timeline-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 34px 48px;
margin-top: 54px;
border-top: 4px solid #39ace2;
}
.timeline-grid article {
padding-top: 28px;
}
.timeline-grid span {
color: #2aa6df;
font-size: 42px;
font-weight: 950;
}
.timeline-grid h3 {
margin: 12px 0 14px;
font-size: 24px;
}
.timeline-grid p {
color: #738091;
font-size: 17px;
font-weight: 650;
line-height: 1.7;
}
.org-chart {
margin-top: 54px;
}
.ceo-node {
width: min(360px, 70vw);
margin: 0 auto 48px;
padding: 22px;
color: #fff;
background: #122569;
border-radius: 8px;
text-align: center;
font-size: 34px;
font-weight: 950;
}
.org-columns {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 24px;
border-top: 2px solid #d7dce1;
padding-top: 40px;
}
.org-columns article {
display: grid;
gap: 16px;
}
.org-columns span {
color: #2aa6df;
font-size: 13px;
font-weight: 950;
text-transform: uppercase;
}
.org-columns strong {
display: flex;
align-items: center;
justify-content: center;
min-height: 90px;
color: #fff;
background: #2697b4;
border-radius: 8px;
font-size: 27px;
}
.org-columns article:nth-child(4) strong {
background: #627184;
}
.org-columns p {
margin: 0;
padding: 18px;
color: #315068;
background: #eaf5fa;
border: 1px solid #b6dcec;
border-radius: 8px;
font-weight: 800;
line-height: 1.7;
}
.partner-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 18px;
margin-top: 48px;
}
.partner-grid span {
display: flex;
align-items: center;
justify-content: center;
min-height: 112px;
padding: 18px;
color: #1a4072;
background: #fff;
border-radius: 12px;
box-shadow: 0 12px 26px rgba(10, 24, 36, .14);
font-size: 24px;
font-weight: 950;
text-align: center;
}
/* 문의하기 */
.contact-page {
width: min(var(--max), calc(100% - 48px));
margin: 0 auto;
padding: 136px 0 90px;
}
.contact-hero {
max-width: 840px;
margin-bottom: 58px;
}
.contact-layout {
display: grid;
grid-template-columns: minmax(0, .92fr) minmax(0, 1.08fr);
gap: 24px;
}
.office-list {
display: grid;
gap: 12px;
}
.office-list article,
.contact-form {
padding: 28px;
background: var(--panel-solid);
border: 1px solid var(--line);
}
.office-location {
display: grid;
grid-template-columns: minmax(0, 1fr) 40px;
gap: 18px;
align-items: center;
}
.office-map-button {
display: grid;
place-items: center;
width: 40px;
height: 40px;
padding: 0;
color: var(--text);
border: 1px solid var(--line-strong);
border-radius: 4px;
background: rgba(255, 255, 255, .05);
cursor: pointer;
transition: border-color .2s var(--ease), background .2s var(--ease), transform .2s var(--ease);
}
.office-map-button img {
width: 20px;
height: 20px;
}
.office-map-button:hover,
.office-map-button:focus-visible {
border-color: var(--accent);
background: rgba(158, 233, 255, .12);
transform: translateX(2px);
}
.office-list h2 {
margin-bottom: 10px;
}
.office-list p {
margin-bottom: 0;
color: var(--muted);
line-height: 1.7;
}
.contact-form {
display: grid;
gap: 18px;
}
.contact-form label {
display: grid;
gap: 8px;
}
.contact-form label span {
color: var(--muted);
font-size: 13px;
font-weight: 750;
}
.contact-form input,
.contact-form select,
.contact-form textarea {
width: 100%;
color: var(--text);
background: rgba(255, 255, 255, .055);
border: 1px solid var(--line);
border-radius: 6px;
padding: 13px 14px;
outline: none;
}
.contact-form select {
padding-right: 42px;
-webkit-appearance: none;
appearance: none;
background-image: url("../assets/icons/keyboard_arrow_down.svg");
background-repeat: no-repeat;
background-position: right 12px center;
background-size: 20px;
cursor: pointer;
}
.contact-form textarea {
resize: vertical;
}
.contact-form input:focus,
.contact-form select:focus,
.contact-form textarea:focus {
border-color: var(--accent);
}
.form-note {
margin: 0;
color: var(--dim);
font-size: 13px;
line-height: 1.6;
}
.form-note.is-success {
color: #78d7a5;
}
.form-note.is-error {
color: #ff9a96;
}
body.is-contact-submitting {
overflow: hidden;
}
.contact-submit-overlay[hidden] {
display: none;
}
.contact-submit-overlay {
position: fixed;
z-index: 100;
inset: 0;
display: grid;
place-items: center;
padding: 24px;
background: rgba(4, 7, 10, .78);
backdrop-filter: blur(10px);
outline: none;
}
.contact-submit-status {
width: min(360px, 100%);
padding: 24px;
border: 1px solid rgba(255, 255, 255, .12);
border-radius: 6px;
background: rgba(10, 18, 24, .96);
box-shadow: 0 20px 56px rgba(0, 0, 0, .34);
}
.contact-submit-status strong {
display: block;
margin-bottom: 18px;
font-size: 16px;
}
.contact-progress {
height: 4px;
overflow: hidden;
border-radius: 999px;
background: rgba(255, 255, 255, .12);
}
.contact-progress span {
display: block;
width: 0;
height: 100%;
border-radius: inherit;
background: var(--accent);
box-shadow: 0 0 14px rgba(158, 233, 255, .46);
transition: width .16s linear;
}
.contact-submit-status > span {
display: block;
margin-top: 10px;
color: var(--muted);
font-size: 12px;
font-variant-numeric: tabular-nums;
text-align: right;
}
.contact-body .contact-page {
display: grid;
grid-template-columns: minmax(260px, .8fr) minmax(0, 1.2fr);
grid-template-rows: auto auto;
gap: 24px 56px;
align-content: center;
min-height: calc(100dvh - 152px);
padding: 96px 0 24px;
}
.contact-body .contact-hero {
margin: 0;
grid-column: 1;
grid-row: 1;
}
.contact-body .contact-hero h1 {
margin: 12px 0 18px;
font-size: 42px;
}
.contact-body .contact-hero p {
font-size: 15px;
}
.contact-body .contact-layout {
display: contents;
}
.contact-body .office-list {
grid-column: 1;
grid-row: 2;
align-content: start;
gap: 18px;
}
.contact-body .office-list article {
padding: 16px 0 0;
border: 0;
border-top: 1px solid var(--line);
background: transparent;
}
.contact-body .office-list span {
margin-bottom: 6px;
letter-spacing: 0;
}
.contact-body .office-list h2 {
margin: 0 0 6px;
font-size: 18px;
}
.contact-body .office-list p {
margin: 0;
font-size: 14px;
}
.contact-body .contact-form {
grid-column: 2;
grid-row: 1 / span 2;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 12px 16px;
align-content: end;
padding: 0;
border: 0;
background: transparent;
min-width: 0;
}
.contact-body .contact-form label {
min-width: 0;
gap: 6px;
}
.contact-body .form-wide {
grid-column: 1 / -1;
}
.contact-body .contact-form input,
.contact-body .contact-form select,
.contact-body .contact-form textarea {
padding: 10px 12px;
font-size: 14px;
}
.contact-body .contact-form select option {
color: var(--text);
background: var(--panel-solid);
}
.contact-body .contact-form textarea {
min-height: 100px;
max-height: 200px;
}
.contact-body .contact-form input[type="file"] {
font-size: 12px;
}
.contact-body .consent-row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px 14px;
}
.contact-body .contact-form .consent-label {
display: flex;
align-items: flex-start;
gap: 8px;
cursor: pointer;
}
.contact-body .contact-form input[type="checkbox"] {
flex: 0 0 16px;
width: 16px;
height: 16px;
margin: 2px 0 0;
accent-color: var(--accent);
}
.contact-body .consent-label span {
font-size: 12px;
line-height: 1.6;
}
/* 공통: 개인정보 처리방침과 사이트맵 모달 */
.privacy-link {
color: var(--muted);
border: 0;
padding: 0;
background: none;
cursor: pointer;
font-size: 12px;
text-decoration: underline;
text-underline-offset: 3px;
}
.footer-links button {
padding: 0;
border: 0;
background: none;
color: var(--muted);
cursor: pointer;
}
.footer-links button:hover,
.privacy-link:hover {
color: var(--text);
}
html.has-site-dialog,
.has-site-dialog body {
overflow: hidden;
}
.site-dialog {
width: min(720px, calc(100% - 32px));
max-height: calc(100dvh - 48px);
padding: 0;
border: 1px solid var(--line-strong);
border-radius: 8px;
color: var(--text);
background: #101419;
box-shadow: 0 24px 80px rgba(0, 0, 0, .5);
overflow: hidden;
}
.site-dialog[open] {
display: flex;
flex-direction: column;
}
.site-dialog::backdrop {
background: rgba(0, 0, 0, .7);
}
.site-dialog-header {
display: flex;
flex: 0 0 auto;
align-items: center;
justify-content: space-between;
gap: 16px;
padding: 18px 24px;
border-bottom: 1px solid var(--line);
}
.site-dialog-header h2 {
margin: 0;
font-size: 22px;
}
.dialog-close {
flex: 0 0 36px;
width: 36px;
height: 36px;
padding: 0;
border: 0;
border-radius: 4px;
background: rgba(255, 255, 255, .06);
font-size: 26px;
cursor: pointer;
}
.site-dialog-content {
min-height: 0;
padding: 24px;
overflow-y: auto;
overscroll-behavior: contain;
font-size: 14px;
line-height: 1.8;
}
.site-dialog-content h3 {
margin: 24px 0 8px;
font-size: 16px;
}
.site-dialog-content p {
margin: 0 0 16px;
color: var(--muted);
}
.site-dialog-content a {
color: var(--accent-2);
}
.site-dialog-content .policy-intro {
padding-bottom: 16px;
border-bottom: 1px solid var(--line);
font-size: 12px;
}
.location-dialog {
width: min(960px, calc(100% - 32px));
}
.location-map-content {
padding: 0;
overflow: hidden;
}
.location-map-frame {
display: block;
width: 100%;
height: min(58dvh, 560px);
min-height: 360px;
border: 0;
background: #0b1013;
}
.location-map-meta {
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
padding: 16px 24px;
border-top: 1px solid var(--line);
}
.location-map-meta p {
margin: 0;
}
.location-map-meta a {
display: inline-flex;
flex: 0 0 auto;
align-items: center;
gap: 6px;
font-weight: 750;
}
.location-map-meta img {
width: 18px;
height: 18px;
}
.sitemap-groups {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 24px;
}
.sitemap-groups section {
display: grid;
align-content: start;
gap: 6px;
}
.sitemap-groups h3 {
margin: 0 0 8px;
}
.sitemap-groups a:hover {
text-decoration: underline;
}
@media (max-width: 480px) {
.sitemap-groups {
grid-template-columns: minmax(0, 1fr);
}
.site-dialog-header,
.site-dialog-content {
padding: 16px;
}
.location-map-content {
padding: 0;
}
.location-map-frame {
height: 52dvh;
min-height: 280px;
}
.location-map-meta {
align-items: flex-start;
flex-direction: column;
gap: 10px;
padding: 14px 16px;
}
}
.contact-body button:disabled {
opacity: .4;
cursor: not-allowed;
transform: none;
}
@media (max-width: 860px) {
.contact-body .contact-page {
grid-template-columns: minmax(0, 1fr);
gap: 28px;
min-height: 0;
padding: 100px 0 36px;
}
.contact-body .contact-form {
grid-column: 1;
grid-row: 2;
}
.contact-body .office-list {
grid-row: 3;
}
}
@media (max-width: 480px) {
.contact-body .contact-form {
grid-template-columns: minmax(0, 1fr);
}
}
/* 공통: 푸터 */
.site-footer {
display: flex;
flex-wrap: wrap;
align-items: flex-start;
justify-content: space-between;
gap: 24px;
padding: 28px clamp(24px, 4vw, 54px) 42px;
color: var(--dim);
border-top: 1px solid var(--line);
}
.site-footer div {
display: grid;
gap: 6px;
}
.site-footer strong {
color: var(--text);
letter-spacing: 0;
font-size: 14px;
}
.footer-links {
display: flex;
flex-wrap: wrap;
gap: 12px 24px;
}
.footer-copyright {
margin-top: 10px;
font-size: 12px;
line-height: 1.6;
}
.site-footer a {
color: var(--muted);
}
@keyframes slow-zoom {
to {
transform: scale(1.08);
}
}
/* 공통 및 각 페이지의 반응형 설정 */
@media (max-width: 1080px) {
.org-columns,
.partner-grid {
grid-template-columns: repeat(2, 1fr);
}
.timeline-grid {
grid-template-columns: 1fr 1fr;
}
}
@media (max-width: 860px) {
body.capabilities-body {
overflow: auto;
}
.page-dots {
display: none;
}
.desktop-nav {
display: none;
}
.nav-toggle {
display: inline-flex;
}
.hero-grid,
.contact-layout,
.intro {
grid-template-columns: 1fr;
}
.hero-grid {
width: min(100% - 36px, var(--max));
padding-bottom: 118px;
}
.hero-panel {
grid-template-columns: repeat(3, 1fr);
}
.hero-panel div {
padding: 16px;
}
.hero-panel strong {
font-size: 21px;
}
.proof-strip {
grid-column: auto;
grid-template-columns: 1fr;
}
.showcase-preview {
grid-template-columns: 1fr;
}
.preview-card,
.showcase-preview {
min-height: 480px;
}
.about-hero,
.about-section {
width: calc(100% - 36px);
padding: 76px 0;
}
.about-hero {
grid-template-columns: 1fr;
padding-top: 118px;
}
.timeline-grid,
.org-columns,
.partner-grid,
.capability-showcase {
grid-template-columns: 1fr;
}
.capabilities-workbench {
position: relative;
inset: auto;
display: block;
height: auto;
min-height: 100svh;
overflow: hidden;
padding-bottom: 116px;
}
.workbench-stage {
position: relative;
height: auto;
min-height: 100svh;
padding: 112px 24px 144px;
}
.feature-content {
position: relative;
top: auto;
left: auto;
width: 100%;
max-height: none;
overflow: visible;
}
.feature-object {
display: none;
}
.project-dots {
display: none;
}
.workbench-stage > .autoplay-toggle {
display: none;
}
.dot-button {
min-width: 28px;
}
.dot-mark {
width: 22px;
}
.mobile-slide-controls {
position: fixed;
z-index: 8;
left: 50%;
right: auto;
bottom: max(14px, env(safe-area-inset-bottom));
display: grid;
grid-template-columns: 1fr 1fr;
gap: 10px;
width: min(520px, calc(100% - 32px));
margin: 0;
padding: 12px;
border: 1px solid rgba(255, 255, 255, .14);
background: rgba(5, 11, 13, .78);
backdrop-filter: blur(18px);
transform: translateX(-50%);
}
.mobile-slide-controls button {
min-height: 54px;
border: 0;
border-radius: 6px;
color: #061113;
background: rgba(245, 247, 239, .9);
font-size: 20px;
font-weight: 850;
cursor: pointer;
}
.mobile-slide-controls .mobile-autoplay {
color: var(--text);
background: rgba(255, 255, 255, .14);
}
.mobile-slide-controls span {
display: flex;
align-items: center;
justify-content: center;
min-height: 54px;
color: rgba(255, 255, 255, .72);
font-size: 14px;
font-weight: 800;
letter-spacing: .12em;
}
}
@media (max-width: 560px) {
.site-header {
height: 64px;
padding: 0 16px;
}
.mobile-menu {
top: 64px;
}
.brand {
font-size: 12px;
}
.brand-logo {
width: 112px;
}
.hero-grid {
padding-top: 110px;
}
.hero-copy h1,
.feature-content h1,
.contact-hero h1 {
font-size: clamp(36px, 13vw, 54px);
}
.hero-panel {
grid-template-columns: 1fr;
}
.hero-footer {
display: none;
}
.section,
.contact-page {
width: calc(100% - 32px);
}
.section {
padding: 78px 0;
}
.capabilities-toolbar {
overflow-x: auto;
left: 24px;
right: 24px;
}
.site-footer {
display: grid;
padding-left: 16px;
padding-right: 16px;
}
.about-hero,
.about-section {
width: calc(100% - 28px);
}
.about-hero h1,
.about-section h2 {
font-size: clamp(34px, 12vw, 48px);
}
.partner-grid span {
min-height: 86px;
font-size: 18px;
}
}
/* 회사소개: 현재 레이아웃과 반응형 설정 */
.about-refresh {
background: #f7f9fa;
color: #18262e;
}
.about-refresh > section {
width: 100%;
padding: 64px max(28px, calc((100% - 1200px) / 2));
border-bottom: 1px solid #dce3e7;
}
.about-refresh .about-hero {
grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
gap: 64px;
padding-top: 112px;
background: #0c1014;
color: var(--text);
}
.about-refresh .overview-logo {
display: block;
width: min(340px, 100%);
height: auto;
margin: 30px 0;
border-radius: 4px;
}
.about-refresh .about-hero h1 {
margin: 0 0 24px;
font-size: 38px;
line-height: 1.25;
color: var(--text);
}
.about-refresh .about-hero-copy > p {
font-size: 16px;
font-weight: 400;
line-height: 1.85;
color: var(--muted);
}
.about-refresh .about-hero-copy > .eyebrow {
color: var(--accent);
}
.about-refresh .eyebrow {
font-size: 12px;
letter-spacing: 0;
color: #1788af;
}
.overview-facts dl {
margin: 0;
}
.overview-facts dl > div {
display: grid;
grid-template-columns: 90px minmax(0, 1fr);
gap: 20px;
padding: 18px 0;
border-bottom: 1px solid var(--line);
font-size: 14px;
line-height: 1.7;
}
.overview-facts dt {
color: var(--muted);
}
.overview-facts dd {
margin: 0;
}
.about-refresh .about-section h2 {
margin: 12px 0 28px;
font-size: 32px;
line-height: 1.3;
}
.about-refresh .capability-showcase {
margin-top: 0;
}
.company-profile-actions {
display: flex;
justify-content: flex-end;
margin-top: 20px;
}
.about-refresh .capability-showcase article {
min-height: 0;
height: 320px;
}
.about-refresh .capability-showcase strong {
font-size: 26px;
}
.about-refresh .timeline-grid {
margin-top: 24px;
gap: 24px 32px;
border-top-width: 2px;
}
.about-refresh .timeline-grid article {
padding-top: 16px;
}
.about-refresh .timeline-grid span {
font-size: 30px;
}
.about-refresh .timeline-grid h3 {
font-size: 18px;
line-height: 1.4;
margin: 10px 0;
}
.about-refresh .timeline-grid p {
font-size: 14px;
font-weight: 400;
margin: 0;
}
.timeline-events {
display: grid;
gap: 7px;
list-style: none;
padding: 0;
margin: 0;
color: #738091;
font-size: 14px;
line-height: 1.7;
}
.about-refresh .org-chart {
margin-top: 24px;
}
.about-refresh .ceo-node {
position: relative;
width: 200px;
padding: 16px;
margin-bottom: 32px;
border-radius: 4px;
font-size: 22px;
background: #243d4a;
}
.about-refresh .ceo-node::after {
content: "";
position: absolute;
width: 1px;
height: 32px;
top: 100%;
left: 50%;
background: #ccd8df;
}
.about-refresh .org-columns {
gap: 20px;
padding-top: 24px;
align-items: start;
border-top: 1px solid #ccd8df;
}
.about-refresh .org-columns article {
grid-template-rows: 32px 64px auto;
gap: 12px;
position: relative;
}
.about-refresh .org-columns article::before {
content: "";
position: absolute;
top: -24px;
left: 50%;
height: 24px;
width: 1px;
background: #ccd8df;
}
.about-refresh .org-columns span {
font-size: 10px;
line-height: 1.5;
text-align: center;
color: #637580;
align-self: center;
}
.about-refresh .org-columns strong {
min-height: 0;
font-size: 20px;
border-radius: 4px;
background: #258ba4;
}
.org-teams {
display: grid;
gap: 8px;
margin: 0;
padding: 0 0 0 16px;
list-style: none;
border-left: 1px solid #ccd8df;
}
.org-teams li {
position: relative;
padding: 10px 12px;
font-size: 14px;
background: #edf3f6;
border: 1px solid #dce6ec;
border-radius: 4px;
}
.org-teams li::before {
content: "";
position: absolute;
left: -17px;
top: 50%;
width: 16px;
height: 1px;
background: #ccd8df;
}
.about-refresh .partner-grid {
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 16px;
margin-top: 24px;
}
.partner-grid figure {
margin: 0;
height: 104px;
/* padding: 16px; */
background: #fff;
border: 1px solid #dfe7eb;
border-radius: 4px;
}
.partner-grid img {
width: 100%;
height: 100%;
object-fit: contain;
}
@media (min-width: 861px) and (min-height: 700px) {
.about-refresh > section {
min-height: calc(100dvh - 72px);
display: flex;
flex-direction: column;
justify-content: center;
}
.about-refresh .about-hero {
display: grid;
min-height: 100dvh;
}
}
@media (max-width: 1000px) {
.about-refresh .about-hero {
gap: 32px;
}
.about-refresh .org-columns {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (max-width: 860px) {
.about-refresh .about-hero {
grid-template-columns: minmax(0, 1fr);
}
.about-refresh .about-section h2,
.about-refresh .about-hero h1 {
font-size: 28px;
}
.about-refresh .capability-showcase,
.about-refresh .timeline-grid,
.about-refresh .partner-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.about-refresh .ceo-node::after,
.about-refresh .org-columns article::before {
display: none;
}
}
@media (max-width: 540px) {
.about-refresh .org-columns,
.about-refresh .timeline-grid {
grid-template-columns: minmax(0, 1fr);
}
.about-refresh .capability-showcase article {
height: 240px;
padding: 16px;
}
.about-refresh .capability-showcase small {
font-size: 10px;
overflow-wrap: anywhere;
}
}
/* 공통: 카테고리 표기와 한글 줄바꿈 */
.eyebrow,
.section-label,
.about-page .eyebrow,
.about-refresh .eyebrow,
.about-refresh .about-hero-copy > .eyebrow,
.about-refresh .about-hero-copy > p.eyebrow,
.feature-content p.eyebrow,
.contact-body .contact-hero p.eyebrow {
margin: 0;
max-width: none;
color: var(--accent-2);
font-size: 14px;
font-weight: 800;
line-height: 1.5;
letter-spacing: 0;
text-transform: uppercase;
}
.about-refresh .about-section > .eyebrow {
color: #147d68;
}
h1, h2, h3, p, a, button, label, span, strong, small, dt, dd, li, td, th {
word-break: keep-all;
overflow-wrap: break-word;
}
.home-body .preview-card strong,
.about-refresh .capability-showcase small {
overflow-wrap: break-word;
}
/* 기술 역량: 모바일 */
@media (max-width: 860px) {
body.capabilities-body {
overflow: hidden;
}
.capabilities-body .capabilities-workbench {
--capabilities-gutter: 20px;
position: fixed;
inset: 72px 0 0;
height: calc(100dvh - 72px);
min-height: 0;
padding: 0;
display: grid;
grid-template-rows: minmax(0, 1fr) auto;
}
.capabilities-body .workbench-stage {
display: grid;
grid-template-rows: auto minmax(0, 1fr);
height: 100%;
min-height: 0;
min-width: 0;
padding: 0;
overflow: hidden;
}
.capabilities-body .feature-content {
grid-row: 2;
align-self: stretch;
min-height: 0;
max-height: none;
width: 100%;
padding: 32px var(--capabilities-gutter) 84px;
overflow-y: auto;
overscroll-behavior: contain;
-webkit-overflow-scrolling: touch;
}
.capabilities-body .feature-content h1 {
margin-top: 16px;
font-size: 28px;
line-height: 1.3;
}
.capabilities-body .feature-subtitle {
margin-bottom: 28px;
font-size: 14px;
}
.capabilities-body .feature-table-wrap {
grid-row: 2;
min-height: 0;
min-width: 0;
width: 100%;
margin: 0;
padding: 32px var(--capabilities-gutter) 84px;
overflow-x: hidden;
overflow-y: auto;
overscroll-behavior: contain;
align-self: stretch;
}
.capabilities-body .feature-summary-table {
min-width: 0;
table-layout: fixed;
}
.capabilities-body .feature-summary-table th,
.capabilities-body .feature-summary-table td {
padding: 12px 8px;
font-size: 12px;
line-height: 1.6;
overflow-wrap: anywhere;
}
.capabilities-body .feature-summary-table th {
height: 44px;
}
.capabilities-body .feature-summary-table td {
height: auto;
}
.capabilities-body .feature-summary-table th:first-child,
.capabilities-body .feature-summary-table td:first-child {
width: 65%;
}
.capabilities-body .feature-summary-table th:last-child,
.capabilities-body .feature-summary-table td:last-child {
width: 35%;
}
.capabilities-body .capabilities-toolbar {
position: relative;
grid-row: 1;
inset: auto;
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 4px;
padding: 14px var(--capabilities-gutter);
background: #101419;
overflow: visible;
}
.capabilities-body .capabilities-toolbar button {
min-width: 0;
min-height: 36px;
padding: 0 4px;
font-size: 10px;
border-radius: 4px;
}
.capabilities-body .workbench-stage > .autoplay-toggle {
display: none;
}
.capabilities-body .feature-object.is-custom-layout,
.capabilities-body .feature-object-secondary.is-custom-layout {
left: 50%;
top: auto;
bottom: 24px;
width: 42%;
height: auto;
max-height: 48%;
transform: translate(-100%, 0) scale(.98);
}
.capabilities-body .feature-object-secondary.is-custom-layout {
left: calc(50% + 12px);
transform: translate(0, 0) scale(.98);
}
.capabilities-body .feature-object.is-custom-layout.is-visible,
.capabilities-body .feature-object-secondary.is-custom-layout.is-visible {
transform: translate(-100%, 0);
}
.capabilities-body .feature-object-secondary.is-custom-layout.is-visible {
transform: translate(0, 0);
}
.capabilities-body .mobile-certificate-gallery:not([hidden]) {
display: grid;
gap: 24px;
margin-top: 24px;
}
.mobile-certificate-gallery img {
display: block;
width: 100%;
height: auto;
}
.capabilities-body .mobile-slide-controls {
position: relative;
inset: auto;
width: 100%;
transform: none;
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
padding: 8px 12px max(10px, env(safe-area-inset-bottom));
border: 0;
border-top: 1px solid var(--line);
background: #101419;
backdrop-filter: none;
}
.capabilities-body .mobile-slide-controls button {
min-width: 0;
min-height: 40px;
font-size: 14px;
border-radius: 4px;
}
.capabilities-body .mobile-slide-controls span {
min-height: 0;
font-size: 12px;
letter-spacing: 0;
}
.capabilities-body .mobile-slide-controls .autoplay-progress {
display: block;
}
.capabilities-body .mobile-slide-status {
display: block;
position: absolute;
right: 16px;
bottom: calc(74px + env(safe-area-inset-bottom, 0px));
z-index: 7;
}
.mobile-slide-status .mobile-autoplay {
width: 104px;
height: 40px;
padding: 0 10px;
border: 1px solid var(--line-strong);
border-radius: 6px;
color: var(--text);
background: rgba(12, 18, 22, .92);
box-shadow: 0 3px 12px rgba(0, 0, 0, .25);
cursor: pointer;
}
.mobile-slide-status [data-slide-counter] {
font-size: 12px;
font-weight: 750;
font-variant-numeric: tabular-nums;
white-space: nowrap;
}
}
@media (max-width: 560px) {
.capabilities-body .capabilities-workbench {
top: 64px;
height: calc(100dvh - 64px);
}
}
/* ESG */
.esg-hero {
position: relative;
min-height: 100dvh;
display: flex;
align-items: center;
padding: 112px max(28px, calc((100% - 1200px) / 2)) 96px;
isolation: isolate;
}
.esg-hero-image {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
object-fit: cover;
z-index: -2;
}
.esg-hero::after {
content: "";
position: absolute;
inset: 0;
z-index: -1;
background: linear-gradient(90deg, rgba(5, 16, 12, .82), rgba(5, 16, 12, .12));
}
.esg-hero-copy {
max-width: 660px;
}
.esg-hero h1 {
font-size: 80px;
line-height: 1.1;
margin: 20px 0 24px;
}
.esg-hero-copy > p:not(.eyebrow) {
font-size: 18px;
line-height: 1.85;
color: #e1eae4;
margin-bottom: 28px;
}
.esg-workspace {
display: grid;
grid-template-columns: minmax(240px, .75fr) minmax(0, 1.6fr);
gap: 40px;
height: calc(100dvh - 72px);
min-height: 580px;
padding: 40px max(28px, calc((100% - 1200px) / 2));
background: #0c1014;
scroll-margin-top: 72px;
}
.esg-policy-tabs {
display: grid;
grid-template-rows: repeat(3, minmax(0, 1fr));
gap: 12px;
min-height: 0;
}
.esg-policy-tab {
position: relative;
isolation: isolate;
overflow: hidden;
min-width: 0;
padding: 24px;
border: 1px solid rgba(255, 255, 255, .16);
border-radius: 4px;
color: white;
text-align: left;
cursor: pointer;
background: #17211e;
}
.esg-policy-tab img {
position: absolute;
inset: 0;
z-index: -2;
width: 100%;
height: 100%;
object-fit: cover;
object-position: 70% center;
transition: transform .3s var(--ease);
}
.esg-policy-tab::after {
content: "";
position: absolute;
inset: 0;
z-index: -1;
background: linear-gradient(90deg, rgba(6, 13, 12, .85), rgba(6, 13, 12, .12));
}
.esg-policy-tab span {
display: grid;
gap: 10px;
}
.esg-policy-tab small {
font-size: 11px;
color: #d9e9df;
}
.esg-policy-tab strong {
font-size: 24px;
}
.esg-policy-tab[aria-selected="true"] {
border-color: var(--accent-2);
box-shadow: inset 4px 0 var(--accent-2);
}
.esg-policy-tab:hover img {
transform: scale(1.03);
}
.esg-policy-tab:focus-visible,
.esg-policy-panel:focus-visible {
outline: 2px solid var(--accent-2);
outline-offset: 3px;
}
.esg-policy-reader {
min-height: 0;
min-width: 0;
}
.esg-policy-panel {
height: 100%;
overflow-y: auto;
overscroll-behavior-y: auto;
padding: 0 24px 24px 0;
scrollbar-width: thin;
scroll-margin-top: 72px;
}
.esg-policy-heading {
padding: 0 0 24px;
border-bottom: 1px solid var(--line);
margin-bottom: 24px;
}
.esg-policy-heading h2 {
margin: 10px 0 0;
font-size: 32px;
}
.esg-policy-text {
font-size: 15px;
line-height: 1.85;
color: #bfc8cc;
}
.esg-policy-text h3 {
margin: 28px 0 10px;
font-size: 17px;
color: var(--text);
line-height: 1.6;
}
.esg-policy-text p {
margin: 0 0 16px;
}
.esg-policy-text ul {
padding-left: 20px;
margin: 10px 0 24px;
}
.esg-policy-text li {
margin-bottom: 6px;
}
.esg-table-scroll {
overflow-x: auto;
margin: 20px 0;
}
.esg-policy-text table {
border-collapse: collapse;
width: 100%;
min-width: 420px;
font-size: 13px;
}
.esg-policy-text th,
.esg-policy-text td {
padding: 10px 12px;
border: 1px solid var(--line);
text-align: left;
}
.esg-policy-text th {
background: #19252a;
color: var(--text);
}
.esg-directions dl > div {
padding: 16px 0;
border-bottom: 1px solid var(--line);
}
.esg-directions dt {
color: var(--accent-2);
font-weight: 750;
}
.esg-directions dd {
margin: 6px 0 0;
}
@media (max-width: 860px) {
.esg-hero h1 {
font-size: 60px;
}
.esg-hero-copy > p:not(.eyebrow) {
font-size: 16px;
}
.esg-workspace {
grid-template-columns: minmax(0, 1fr);
grid-template-rows: 104px minmax(0, 1fr);
gap: 24px;
padding: 24px 20px;
}
.esg-policy-tabs {
grid-template-columns: repeat(3, minmax(0, 1fr));
grid-template-rows: minmax(0, 1fr);
gap: 8px;
}
.esg-policy-tab {
padding: 12px;
text-align: center;
}
.esg-policy-tab small {
display: none;
}
.esg-policy-tab strong {
font-size: 16px;
}
.esg-policy-panel {
padding-right: 10px;
}
.esg-policy-heading h2 {
font-size: 26px;
}
}
@media (max-width: 560px) {
.esg-workspace {
height: calc(100dvh - 64px);
min-height: 480px;
scroll-margin-top: 64px;
}
}
@media (min-width: 861px) and (min-height: 700px) {
.esg-workspace {
min-height: 0;
height: calc(100dvh - 72px);
padding-top: 28px;
padding-bottom: 28px;
}
}
/* 회사소개: 연혁 */
.about-refresh .chronology-grid {
border-top: 0;
margin-top: 0;
gap: 24px 32px;
align-content: start;
}
.about-refresh .chronology-grid article {
position: relative;
border-top: 1px solid #68b4c4;
padding-top: 12px;
}
.chronology-grid article::before {
content: "";
position: absolute;
width: 7px;
height: 7px;
top: -4px;
left: 0;
background: #258ba4;
}
.about-refresh .chronology-grid h3 {
font-size: 17px;
margin: 8px 0 10px;
}
.chronology-grid .timeline-events {
font-size: 13px;
line-height: 1.5;
gap: 4px;
}
@media (min-width: 861px) and (min-height: 700px) {
.about-refresh .timeline {
min-height: calc(100dvh - 72px);
padding-top: 32px;
padding-bottom: 32px;
}
.about-refresh .timeline > h2 {
margin: 8px 0 24px;
font-size: 28px;
}
.about-refresh .chronology-grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}