/* 공통: 색상, 기본 요소, 헤더와 네비게이션 */ :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/home-background.png"); 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: 108px; left: clamp(56px, 7vw, 132px); z-index: 2; align-self: flex-start; width: min(720px, 54%); max-height: calc(100dvh - 204px); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; } .feature-content h1 { max-width: 760px; margin: 14px 0 8px; font-size: 42px; line-height: 1.16; } .feature-content p { white-space: pre-line; font-size: 15px; line-height: 1.68; } .feature-content .feature-subtitle { margin: 0 0 44px; max-width: 660px; color: rgba(255, 255, 255, .62); font-size: 16px; font-weight: 800; line-height: 1.35; white-space: normal; } .feature-object { position: absolute; z-index: 1; right: clamp(190px, 17vw, 330px); top: calc(50% + 6px); bottom: auto; width: min(44vw, 720px); height: auto; max-height: calc(100dvh - 228px); 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) 0; transition: opacity .28s var(--ease), translate .28s var(--ease); } .feature-object.is-visible { opacity: .96; translate: var(--object-fit-x, 0px) 0; 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) 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: clamp(24px, 5vw, 72px); right: clamp(24px, 5vw, 72px); bottom: 28px; display: flex; gap: 8px; padding-top: 18px; border-top: 1px solid rgba(255, 255, 255, .24); } .capabilities-toolbar button { 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; } .capabilities-toolbar .autoplay-toggle { margin-left: auto; 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 { 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: 108px clamp(24px, 5vw, 72px) 96px clamp(56px, 7vw, 132px); } .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; } .capabilities-toolbar .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 { 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: 24px 20px 84px; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch; } .capabilities-body .feature-content h1 { font-size: 28px; line-height: 1.3; } .capabilities-body .feature-subtitle { margin-bottom: 24px; font-size: 14px; } .capabilities-body .feature-table-wrap { grid-row: 2; min-height: 0; min-width: 0; width: 100%; margin: 0; padding: 24px 16px 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(5, minmax(0, 1fr)); gap: 4px; padding: 10px 12px; 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 .capabilities-toolbar .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)); } }