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: "사물인터넷 표준 연구실 (IoT Standards Lab) · 경북대학교", template: "%s · 사물인터넷 표준 연구실", }, description: "경북대학교 컴퓨터학부 사물인터넷 표준 연구실. 메타버스 상호운용성(MCM) 및 QUIC 기반 멀티에이전트 오케스트레이션 연구.", }; 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). */}