From cad06b411b2c892f05fd133fb677afe6c7cb6d99 Mon Sep 17 00:00:00 2001 From: tolelom <98kimsungmin@naver.com> Date: Sun, 22 Mar 2026 21:56:30 +0900 Subject: [PATCH] feat: add common CSS styles --- css/style.css | 265 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 265 insertions(+) create mode 100644 css/style.css diff --git a/css/style.css b/css/style.css new file mode 100644 index 0000000..a455dfa --- /dev/null +++ b/css/style.css @@ -0,0 +1,265 @@ +/* === Reset === */ +*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } + +/* === Base === */ +html { scroll-behavior: smooth; scroll-padding-top: 64px; } + +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; + font-size: 16px; + line-height: 1.6; + color: #333; + background: #fff; +} + +a { color: #333; text-decoration: none; } +a:hover { color: #0066cc; } + +img { max-width: 100%; display: block; } + +/* === Layout === */ +.container { max-width: 800px; margin: 0 auto; padding: 0 24px; } + +.section { + padding: 64px 0; + border-bottom: 1px solid #eee; +} +.section:last-child { border-bottom: none; } + +.section-title { + font-size: 1.25rem; + font-weight: 700; + margin-bottom: 24px; + color: #111; +} + +/* === Nav === */ +.nav { + position: sticky; + top: 0; + background: rgba(255, 255, 255, 0.95); + backdrop-filter: blur(8px); + border-bottom: 1px solid #eee; + z-index: 100; + padding: 0 24px; +} + +.nav-inner { + max-width: 800px; + margin: 0 auto; + display: flex; + align-items: center; + height: 56px; + gap: 24px; +} + +.nav-logo { + font-weight: 700; + font-size: 1rem; + margin-right: auto; +} + +.nav-link { + font-size: 0.875rem; + color: #666; + transition: color 0.2s; +} +.nav-link:hover, .nav-link.active { color: #111; } + +.nav-external::after { content: " ↗"; font-size: 0.75rem; } + +/* === Hero === */ +.hero { + padding: 80px 0 64px; + text-align: center; +} + +.hero-name { font-size: 2rem; font-weight: 700; color: #111; } +.hero-role { font-size: 1.1rem; color: #666; margin-top: 8px; } + +.hero-tags { + display: flex; + gap: 8px; + justify-content: center; + margin-top: 16px; + flex-wrap: wrap; +} + +.tag { + padding: 4px 12px; + border-radius: 4px; + font-size: 0.85rem; + background: #f0f0f0; + color: #555; +} + +.hero-links { + display: flex; + gap: 12px; + justify-content: center; + margin-top: 24px; +} + +.btn { + padding: 8px 20px; + border-radius: 6px; + font-size: 0.875rem; + border: 1px solid #ddd; + background: #fff; + color: #333; + cursor: pointer; + transition: background 0.2s, border-color 0.2s; + text-decoration: none; + display: inline-block; +} +.btn:hover { background: #f5f5f5; border-color: #bbb; } +.btn-primary { background: #111; color: #fff; border-color: #111; } +.btn-primary:hover { background: #333; } + +/* === Project Card === */ +.project-list { display: flex; flex-direction: column; gap: 16px; } + +.project-card { + padding: 20px; + border: 1px solid #eee; + border-radius: 8px; + transition: border-color 0.2s; +} +.project-card:hover { border-color: #ccc; } + +.project-card-header { + display: flex; + align-items: baseline; + gap: 12px; + margin-bottom: 8px; +} +.project-card-name { font-weight: 600; font-size: 1.05rem; } +.project-card-category { + font-size: 0.75rem; + color: #999; +} +.project-card-desc { color: #666; font-size: 0.925rem; margin-bottom: 12px; } + +.project-card-tags { display: flex; gap: 6px; flex-wrap: wrap; } +.project-card-tag { + padding: 2px 8px; + background: #f5f5f5; + border-radius: 3px; + font-size: 0.8rem; + color: #666; +} + +.project-card-link { + display: inline-block; + margin-top: 12px; + font-size: 0.85rem; + color: #0066cc; +} +.project-card-link:hover { text-decoration: underline; } + +/* === Skills === */ +.skills-group { margin-bottom: 20px; } +.skills-group:last-child { margin-bottom: 0; } +.skills-group-title { + font-size: 0.8rem; + text-transform: uppercase; + letter-spacing: 1px; + color: #999; + margin-bottom: 8px; +} +.skills-tags { display: flex; gap: 8px; flex-wrap: wrap; } + +/* === Sitemap Cards === */ +.sitemap-header { + text-align: center; + padding: 48px 0 32px; +} +.sitemap-title { font-size: 1.5rem; font-weight: 700; } +.sitemap-subtitle { color: #999; margin-top: 4px; } + +.sitemap-section-title { + font-size: 0.9rem; + text-transform: uppercase; + letter-spacing: 1px; + color: #999; + font-weight: 600; + margin-bottom: 16px; +} + +.card-grid { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 12px; + margin-bottom: 40px; +} + +.site-card { + border: 1px solid #eee; + padding: 24px; + border-radius: 10px; + text-align: center; + text-decoration: none; + color: inherit; + transition: border-color 0.2s, box-shadow 0.2s; + display: block; +} +.site-card:hover { + border-color: #ccc; + box-shadow: 0 2px 8px rgba(0,0,0,0.04); +} + +.site-card-icon { font-size: 1.5rem; margin-bottom: 8px; } +.site-card-name { font-weight: 600; font-size: 0.95rem; } +.site-card-desc { color: #999; font-size: 0.8rem; margin-top: 4px; } +.site-card-sublink { + display: inline-block; + margin-top: 8px; + font-size: 0.75rem; + color: #0066cc; +} + +/* Wrapper to keep card + sublink in one grid cell */ +.site-card-wrapper { display: flex; flex-direction: column; } + +.infra-grid { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + gap: 10px; +} + +.infra-card { + border: 1px solid #eee; + padding: 16px; + border-radius: 8px; + text-align: center; + text-decoration: none; + color: #666; + background: #fafafa; + transition: border-color 0.2s; + display: block; +} +.infra-card:hover { border-color: #ccc; } +.infra-card-icon { font-size: 1.2rem; } +.infra-card-name { font-size: 0.85rem; margin-top: 4px; } +.infra-card-desc { font-size: 0.7rem; color: #aaa; margin-top: 2px; } + +/* === Footer === */ +.footer { + padding: 32px 0; + text-align: center; + color: #999; + font-size: 0.85rem; +} +.footer a { color: #666; } +.footer a:hover { color: #333; } + +/* === Responsive === */ +@media (max-width: 640px) { + .nav-inner { gap: 16px; } + .nav-link { font-size: 0.8rem; } + .hero { padding: 48px 0 40px; } + .hero-name { font-size: 1.5rem; } + .section { padding: 40px 0; } + .card-grid { grid-template-columns: 1fr; } + .infra-grid { grid-template-columns: 1fr 1fr; } +}