/* global React, Wordmark, Reveal, Eyebrow, SectionHead, Btn, CountUp,
 VideoPlaceholder, ScrollWords */

/* =====================================================
 1. HERO — broader company positioning
 ===================================================== */
function HomeHero({ onNavigate }) {
 const [email, setEmail] = React.useState("");
 const onSubmit = (e) => {
 e.preventDefault();
 onNavigate("contact");
 };
 return (
 <section className="hero-full">
 <div className="hero-bg">
 <VideoPlaceholder fill label="HERO LOOP" />
 </div>

 <div className="container" style={{ position: "relative", zIndex: 2, textAlign: "center", paddingTop: "clamp(40px, 8vw, 80px)", paddingBottom: 80 }}>
 <Reveal delay={80}>
 <h1 style={{ maxWidth: "20ch", margin: "0 auto" }}>
 <span className="lb">소외된 자리에</span>{" "}
 <span className="lb"><span className="serif-it">귀를</span> 기울입니다.</span>
 </h1>
 </Reveal>

 <Reveal delay={160}>
 <p style={{
 fontSize: "clamp(17px, 1.4vw, 20px)",
 color: "hsl(var(--hero-subtitle))",
 margin: "32px auto 0",
 maxWidth: "58ch",
 lineHeight: 1.6,
 }}>
 <span className="lb">이온랩(EonLab)은</span>{" "}
 <span className="lb">기술을 통해 문제를 실험하고 해결합니다.</span>{" "}
 <span className="lb">사람들이 익숙해져 버린 불편함과</span>{" "}
 <span className="lb">아무도 답하지 않던 자리에</span>{" "}
 <span className="lb">서비스를 만들어 둡니다.</span>
 </p>
 </Reveal>

 <Reveal delay={240}>
 <form
 onSubmit={onSubmit}
 className="liquid-glass"
 style={{
 maxWidth: 520,
 margin: "44px auto 0",
 borderRadius: 999,
 padding: 6,
 display: "flex",
 gap: 6,
 alignItems: "center",
 }}
 >
 <input
 value={email}
 onChange={(e) => setEmail(e.target.value)}
 type="email"
 placeholder="이메일을 남기시면 연락드립니다"
 required
 style={{
 flex: 1,
 background: "transparent",
 border: 0,
 outline: 0,
 color: "var(--ink)",
 fontSize: 15,
 padding: "12px 18px",
 fontFamily: "inherit",
 }}
 />
 <button type="submit" className="btn" style={{ borderRadius: 999 }}>
 문의하기 <span className="arr">→</span>
 </button>
 </form>
 </Reveal>

 <Reveal delay={320}>
 <div className="muted" style={{ marginTop: 20, fontSize: 12.5, letterSpacing: "0.04em" }}>
 영업일 기준 24시간 이내 회신. 모든 문의는 대표가 직접 받습니다
 </div>
 </Reveal>
 </div>
 </section>
 );
}

/* =====================================================
 2. APPROACH — 우리가 일하는 방식 (3 cards)
 ===================================================== */
function ApproachSection() {
 const cards = [
 {
 n: "01",
 t: "소외된 경험을 봅니다.",
 d: "가장 큰 목소리가 아니라 가장 자주 잊히는 자리를 봅니다. 이미 존재하는 있는 도구들이 답하지 못한 불편들이 우리가 일하는 자리입니다.",
 },
 {
 n: "02",
 t: "불편함을 놓치지 않습니다.",
 d: "사소한 불편은 참아내면 그만이라 생각되기 쉬운데, 그 참으섬이 생활이 되고 계층이 됩니다. 그래서 우리는 작은 불편을 소프트웨어로 답합니다.",
 },
 {
 n: "03",
 t: "현장에서 답을 찾습니다.",
 d: "회의실이 아니라 현장에서 답을 찾습니다. 매장에 가고, 이용자를 만나고, 직원과 사장님의 하루를 같이 겪습니다.",
 },
 ];
 return (
 <section className="block" style={{ paddingTop: "clamp(80px, 12vw, 200px)" }}>
 <div className="container">
 <SectionHead
 align="center"
 tag="HOW WE WORK"
 title={<><span className="lb">제품은 다양해도,</span>{" "}<span className="lb"><span className="serif-it">일하는 방식은</span> 같습니다.</span></>}
 >
 <span className="lb">이온랩이 어떤 서비스를 만들든,</span>{" "}<span className="lb">그 시작과 끝에는</span>{" "}<span className="lb">세 가지 원칙이 있습니다.</span>
 </SectionHead>

 <div className="approach-grid">
 {cards.map((c, i) => (
 <Reveal key={c.n} delay={i * 90}>
 <div className="approach-card">
 <div className="muted" style={{ fontSize: 12, letterSpacing: "0.14em" }}>{c.n}</div>
 <h3 style={{ marginTop: 18, fontSize: 22, letterSpacing: "-0.015em" }}>{c.t}</h3>
 <p style={{ marginTop: 14, fontSize: 14.5, lineHeight: 1.65, color: "var(--ink-2)" }}>{c.d}</p>
 </div>
 </Reveal>
 ))}
 </div>
 </div>

 <style>{`
 .approach-grid {
 display: grid;
 grid-template-columns: repeat(3, 1fr);
 gap: 0;
 border-top: 1px solid var(--line);
 border-bottom: 1px solid var(--line);
 }
 .approach-card {
 padding: 40px 32px 48px;
 border-right: 1px solid var(--line);
 min-height: 240px;
 }
 .approach-card:last-child { border-right: 0; }
 @media (max-width: 900px) {
 .approach-grid { grid-template-columns: 1fr; }
 .approach-card { border-right: 0; border-bottom: 1px solid var(--line); }
 .approach-card:last-child { border-bottom: 0; }
 }
 `}</style>
 </section>
 );
}

