diff --git a/docs/content/_index.ko.md b/docs/content/_index.ko.md
@@ -21,7 +21,6 @@ bench_more = "전체 수치와 측정 방법 →"
zero_label = "같은 입력을 두 번 빌드했을 때 생기는 바이트 차이입니다. push마다 CI가 두 번 빌드해서 비교합니다."
foot_benchmark = "벤치마크"
-foot_line = "천 페이지를 25밀리초로 쥐어짜는, Rust로 만든 정적 사이트 생성기."
[[extra.bench]]
label = "1,000페이지, 최소 마크다운"
diff --git a/docs/content/_index.md b/docs/content/_index.md
@@ -21,7 +21,6 @@ bench_more = "Full numbers and methodology →"
zero_label = "bytes of difference between two builds of the same input — checked in CI on every push"
foot_benchmark = "Benchmark"
-foot_line = "A static site generator in Rust that squeezes a thousand pages into 25 ms."
[[extra.bench]]
label = "1,000 pages, minimal markdown"
diff --git a/docs/static/css/landing.css b/docs/static/css/landing.css
@@ -367,17 +367,62 @@ main { display: block; }
.inst-copy.is-done .i-copy { display: none; }
.inst-copy.is-done .i-check { display: block; color: var(--accent-ink); }
-/* ── 푸터 ── */
-.foot { border-top: 1px solid var(--line); padding-block: 2.4rem 3.2rem; }
-.foot-in { display: grid; gap: 1rem; }
-.foot-nav { display: flex; flex-wrap: wrap; gap: 1.35rem; font-weight: 600; font-size: 0.92rem; }
-.foot-nav a { color: var(--muted); }
-.foot-nav a:hover { color: var(--accent-ink); text-decoration: none; }
-.foot p { margin: 0; color: var(--muted); font-size: 0.9rem; }
+/* ── 푸터 — docs와 같은 colophon. 마크업은 partials/colophon.html 하나를
+ 양쪽이 include하고, 여기서는 main.css의 .colophon 블록을 랜딩의 토큰
+ (--line·--text·--muted·--wrap)으로 옮겨 적는다. 값의 근거는 main.css 쪽
+ 주석에 있다. docs의 회색 두 단(ink-2/ink-3)은 랜딩엔 --muted 하나라
+ 한 단으로 눕는다. */
+.colophon {
+ border-top: 1px solid var(--line);
+ max-width: var(--wrap);
+ margin: 0 auto;
+ padding: 2.5rem clamp(1.25rem, 4vw, 2.5rem) 3.5rem;
+ font-size: 0.8125rem;
+}
+.colophon-grid {
+ display: grid;
+ grid-template-columns: minmax(0, 20rem) repeat(2, minmax(0, 9rem));
+ justify-content: start;
+ gap: clamp(1.5rem, 5vw, 4rem);
+}
+.colophon-mark {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.5rem;
+ font-family: var(--mono);
+ font-size: 1.0625rem;
+ font-weight: 600;
+ letter-spacing: -0.03em;
+ color: var(--muted);
+}
+.colophon-mark:hover { color: var(--text); text-decoration: none; }
+.colophon-brand img { width: 1.7rem; height: 1.7rem; opacity: 0.6; }
+:root[data-theme="dark"] .colophon-brand img { filter: invert(1); }
+.colophon-brand p { margin: 0.6rem 0 0; max-width: 24rem; color: var(--muted); line-height: 1.6; }
+.colophon h2 {
+ margin: 0 0 0.7rem;
+ font-family: var(--mono);
+ font-size: 0.72rem;
+ font-weight: 500;
+ letter-spacing: 0.08em;
+ text-transform: uppercase;
+ color: var(--muted);
+}
+.colophon ul { list-style: none; margin: 0; padding: 0; }
+.colophon li + li { margin-top: 0.4rem; }
+.colophon a { color: var(--muted); transition: color 0.14s ease; }
+.colophon a:hover { color: var(--accent-ink); text-decoration: underline; }
+.colophon-note {
+ margin: 2.5rem 0 0;
+ padding-top: 1.25rem;
+ border-top: 1px solid var(--line);
+ color: var(--muted);
+}
/* ── 한국어: 자간·모노·대문자 장치를 한글에 적용하지 않는다 ── */
html[lang="ko"] .display { letter-spacing: 0; }
html[lang="ko"] .kicker { font-family: var(--sans); font-size: 0.85rem; }
+html[lang="ko"] .colophon h2 { font-family: var(--sans); letter-spacing: -0.01em; text-transform: none; }
html[lang="ko"] h1, html[lang="ko"] h2, html[lang="ko"] h3 { word-break: keep-all; }
html[lang="ko"] .sub, html[lang="ko"] .note { word-break: keep-all; }
@@ -386,6 +431,7 @@ html[lang="ko"] .sub, html[lang="ko"] .note { word-break: keep-all; }
.bento { grid-template-columns: repeat(2, 1fr); }
.t-bench { grid-column: span 2; }
.nav-links > a:first-child { display: none; }
+ .colophon-grid { grid-template-columns: minmax(0, 1fr); gap: 2rem; }
}
@media (max-width: 42rem) {
.bento { grid-template-columns: 1fr; }
diff --git a/docs/static/js/landing.js b/docs/static/js/landing.js
@@ -60,7 +60,7 @@
}
/* 벤토 타일: 뷰포트에 들어올 때 한 번씩 */
- document.querySelectorAll(".bento-wrap [data-reveal], .foot [data-reveal]").forEach(function (el) {
+ document.querySelectorAll(".bento-wrap [data-reveal]").forEach(function (el) {
el.style.opacity = "0";
M.inView(
el,
diff --git a/docs/templates/base.html b/docs/templates/base.html
@@ -152,49 +152,7 @@
{%- endif %}
</div>
-<footer class="colophon">
- <div class="colophon-grid">
- <div class="colophon-brand">
- <a class="colophon-mark" href="{{ home }}">
- <img src="{{ asset("images/logo.png") }}" alt="" width="121" height="120">
- <span>{{ site.title }}</span>
- </a>
- {#- site.description은 사이트에 하나뿐이라 언어를 타지 않는다. 한국어
- 페이지에 영어 한 줄이 남는 자리라서 i18n에서 가져온다. #}
- <p>{{ t("tagline") }}</p>
- </div>
-
- {#- 문서 갈래는 넣지 않는다. 상단바가 sticky라 화면에서 사라지지 않고,
- 사이드바에도 있다. 같은 목록을 세 번째로 두는 건 채우는 것이지
- 보태는 것이 아니다. #}
- <div>
- <h2>{{ t("footer_project") }}</h2>
- <ul>
- <li><a href="https://github.com/sqzer-x/sqzass">GitHub</a></li>
- <li><a href="https://github.com/sqzer-x/sqzass/releases">{{ t("footer_releases") }}</a></li>
- <li><a href="https://github.com/sqzer-x/sqzass/issues">{{ t("footer_issues") }}</a></li>
- <li><a href="https://github.com/sqzer-x/sqzass/blob/main/LICENSE">MIT</a></li>
- </ul>
- </div>
-
- {#- 이 빌드가 실제로 내보낸 파일들. 자기 자신을 빌드하는 도구의 문서라서
- 여기 링크가 곧 증거가 된다 — 문서가 "이런 걸 만듭니다"라고 말한 것을
- 눌러서 확인할 수 있다. #}
- <div>
- <h2>{{ t("footer_this_build") }}</h2>
- <ul>
- <li><a href="{{ site.base_path }}/sitemap.xml">sitemap.xml</a></li>
- <li><a href="{{ site.base_path }}/robots.txt">robots.txt</a></li>
- <li><a href="{{ site.base_path }}/llms.txt">llms.txt</a></li>
- {%- if site.search %}
- <li><a href="{{ site.search }}">{{ t("footer_search_index") }}</a></li>
- {%- endif %}
- </ul>
- </div>
- </div>
-
- <p class="colophon-note">{{ t("built_with") }}</p>
-</footer>
+{%- include "partials/colophon.html" %}
{%- if site.search %}
<dialog id="search-dialog" class="search-dialog" aria-label="{{ t("search_the_docs") }}">
diff --git a/docs/templates/landing.html b/docs/templates/landing.html
@@ -141,21 +141,8 @@
</div>
</section>
- <footer class="foot">
- <div class="inner foot-in">
- <nav class="foot-nav">
- <a href="{{ home }}start/">{{ t("documentation") }}</a>
- <a href="{{ home }}benchmark/">{{ page.extra.foot_benchmark }}</a>
- <a href="https://github.com/sqzer-x/sqzass/releases">{{ t("footer_releases") }}</a>
- <a href="https://github.com/sqzer-x/sqzass/issues">{{ t("footer_issues") }}</a>
- <a href="https://github.com/sqzer-x/sqzass">GitHub</a>
- {%- for lang in page.translations %}
- <a href="{{ lang.url }}" hreflang="{{ lang.code }}">{{ lang.name }}</a>
- {%- endfor %}
- </nav>
- <p>{{ page.extra.foot_line }} · MIT</p>
- </div>
- </footer>
</main>
+
+{%- include "partials/colophon.html" %}
</body>
</html>
diff --git a/docs/templates/partials/colophon.html b/docs/templates/partials/colophon.html
@@ -0,0 +1,46 @@
+{#- 사이트 푸터. base.html(docs)과 landing.html이 같은 파일을 include한다 —
+ 푸터는 사이트 어디서나 같은 물건으로 보여야 하고, 두 벌을 두면 반드시
+ 어긋난다. 스타일은 각 시트(main.css / landing.css)의 .colophon 블록이 진다. #}
+<footer class="colophon">
+ <div class="colophon-grid">
+ <div class="colophon-brand">
+ <a class="colophon-mark" href="{{ home }}">
+ <img src="{{ asset("images/logo.png") }}" alt="" width="121" height="120">
+ <span>{{ site.title }}</span>
+ </a>
+ {#- site.description은 사이트에 하나뿐이라 언어를 타지 않는다. 한국어
+ 페이지에 영어 한 줄이 남는 자리라서 i18n에서 가져온다. #}
+ <p>{{ t("tagline") }}</p>
+ </div>
+
+ {#- 문서 갈래는 넣지 않는다. 상단바가 sticky라 화면에서 사라지지 않고,
+ 사이드바에도 있다. 같은 목록을 세 번째로 두는 건 채우는 것이지
+ 보태는 것이 아니다. #}
+ <div>
+ <h2>{{ t("footer_project") }}</h2>
+ <ul>
+ <li><a href="https://github.com/sqzer-x/sqzass">GitHub</a></li>
+ <li><a href="https://github.com/sqzer-x/sqzass/releases">{{ t("footer_releases") }}</a></li>
+ <li><a href="https://github.com/sqzer-x/sqzass/issues">{{ t("footer_issues") }}</a></li>
+ <li><a href="https://github.com/sqzer-x/sqzass/blob/main/LICENSE">MIT</a></li>
+ </ul>
+ </div>
+
+ {#- 이 빌드가 실제로 내보낸 파일들. 자기 자신을 빌드하는 도구의 문서라서
+ 여기 링크가 곧 증거가 된다 — 문서가 "이런 걸 만듭니다"라고 말한 것을
+ 눌러서 확인할 수 있다. #}
+ <div>
+ <h2>{{ t("footer_this_build") }}</h2>
+ <ul>
+ <li><a href="{{ site.base_path }}/sitemap.xml">sitemap.xml</a></li>
+ <li><a href="{{ site.base_path }}/robots.txt">robots.txt</a></li>
+ <li><a href="{{ site.base_path }}/llms.txt">llms.txt</a></li>
+ {%- if site.search %}
+ <li><a href="{{ site.search }}">{{ t("footer_search_index") }}</a></li>
+ {%- endif %}
+ </ul>
+ </div>
+ </div>
+
+ <p class="colophon-note">{{ t("built_with") }}</p>
+</footer>
|