File name
Commit message
Commit date
File name
Commit message
Commit date
// 앱 글로벌 스타일 — 디자인 시스템 로드 + **이 앱에만 해당하는** 최소 베이스.
//
// 색·타이포·간격 같은 디자인 값은 여기에 두지 않는다. 전부 `@fox/styles/tokens/`가
// 소유하며, 이 파일은 "@fox를 켜고, 이 앱의 셸 구조를 잡는다"까지만 한다.
// 화면·컴포넌트 스타일은 각자의 `.module.scss`로 간다.
@use "@fox/styles";
// 공용 컴포넌트 스타일. CSS Modules가 아니라 전역 BEM이라 여기서 한 번 불러온다 —
// 그래야 React 밖(다른 프레임워크·순수 SCSS)에서도 같은 방식으로 쓸 수 있다.
@use "@fox/styles/components";
// Pretendard — @fox 토큰이 패밀리명을 **리터럴 `Pretendard`로** 지정하므로(`font.family.*`),
// 앱은 정확히 그 이름의 폰트를 공급해야 한다. `next/font/local`은 패밀리명을
// 해시(`__Pretendard_xxxx`)로 바꿔 그 리터럴과 영영 만나지 못해 쓸 수 없다 — 토큰은 Figma
// export 자동 생성이라 이름을 코드 쪽에 맞추는 반대 방향도 불가능하다.
// weight는 토큰이 실제로 쓰는 400·600·800 셋뿐이다(`weight-regular`/`medium`/`bold`).
@font-face {
font-family: "Pretendard";
font-style: normal;
font-weight: 400;
font-display: swap;
src: url("/fonts/pretendard-regular.woff2") format("woff2");
}
@font-face {
font-family: "Pretendard";
font-style: normal;
font-weight: 600;
font-display: swap;
src: url("/fonts/pretendard-semibold.woff2") format("woff2");
}
@font-face {
font-family: "Pretendard";
font-style: normal;
font-weight: 800;
font-display: swap;
src: url("/fonts/pretendard-extrabold.woff2") format("woff2");
}
// 앱 셸 — 루트 레이아웃이 뷰포트 높이를 채우고 세로로 쌓이는 구조.
// 푸터를 바닥에 붙이거나 본문 영역만 스크롤시키는 화면들이 이 전제에 기댄다.
html,
body {
block-size: 100%;
}
body {
display: flex;
flex-direction: column;
min-block-size: 100%;
// @fox 밖 텍스트의 서체. 디자인 값이 아니라 layout.tsx가 주입하는 계약 변수를 꽂는
// 지점이라 여기 둔다 — 이 한 줄이 없으면 `--app-font-sans`를 읽는 곳이 없어 wantedSans가
// 로드만 되고 아무 데도 적용되지 않는다. @fox 컴포넌트는 각자 토큰으로 Pretendard를
// 덮어쓰므로 영향을 받지 않는다.
font-family: var(--app-font-sans, system-ui), system-ui, sans-serif;
}