/* =====================================================
 3. MISSION — broader belief
 ===================================================== */
function MissionSection() {
 return (
 <section
 style={{
 minHeight: "100vh",
 display: "flex",
 alignItems: "center",
 padding: "clamp(80px, 12vw, 160px) 0",
 }}
 >
 <div className="container" style={{ width: "100%" }}>
 <Reveal>
 <div style={{ textAlign: "center", marginBottom: "clamp(40px, 6vw, 72px)" }}>
 <Eyebrow>OUR MISSION</Eyebrow>
 </div>
 </Reveal>

 <div style={{ maxWidth: 1080, margin: "0 auto", textAlign: "center" }}>
 <Reveal delay={120}>
 <p
 style={{
 fontSize: "clamp(28px, 4.4vw, 64px)",
 lineHeight: 1.2,
 letterSpacing: "-0.035em",
 fontWeight: 500,
 color: "var(--ink)",
 margin: 0,
 }}
 >
 <span className="lb">세상은 큰 목소리에 답합니다.</span>
 <br />
 <span className="lb">우리는 <span className="serif-it" style={{ color: "var(--accent)" }}>잊히는 자리</span>를 봅니다.</span>
 </p>
 </Reveal>

 <Reveal delay={240}>
 <p
 style={{
 marginTop: "clamp(28px, 4vw, 56px)",
 fontSize: "clamp(17px, 1.6vw, 22px)",
 lineHeight: 1.6,
 color: "var(--ink-2)",
 letterSpacing: "-0.01em",
 maxWidth: "44ch",
 margin: "clamp(28px, 4vw, 56px) auto 0",
 fontWeight: 400,
 }}
 >
 <span className="lb">매일 참아내는 불편함,</span>{" "}
 <span className="lb">익숙해져 더는 불편이라 부르지 않는 자리.</span>{" "}
 <span className="lb">그곳에 이온랩이 서비스를 놓습니다.</span>
 </p>
 </Reveal>

 <Reveal delay={360}>
 <div
 style={{
 marginTop: "clamp(40px, 5vw, 64px)",
 paddingTop: "clamp(28px, 3vw, 40px)",
 borderTop: "1px solid var(--line)",
 maxWidth: 520,
 marginLeft: "auto",
 marginRight: "auto",
 }}
 >
 <p
 style={{
 fontSize: "clamp(15px, 1.3vw, 18px)",
 lineHeight: 1.5,
 color: "var(--ink-3)",
 letterSpacing: "0.01em",
 margin: 0,
 }}
 >
 불편함을 감수하는 것이 약자라면,<br />
 <span style={{ color: "var(--ink)" }}>우리는 <span className="serif-it">약자를 줄입니다.</span></span>
 </p>
 </div>
 </Reveal>
 </div>
 </div>
 </section>
 );
}

/* =====================================================
 4. PRODUCT — 소셜 테이블 오더 (단일 제품)
 ===================================================== */
