diff --git a/public/images/domain_img1.png b/public/images/domain_img1.png new file mode 100644 index 0000000..a0f10f3 Binary files /dev/null and b/public/images/domain_img1.png differ diff --git a/public/images/domain_img2.png b/public/images/domain_img2.png new file mode 100644 index 0000000..7e0f8fe Binary files /dev/null and b/public/images/domain_img2.png differ diff --git a/public/images/domain_img3.png b/public/images/domain_img3.png new file mode 100644 index 0000000..dfffcf9 Binary files /dev/null and b/public/images/domain_img3.png differ diff --git a/public/images/domain_img4.png b/public/images/domain_img4.png new file mode 100644 index 0000000..352aa9c Binary files /dev/null and b/public/images/domain_img4.png differ diff --git a/public/images/domain_img5.png b/public/images/domain_img5.png new file mode 100644 index 0000000..ea3571c Binary files /dev/null and b/public/images/domain_img5.png differ diff --git a/src/css/common.css b/src/css/common.css index 725f3d9..3bbecf3 100644 --- a/src/css/common.css +++ b/src/css/common.css @@ -735,14 +735,21 @@ body{overflow-x:hidden;} 5. 적용 분야 ════════════════ */ .fc-domains { margin-bottom: 8rem; } -.fc-domains__grid {display:grid;grid-template-columns:repeat(5,1fr);gap:1.25rem;} -.fc-domain-card {display:flex;flex-direction:column;gap:.75rem;padding:1.75rem 1.5rem;border:1px solid var(--color-primary-soft-border);border-radius:1rem;background:#fff;transition:border-color .2s,box-shadow .2s;cursor:default;} -.fc-domain-card:hover {border-color:var(--color-primary-border);box-shadow:0 8px 28px var(--color-primary-shadow);} -.fc-domain-card__icon {width:44px;height:44px;border-radius:.75rem;background:var(--color-primary-soft);display:flex;align-items:center;justify-content:center;color:var(--color-primary);transition:background .2s,color .2s;} -.fc-domain-card:hover .fc-domain-card__icon {background:var(--color-primary);color:#fff;} -.fc-domain-card__label {font-size:.88rem;font-weight:700;color:var(--color-primary);line-height:1.3;} -.fc-domain-card__desc {font-size:.78rem;line-height:1.65;color:#888;margin:0;} +.fc-domains__grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1.25rem; } +.fc-domain-card { display: flex; flex-direction: column; border: 1px solid var(--color-primary-soft-border); border-radius: 1rem; background: #fff; overflow: hidden; transition: border-color .2s, box-shadow .2s; cursor: default; } +.fc-domain-card:hover { border-color: var(--color-primary-border); box-shadow: 0 8px 28px var(--color-primary-shadow); } + +.fc-domain-card__img { width: 100%; aspect-ratio: 16/10; overflow: hidden; } +.fc-domain-card__img img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s ease; } +.fc-domain-card:hover .fc-domain-card__img img { transform: scale(1.05); } + +.fc-domain-card__body { display: flex; flex-direction: column; gap: .5rem; padding: 1.25rem 1.25rem 1.5rem; } +.fc-domain-card__label { font-size: .88rem; font-weight: 700; color: var(--color-primary); line-height: 1.3; } +.fc-domain-card__desc { font-size: .78rem; line-height: 1.65; color: #888; margin: 0; } + +@media (max-width: 1024px) { .fc-domains__grid { grid-template-columns: repeat(3, 1fr); } } +@media (max-width: 640px) { .fc-domains__grid { grid-template-columns: repeat(2, 1fr); } } /* ════════════════ 6. 주요기능 ════════════════ */ diff --git a/src/pages/solution/FlightControlPage.jsx b/src/pages/solution/FlightControlPage.jsx index 7cdb457..51d02a3 100644 --- a/src/pages/solution/FlightControlPage.jsx +++ b/src/pages/solution/FlightControlPage.jsx @@ -1,6 +1,18 @@ import { useRef, useState } from "react"; import { motion, useInView, AnimatePresence } from "framer-motion"; -import { Radio, Puzzle, Network, Expand, Shield, ArrowUpRight, Package, Wind, AlertTriangle, Ship, Plane } from "lucide-react"; +import { + Radio, + Puzzle, + Network, + Expand, + Shield, + ArrowUpRight, + Package, + Wind, + AlertTriangle, + Ship, + Plane, +} from "lucide-react"; import SubHero from "../../components/SubHero"; import useFadeIn from "../../hooks/useFadeIn"; @@ -28,27 +40,27 @@ const STATS = [ const DOMAINS = [ { - icon: Package, + img: "domain_img1.png", label: "드론 물류·배송 관제", desc: "도심 및 광역 드론 배송 경로 최적화 및 실시간 위치 관제", }, { - icon: Plane, + img: "domain_img2.png", label: "UAM 도심항공 모빌리티", desc: "미래형 도심 항공 교통 인프라 연계 관제 시스템", }, { - icon: Wind, + img: "domain_img3.png", label: "무인기 환경측정", desc: "대기질·기상 데이터 수집 드론 운용 및 모니터링", }, { - icon: AlertTriangle, + img: "domain_img4.png", label: "안티드론 보안관제", desc: "비인가 드론 탐지·추적 및 무력화 대응 지원", }, { - icon: Ship, + img: "domain_img5.png", label: "선박·항공기 통합관제", desc: "해상·공중 복합 식별정보 수집 및 통합 상황관리", }, @@ -88,7 +100,12 @@ const ease = [0.22, 1, 0.36, 1]; function RevealText({ children, delay = 0, className }) { return (
- + {children}
@@ -98,7 +115,10 @@ function RevealText({ children, delay = 0, className }) { function StaggerWords({ text, delay = 0, className }) { const words = text.split(" "); return ( - + {words.map((word, i) => ( - Flight Management} navItems={SOLUTION_NAV} /> + Flight Management} + navItems={SOLUTION_NAV} + />
@@ -221,19 +245,40 @@ function FlightControlPage() { {/* 개요 인트로 */}
- + Overview - + 모든 이동체 정보를
하나의 플랫폼에서
- - 항공기, 무인기, 선박, 지상 이동체의 실시간 정보를 통합 모니터링하고
+ + 항공기, 무인기, 선박, 지상 이동체의 실시간 정보를 통합 + 모니터링하고
상황을 인식하여 신속하고 안전한 운영 의사결정을 지원합니다.
- + {[ { img: "fc_aircraft.png", label: "항공기" }, { img: "fc_drone.png", label: "무인기" }, @@ -241,15 +286,27 @@ function FlightControlPage() { { img: "fc_car.png", label: "차량 등" }, ].map((item, i) => (
- {item.label} + {item.label} {item.label}
))}
- - 비행상황관리 시스템 + + 비행상황관리 시스템
@@ -302,7 +359,13 @@ function FlightControlPage() { icons: null, }, ].map((item, i) => ( - +
{item.tag}

@@ -317,7 +380,11 @@ function FlightControlPage() {

- {item.tag} + {item.tag} {item.icons && item.icons.map((icon, j) => ( - - - + + + )}
@@ -350,60 +442,127 @@ function FlightControlPage() { ))} {/* 2. 수치 지표 */} -
+ {/*
{STATS.map(({ value, label }, i) => ( - + {value} {label} ))} -
+
*/} {/* 3. 적용 분야 */}
- + 적용 분야
- {DOMAINS.map(({ icon: Icon, label, desc }, i) => ( - -
- + {DOMAINS.map(({ icon: Icon, img, label, desc }, i) => ( + +
+ {label} +
+
+ {label} +

{desc}

- {label} -

{desc}

))}
- {/* 4. 주요기능 */}
- + 주요기능
    {FUNCTIONS.map(({ num, label }, i) => ( - setActiveIdx(i)} initial={{ opacity: 0, y: 16 }} animate={funcInView ? { opacity: 1, y: 0 } : {}} transition={{ duration: 0.5, ease, delay: 0.05 * i }}> + setActiveIdx(i)} + initial={{ opacity: 0, y: 16 }} + animate={funcInView ? { opacity: 1, y: 0 } : {}} + transition={{ duration: 0.5, ease, delay: 0.05 * i }} + > {num} {label} - + - + ))}
- - {FUNCTIONS[activeIdx].label} + + {FUNCTIONS[activeIdx].label}
- + {FUNCTIONS[activeIdx].num} - + {FUNCTIONS[activeIdx].label}
@@ -415,12 +574,23 @@ function FlightControlPage() { {/* 5. 시스템 구성 흐름 */}
- + 시스템 구성
{FLOW.map(({ step, label, desc }, i) => ( - + {step} {label}

{desc}