This commit is contained in:
2026-03-25 15:14:49 +09:00
commit 266e0b0cf9
84 changed files with 4624 additions and 0 deletions

334
static/css/main.css Normal file
View File

@@ -0,0 +1,334 @@
/* Base */
*,
*::before,
*::after {
box-sizing: border-box;
}
body {
font-family: "Source Sans 3", "Pretendard", sans-serif;
max-width: 720px;
margin: 0 auto;
padding: 32px 20px;
line-height: 1.6;
color: #222;
background-color: #fafafa;
}
a {
text-decoration: none;
color: #0055aa;
}
a:hover {
text-decoration: underline;
}
@media (max-width: 600px) {
body {
padding: 20px 16px;
}
}
/* Nav (back link) */
nav.site-nav {
margin-bottom: 8px;
font-size: 14px;
}
nav.site-nav a {
color: #999;
}
nav.site-nav a:hover {
color: #222;
text-decoration: none;
}
/* Homepage */
.home {
font-family: monospace;
font-size: 18px;
margin-top: 18vh;
color: #222;
}
.home h1 {
font-size: 24px;
font-weight: normal;
margin: 0 0 4px 0;
}
.home .desc {
color: #999;
font-size: 14px;
margin: 0;
}
.home ul {
margin-top: 36px;
list-style-type: none;
padding: 0;
}
.home li {
padding: 5px 0;
}
.home a {
color: #222;
}
.home a:hover {
color: #0055aa;
text-decoration: none;
}
/* Post list */
.post-list {
margin-top: 12px;
}
.post-list h1 {
font-size: 24px;
font-weight: 400;
margin: 16px 0 24px 0;
color: #222;
}
.post-list ul {
list-style-type: none;
padding: 0;
margin: 0;
}
.post-list li {
display: flex;
align-items: baseline;
gap: 12px;
padding: 6px 0;
font-size: 17px;
}
.post-list li a {
color: #222;
flex: 1;
min-width: 0;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.post-list li a:hover {
color: #0055aa;
text-decoration: none;
}
.post-list time {
color: #bbb;
font-size: 13px;
font-variant-numeric: tabular-nums;
white-space: nowrap;
flex-shrink: 0;
}
/* Single post */
article header {
margin: 20px 0 28px 0;
}
article header h1 {
font-size: 22px;
font-weight: 600;
margin: 0 0 6px 0;
line-height: 1.35;
color: #111;
}
article header time {
color: #999;
font-size: 15px;
}
/* Post content */
.post-content {
font-size: 17px;
line-height: 2;
color: #333;
overflow-wrap: break-word;
word-break: break-word;
}
.post-content h1,
.post-content h2,
.post-content h3,
.post-content h4 {
color: #222;
margin: 1.6em 0 0.5em 0;
line-height: 1.35;
}
.post-content h1 { font-size: 1.3em; }
.post-content h2 { font-size: 1.15em; }
.post-content h3 { font-size: 1.05em; }
.post-content h1 code,
.post-content h2 code,
.post-content h3 code,
.post-content h4 code {
font-size: 0.92em;
background: none;
padding: 0;
margin: 0;
}
.post-content p {
margin: 0 0 1.15em 0;
}
.post-content a {
color: #0055aa;
}
.post-content img {
max-width: 100%;
height: auto;
}
/* Inline code */
.post-content code {
font-family: "SFMono-Regular", "Cascadia Code", "Roboto Mono", Menlo, Consolas, monospace;
padding: 2px 6px;
margin: 0 1px;
background-color: #e9e9e9;
font-size: 0.85em;
border-radius: 3px;
word-break: break-all;
}
/* Code blocks — plain <pre><code> */
.post-content pre {
margin: 1.4em 0;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.post-content pre code {
display: block;
background-color: #f0f0f0;
padding: 16px 18px;
white-space: pre;
font-size: 13.5px;
line-height: 1.6;
margin: 0;
border-radius: 4px;
word-break: normal;
tab-size: 4;
}
/* Code blocks — Hugo syntax-highlighted .highlight wrapper */
.post-content .highlight {
margin: 1.4em 0;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.post-content .highlight pre {
margin: 0;
border-radius: 4px;
background-color: #f0f0f0 !important;
}
.post-content .highlight code {
display: block;
padding: 16px 18px;
font-size: 13.5px;
line-height: 1.6;
background: none;
margin: 0;
border-radius: 0;
word-break: normal;
tab-size: 4;
}
.post-content .highlight span {
background-color: transparent !important;
}
/* Blockquote */
.post-content blockquote {
margin: 1.4em 0;
padding: 2px 0 2px 16px;
border-left: 2px solid #ddd;
color: #555;
}
.post-content blockquote p {
margin: 0.4em 0;
}
/* Tables */
.post-content table {
width: 100%;
border-collapse: collapse;
margin: 1.4em 0;
font-size: 0.9em;
overflow-x: auto;
display: block;
}
.post-content thead {
border-bottom: 2px solid #ddd;
}
.post-content th {
padding: 8px 12px;
text-align: left;
font-weight: 600;
color: #222;
}
.post-content td {
padding: 7px 12px;
text-align: left;
}
.post-content tbody tr {
border-bottom: 1px solid #eee;
}
.post-content tbody tr:last-child {
border-bottom: none;
}
/* Horizontal rule */
.post-content hr {
border: none;
border-top: 1px solid #e0e0e0;
margin: 2em 0;
}
/* Lists */
.post-content ul,
.post-content ol {
padding-left: 1.5em;
margin: 0.8em 0;
}
.post-content li {
margin: 0.2em 0;
}
.post-content li p {
margin: 0.4em 0;
}
.post-content li > p:only-child {
margin: 0;
}
/* Strong/emphasis */
.post-content strong {
font-weight: 600;
color: #222;
}

BIN
static/favicon-inv.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

BIN
static/favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

23
static/pub.asc Normal file
View File

@@ -0,0 +1,23 @@
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEZmnYzBYJKwYBBAHaRw8BAQdA6rZVUqOYyJagnx4W7rFRJpsXrVjLDxRS60t3
jsklTqW0FU1vcmdhbiA8bWVAbW9yZ2FuLmtyPoiQBBMWCgA4FiEEiYwRMW6MKwVD
m+8XVdY6zulSgi0FAmZp2MwCGwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQ
VdY6zulSgi2lcgD+KFL6AH1EaojvAaOpdsV/hPkWiuq9i5Tzl8o+WmHqX3sBAKOv
/9zfhxVK1c37qWDgNQJ4dvi987HOJZep20rEJKcCuDMEZmnZCxYJKwYBBAHaRw8B
AQdAc16B33dSp32F5CPzvBFJAjG0pxf71tk4OhUMMqZvrTmIfgQYFgoAJhYhBImM
ETFujCsFQ5vvF1XWOs7pUoItBQJmadkLAhsgBQkB4TOAAAoJEFXWOs7pUoItl6AA
/RDCiiWswzcFHj9qnyUC7jrH5HO+Dhv61JmwQrP4l1prAQD9+8FxcLZHeixN3u2X
b5KY1L6dWMZ3wvukNxmJ5THkDrg4BGZp2P8SCisGAQQBl1UBBQEBB0AuRZ7QJJ0w
EO/WJGN2zmVyBSm4ZQFYBPIXLeUJz6QQFwMBCAeIfgQYFgoAJhYhBImMETFujCsF
Q5vvF1XWOs7pUoItBQJmadj/AhsMBQkB4TOAAAoJEFXWOs7pUoItiNYA/jpepHvY
MxOQR4JD996ZyqgETl2z4Vfp6b029uV0rfA9AP0eqCjXQoyjvStBgqOkkTiIm9M5
fA5TgkcSr1r+b2btCLgzBGZp2OsWCSsGAQQB2kcPAQEHQGM3Lsxy68QqdDlG/JSg
t+Jkv51uW/fG2YjN/fIISilIiPUEGBYKACYWIQSJjBExbowrBUOb7xdV1jrO6VKC
LQUCZmnY6wIbAgUJAeEzgACBCRBV1jrO6VKCLXYgBBkWCgAdFiEE916tyTa8x9qH
yLfarWZku64hybcFAmZp2OsACgkQrWZku64hybek8wEAv9Kyoy627AaCtVzxirt4
W68slq0I/rsv3EhXB83ejAYA/1npEF3B6al7H/4WlLJ4ux6LM501IuHtSom+gLEF
xIwKLF4BAKQobtOYAiEN0zU5JidF0VoZ4OsDDgn9sQyPEHmp3wEiAQDY1kkOogUQ
xM8GzZb6jsQdcp1BffRURcqOLh//mz0+Ag==
=dfzn
-----END PGP PUBLIC KEY BLOCK-----

4
static/robots.txt Normal file
View File

@@ -0,0 +1,4 @@
User-agent: *
Allow: /
Sitemap: https://morgan.kr/sitemap.xml