diff options
Diffstat (limited to 'assets/css/components/article-hero.css')
| -rw-r--r-- | assets/css/components/article-hero.css | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/assets/css/components/article-hero.css b/assets/css/components/article-hero.css new file mode 100644 index 0000000..cc9e180 --- /dev/null +++ b/assets/css/components/article-hero.css @@ -0,0 +1,225 @@ +/* article-hero.css */ + +.article-hero { + position: relative; + min-height: 400px; + background-size: cover; + background-position: center; + display: flex; + align-items: flex-end; + padding: 3rem 2rem; + margin-bottom: 2rem; +} + +.article-hero-overlay { + position: absolute; + inset: 0; + background: linear-gradient(180deg, rgba(6, 11, 16, 0.3) 0%, rgba(6, 11, 16, 0.8) 100%); +} + +.article-hero-content { + position: relative; + z-index: 2; + width: 100%; + max-width: var(--container-max); + margin: 0 auto; + padding: 0 1.5rem; +} + +.article-breadcrumb { + display: flex; + align-items: center; + gap: 0.5rem; + font-family: var(--font-mono); + font-size: 0.85rem; + color: var(--text-dim); + margin-bottom: 1.5rem; +} + +.article-breadcrumb a { + color: var(--accent); + text-decoration: none; + transition: color var(--duration-base) ease; +} + +.article-breadcrumb a:hover { + color: var(--accent2); +} + +.article-hero-content h1 { + font-size: clamp(2rem, 6vw, 3.5rem); + margin: 0; +} + +.article-meta-bar { + position: sticky; + top: 0; + z-index: 50; + background: rgba(6, 11, 16, 0.95); + backdrop-filter: blur(4px); + padding: 1rem 2rem; + border-bottom: 1px solid var(--border); + display: flex; + align-items: center; + justify-content: space-between; +} + +.article-meta { + display: flex; + align-items: center; + gap: 1.5rem; + font-size: 0.85rem; + font-family: var(--font-mono); + text-transform: uppercase; + letter-spacing: 0.08em; +} + +.article-type-badge { + padding: 0.4rem 0.8rem; + border-radius: 4px; + font-weight: 600; + background: color-mix(in srgb, currentColor 15%, transparent); + border: 1px solid color-mix(in srgb, currentColor 30%, transparent); +} + +.article-type-badge.type-tech { + color: var(--type-tech); +} + +.article-type-badge.type-life { + color: var(--type-life); +} + +.article-type-badge.type-quote { + color: var(--type-quote); +} + +.article-type-badge.type-link { + color: var(--type-link); +} + +.article-type-badge.type-photo { + color: var(--type-photo); +} + +.article-date, +.article-read-time { + color: var(--text-dim); +} + +/* Article Body */ +.article-body { + padding: 2rem 1.5rem; + max-width: 800px; + margin: 0 auto; +} + +/* Article Footer Nav */ +.article-footer-nav { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 2rem; + padding: 2rem; + max-width: var(--container-max); + margin: 3rem auto 0; + border-top: 1px solid var(--border); +} + +@media (max-width: 768px) { + .article-footer-nav { + grid-template-columns: 1fr; + } +} + +.nav-prev, +.nav-next { + padding: 1.5rem; + background: var(--surface); + border: 1px solid var(--border); + border-radius: 4px; + text-decoration: none; + transition: all var(--duration-base) ease; + display: flex; + flex-direction: column; + gap: 0.5rem; +} + +.nav-prev:hover, +.nav-next:hover { + border-color: var(--accent); + background: rgba(168, 85, 247, 0.05); + transform: translateY(-2px); +} + +.nav-label { + font-family: var(--font-mono); + font-size: 0.75rem; + text-transform: uppercase; + letter-spacing: 0.1em; + color: var(--accent); +} + +.nav-title { + font-family: var(--font-head); + font-size: 1.1rem; + font-weight: 700; + color: var(--text); +} + +/* Static Page */ +.page-hero { + position: relative; + height: 40vh; + background: linear-gradient(135deg, var(--accent), var(--accent2)); + display: flex; + align-items: flex-end; + padding: 3rem 2rem; + margin-bottom: 2rem; +} + +.page-hero-overlay { + position: absolute; + inset: 0; + background: rgba(6, 11, 16, 0.3); +} + +.page-hero-content { + position: relative; + z-index: 2; + width: 100%; + max-width: var(--container-max); + margin: 0 auto; + padding: 0 1.5rem; +} + +.page-hero-content h1 { + font-size: clamp(2rem, 5vw, 3rem); + margin: 0; +} + +.page-content { + padding: 2rem 1.5rem; +} + +.page-nav ul { + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +.page-nav a { + padding: 0.75rem 1rem; + border-radius: 4px; + transition: all var(--duration-base) ease; + display: block; +} + +.page-nav a:hover { + background: var(--surface); + padding-left: 1.25rem; +} + +.page-nav a.active { + font-weight: 700; + color: var(--accent); +} |