function ProductsLineup({ onNavigate }) {
 return (
 <section className="block" style={{ borderTop: "1px solid var(--line)", paddingTop: "clamp(80px, 12vw, 180px)" }}>
 <div className="container">
 <div className="product-feature">
 <Reveal>
 <img src="/DD_태블릿목업.webp" alt="소셜 테이블 오더 태블릿 화면" className="product-feature-img" />
 </Reveal>

 <Reveal delay={120}>
 <div className="product-feature-body">
 <div className="row" style={{ alignItems: "center", gap: 12 }}>
 <div className="eyebrow">FIRST PRODUCT</div>
 </div>

 <h2 style={{ marginTop: 28, maxWidth: "16ch" }}>
 <span className="lb">소셜</span>{" "}
 <span className="lb"><span className="serif-it">테이블 오더.</span></span>
 </h2>

 <p className="lede" style={{ marginTop: 24 }}>
 <span className="lb">이온랩의 첫 서비스입니다.</span>{" "}
 <span className="lb">룸 헌팅포차에서</span>{" "}
 <span className="lb">손님은 룸에서 직접 주문하고,</span>{" "}
 <span className="lb">게임으로 즐기며,</span>{" "}
 <span className="lb">다른 룸과 소통합니다.</span>{" "}
 <span className="lb">사장님은 매장 전체를 한 화면에서 봅니다.</span>
 </p>

 <div className="row gap-16" style={{ marginTop: 32, flexWrap: "wrap" }}>
 <Btn arrow onClick={() => onNavigate("products")}>서비스 상세 보기</Btn>
 <Btn variant="secondary" onClick={() => onNavigate("contact")}>도입 문의</Btn>
 </div>
 </div>
 </Reveal>
 </div>
 </div>

 <style>{`
 .product-feature {
 display: grid;
 grid-template-columns: 1.1fr 1fr;
 gap: clamp(28px, 5vw, 80px);
 align-items: center;
 }
 .product-feature-body { max-width: 52ch; }
 .product-feature-img { display: block; width: 100%; height: auto; }
 @media (max-width: 900px) {
 .product-feature { grid-template-columns: 1fr; }
 }
 `}</style>
 </section>
 );
}

/* =====================================================
 5. CTA
 ===================================================== */
function HomeCTA({ onNavigate }) {
 return (
 <section style={{ position: "relative", overflow: "hidden", padding: "clamp(80px, 14vw, 200px) 0", background: "var(--bg-sub)" }}>
 <div className="container" style={{ position: "relative", zIndex: 2, textAlign: "center" }}>
 <Reveal>
 <span aria-hidden style={{ display: "inline-grid", placeItems: "center", margin: "0 auto" }}>
 <span style={{
 width: 56, height: 56, borderRadius: 50, border: "1.5px solid var(--ink)",
 display: "grid", placeItems: "center",
 }}>
 <span style={{ width: 22, height: 22, borderRadius: 50, border: "1.5px solid var(--ink)" }} />
 </span>
 </span>
 </Reveal>
 <Reveal delay={80}>
 <h2 style={{ marginTop: 32, maxWidth: "20ch", marginInline: "auto" }}>
 <span className="lb">한 번 <span className="serif-it">만나보시죠.</span></span>
 </h2>
 </Reveal>
 <Reveal delay={160}>
 <p style={{ marginTop: 24, maxWidth: "52ch", marginInline: "auto", color: "hsl(var(--hero-subtitle))", fontSize: 17, lineHeight: 1.6 }}>
 <span className="lb">서비스 도입 상담,</span>{" "}
 <span className="lb">제품 데모,</span>{" "}
 <span className="lb">자금이나 채용 관련 모든 문의를</span>{" "}
 <span className="lb">대표가 직접 받습니다.</span>
 </p>
 </Reveal>
 <Reveal delay={240}>
 <div className="row" style={{ marginTop: 40, gap: 12, justifyContent: "center", flexWrap: "wrap" }}>
 <button className="btn lg" onClick={() => onNavigate("contact")}>
 문의하기 <span className="arr">→</span>
 </button>
 <button className="btn lg glass liquid-glass" onClick={() => onNavigate("products")}>
 서비스 살펴보기
 </button>
 </div>
 </Reveal>
 </div>
 </section>
 );
}

/* =====================================================
 Composer
 ===================================================== */
function HomePage({ onNavigate }) {
 return (
 <div className="page-fade">
 <HomeHero onNavigate={onNavigate} />
 <ApproachSection />
 <MissionSection />
 <ProductsLineup onNavigate={onNavigate} />
 <HomeCTA onNavigate={onNavigate} />
 </div>
 );
}

window.HomePage = HomePage;
