/* ========================================================================== 무월(霧月) — 3단계 디자인 토큰 프리셋: quiet-commerce (커스텀, 02-direction.md 참조) ========================================================================== */ :root { /* ---- 타입 — 비율 1.333 (Perfect Fourth), 본문 16px 기준 --------------- tokens.md §6은 --step--1 ~ --step-5 (7단계)를 산출물로 요구한다. antipatterns.md §2는 "3~5단계로 제한"을 권한다. → 7개를 정의하되 화면에서 실제로 쓰는 것은 4개다: --step--1(라벨) / --step-0(본문) / --step-2(소제목) / --step-5(디스플레이) 나머지 3개는 예약. 쓰려면 이 주석을 지우고 역할을 적어라. (FINDINGS F6) */ --step--1: 0.75rem; /* 12 — 라벨·캡션 [사용] */ --step-0: 1rem; /* 16 — 본문 [사용] */ --step-1: 1.333rem; /* 21 — 예약 */ --step-2: clamp(1.5rem, 1.32rem + 0.9vw, 1.777rem); /* 28 — 소제목 [사용] */ --step-3: 2.369rem; /* 38 — 예약 */ --step-4: 3.157rem; /* 51 — 예약 */ --step-5: clamp(2.25rem, 1.3rem + 4.75vw, 4.209rem); /* 67 — 디스플레이 [사용] */ /* 최대(67) ÷ 본문(16) = 4.2배 — antipatterns.md §2 "최대/본문 4배 이상" 통과 */ --leading-tight: 1.25; /* 디스플레이 — 한글이라 라틴 1.1보다 높게 */ --leading-normal: 1.7; /* 본문 — 한글 1.6~1.8 규칙 */ --measure: 32ch; /* 한글 32자. R2 관측 522px과 수렴 */ --font-display: 'Fraunces', 'Pretendard Variable', Pretendard, serif; --font-body: 'Pretendard Variable', Pretendard, -apple-system, system-ui, sans-serif; /* 폰트 파일 2개 (tokens.md §5 예산 준수). Switzer(라틴 본문)와 마루 부리(한글 디스플레이)를 의도적으로 버렸다 — 사유는 아래 성능 예산 주석. */ /* ---- 색 — 역할별. hue 2개(중립 + 강조) -------------------------------- surface: 안개 낀 종이. 순백 아님, 크림/베이지도 아님(antipatterns §1). accent : 로스팅된 원두 갈색. 보라·인디고 계열 아님(최우선 지문 1위 회피). */ --surface: #F3F4F2; --surface-raised: #EAEBE7; --ink: #1A1C1A; /* 순흑 아님 */ --ink-muted: #5C605B; --line: #D6D8D3; /* 장식용 구분선 (텍스트·UI 아님) */ --line-strong: #868C83; /* 인터랙티브 요소 경계 — 3:1 필요 */ --accent: #7A3E1D; --accent-ink: #F3F4F2; /* 측정된 대비비 (계산식 WCAG 2.x relative luminance) --ink on --surface 15.54:1 ✓ 본문 4.5:1 --ink on --surface-raised 14.32:1 ✓ --ink-muted on --surface 5.80:1 ✓ --ink-muted on --surface-raised 5.35:1 ✓ --accent on --surface 7.51:1 ✓ 링크 텍스트 --accent-ink on --accent 7.51:1 ✓ CTA 내부 텍스트 --line-strong on --surface 3.12:1 ✓ UI 3:1 --line on --surface 1.30:1 — 장식 전용. 텍스트·인터랙티브 경계에 쓰지 마라 */ /* 다크 모드: 브리프에 근거 없음 → 지원하지 않는다. (가정 명시) */ /* ---- 간격 — 8px 리듬 ------------------------------------------------- */ --space-1: 0.25rem; /* 4 */ --space-2: 0.5rem; /* 8 */ --space-3: 1rem; /* 16 */ --space-4: 1.5rem; /* 24 */ --space-5: 2.5rem; /* 40 — 요소 간 */ --space-6: 4rem; /* 64 */ --space-7: 6rem; /* 96 */ --space-8: 10rem; /* 160 — 섹션 간. 요소 간(40) 대비 1:4 */ /* ---- 형태 ------------------------------------------------------------ tokens.md §6 산출물 형식에 radius 항목이 없다. 그런데 SKILL.md 하드 게이트 3이 "코너 반경이 규칙 없이 섞여 있는가"를 묻고 antipatterns.md §4는 어휘 2개를 요구한다. → 토큰을 직접 추가한다. (FINDINGS F8) */ --radius-container: 2px; /* 표·패널 — 인쇄물 감각이라 거의 각지게 */ --radius-interactive: 2px; /* 버튼·입력 — 컨테이너와 같게 통일 */ --container: 1120px; /* R1의 풀블리드 0.99를 축소한 값 */ --pad-inline: clamp(1.25rem, 1rem + 2vw, 5rem); /* 모바일 20px → 데스크톱 80px */ /* ---- 모션 ------------------------------------------------------------ */ --dur-instant: 100ms; --dur-quick: 200ms; --dur-normal: 350ms; --dur-slow: 600ms; --ease-out: cubic-bezier(0.22, 1, 0.36, 1); --ease-in: cubic-bezier(0.64, 0, 0.78, 0); --ease-soft: cubic-bezier(0.4, 0, 0.2, 1); /* ---- 재질 (svg-filters.md) ------------------------------------------- */ --grain: 0.03; /* 최약. 오프화이트 배경의 밴딩 제거용 */ } /* ========================================================================== 성능 예산 = JS 0KB / 첫 인터랙션 3초 (모바일 4G) - 프레임워크 없음. R3 모션은 CSS scroll-driven이라 JS 0바이트 - 폰트 파일 2개: Fraunces(latin 서브셋) + Pretendard Variable(korean+latin 서브셋) · tokens.md §5 "폰트 2개 이하"를 지키기 위해 4개 후보 중 2개를 버렸다. 버린 것: Switzer(라틴 본문) → Pretendard의 라틴으로 대체 마루 부리(한글 디스플레이) → Pretendard 700으로 대체 · antipatterns.md §8 "라틴 폰트를 폴백 앞에" 규칙은 --font-display에서만 지킨다. --font-body는 Pretendard가 앞이지만, Pretendard는 자체 라틴 글리프를 포함하므로 한글 폰트로 라틴이 조악하게 그려지는 문제가 없다. (예외 근거 명시) (FINDINGS F7) - 이미지 없음(브리프 제약) → 이미지 예산 0 - 애니메이션 속성: transform / opacity 만 ========================================================================== */