From 900ce34ce5004ac28172e1da6875334c35315cf8 Mon Sep 17 00:00:00 2001 From: Haksung Jang Date: Tue, 2 Jun 2026 10:06:03 +0900 Subject: [PATCH 1/6] =?UTF-8?q?feat(design):=20=EB=B9=84=EC=A3=BC=EC=96=BC?= =?UTF-8?q?=C2=B7=EB=AA=A8=EC=85=98=20=EA=B0=95=ED=99=94=20=EB=B0=8F=20UI?= =?UTF-8?q?=20=EC=9D=BC=EA=B4=80=EC=84=B1=20=EC=A0=95=EB=B9=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 스크롤 리빌, 히어로 진입 애니메이션, 카드 호버 등 모션 추가(동작 줄이기 존중) - 액센트 토큰(--skt-accent) 신설 및 히어로 글로우 적용 - Primary 색상 오버라이드가 실제 적용되도록 !default 제거(파란 버튼 → 모노크롬) - alert/callout을 좌측 아이콘 callout으로 재디자인 - 마크다운 표를 카드형 컨테이너로 정비(render-table 훅, 모바일 가로 스크롤) - 블로그 목록을 카드 그리드로 통일 - favicon/PNG/ICO 투명 배경 처리 --- assets/js/scroll-reveal.js | 35 +++++ assets/scss/_styles_project.scss | 148 ++++++++++++++++++--- assets/scss/_variables_project.scss | 36 ++--- assets/scss/tokens/_colors.scss | 5 + layouts/_markup/render-table.html | 28 ++++ layouts/blog/list.html | 28 ++++ layouts/partials/home/blog-card.html | 2 +- layouts/partials/home/cta-github.html | 2 +- layouts/partials/home/features.html | 4 +- layouts/partials/home/latest-blog.html | 2 +- layouts/partials/home/latest-projects.html | 2 +- layouts/partials/home/stats.html | 2 +- layouts/partials/home/supply-chain.html | 4 +- layouts/partials/hooks/body-end.html | 9 ++ layouts/partials/hooks/head-end.html | 11 ++ layouts/partials/project/card.html | 2 +- static/favicons/apple-touch-icon.png | Bin 9732 -> 10381 bytes static/favicons/favicon-16x16.png | Bin 565 -> 571 bytes static/favicons/favicon-32x32.png | Bin 1392 -> 1400 bytes static/favicons/favicon.ico | Bin 4250 -> 4300 bytes static/favicons/icon-192.png | Bin 10426 -> 11169 bytes static/favicons/icon-512.png | Bin 31276 -> 16389 bytes 22 files changed, 275 insertions(+), 45 deletions(-) create mode 100644 assets/js/scroll-reveal.js create mode 100644 layouts/_markup/render-table.html create mode 100644 layouts/blog/list.html create mode 100644 layouts/partials/hooks/body-end.html diff --git a/assets/js/scroll-reveal.js b/assets/js/scroll-reveal.js new file mode 100644 index 000000000..5f7ba4ad2 --- /dev/null +++ b/assets/js/scroll-reveal.js @@ -0,0 +1,35 @@ +/* + * 스크롤 리빌 — .skt-reveal 요소가 뷰포트에 들어오면 .is-visible 을 부여해 + * 부드럽게 나타나게 한다. 의존성 없는 순수 JS(IntersectionObserver). + * + * 초기 숨김(opacity:0)은 CSS에서 html.js-reveal 일 때만 적용되며, 이 클래스는 + * 동작 줄이기(prefers-reduced-motion)가 아닐 때만 head 인라인 스크립트가 부여한다. + * 따라서 JS 비활성/실패 또는 동작 줄이기 환경에서는 콘텐츠가 항상 보인다. + */ +(function () { + "use strict"; + + var root = document.documentElement; + + // js-reveal 게이트가 없으면(동작 줄이기 등) 아무것도 숨기지 않은 상태이므로 종료 + if (!root.classList.contains("js-reveal")) return; + + var els = document.querySelectorAll(".skt-reveal"); + + // 관찰 대상이 없거나 IO 미지원 → 게이트를 풀어 전부 보이게 하고 종료 + if (!els.length || !("IntersectionObserver" in window)) { + root.classList.remove("js-reveal"); + return; + } + + var io = new IntersectionObserver(function (entries) { + entries.forEach(function (entry) { + if (entry.isIntersecting) { + entry.target.classList.add("is-visible"); + io.unobserve(entry.target); + } + }); + }, { rootMargin: "0px 0px -8% 0px", threshold: 0.08 }); + + els.forEach(function (el) { io.observe(el); }); +})(); diff --git a/assets/scss/_styles_project.scss b/assets/scss/_styles_project.scss index 52352fcc6..b0629d22d 100644 --- a/assets/scss/_styles_project.scss +++ b/assets/scss/_styles_project.scss @@ -44,6 +44,10 @@ https://www.docsy.dev/docs/content/lookandfeel/#project-style-files --skt-gradient: #{$skt-gradient}; --skt-focus: rgba(0, 0, 0, .6); --skt-hero-bg: #ffffff; + /* 액센트(SK Red) — 핵심 지점에만 절제 사용. 히어로 글로우는 저채도 */ + --skt-accent: #{$skt-accent}; + --skt-accent-glow: #{rgba($skt-accent, .14)}; + --skt-hero-glow: var(--skt-accent-glow); } /* 다크 = Vercel 시그니처: 순검정 배경 / 흰 강조 / 불투명 헤어라인 */ @@ -63,6 +67,10 @@ https://www.docsy.dev/docs/content/lookandfeel/#project-style-files --skt-focus: rgba(255, 255, 255, .7); --skt-gradient: linear-gradient(135deg, #1a1a1a 0%, #000 100%); --skt-hero-bg: #000000; + /* 다크: 액센트는 밝게 보정, 히어로 글로우는 Vercel 시그니처 흰색 유지 */ + --skt-accent: #{$skt-accent-dark}; + --skt-accent-glow: #{rgba($skt-accent-dark, .14)}; + --skt-hero-glow: rgba(255, 255, 255, .14); } /* 다크 페이지 배경을 순검정으로 (Docsy 기본 회색 덮기) */ @@ -190,6 +198,16 @@ h1, h2, h3, h4, h5, h6, gap: 1.5rem; } +/* 블로그 목록 — 연도 그룹 헤더 + 카드 그리드(홈과 통일) */ +.td-blog-posts .skt-blog-year { + margin: 2.75rem 0 1.25rem; + font-size: 1.4rem; + font-weight: 700; + letter-spacing: -0.02em; +} +.td-blog-posts .skt-blog-year:first-child { margin-top: 1.5rem; } +.td-blog-posts .skt-grid { margin-bottom: 1rem; } + /* 카드 — 그림자 없이 1px 보더, hover 시 보더 강조(lift 없음) */ .skt-card { display: flex; @@ -199,13 +217,16 @@ h1, h2, h3, h4, h5, h6, border: 1px solid var(--skt-border); border-radius: $border-radius-lg; overflow: hidden; - transition: border-color var(--skt-transition), background var(--skt-transition); + transition: border-color var(--skt-transition), background var(--skt-transition), + transform var(--skt-transition), box-shadow var(--skt-transition); color: inherit; text-decoration: none; } a.skt-card:hover, .skt-card:hover { border-color: var(--skt-border-strong); + transform: translateY(-4px); + box-shadow: var(--skt-shadow-lg); text-decoration: none; } .skt-card__media { @@ -334,13 +355,14 @@ a.skt-card:hover, mask-image: radial-gradient(ellipse 60% 50% at 50% 45%, #000 30%, transparent 75%); opacity: .7; } -[data-bs-theme='dark'] .skt-hero::before { +/* 히어로 상단 글로우 — 라이트는 저채도 SK Red 액센트, 다크는 흰색(토큰) */ +.skt-hero::before { content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none; - background: radial-gradient(ellipse 50% 40% at 50% 0%, rgba(255, 255, 255, .08), transparent 70%); + background: radial-gradient(ellipse 75% 55% at 50% -8%, var(--skt-hero-glow), transparent 72%); } .skt-hero__inner { position: relative; @@ -367,6 +389,41 @@ a.skt-card:hover, flex-wrap: wrap; } +/* 히어로 진입 애니메이션 — 제목→부제→CTA 순차(최초 1회). + no-preference로 감싸 동작 줄이기 사용자에겐 적용되지 않음 */ +@media (prefers-reduced-motion: no-preference) { + .skt-hero__title { animation: skt-fade-up .7s var(--skt-ease) both; } + .skt-hero__subtitle { animation: skt-fade-up .7s var(--skt-ease) .12s both; } + .skt-hero__actions { animation: skt-fade-up .7s var(--skt-ease) .24s both; } +} +@keyframes skt-fade-up { + from { opacity: 0; transform: translateY(24px); } + to { opacity: 1; transform: none; } +} + +/* CTA 화살표 — hover 시 살짝 전진 */ +.btn .fa-arrow-right { transition: transform var(--skt-transition) var(--skt-ease); } +.btn:hover .fa-arrow-right { transform: translateX(3px); } + +/* 스크롤 리빌 — html.js-reveal 일 때만 초기 숨김 적용(JS 비활성/실패 시 항상 표시). + js-reveal 클래스는 동작 줄이기가 아닐 때만 head 인라인 스크립트가 부여한다. */ +.js-reveal .skt-reveal { + opacity: 0; + transform: translateY(24px); + transition: opacity .65s var(--skt-ease), transform .65s var(--skt-ease); + transition-delay: var(--skt-reveal-delay, 0s); + will-change: opacity, transform; +} +.js-reveal .skt-reveal.is-visible { + opacity: 1; + transform: none; +} +/* 카드 stagger — 3열 기준 행마다 좌→우 미세 지연 */ +.js-reveal .skt-grid > .skt-reveal:nth-child(3n+2), +.js-reveal .row > .skt-reveal:nth-child(3n+2) { --skt-reveal-delay: .06s; } +.js-reveal .skt-grid > .skt-reveal:nth-child(3n), +.js-reveal .row > .skt-reveal:nth-child(3n) { --skt-reveal-delay: .12s; } + /* 섹션 공통 */ .skt-section { padding: 5rem 0; @@ -533,16 +590,33 @@ a.skt-card:hover, } blockquote p:last-child { margin-bottom: 0; } - /* 표 — 헤더 배경 + 행 구분선 */ - table { - th, td { padding: .65rem .85rem; } - thead th { - background: var(--skt-surface-subtle); - border-bottom: 1px solid var(--skt-border-strong); - font-weight: 600; - } - td { border-color: var(--skt-border); } + /* 표 — .skt-table 컨테이너로 카드화(외곽 테두리 + radius + 모바일 가로 스크롤). + render-table 훅이 모든 마크다운 표를 .skt-table 로 감싼다. */ + .skt-table { + margin: 1.5rem 0; + border: 1px solid var(--skt-border); + border-radius: $border-radius-lg; + overflow: auto; /* 모바일 가로 스크롤 + radius 클립 */ } + .skt-table > table { + margin: 0; + width: 100%; + border-collapse: collapse; + } + .skt-table th, + .skt-table td { + padding: .7rem 1rem; + border-bottom: 1px solid var(--skt-border); + } + .skt-table thead th { + background: var(--skt-surface-subtle); + border-bottom: 1px solid var(--skt-border-strong); + font-weight: 600; + white-space: nowrap; + } + .skt-table tbody tr:last-child > * { border-bottom: 0; } + .skt-table tbody tr { transition: background var(--skt-transition); } + .skt-table tbody tr:hover > * { background: var(--skt-surface-subtle); } /* 본문 링크 — 읽는 중 식별 위해 옅은 밑줄 (표 셀 안 링크 포함) */ p a, li a, td a, th a { @@ -573,15 +647,49 @@ a.skt-card:hover, padding-bottom: 4rem; } -/* alert/callout — 전역 무채색 통일 (본문·인트로 공통, 의미색/노랑·초록 제거) */ +/* alert/callout — 좌측 아이콘 callout. 박스·본문은 무채색, 아이콘만 절제된 의미색. + HTML 구조: .alert > .alert-heading(.h4) + p/ul (Docsy alert 숏코드) */ .alert { + display: grid; + grid-template-columns: auto 1fr; + column-gap: .8rem; + align-items: start; + padding: 1.1rem 1.25rem; background: var(--skt-surface-subtle); border: 1px solid var(--skt-border); - border-left: 3px solid var(--skt-border-strong); - border-radius: $border-radius; + border-radius: $border-radius-lg; + color: var(--skt-text); +} +/* 좌측 아이콘 — color별 글리프(Font Awesome 6 Free), 절제된 의미색 */ +.alert::before { + grid-column: 1; + grid-row: 1; + font-family: "Font Awesome 6 Free"; + font-weight: 900; + content: "\f05a"; /* circle-info (기본) */ + font-size: 1.05rem; + line-height: 1.55; + color: var(--skt-text-muted); +} +.alert-warning::before { content: "\f071"; color: #{$skt-orange}; } /* triangle-exclamation */ +.alert-danger::before { content: "\f06a"; color: #{$skt-red}; } /* circle-exclamation */ +.alert-success::before { content: "\f058"; color: #{$skt-green}; } /* circle-check */ +.alert-info::before, +.alert-primary::before { content: "\f05a"; color: var(--skt-text-muted); } +/* 콘텐츠는 모두 우측 컬럼 */ +.alert > * { grid-column: 2; min-width: 0; } +.alert .alert-heading { + font-size: 1rem; + font-weight: 600; + line-height: 1.4; color: var(--skt-text); + margin: 0 0 .35rem; } -.alert .alert-heading { color: var(--skt-text); } +.alert p { margin-bottom: .5rem; color: var(--skt-text-muted); } +.alert ul, .alert ol { margin-bottom: 0; padding-left: 1.15rem; color: var(--skt-text-muted); } +.alert > :last-child { margin-bottom: 0; } +.alert a { color: var(--skt-text); text-decoration: underline; text-decoration-color: var(--skt-border-strong); text-underline-offset: .15em; } +.alert a:hover { text-decoration-color: currentColor; } [data-bs-theme='dark'] .alert { background: var(--skt-surface-muted); border-color: var(--skt-border-strong); @@ -681,8 +789,10 @@ a.skt-card:hover, pre, :not(pre) > code { background: var(--skt-surface-muted); border-color: var(--skt-border); } blockquote { background: var(--skt-surface-muted); } - table thead th { background: var(--skt-surface-muted); } - table th, - table td { border-color: var(--skt-border-strong); } + .skt-table { border-color: var(--skt-border-strong); } + .skt-table thead th { background: var(--skt-surface-muted); } + .skt-table th, + .skt-table td { border-color: var(--skt-border-strong); } + .skt-table tbody tr:hover > * { background: var(--skt-surface-muted); } img { border-color: var(--skt-border-strong); } } diff --git a/assets/scss/_variables_project.scss b/assets/scss/_variables_project.scss index 846ac5520..45b929da3 100644 --- a/assets/scss/_variables_project.scss +++ b/assets/scss/_variables_project.scss @@ -38,36 +38,40 @@ $skt-green: #00A651; // SK Green // Bootstrap 변수 오버라이드 // ============================================ +// 주의: 이 파일은 Bootstrap 변수 이후에 로드되므로 !default 를 붙이면 +// Bootstrap 기본값(예: $primary=#0d6efd 파랑)을 덮지 못한다. 오버라이드를 +// 실제로 적용하려면 !default 없이 강제 할당해야 한다. + // Primary: 모노크롬 강조 (라이트=near-black #171717). 다크는 _styles_project에서 반전. -$primary: $skt-t-blue !default; +$primary: $skt-t-blue; // Secondary: 무채색 회색 (모노크롬) -$secondary: $skt-gray-600 !default; +$secondary: $skt-gray-600; // 기타 색상 — success/warning/danger 는 의미색이라 유지(경고/성공 접근성) -$success: $skt-green !default; -$info: $skt-gray-500 !default; -$warning: $skt-orange !default; -$danger: $skt-red !default; +$success: $skt-green; +$info: $skt-gray-500; +$warning: $skt-orange; +$danger: $skt-red; // ============================================ // 링크 색상 (모노크롬) // ============================================ -$link-color: $skt-gray-900 !default; -$link-decoration: none !default; -$link-hover-color: $skt-gray-600 !default; -$link-hover-decoration: underline !default; +$link-color: $skt-gray-900; +$link-decoration: none; +$link-hover-color: $skt-gray-600; +$link-hover-decoration: underline; // ============================================ // 버튼 (Vercel 미니멀) // ============================================ -$btn-link-color: $skt-gray-900 !default; -$btn-link-hover-color: $skt-gray-600 !default; -$btn-font-weight: 500 !default; -$btn-border-radius: $border-radius !default; // 6px -$btn-border-radius-sm: $border-radius-sm !default; -$btn-border-radius-lg: $border-radius !default; // lg도 6px (Vercel은 안 키움) +$btn-link-color: $skt-gray-900; +$btn-link-hover-color: $skt-gray-600; +$btn-font-weight: 500; +$btn-border-radius: $border-radius; // 6px +$btn-border-radius-sm: $border-radius-sm; +$btn-border-radius-lg: $border-radius; // lg도 6px (Vercel은 안 키움) diff --git a/assets/scss/tokens/_colors.scss b/assets/scss/tokens/_colors.scss index 9ce47dec9..7ff58914c 100644 --- a/assets/scss/tokens/_colors.scss +++ b/assets/scss/tokens/_colors.scss @@ -31,3 +31,8 @@ $skt-gray-900: #0a0a0a; // text (라이트) // ── 그라데이션: 삭제 대신 무채색화 (참조처 안전) ── $skt-gradient: linear-gradient(135deg, #{$skt-gray-900} 0%, #{$skt-gray-700} 100%); + +// ── 액센트 = SK Red. 모노크롬 기조를 깨지 않도록 히어로 글로우 등 +// "핵심 1~2지점"에만 저채도로 절제해서 쓴다. ── +$skt-accent: #EA002C; // SK Red (PANTONE 186C) +$skt-accent-dark: #ff4d6a; // 다크 배경 위 가독성 보정용 diff --git a/layouts/_markup/render-table.html b/layouts/_markup/render-table.html new file mode 100644 index 000000000..940a4961d --- /dev/null +++ b/layouts/_markup/render-table.html @@ -0,0 +1,28 @@ +{{- /* 표 렌더 훅 — 마크다운 표를 .skt-table 컨테이너로 감싸 외곽 테두리·라운드· + 모바일 가로 스크롤을 부여한다. Docsy/Hugo 기본 출력과 동일한 구조 유지. */ -}} +
+ + {{- with .THead -}} + + {{- range . -}} + + {{- range . -}} + {{ .Text }} + {{- end -}} + + {{- end -}} + + {{- end -}} + {{- with .TBody -}} + + {{- range . -}} + + {{- range . -}} + {{ .Text }} + {{- end -}} + + {{- end -}} + + {{- end -}} +
+
diff --git a/layouts/blog/list.html b/layouts/blog/list.html new file mode 100644 index 000000000..86ab358af --- /dev/null +++ b/layouts/blog/list.html @@ -0,0 +1,28 @@ +{{ define "main" -}} +
+

{{ .Title }}

+ {{ with .Content }}{{ . }}{{ end -}} +
+{{ if (and .Parent .Parent.IsHome) -}} + {{ $.Scratch.Set "blog-pages" (where .Site.RegularPages "Section" .Section) -}} +{{ else -}} + {{ $.Scratch.Set "blog-pages" .Pages -}} +{{ end -}} + +{{ if .Pages -}} +
+ {{ $pager := .Paginate (( $.Scratch.Get "blog-pages").GroupByDate "2006" ) -}} + {{ range $pager.PageGroups -}} +

{{ T "post_posts_in" }} {{ .Key }}

+
+ {{ range .Pages -}} + {{ partial "home/blog-card.html" . }} + {{ end -}} +
+ {{ end -}} +
+
+ {{ partial "pagination.html" . -}} +
+{{- end -}} +{{ end -}} diff --git a/layouts/partials/home/blog-card.html b/layouts/partials/home/blog-card.html index 0ac6f6cda..f15980dd2 100644 --- a/layouts/partials/home/blog-card.html +++ b/layouts/partials/home/blog-card.html @@ -1,5 +1,5 @@ {{/* 블로그 카드 — 컨텍스트(.)는 블로그 글 페이지 */}} - +
diff --git a/layouts/partials/home/cta-github.html b/layouts/partials/home/cta-github.html index 6bac23451..02577643f 100644 --- a/layouts/partials/home/cta-github.html +++ b/layouts/partials/home/cta-github.html @@ -1,6 +1,6 @@ {{/* GitHub CTA — 모노크롬 (subtle 밴드 + 테마 텍스트) */}}
-
+

{{ T "home_github_title" }}

{{ T "home_github_cta" }} diff --git a/layouts/partials/home/features.html b/layouts/partials/home/features.html index f7f034e02..77df76262 100644 --- a/layouts/partials/home/features.html +++ b/layouts/partials/home/features.html @@ -1,13 +1,13 @@ {{/* 피처 카드 3개 — 텍스트는 _index.md front matter(features)에서 */}}
-
+

{{ T "home_features_title" }}

{{ T "home_features_lead" }}

{{ range .Params.features }} -
+
diff --git a/layouts/partials/home/latest-blog.html b/layouts/partials/home/latest-blog.html index 2c50c3af4..a2b2f7a3f 100644 --- a/layouts/partials/home/latest-blog.html +++ b/layouts/partials/home/latest-blog.html @@ -4,7 +4,7 @@ {{ with $latest }}
-
+

{{ T "home_blog_title" }}

{{ T "home_blog_lead" }}

diff --git a/layouts/partials/home/latest-projects.html b/layouts/partials/home/latest-projects.html index 625a3690a..9c87610d2 100644 --- a/layouts/partials/home/latest-projects.html +++ b/layouts/partials/home/latest-projects.html @@ -5,7 +5,7 @@ {{ with $items }}
-
+

{{ T "home_projects_title" }}

{{ T "home_projects_lead" }}

diff --git a/layouts/partials/home/stats.html b/layouts/partials/home/stats.html index 94a24cde9..0cff2088f 100644 --- a/layouts/partials/home/stats.html +++ b/layouts/partials/home/stats.html @@ -7,7 +7,7 @@ {{ $years := sub now.Year 2019 }}
-
+
{{ $projects }}
{{ T "home_stat_projects" }}
diff --git a/layouts/partials/home/supply-chain.html b/layouts/partials/home/supply-chain.html index 6fd44f977..5112bc5ce 100644 --- a/layouts/partials/home/supply-chain.html +++ b/layouts/partials/home/supply-chain.html @@ -1,12 +1,12 @@ {{/* 공급망 보안 / SBOM Generator 스포트라이트 밴드 */}}
-
+

{{ T "home_supplychain_title" }}

{{ T "home_supplychain_lead" }}

-
+
{{ T "home_supplychain_cta_guide" }} diff --git a/layouts/partials/hooks/body-end.html b/layouts/partials/hooks/body-end.html new file mode 100644 index 000000000..08e191e84 --- /dev/null +++ b/layouts/partials/hooks/body-end.html @@ -0,0 +1,9 @@ +{{/* 전역 스크립트 로드 (Docsy hooks/body-end). 프로덕션은 minify+fingerprint+SRI. */}} +{{ with resources.Get "js/scroll-reveal.js" }} + {{ if hugo.IsProduction }} + {{ $js := . | minify | fingerprint }} + + {{ else }} + + {{ end }} +{{ end }} diff --git a/layouts/partials/hooks/head-end.html b/layouts/partials/hooks/head-end.html index 512b19a64..32029f788 100644 --- a/layouts/partials/hooks/head-end.html +++ b/layouts/partials/hooks/head-end.html @@ -2,6 +2,17 @@ +{{/* 스크롤 리빌 게이트 — paint 전에 html.js-reveal 을 부여해 FOUC 방지. + 동작 줄이기 사용자에겐 부여하지 않아 모션 없이 콘텐츠가 즉시 보인다. */}} + + {{/* Open Graph / Twitter 카드는 Docsy 내장 템플릿(opengraph·twitter_cards)이 생성하므로 여기서 중복 출력하지 않는다. 사이트 기본 OG 이미지는 hugo.yaml params.images로 지정. */}} diff --git a/layouts/partials/project/card.html b/layouts/partials/project/card.html index 9dba3b25e..0cff33125 100644 --- a/layouts/partials/project/card.html +++ b/layouts/partials/project/card.html @@ -2,7 +2,7 @@ {{ $imgs := .Resources.ByType "image" }} {{ $img := $imgs.GetMatch "*logo*" }} {{ if and (not $img) $imgs }}{{ $img = index $imgs 0 }}{{ end }} - +
{{ with $img }} {{ if eq .MediaType.SubType "svg" }} diff --git a/static/favicons/apple-touch-icon.png b/static/favicons/apple-touch-icon.png index 173eaf1f23561f06efe74156810eb6a03fcc7855..21f5a0815a9dc9ab117ccac17508b8c3b625ab9d 100644 GIT binary patch literal 10381 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 l0d@C@+#DHHTeg1!{{YOx)1qNkls6>I zet_-8i(d$OX%TEa7exdM#XmqQB8Z?u!Has+iWj{}3kqJOf~-wSOw%NrnUUGukPts; zAK0D4%=^60Gw(CP7-P^40!RlCYz87AXot}tjii*4u7AXgHd5|qp=AE)so>( z7K&vU+ykRCu^181uQ8SNuvn{hf?%8ipq#f}Mxq#(T&dVA~-Nnd_%~Wg5{nK!5V&4_KUsm;)B69t~CB?=@s4pynw+vo2On6TQj$VX=m!W&8J<6sPoaV@dp!Vn~vCror z-V4K5VgH55u61lv>)2+0fmX(7ZA@Xwn1xwmYNghm^27ZIe?F#v!M<4AF`9o9|0f9C fMN&Hon-=&DPnz&KSZv8-00000NkvXXu0mjfSZM)# diff --git a/static/favicons/favicon-32x32.png b/static/favicons/favicon-32x32.png index 5589a4c822b50e577ab70e4f2e2fe230cfc0d669..0df6e618c3649b9138d4fa9f42b3d05bed15121b 100644 GIT binary patch delta 1381 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 diff --git a/static/favicons/favicon.ico b/static/favicons/favicon.ico index 391467b6b498af22677d69289e5027a233f85385..90a8cf73537214bf80aa2bdfe802da6072c02753 100644 GIT binary patch delta 4216 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 literal 10426 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 PlZc?A0FtkjwFvtk$+a$0 diff --git a/static/favicons/icon-512.png b/static/favicons/icon-512.png index 4f9c8a8b48ac922919dc8415fda840171532d334..75c1d54464c00bac5153c6affa65d248749c149d 100644 GIT binary patch literal 16389 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 From e5b7ac3dc0e6496bd8cae5336b8f8d861ed9b0bf Mon Sep 17 00:00:00 2001 From: Haksung Jang Date: Tue, 2 Jun 2026 10:10:31 +0900 Subject: [PATCH 2/6] =?UTF-8?q?feat(design):=20=EC=8A=A4=ED=81=AC=EB=A1=A4?= =?UTF-8?q?=20=EC=A7=84=ED=96=89=20=EB=B0=94=C2=B7=EB=A7=A8=20=EC=9C=84?= =?UTF-8?q?=EB=A1=9C=20=EB=B2=84=ED=8A=BC=20=EC=B6=94=EA=B0=80=20=EB=B0=8F?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EB=B3=B5=EC=82=AC=20=EB=B2=84=ED=8A=BC?= =?UTF-8?q?=20=EC=A0=95=EB=B9=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 스크롤 진행 바(상단 고정, 절제된 액센트색) 추가 - 맨 위로 버튼(무채색 원형, 스크롤 시 노출) 추가 — 동작 줄이기 존중 - 전역 스크립트를 단일 번들(skt-bundle.js)로 합쳐 요청 수 절감 - Docsy 코드 복사 버튼을 무채색 톤으로 정비 --- assets/js/ui-enhancements.js | 44 +++++++++++++++++++++ assets/scss/_styles_project.scss | 59 +++++++++++++++++++++++++++- layouts/partials/hooks/body-end.html | 12 ++++-- 3 files changed, 110 insertions(+), 5 deletions(-) create mode 100644 assets/js/ui-enhancements.js diff --git a/assets/js/ui-enhancements.js b/assets/js/ui-enhancements.js new file mode 100644 index 000000000..6b856e516 --- /dev/null +++ b/assets/js/ui-enhancements.js @@ -0,0 +1,44 @@ +/* + * UI 보조 요소 — 스크롤 진행 바 + 맨 위로 버튼. 의존성 없는 순수 JS. + * 동작 줄이기(prefers-reduced-motion)일 때 부드러운 스크롤 대신 즉시 이동한다. + */ +(function () { + "use strict"; + + var reduce = window.matchMedia && + window.matchMedia("(prefers-reduced-motion: reduce)").matches; + var isEn = (document.documentElement.lang || "").slice(0, 2) === "en"; + + // 1) 스크롤 진행 바 (상단 고정, 액센트색) + var bar = document.createElement("div"); + bar.className = "skt-progress"; + bar.setAttribute("aria-hidden", "true"); + document.body.appendChild(bar); + + // 2) 맨 위로 버튼 + var btn = document.createElement("button"); + btn.type = "button"; + btn.className = "skt-to-top"; + btn.setAttribute("aria-label", isEn ? "Back to top" : "맨 위로"); + btn.innerHTML = ''; + btn.addEventListener("click", function () { + window.scrollTo({ top: 0, behavior: reduce ? "auto" : "smooth" }); + }); + document.body.appendChild(btn); + + var ticking = false; + function update() { + var doc = document.documentElement; + var st = window.scrollY || doc.scrollTop; + var h = doc.scrollHeight - doc.clientHeight; + bar.style.transform = "scaleX(" + (h > 0 ? st / h : 0) + ")"; + btn.classList.toggle("is-visible", st > 400); + ticking = false; + } + function onScroll() { + if (!ticking) { window.requestAnimationFrame(update); ticking = true; } + } + window.addEventListener("scroll", onScroll, { passive: true }); + window.addEventListener("resize", onScroll, { passive: true }); + update(); +})(); diff --git a/assets/scss/_styles_project.scss b/assets/scss/_styles_project.scss index b0629d22d..f676e5bff 100644 --- a/assets/scss/_styles_project.scss +++ b/assets/scss/_styles_project.scss @@ -424,6 +424,51 @@ a.skt-card:hover, .js-reveal .skt-grid > .skt-reveal:nth-child(3n), .js-reveal .row > .skt-reveal:nth-child(3n) { --skt-reveal-delay: .12s; } +/* 스크롤 진행 바 — 상단 고정(navbar 위), 절제된 액센트 */ +.skt-progress { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 2px; + transform: scaleX(0); + transform-origin: 0 50%; + background: var(--skt-accent); + z-index: 1040; + pointer-events: none; + will-change: transform; +} +@media (prefers-reduced-motion: no-preference) { + .skt-progress { transition: transform .1s linear; } +} + +/* 맨 위로 버튼 — 무채색 원형, 우하단(스크롤 시 노출) */ +.skt-to-top { + position: fixed; + right: 1.25rem; + bottom: 1.25rem; + width: 42px; + height: 42px; + display: inline-flex; + align-items: center; + justify-content: center; + border-radius: 50%; + background: var(--skt-surface); + color: var(--skt-text); + border: 1px solid var(--skt-border); + box-shadow: var(--skt-shadow-lg); + cursor: pointer; + opacity: 0; + visibility: hidden; + transform: translateY(8px); + transition: opacity var(--skt-transition), transform var(--skt-transition), + visibility var(--skt-transition), border-color var(--skt-transition), + background var(--skt-transition); + z-index: 1030; +} +.skt-to-top.is-visible { opacity: 1; visibility: visible; transform: none; } +.skt-to-top:hover { border-color: var(--skt-border-strong); background: var(--skt-surface-subtle); } + /* 섹션 공통 */ .skt-section { padding: 5rem 0; @@ -577,7 +622,19 @@ a.skt-card:hover, border-radius: $border-radius-lg; padding: 1rem 1.15rem; } - .highlight { border-radius: $border-radius-lg; } + .highlight { border-radius: $border-radius-lg; position: relative; } + /* 코드 복사 버튼(Docsy click-to-copy) — 무채색 톤 정비, hover 시 또렷 */ + .highlight button.td-click-to-copy { + color: var(--skt-text-muted); + border: 1px solid transparent; + border-radius: $border-radius-sm; + transition: color var(--skt-transition), background var(--skt-transition), border-color var(--skt-transition); + } + .highlight button.td-click-to-copy:hover { + color: var(--skt-text); + background: var(--skt-surface-muted); + border-color: var(--skt-border); + } /* 인용 — 절제(2px 보더 + subtle 배경) */ blockquote { diff --git a/layouts/partials/hooks/body-end.html b/layouts/partials/hooks/body-end.html index 08e191e84..5c9be5285 100644 --- a/layouts/partials/hooks/body-end.html +++ b/layouts/partials/hooks/body-end.html @@ -1,9 +1,13 @@ -{{/* 전역 스크립트 로드 (Docsy hooks/body-end). 프로덕션은 minify+fingerprint+SRI. */}} -{{ with resources.Get "js/scroll-reveal.js" }} +{{/* 전역 스크립트 번들 (Docsy hooks/body-end). 프로덕션은 minify+fingerprint+SRI. */}} +{{ $scripts := slice }} +{{ with resources.Get "js/scroll-reveal.js" }}{{ $scripts = $scripts | append . }}{{ end }} +{{ with resources.Get "js/ui-enhancements.js" }}{{ $scripts = $scripts | append . }}{{ end }} +{{ with $scripts }} + {{ $js := . | resources.Concat "js/skt-bundle.js" }} {{ if hugo.IsProduction }} - {{ $js := . | minify | fingerprint }} + {{ $js = $js | minify | fingerprint }} {{ else }} - + {{ end }} {{ end }} From 22fb897c58bafcf82f06a5608a6e8faaeec3f556 Mon Sep 17 00:00:00 2001 From: Haksung Jang Date: Tue, 2 Jun 2026 10:23:55 +0900 Subject: [PATCH 3/6] =?UTF-8?q?fix(design):=20=EC=9A=B0=EC=B8=A1=20?= =?UTF-8?q?=EC=82=AC=EC=9D=B4=EB=93=9C=EB=B0=94=20=ED=8F=B0=ED=8A=B8=20?= =?UTF-8?q?=EC=A0=88=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 페이지 메타 링크, On this page/Tag Cloud/Categories 헤더, 택소노미 배지가 과하게 굵고 커서 크기·굵기를 낮춰 본문·좌측 사이드바와 균형을 맞춤 --- assets/scss/_styles_project.scss | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/assets/scss/_styles_project.scss b/assets/scss/_styles_project.scss index f676e5bff..593ddcc02 100644 --- a/assets/scss/_styles_project.scss +++ b/assets/scss/_styles_project.scss @@ -767,6 +767,27 @@ a.skt-card:hover, .td-toc #TableOfContents a:hover { color: var(--skt-text); } .td-toc #TableOfContents a.active { color: var(--skt-text); font-weight: 600; } +/* 우측 사이드바 전반 — 페이지 메타·택소노미 폰트가 과하게 굵고 커서 절제 */ +.td-sidebar-toc { font-size: .85rem; } +/* 페이지 메타 링크(페이지 보기/편집, Create … 등) */ +.td-page-meta a { + font-size: .85rem; + font-weight: 500; + color: var(--skt-text-muted); +} +.td-page-meta a:hover { color: var(--skt-text); } +/* 섹션 헤더(On this page / Tag Cloud / Categories) — 작고 조용한 라벨 */ +.td-toc .td-toc-title__text, +.taxonomy-title { + font-size: .8rem; + font-weight: 600; + letter-spacing: .02em; + color: var(--skt-text-muted); + margin-bottom: .5rem; +} +/* 택소노미 배지(태그/카테고리) */ +.td-sidebar-toc .taxonomy-term { font-size: .8rem; } + /* =================================================================== 8. 좌측 사이드바 — 위계·액티브를 모노크롬으로 정교화 =================================================================== */ From 7f11043c56e879b9fb83160cd083fb508367d052 Mon Sep 17 00:00:00 2001 From: Haksung Jang Date: Tue, 2 Jun 2026 10:27:52 +0900 Subject: [PATCH 4/6] =?UTF-8?q?feat(seo,a11y):=20JSON-LD=20=EA=B5=AC?= =?UTF-8?q?=EC=A1=B0=ED=99=94=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20=EB=B0=8F=20?= =?UTF-8?q?=EC=8A=A4=ED=82=B5=20=EB=A7=81=ED=81=AC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Organization(전역), BlogPosting(블로그 글), BreadcrumbList(하위 페이지/섹션) JSON-LD 출력 - 키보드 접근성용 스킵 링크(본문 바로가기) — 포커스 시 좌상단 노출, main에 id 자동 부여 --- assets/js/ui-enhancements.js | 11 ++++++ assets/scss/_styles_project.scss | 23 +++++++++++++ layouts/partials/hooks/head-end.html | 50 ++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+) diff --git a/assets/js/ui-enhancements.js b/assets/js/ui-enhancements.js index 6b856e516..2757887ae 100644 --- a/assets/js/ui-enhancements.js +++ b/assets/js/ui-enhancements.js @@ -9,6 +9,17 @@ window.matchMedia("(prefers-reduced-motion: reduce)").matches; var isEn = (document.documentElement.lang || "").slice(0, 2) === "en"; + // 0) 스킵 링크 — 키보드 사용자가 반복되는 내비를 건너뛰고 본문으로 (접근성) + var main = document.querySelector("main"); + if (main) { + if (!main.id) main.id = "main-content"; + var skip = document.createElement("a"); + skip.className = "skt-skip-link"; + skip.href = "#" + main.id; + skip.textContent = isEn ? "Skip to content" : "본문 바로가기"; + document.body.insertBefore(skip, document.body.firstChild); + } + // 1) 스크롤 진행 바 (상단 고정, 액센트색) var bar = document.createElement("div"); bar.className = "skt-progress"; diff --git a/assets/scss/_styles_project.scss b/assets/scss/_styles_project.scss index 593ddcc02..fca850467 100644 --- a/assets/scss/_styles_project.scss +++ b/assets/scss/_styles_project.scss @@ -469,6 +469,29 @@ a.skt-card:hover, .skt-to-top.is-visible { opacity: 1; visibility: visible; transform: none; } .skt-to-top:hover { border-color: var(--skt-border-strong); background: var(--skt-surface-subtle); } +/* 스킵 링크 — 평소 숨김, 키보드 포커스 시 좌상단에 노출(접근성) */ +.skt-skip-link { + position: fixed; + top: 0; + left: 0; + z-index: 1100; + padding: .65rem 1rem; + background: var(--skt-surface); + color: var(--skt-text); + border: 1px solid var(--skt-border); + border-radius: 0 0 $border-radius 0; + font-size: .9rem; + font-weight: 500; + text-decoration: none; + transform: translateY(-150%); + transition: transform var(--skt-transition); +} +.skt-skip-link:focus { + transform: none; + color: var(--skt-text); + text-decoration: none; +} + /* 섹션 공통 */ .skt-section { padding: 5rem 0; diff --git a/layouts/partials/hooks/head-end.html b/layouts/partials/hooks/head-end.html index 32029f788..3f812a35a 100644 --- a/layouts/partials/hooks/head-end.html +++ b/layouts/partials/hooks/head-end.html @@ -31,3 +31,53 @@ {{ end -}} {{ end -}} {{ end -}} + +{{/* ===== JSON-LD 구조화 데이터 (검색 엔진 리치 결과) ===== */}} +{{/* Organization — 전 페이지 공통 (조직 식별) */}} + + +{{/* BlogPosting — 블로그 글 */}} +{{ if and (eq .Kind "page") (eq .Section "blog") -}} +{{ $img := absURL (index (.Site.Params.images | default (slice "og-default.png")) 0) -}} +{{ with .Params.images }}{{ $img = absURL (index . 0) }}{{ end -}} + +{{ end -}} + +{{/* BreadcrumbList — 조상이 있는 하위 페이지/섹션(가이드/컴플라이언스 등) */}} +{{ if and (or (eq .Kind "page") (eq .Kind "section")) .Ancestors -}} +{{ $items := slice -}} +{{ $crumbs := .Ancestors.Reverse -}} +{{ range $i, $a := $crumbs -}} + {{ $items = $items | append (dict "@type" "ListItem" "position" (add $i 1) "name" $a.LinkTitle "item" $a.Permalink) -}} +{{ end -}} +{{ $items = $items | append (dict "@type" "ListItem" "position" (add (len $crumbs) 1) "name" .LinkTitle "item" .Permalink) -}} + +{{ end -}} From 0988c490d8c4852d2b774248ffe41e0c4179a9ce Mon Sep 17 00:00:00 2001 From: Haksung Jang Date: Tue, 2 Jun 2026 10:31:22 +0900 Subject: [PATCH 5/6] =?UTF-8?q?perf(images):=20=EB=B3=B8=EB=AC=B8=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EB=A0=8C=EB=8D=94=20=ED=9B=85?= =?UTF-8?q?=EC=9C=BC=EB=A1=9C=20CLS=C2=B7LCP=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 마크다운 이미지에 내부 번들 기준 width/height 부여(CLS 방지) - 첫 이미지(LCP 후보)는 eager+fetchpriority=high, 나머지는 lazy - decoding=async 일괄 적용 --- layouts/_markup/render-image.html | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 layouts/_markup/render-image.html diff --git a/layouts/_markup/render-image.html b/layouts/_markup/render-image.html new file mode 100644 index 000000000..cc845327e --- /dev/null +++ b/layouts/_markup/render-image.html @@ -0,0 +1,15 @@ +{{- /* 이미지 렌더 훅 — 본문 마크다운 이미지에 치수·디코딩·로딩 힌트를 부여해 + CLS/LCP를 개선한다. 첫 이미지(.Ordinal 0)는 LCP 후보로 보고 eager+high, + 나머지는 lazy. 내부 번들 이미지면 width/height 추출, 외부 URL은 생략. */ -}} +{{- $dest := .Destination -}} +{{- $img := "" -}} +{{- if not (strings.HasPrefix $dest "http") -}} + {{- $path := strings.TrimPrefix "./" $dest -}} + {{- with .Page.Resources.GetMatch $path -}}{{- $img = . -}}{{- end -}} + {{- if not $img -}}{{- with resources.Get $path -}}{{- $img = . -}}{{- end -}}{{- end -}} +{{- end -}} +{{- $eager := eq .Ordinal 0 -}} +{{ .Text }} From 67c0aa5652aee76f18beddb09ca1a1aa5852ab1e Mon Sep 17 00:00:00 2001 From: Haksung Jang Date: Tue, 2 Jun 2026 11:21:57 +0900 Subject: [PATCH 6/6] =?UTF-8?q?feat(design):=20=EB=B8=8C=EB=9E=9C=EB=93=9C?= =?UTF-8?q?=20404=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Docsy 기본 404(단순 텍스트)를 모노크롬 톤 커스텀 404로 교체 - 큰 404 표시 + 안내 문구 + 홈·가이드 CTA, 한국어/영어 문구 분기 --- layouts/404.html | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 layouts/404.html diff --git a/layouts/404.html b/layouts/404.html new file mode 100644 index 000000000..1d4684a50 --- /dev/null +++ b/layouts/404.html @@ -0,0 +1,14 @@ +{{ define "main" }} +{{ $en := eq .Site.Language.Lang "en" }} +
+ +
+{{ end }}