import type { Metadata } from "next"; import { Fraunces, Noto_Serif_KR, Inter } from "next/font/google"; import "./globals.css"; import Header from "@/components/Header"; import Footer from "@/components/Footer"; /** * CUSTOMIZATION HOOK — FONTS * The editorial system pairs an English display serif (Fraunces) and a * Korean serif (Noto Serif KR) for headlines, with a clean sans for body. * Pretendard is preferred for body but is not served by Google Fonts, so * Inter is loaded as the web fallback (see tailwind.config.ts sans stack). */ const fraunces = Fraunces({ subsets: ["latin"], weight: ["300", "400", "500", "600"], style: ["normal", "italic"], variable: "--font-display", display: "swap", }); const notoSerifKr = Noto_Serif_KR({ subsets: ["latin"], weight: ["400", "600", "700"], variable: "--font-serif-ko", display: "swap", }); const inter = Inter({ subsets: ["latin"], variable: "--font-sans", display: "swap", }); export const metadata: Metadata = { title: { default: "ANL · AI 에이전트 네트워크 연구실", template: "%s | ANL · 경북대학교", }, description: "경북대학교 컴퓨터학부 AI 에이전트 네트워크 연구실 (ANL). QUIC, gRPC, A2A 기반 에이전트 통신 및 멀티에이전트 오케스트레이션 연구.", }; export default function RootLayout({ children, }: { children: React.ReactNode; }) { return ( {/* No-JS fallback for the .reveal scroll-reveal: without this, every page is blank if hydration fails (e.g. Google Fonts request blocked). */}
{children}