.blog-cats { display: flex; flex-wrap: wrap; gap: var(--space-2); justify-content: center; margin-bottom: 2.5rem; } .blog-cats__btn { padding: 0.58rem 1.15rem; min-height: 42px; border-radius: var(--radius-pill); border: 1px solid var(--line-strong); background-color: var(--surface); color: var(--ink-soft); font-family: var(--font-display); font-weight: 600; font-size: 0.88rem; line-height: 1; transition: background-color var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease), transform var(--dur) var(--ease); } @media (hover: hover) { .blog-cats__btn:hover { border-color: var(--green-700); color: var(--green-800); background-color: var(--green-050); transform: translateY(-1px); } } .blog-cats__btn:active { transform: translateY(0); } .blog-cats__btn.is-active { background-color: var(--green-700); color: var(--white); border-color: var(--green-700); box-shadow: var(--shadow-green); } @media (hover: hover) { .blog-cats__btn.is-active:hover { background-color: var(--green-800); color: var(--white); border-color: var(--green-800); } } .blog-empty { text-align: center; color: var(--text-muted); padding: var(--space-6) 0; } .pagination { display: flex; align-items: center; justify-content: center; gap: 0.4rem; margin-top: var(--space-7); list-style: none; padding: 0; flex-wrap: wrap; } .pagination a, .pagination span { display: inline-grid; place-items: center; min-width: 44px; height: 44px; padding: 0 0.75rem; border-radius: 12px; border: 1px solid var(--line-strong); background-color: var(--surface); color: var(--ink-soft); text-decoration: none; font-weight: 600; font-size: 0.92rem; transition: background-color var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease); } @media (hover: hover) { .pagination a:hover { border-color: var(--green-700); color: var(--white); background-color: var(--green-700); } } .pagination .is-current { background-color: var(--ember); color: var(--white); border-color: var(--ember); } .pagination .is-disabled { opacity: 0.4; pointer-events: none; } .pagination svg { width: 18px; height: 18px; } .post-hero { background: var(--graphite-950); background-image: var(--grad-dark); color: var(--text-on-dark); padding-block: clamp(2.5rem, 2rem + 3vw, 4rem) clamp(3rem, 2rem + 3vw, 4.5rem); position: relative; overflow: hidden; } .post-hero::before { content: ""; position: absolute; inset: 0; background: radial-gradient(58% 62% at 82% 0%, rgba(4, 185, 98, 0.3), transparent 62%); pointer-events: none; } .post-hero .container { position: relative; z-index: 1; max-width: 820px; } .post-hero__meta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); margin: var(--space-4) 0; font-size: 0.88rem; color: var(--text-on-dark); } .post-hero__meta .chip { background-color: rgba(111, 224, 168, 0.16); color: var(--accent-on-dark); } .post-hero h1 { color: var(--white); font-size: var(--fs-h1); max-width: 22ch; } .post-hero__lead { color: var(--text-on-dark); font-size: var(--fs-lead); margin-top: var(--space-4); max-width: 60ch; } .post-hero__byline { display: flex; align-items: center; gap: 0.7rem; margin-top: var(--space-5); } .post-hero__avatar { width: 44px; height: 44px; border-radius: 50%; flex: none; background-color: var(--green-700); display: grid; place-items: center; color: var(--white); font-weight: 700; font-family: var(--font-display); } .post-hero__author { line-height: 1.35; } .post-hero__author strong { color: var(--white); display: block; } .post-hero__author span { font-size: 0.82rem; color: var(--text-on-dark-soft); } .post-featured { max-width: 900px; margin: -2.5rem auto 0; position: relative; z-index: 5; border-radius: var(--radius-xl); overflow: hidden; box-shadow: var(--shadow-lg); border: 1px solid var(--line); } .post-featured img { width: 100%; aspect-ratio: 16 / 9; object-fit: cover; } .post-body { padding-block: clamp(2.5rem, 2rem + 2vw, 4rem); } .post-toc { background: var(--surface-2); border: 1px solid var(--line); border-left: 4px solid var(--green-700); border-radius: var(--radius-lg); padding: 1.25rem 1.5rem; margin-bottom: var(--space-6); } .post-toc h2 { font-size: 0.85rem; margin-bottom: 0.6rem; text-transform: uppercase; letter-spacing: 0.08em; color: var(--ember); } .post-toc ol { margin: 0; padding-left: 1.2rem; display: flex; flex-direction: column; gap: 0.3rem; } .post-toc li::marker { color: var(--green-700); } .post-toc a { color: var(--link); text-decoration: none; font-size: 0.94rem; transition: color var(--dur) var(--ease); } @media (hover: hover) { .post-toc a:hover { color: var(--ember); text-decoration: underline; } } .post-tags { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-top: 2.5rem; } .post-tag { font-size: 0.82rem; color: var(--ember); background-color: var(--ember-100); border: 1px solid var(--ember-200); padding: 0.35rem 0.8rem; border-radius: var(--radius-pill); } .post-share { display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem; margin-top: var(--space-6); padding-top: var(--space-6); border-top: 1px solid var(--line); } .post-share span { font-weight: 600; color: var(--graphite-950); font-size: 0.9rem; margin-right: 0.2rem; } .share-btn { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 12px; border: 1px solid var(--line-strong); background-color: var(--surface); color: var(--ink-soft); transition: background-color var(--dur) var(--ease), color var(--dur) var(--ease), border-color var(--dur) var(--ease), transform var(--dur) var(--ease); } @media (hover: hover) { .share-btn:hover { background-color: var(--green-700); color: var(--white); border-color: var(--green-700); transform: translateY(-2px); } } .share-btn:active { transform: translateY(0); } .share-btn.is-copied { background-color: var(--green-700); color: var(--white); border-color: var(--green-700); } .share-btn svg { width: 20px; height: 20px; } .author-box { display: flex; gap: 1.1rem; align-items: flex-start; background: var(--grad-soft); border: 1px solid var(--green-200); border-radius: var(--radius-lg); padding: var(--pad-card); margin-top: 2.5rem; } .author-box__avatar { width: 60px; height: 60px; border-radius: 50%; flex: none; background-color: var(--ember); display: grid; place-items: center; color: var(--white); font-weight: 700; font-size: 1.2rem; font-family: var(--font-display); } .author-box h3 { font-size: 1.1rem; margin-bottom: 0.25rem; } .author-box p { color: var(--text-muted); font-size: 0.92rem; margin: 0; } .related-posts { background: var(--grad-tint); } .read-progress { position: fixed; left: 0; top: 0; height: 3px; width: 100%; transform: scaleX(0); transform-origin: left; z-index: 200; background-color: var(--green-700); transition: transform 80ms linear; }
