@keyframes fadeUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.reading-progress{background:var(--accent);z-index:9999;pointer-events:none;height:2px;transition:width .1s linear;position:fixed;top:0;left:0}.blog-page{flex-direction:column;width:100%;min-height:100vh;display:flex}.blog-page__content{width:100%;max-width:720px;margin:0 auto;padding:4rem clamp(1rem,4vw,2rem) 6rem}.blog-page__header{border-bottom:1px solid var(--border);margin-bottom:3rem;padding-bottom:2rem}.blog-page__header h1{color:var(--text-primary);letter-spacing:-.03em;margin-bottom:.6rem;font-size:clamp(2rem,5vw,2.8rem);font-weight:700;line-height:1.15}.blog-page__header p{color:var(--text-secondary);margin:0;font-size:1rem;line-height:1.6}.blog-list{flex-direction:column;gap:1.5rem;display:flex}.blog-card{opacity:0;background:0 0;border:1px solid #0000;border-radius:12px;margin:0 -1.5rem;padding:1.75rem 1.5rem;text-decoration:none;transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s cubic-bezier(.16,1,.3,1),border-color .3s,background .3s;animation:.6s cubic-bezier(.16,1,.3,1) forwards fadeUp;display:block;position:relative}.blog-card:hover{background:var(--bg-secondary);border-color:var(--border);transform:translateY(-2px);box-shadow:0 8px 24px -8px #0000000d}.blog-card:hover .blog-card__title{color:var(--accent)}.blog-card:hover .blog-card__arrow{opacity:1;transform:translate(4px)}.blog-card__meta{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:.6rem;display:flex}.blog-card__date{color:var(--text-tertiary);letter-spacing:.04em;font-size:.8rem}.blog-card__tag{border:1px solid var(--border);color:var(--text-secondary);letter-spacing:.05em;background:0 0;border-radius:999px;padding:.15rem .6rem;font-size:.72rem;transition:border-color .2s,color .2s,background .2s}.blog-card:hover .blog-card__tag{border-color:var(--accent);color:var(--accent);background:var(--accent-glow)}.blog-card__title{color:var(--text-primary);letter-spacing:-.01em;margin-bottom:.5rem;font-size:clamp(1.05rem,2.5vw,1.2rem);font-weight:600;line-height:1.4;transition:color .2s}.blog-card__excerpt{color:var(--text-secondary);margin:0;font-size:.92rem;line-height:1.65}.blog-card__footer{justify-content:space-between;align-items:center;margin-top:.85rem;display:flex}.blog-card__read-time{color:var(--text-tertiary);font-size:.8rem}.blog-card__arrow{color:var(--accent);opacity:0;font-size:1rem;transition:transform .2s,opacity .2s}.article-page{flex-direction:column;width:100%;min-height:100vh;display:flex}.article-page__content{width:100%;max-width:680px;margin:0 auto;padding:4rem clamp(1rem,4vw,2rem) 6rem}.article-back{color:var(--text-secondary);letter-spacing:.02em;align-items:center;gap:.4rem;margin-bottom:2.5rem;font-size:.85rem;text-decoration:none;transition:color .2s,gap .2s;display:inline-flex}.article-back:hover{color:var(--accent);gap:.6rem}.article-back__arrow{transition:transform .2s}.article-back:hover .article-back__arrow{transform:translate(-3px)}.article-header{border-bottom:1px solid var(--border);margin-bottom:2.5rem;padding-bottom:2rem}.article-header__meta{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.article-header__date{color:var(--text-tertiary);letter-spacing:.04em;font-size:.82rem}.article-header__tag{border:1px solid var(--border);color:var(--text-secondary);letter-spacing:.05em;background:0 0;border-radius:999px;padding:.15rem .65rem;font-size:.72rem}.article-header__title{color:var(--text-primary);letter-spacing:-.03em;margin:0 0 1rem;font-size:clamp(1.7rem,4vw,2.4rem);font-weight:700;line-height:1.2}.article-header__subtitle{color:var(--text-secondary);margin:0;font-size:1.05rem;line-height:1.65}.article-prose{color:var(--text-primary);letter-spacing:-.01em;font-size:1.05rem;line-height:1.8}.article-prose>p:first-of-type{color:var(--text-primary);letter-spacing:-.015em;margin-bottom:2rem;font-size:1.25rem;font-weight:400;line-height:1.6}.article-prose p{color:var(--text-secondary);margin-bottom:1.6rem}.article-prose p:last-child{margin-bottom:0}.article-prose h2{color:var(--text-primary);letter-spacing:-.02em;border-bottom:1px solid var(--border);margin:3.5rem 0 1.2rem;padding-bottom:.5rem;font-size:1.45rem;font-weight:700}.article-prose h3{color:var(--text-primary);letter-spacing:-.01em;margin:2.5rem 0 .8rem;font-size:1.15rem;font-weight:600}.article-prose strong{color:var(--text-primary);font-weight:600}.article-prose a{color:var(--accent);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px;transition:color .15s,text-decoration-color .15s}.article-prose a:hover{color:var(--accent-hover)}.article-prose ul,.article-prose ol{color:var(--text-secondary);margin:0 0 1.4rem;padding-left:1.5rem}.article-prose ul li,.article-prose ol li{margin-bottom:.5rem;line-height:1.65}.article-prose ul li::marker{color:var(--accent)}.article-prose ol li::marker{color:var(--accent)}.article-prose blockquote{border-left:3px solid var(--accent);background:var(--bg-secondary);color:var(--text-secondary);border-radius:0 8px 8px 0;margin:2rem 0;padding:1.1rem 1.4rem;font-style:italic}.article-prose blockquote p{color:var(--text-secondary);margin:0}.article-prose blockquote cite{color:var(--text-tertiary);margin-top:.7rem;font-size:.85rem;font-style:normal;display:block}.article-prose code{background:var(--bg-secondary);border:1px solid var(--border);color:var(--accent);border-radius:4px;padding:.15em .4em;font-family:Geist Mono,JetBrains Mono,monospace;font-size:.86em}.article-prose pre{background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;margin:1.5rem 0;overflow:hidden}.article-prose pre code{color:var(--text-primary);background:0 0;border:none;padding:0;font-size:.88rem;line-height:1.6;display:block}.article-prose hr{border:none;border-top:1px solid var(--border);margin:2.5rem 0}.code-block{background:var(--bg-secondary);border:1px solid var(--border);border-radius:10px;margin:1.5rem 0;overflow:hidden}.code-block__header{background:var(--bg-primary);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.55rem 1rem;display:flex}.code-block__lang{letter-spacing:.1em;text-transform:uppercase;color:var(--accent);font-size:.72rem;font-weight:600}.code-block__copy{color:var(--text-tertiary);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:.2rem .5rem;font-family:inherit;font-size:.75rem;transition:color .2s,background .2s}.code-block__copy:hover{color:var(--text-primary);background:var(--bg-secondary)}.code-block__copy--copied{color:#22c55e!important}.code-block__body{margin:0;padding:1.1rem 1.2rem;overflow-x:auto}.code-block__body code{color:var(--text-primary);white-space:pre;background:0 0;border:none;padding:0;font-family:Geist Mono,JetBrains Mono,monospace;font-size:.875rem;line-height:1.65}.article-footer{border-top:1px solid var(--border);margin-top:3.5rem;padding-top:2rem}.article-footer__tags{flex-wrap:wrap;gap:.5rem;margin-bottom:2rem;display:flex}.article-footer__tag{border:1px solid var(--border);color:var(--text-secondary);cursor:default;background:0 0;border-radius:999px;padding:.2rem .75rem;font-size:.76rem;transition:border-color .2s,color .2s,background .2s}.article-footer__tag:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-glow)}.article-footer__nav{justify-content:space-between;align-items:center;gap:1rem;display:flex}.article-footer__back{color:var(--accent);align-items:center;gap:.4rem;font-size:.88rem;font-weight:500;text-decoration:none;transition:gap .2s;display:inline-flex}.article-footer__back:hover{gap:.6rem}@media (max-width:768px){.article-page__content{padding-top:2.5rem;padding-bottom:4rem}.blog-card{margin:0;padding:1.5rem 1rem}.article-prose>p:first-of-type{font-size:1.15rem}.code-block__body{padding:.9rem 1rem}.code-block__body code{font-size:.82rem}}
