@charset "UTF-8";.giscus-wrapper.astro-t3avhtp4{max-width:800px;margin:2rem auto 3rem;padding:0 2rem}.giscus-title.astro-t3avhtp4{font-family:PP Editorial New,Georgia,serif;font-size:1.25rem;font-weight:400;color:var(--blog-text);margin-bottom:1.5rem;letter-spacing:-.01em}.series-nav.astro-jqgzt6pz{max-width:800px;margin:3rem auto;padding:1.5rem;background:var(--blog-surface);border:1px solid var(--blog-border);border-radius:16px}.series-nav__header.astro-jqgzt6pz{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:1px solid var(--blog-border)}.series-nav__label.astro-jqgzt6pz{font-family:PP Fraktion Mono,monospace;font-size:.6rem;text-transform:uppercase;letter-spacing:.15em;color:var(--blog-accent);padding:.2rem .6rem;background:var(--blog-accent-muted);border-radius:4px}.series-nav__name.astro-jqgzt6pz{font-family:PP Editorial New,Georgia,serif;font-size:.95rem;color:var(--blog-text);flex:1}.series-nav__count.astro-jqgzt6pz{font-family:PP Fraktion Mono,monospace;font-size:.65rem;color:var(--blog-text-muted);text-transform:uppercase;letter-spacing:.08em}.series-nav__links.astro-jqgzt6pz{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media (max-width: 576px){.series-nav__links.astro-jqgzt6pz{grid-template-columns:1fr}}.series-nav__link.astro-jqgzt6pz{display:flex;flex-direction:column;gap:.35rem;padding:1rem;background:var(--blog-surface-hover);border:1px solid var(--blog-border);border-radius:10px;text-decoration:none;transition:all .3s ease}.series-nav__link.astro-jqgzt6pz:hover{border-color:var(--blog-border-accent)}.series-nav__link--next.astro-jqgzt6pz{text-align:right}.series-nav__direction.astro-jqgzt6pz{font-family:PP Fraktion Mono,monospace;font-size:.6rem;text-transform:uppercase;letter-spacing:.1em;color:var(--blog-accent)}.series-nav__title.astro-jqgzt6pz{font-size:.85rem;color:var(--blog-text);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.site-wrapper.astro-4dqtj3le{background:var(--blog-bg);min-height:100vh}.blog-post__content.astro-4dqtj3le pre{background-color:var(--shiki-light-bg, #fff)!important;color:var(--shiki-light, #24292e)!important}.blog-post__content.astro-4dqtj3le pre code span{color:var(--shiki-light)!important}.theme-blog-dark .blog-post__content.astro-4dqtj3le pre{background-color:var(--shiki-dark-bg, #0d1117)!important;color:var(--shiki-dark, #e6edf3)!important}.theme-blog-dark .blog-post__content.astro-4dqtj3le pre code span{color:var(--shiki-dark)!important}.line.highlighted{background:var(--blog-accent-muted);display:inline-block;width:100%;padding:0 .5rem;margin:0 -.5rem;border-left:3px solid var(--blog-accent)}.line.diff.add{background:#00ff8814;display:inline-block;width:100%;padding:0 .5rem;margin:0 -.5rem;border-left:3px solid #00ff88}.line.diff.add:before{content:"+";color:#0f8;position:absolute;left:.25rem}.line.diff.remove{background:#ff006614;display:inline-block;width:100%;padding:0 .5rem;margin:0 -.5rem;border-left:3px solid #ff0066;opacity:.7}.line.diff.remove:before{content:"-";color:#f06;position:absolute;left:.25rem}.code-copy-btn{position:absolute;top:.5rem;right:.5rem;padding:.25rem .6rem;background:var(--blog-surface-hover);border:1px solid var(--blog-border);border-radius:6px;color:var(--blog-text-muted);font-family:PP Fraktion Mono,monospace;font-size:.6rem;text-transform:uppercase;letter-spacing:.05em;cursor:pointer;transition:all .2s ease;opacity:0;z-index:2}.code-copy-btn:hover{background:var(--blog-accent-muted);border-color:var(--blog-border-accent);color:var(--blog-accent)}.code-copy-btn.is-copied{color:#0f8;border-color:#00ff884d}.blog-post__content.astro-4dqtj3le pre:hover .code-copy-btn{opacity:1}.reading-progress.astro-4dqtj3le{position:fixed;top:0;left:0;height:3px;background:linear-gradient(90deg,#00d4ff,#93f);z-index:9999;width:0%;transition:width .1s linear}.blog-topbar.astro-4dqtj3le{max-width:1200px;margin:2rem auto 0;padding:0 2rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.blog-breadcrumbs.astro-4dqtj3le{font-family:PP Fraktion Mono,monospace;font-size:.75rem;letter-spacing:.05em;text-transform:uppercase}.blog-breadcrumbs.astro-4dqtj3le a.astro-4dqtj3le{color:var(--blog-text-muted);text-decoration:none;transition:color .3s ease}.blog-breadcrumbs.astro-4dqtj3le a.astro-4dqtj3le:hover{color:var(--blog-accent)}.blog-breadcrumbs.astro-4dqtj3le .breadcrumb-sep.astro-4dqtj3le{color:var(--blog-text-faint);margin:0 .5rem}.blog-breadcrumbs.astro-4dqtj3le .breadcrumb-current.astro-4dqtj3le{color:var(--blog-text-secondary)}.blog-post__header.astro-4dqtj3le{max-width:800px;margin:3rem auto 2rem;padding:0 2rem;text-align:center}.blog-post__category.astro-4dqtj3le{display:inline-block;padding:.3rem 1rem;border-radius:999px;background:var(--blog-accent-muted);border:1px solid var(--blog-border-accent);color:var(--blog-accent);font-family:PP Fraktion Mono,monospace;font-size:.7rem;text-transform:uppercase;letter-spacing:.15em;margin-bottom:1.5rem}.blog-post__title.astro-4dqtj3le{font-family:PP Editorial New,Georgia,serif;font-size:clamp(2rem,5vw,3.5rem);font-weight:400;line-height:1.15;color:var(--blog-text);margin-bottom:1.25rem;letter-spacing:-.02em}.blog-post__description.astro-4dqtj3le{font-size:1.1rem;line-height:1.7;color:var(--blog-text-muted);margin-bottom:1.5rem;max-width:650px;margin-left:auto;margin-right:auto}.blog-post__meta.astro-4dqtj3le{display:flex;align-items:center;justify-content:center;gap:.5rem;font-family:PP Fraktion Mono,monospace;font-size:.8rem;color:var(--blog-text-muted);margin-bottom:1.25rem}.blog-post__dot.astro-4dqtj3le{color:var(--blog-text-faint)}.blog-post__tags.astro-4dqtj3le{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:center}.tag-pill.astro-4dqtj3le{padding:.25rem .75rem;border-radius:999px;background:var(--blog-surface-hover);border:1px solid var(--blog-border);font-family:PP Fraktion Mono,monospace;font-size:.7rem;color:var(--blog-text-muted);text-transform:uppercase;letter-spacing:.08em}.blog-post__hero.astro-4dqtj3le{max-width:1000px;margin:2rem auto;padding:0 2rem;overflow:hidden;border-radius:16px}.blog-post__hero-parallax.astro-4dqtj3le{overflow:hidden;border-radius:16px;border:1px solid var(--blog-border);height:420px;position:relative}@media (max-width: 768px){.blog-post__hero-parallax.astro-4dqtj3le{height:240px}}.blog-post__hero-parallax.astro-4dqtj3le img.astro-4dqtj3le{width:100%;height:130%;-o-object-fit:cover;object-fit:cover;will-change:transform;transform:translateY(0)}.blog-post__hero-parallax.astro-4dqtj3le .hero-fallback.astro-4dqtj3le{display:none;position:absolute;inset:0;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:2rem;text-align:center}.blog-post__hero-parallax.astro-4dqtj3le .hero-fallback__category.astro-4dqtj3le{font-family:PP Fraktion Mono,monospace;font-size:.7rem;text-transform:uppercase;letter-spacing:.2em;color:var(--blog-accent);opacity:.7}.blog-post__hero-parallax.astro-4dqtj3le .hero-fallback__title.astro-4dqtj3le{font-family:PP Editorial New,Georgia,serif;font-size:clamp(1.2rem,3vw,1.8rem);color:var(--blog-text-secondary);line-height:1.3;max-width:500px}.blog-post__hero-parallax.astro-4dqtj3le.has-fallback{background:var(--blog-gradient-fallback);border:1px solid var(--blog-border-accent)}.blog-post__hero-parallax.astro-4dqtj3le.has-fallback .hero-fallback.astro-4dqtj3le{display:flex}.blog-post__layout.astro-4dqtj3le{max-width:1200px;margin:0 auto;padding:0 2rem;display:grid;grid-template-columns:1fr 250px;gap:4rem}@media (max-width: 1024px){.blog-post__layout.astro-4dqtj3le{grid-template-columns:1fr;gap:0}}.blog-post__content.astro-4dqtj3le{max-width:720px;font-size:1.05rem;line-height:1.8;color:var(--blog-text-secondary)}.blog-post__content.astro-4dqtj3le h2{font-family:PP Editorial New,Georgia,serif;font-size:1.75rem;font-weight:400;color:var(--blog-text);margin-top:3rem;margin-bottom:1rem;letter-spacing:-.01em}.blog-post__content.astro-4dqtj3le h2 a{color:inherit;text-decoration:none}.blog-post__content.astro-4dqtj3le h3{font-size:1.25rem;font-weight:600;color:var(--blog-text);margin-top:2rem;margin-bottom:.75rem}.blog-post__content.astro-4dqtj3le p{margin-bottom:1.5rem}.blog-post__content.astro-4dqtj3le strong{color:var(--blog-strong);font-weight:600}.blog-post__content.astro-4dqtj3le a{color:var(--blog-accent);text-decoration:none;border-bottom:1px solid var(--blog-border-accent);transition:border-color .3s ease}.blog-post__content.astro-4dqtj3le a:hover{border-color:var(--blog-accent)}.blog-post__content.astro-4dqtj3le ul,.blog-post__content.astro-4dqtj3le ol{margin-bottom:1.5rem;padding-left:1.5rem}.blog-post__content.astro-4dqtj3le li{margin-bottom:.5rem}.blog-post__content.astro-4dqtj3le blockquote{border-left:3px solid var(--blog-accent);margin:2rem 0;padding:1rem 1.5rem;background:var(--blog-blockquote-bg);border-radius:0 8px 8px 0;color:var(--blog-text-secondary);font-style:italic}.blog-post__content.astro-4dqtj3le code{background:var(--blog-code-bg);padding:.15rem .4rem;border-radius:4px;font-size:.9em;font-family:PP Fraktion Mono,Fira Code,monospace;color:var(--blog-accent)}.blog-post__content.astro-4dqtj3le pre{margin:1.5rem 0;padding:1.25rem 1.5rem;border-radius:12px;border:1px solid var(--blog-border);overflow-x:auto;font-size:.9rem;line-height:1.6;position:relative}.blog-post__content.astro-4dqtj3le pre code{background:none;padding:0;color:inherit}.blog-post__content.astro-4dqtj3le table{width:100%;margin:1.5rem 0;border-collapse:collapse;font-size:.95rem}.blog-post__content.astro-4dqtj3le th{text-align:left;padding:.75rem 1rem;border-bottom:2px solid var(--blog-border-accent);color:var(--blog-accent);font-family:PP Fraktion Mono,monospace;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em}.blog-post__content.astro-4dqtj3le td{padding:.75rem 1rem;border-bottom:1px solid var(--blog-border)}.blog-post__content.astro-4dqtj3le tr:hover td{background:var(--blog-table-hover)}.blog-post__content.astro-4dqtj3le img{max-width:100%;border-radius:12px;margin:1.5rem 0}.blog-post__content.astro-4dqtj3le hr{border:none;border-top:1px solid var(--blog-border);margin:3rem 0}.blog-post__sidebar.astro-4dqtj3le{position:sticky;top:2rem;height:-moz-fit-content;height:fit-content}@media (max-width: 1024px){.blog-post__sidebar.astro-4dqtj3le{display:none}}.toc-wrapper.astro-4dqtj3le{padding:1.5rem;background:var(--blog-surface);border:1px solid var(--blog-border);border-radius:12px;margin-bottom:1.5rem}.toc-title.astro-4dqtj3le{font-family:PP Fraktion Mono,monospace;font-size:.7rem;text-transform:uppercase;letter-spacing:.15em;color:var(--blog-text-muted);margin-bottom:1rem}.toc-nav.astro-4dqtj3le{display:flex;flex-direction:column;gap:.25rem}.toc-link{font-size:.8rem;color:var(--blog-text-muted);text-decoration:none;border-left:2px solid transparent;padding:.3rem 0 .3rem .75rem;transition:all .3s ease;line-height:1.4}.toc-link:hover{color:var(--blog-text-secondary)}.toc-link.is-active{color:var(--blog-accent);border-left-color:var(--blog-accent)}.toc-link--h3{padding-left:1.5rem;font-size:.75rem}.author-mini.astro-4dqtj3le{display:flex;align-items:center;gap:.75rem;padding:1rem;background:var(--blog-surface);border:1px solid var(--blog-border);border-radius:12px}.author-mini__avatar.astro-4dqtj3le{width:40px;height:40px;border-radius:50%;border:1px solid var(--blog-border-accent)}.author-mini__name.astro-4dqtj3le{font-size:.85rem;font-weight:600;color:var(--blog-text)}.author-mini__role.astro-4dqtj3le{font-family:PP Fraktion Mono,monospace;font-size:.65rem;color:var(--blog-text-muted);text-transform:uppercase;letter-spacing:.05em}.blog-author-bio.astro-4dqtj3le{max-width:800px;margin:4rem auto;padding:2rem;display:flex;gap:1.5rem;background:var(--blog-surface);border:1px solid var(--blog-border);border-radius:16px}@media (max-width: 576px){.blog-author-bio.astro-4dqtj3le{flex-direction:column;align-items:center;text-align:center}}.blog-author-bio__avatar.astro-4dqtj3le{width:80px;height:80px;border-radius:50%;border:2px solid var(--blog-border-accent);flex-shrink:0}.blog-author-bio__content.astro-4dqtj3le h4.astro-4dqtj3le{font-size:1.1rem;color:var(--blog-text);margin-bottom:.5rem}.blog-author-bio__content.astro-4dqtj3le p.astro-4dqtj3le{font-size:.9rem;color:var(--blog-text-muted);line-height:1.6;margin-bottom:1rem}.blog-author-bio__links.astro-4dqtj3le{display:flex;gap:1rem}@media (max-width: 576px){.blog-author-bio__links.astro-4dqtj3le{justify-content:center}}.blog-author-bio__links.astro-4dqtj3le a.astro-4dqtj3le{font-family:PP Fraktion Mono,monospace;font-size:.75rem;color:var(--blog-accent);text-decoration:none;text-transform:uppercase;letter-spacing:.05em;transition:opacity .3s ease}.blog-author-bio__links.astro-4dqtj3le a.astro-4dqtj3le:hover{opacity:.7}.share-buttons.astro-4dqtj3le{margin-top:1.5rem;padding:1.25rem;background:var(--blog-surface);border:1px solid var(--blog-border);border-radius:12px}.share-title.astro-4dqtj3le{font-family:PP Fraktion Mono,monospace;font-size:.7rem;text-transform:uppercase;letter-spacing:.15em;color:var(--blog-text-muted);margin-bottom:.75rem}.share-links.astro-4dqtj3le{display:flex;gap:.5rem}.share-btn.astro-4dqtj3le{display:flex;align-items:center;gap:.4rem;padding:.5rem .75rem;background:var(--blog-surface-hover);border:1px solid var(--blog-border);border-radius:8px;color:var(--blog-text-muted);font-family:PP Fraktion Mono,monospace;font-size:.65rem;text-decoration:none;cursor:pointer;transition:all .3s ease;text-transform:uppercase;letter-spacing:.05em}.share-btn.astro-4dqtj3le:hover{background:var(--blog-accent-muted);border-color:var(--blog-border-accent);color:var(--blog-accent)}.share-btn.astro-4dqtj3le svg.astro-4dqtj3le{flex-shrink:0}.related-posts.astro-4dqtj3le{max-width:1000px;margin:2rem auto 4rem;padding:0 2rem}.related-posts__title.astro-4dqtj3le{font-family:PP Editorial New,Georgia,serif;font-size:1.5rem;font-weight:400;color:var(--blog-text);margin-bottom:1.5rem;letter-spacing:-.01em}.related-posts__grid.astro-4dqtj3le{display:grid;grid-template-columns:repeat(3,1fr);gap:1.25rem}@media (max-width: 768px){.related-posts__grid.astro-4dqtj3le{grid-template-columns:1fr}}.related-card.astro-4dqtj3le{position:relative;background:var(--blog-surface);border:1px solid var(--blog-border);border-radius:12px;overflow:hidden;text-decoration:none;color:inherit;transition:all .4s cubic-bezier(.25,.46,.45,.94)}.related-card.astro-4dqtj3le:hover{transform:translateY(-4px);border-color:var(--blog-border-accent);box-shadow:0 12px 40px var(--blog-shadow-accent)}.related-card.astro-4dqtj3le:hover .related-card__arrow.astro-4dqtj3le{transform:translate(4px);color:var(--blog-accent)}.related-card.astro-4dqtj3le:hover .related-card__image.astro-4dqtj3le img.astro-4dqtj3le{transform:scale(1.05)}.related-card__image.astro-4dqtj3le{position:relative;height:120px;overflow:hidden}.related-card__image.astro-4dqtj3le img.astro-4dqtj3le{width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transition:transform .6s ease}.related-card__image.astro-4dqtj3le.has-fallback{background:var(--blog-gradient-fallback)}.related-card__gradient.astro-4dqtj3le{position:absolute;inset:0;background:var(--blog-gradient-card);pointer-events:none}.related-card__content.astro-4dqtj3le{padding:1rem 1.25rem 1.25rem;display:flex;flex-direction:column;gap:.5rem}.related-card__category.astro-4dqtj3le{font-family:PP Fraktion Mono,monospace;font-size:.6rem;color:var(--blog-accent);text-transform:uppercase;letter-spacing:.1em}.related-card__title.astro-4dqtj3le{font-family:PP Editorial New,Georgia,serif;font-size:.95rem;font-weight:400;color:var(--blog-text);line-height:1.3;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.related-card__arrow.astro-4dqtj3le{color:var(--blog-text-faint);font-size:1.1rem;transition:all .3s ease;align-self:flex-end}
