:root{--bg-primary:#1a1a1a;--bg-secondary:#2d2d2d;--text-primary:#e8e8e8;--text-secondary:#a8a8a8;--accent:#7ee787;--accent-hover:#56d364;--border:#404040;--code-bg:#2b2b2b;--code-text:#e8e8e8;--surface:#2a2a3e}html.light-mode,body.light-mode{--bg-primary:#fff;--bg-secondary:#f5f5f5;--text-primary:#1a1a1a;--text-secondary:#666;--accent:#116329;--accent-hover:#0d4b1f;--border:#e0e0e0;--code-bg:#f5f5f5;--code-text:#1a1a1a;--surface:#f5f5f5}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-primary);color:var(--text-primary);flex-direction:column;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;line-height:1.6;transition:background-color .3s,color .3s;display:flex}main{flex:1;width:100%}.container{max-width:800px;margin:0 auto;padding:2rem 1rem}.site-header{background-color:var(--bg-secondary);border-bottom:1px solid var(--border);z-index:100;contain:layout style paint;min-height:72px;padding:1rem 0;position:sticky;top:0}.site-header nav{align-items:center;gap:2rem;max-width:1200px;margin:0 auto;padding:0 1rem;display:flex}.site-header .nav-brand{flex-shrink:0}.site-header .nav-brand a{color:var(--text-primary);font-size:1.25rem;font-weight:600;text-decoration:none}.site-header .nav-brand a:hover{color:var(--accent)}.site-header .desktop-nav{display:block}.site-header .mobile-nav{display:none}.site-header .nav-left{flex:1}.site-header .nav-left .nav-links{gap:2rem;margin:0;padding:0;list-style:none;display:flex}.site-header .nav-left .nav-links li a{color:var(--text-secondary);font-weight:500;text-decoration:none;transition:color .2s}.site-header .nav-left .nav-links li a:hover{color:var(--accent)}.site-header .nav-right{flex-shrink:0;align-items:center;gap:1rem;display:flex}.site-header .nav-right .search-container{align-items:center;display:flex;position:relative}.site-header .nav-right .search-container .search-input{background:var(--bg-primary);border:1px solid var(--border);color:var(--text-primary);border-radius:6px;width:200px;padding:.5rem 2.5rem .5rem .75rem;font-size:.9rem;transition:all .2s}.site-header .nav-right .search-container .search-input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px rgba(100,181,246,.2)}.site-header .nav-right .search-container .search-input::placeholder{color:var(--text-secondary)}.site-header .nav-right .search-container .search-icon{color:var(--text-secondary);pointer-events:none;position:absolute;right:.75rem}.site-header .nav-right .theme-toggle{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;width:40px;height:40px;padding:.5rem;transition:all .2s;display:flex;position:relative}.site-header .nav-right .theme-toggle:hover{background:var(--bg-primary);color:var(--accent)}.site-header .nav-right .theme-toggle .theme-icon{width:20px;height:20px;margin-top:-10px;margin-left:-10px;transition:opacity .2s,transform .2s;position:absolute;top:50%;left:50%}.site-header .nav-right .theme-toggle .moon-icon{opacity:1;visibility:visible;display:block}.site-header .nav-right .theme-toggle .sun-icon{opacity:0;visibility:hidden;display:block}.site-header .hamburger-btn{cursor:pointer;background:0 0;border:none;flex-direction:column;gap:3px;padding:.5rem;display:none}.site-header .hamburger-btn .hamburger-line{background:var(--text-primary);width:20px;height:2px;transition:all .3s}.site-header .hamburger-btn:hover .hamburger-line{background:var(--accent)}.site-header .mobile-menu{background:var(--bg-secondary);border-bottom:1px solid var(--border);display:none;position:absolute;top:100%;left:0;right:0}.site-header .mobile-menu.open{display:block}.site-header .mobile-menu .mobile-nav-links{margin:0;padding:1rem;list-style:none}.site-header .mobile-menu .mobile-nav-links li{margin-bottom:.5rem}.site-header .mobile-menu .mobile-nav-links li:last-child{margin-bottom:0}.site-header .mobile-menu .mobile-nav-links li a{color:var(--text-primary);border-radius:6px;padding:.75rem 1rem;text-decoration:none;transition:background .2s;display:block}.site-header .mobile-menu .mobile-nav-links li a:hover{background:var(--bg-primary);color:var(--accent)}html.light-mode .site-header .theme-toggle .moon-icon,body.light-mode .site-header .theme-toggle .moon-icon{opacity:0;visibility:hidden}html.light-mode .site-header .theme-toggle .sun-icon,body.light-mode .site-header .theme-toggle .sun-icon{opacity:1;visibility:visible}.blog-header{text-align:center;margin-bottom:3rem;padding:2rem 0}.blog-header .header-intro{color:var(--text-secondary);justify-content:center;align-items:center;gap:.5rem;margin-bottom:1rem;font-size:1rem;display:flex}.blog-header .header-intro .wave{transform-origin:70% 70%;font-size:1.5rem;animation:2.5s infinite wave;display:inline-block}.blog-header .header-intro .greeting{font-weight:500}.blog-header h1{background:linear-gradient(135deg,var(--text-primary)0%,var(--accent)100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;margin-bottom:.75rem;font-size:2.5rem;font-weight:700}.blog-header .tagline{color:var(--text-secondary);margin-bottom:1.5rem;font-size:1.1rem;font-weight:400}.blog-header .social-icons{justify-content:center;align-items:center;gap:1rem;display:flex}.blog-header .social-icons .social-icon{width:44px;height:44px;color:var(--text-secondary);background:var(--bg-secondary);border:2px solid var(--border);will-change:transform,box-shadow;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;text-decoration:none;transition:all .3s;display:inline-flex}.blog-header .social-icons .social-icon svg{width:20px;height:20px;margin:auto;transition:transform .3s;display:block}.blog-header .social-icons .social-icon:hover{color:var(--accent);border-color:var(--accent);transform:translateY(-2px);box-shadow:0 0 15px rgba(100,181,246,.4)}@keyframes wave{0%,to{transform:rotate(0)}10%,30%{transform:rotate(14deg)}20%{transform:rotate(-8deg)}40%{transform:rotate(-4deg)}50%{transform:rotate(10deg)}}.search{margin-bottom:2rem}.search input{background-color:var(--bg-secondary);border:1px solid var(--border);width:100%;color:var(--text-primary);border-radius:8px;padding:.75rem 1rem;font-size:1rem}.search input:focus{border-color:var(--accent);outline:none}.search input::placeholder{color:var(--text-secondary)}.posts-list{flex-direction:column;gap:1.5rem;display:flex}.post-card{background-color:var(--bg-secondary);border:1px solid var(--border);contain:layout style;will-change:transform;border-radius:8px;min-height:150px;transition:transform .2s,border-color .2s;overflow:hidden}.post-card:hover{border-color:var(--accent);transform:translateY(-2px)}.post-card.has-thumbnail{align-items:stretch;gap:0;padding:0;display:flex}.post-card.has-thumbnail .post-thumbnail{background-color:var(--border);flex-shrink:0;align-self:stretch;width:170px;position:relative}.post-card.has-thumbnail .post-thumbnail a{width:100%;height:100%;display:block}.post-card.has-thumbnail .post-thumbnail img{object-fit:cover;width:100%;height:100%;transition:transform .3s}.post-card.has-thumbnail .post-thumbnail:hover img{transform:scale(1.05)}.post-card.has-thumbnail .post-content{flex:1;min-width:0;padding:1.5rem}.post-card:not(.has-thumbnail){padding:1.5rem}.post-card h2{margin-bottom:.75rem}.post-card h2 a{color:var(--text-primary);font-size:1.5rem;text-decoration:none}.post-card h2 a:hover{color:var(--accent)}.post-card .post-meta{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:.75rem;font-size:.9rem;display:flex}.post-card .post-meta .date{align-items:center;display:flex}.post-card .post-meta .tags{flex-wrap:wrap;gap:.5rem;display:flex}.post-card .post-meta .tag{background-color:var(--code-bg);color:var(--accent);border-radius:4px;padding:.25rem .75rem;font-size:.85rem;text-decoration:none;transition:background-color .2s}.post-card .post-meta .tag:hover{background-color:var(--border)}.post-card .description{color:var(--text-secondary);line-height:1.5}.post-detail header{margin-bottom:2rem}.post-detail header h1{margin-bottom:1rem;font-size:2.5rem}.post-detail .post-meta{color:var(--text-secondary);flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1.5rem;font-size:.9rem;display:flex}.post-detail .post-meta .date{align-items:center;display:flex}.post-detail .post-meta .tags{flex-wrap:wrap;gap:.5rem;display:flex}.post-detail .post-meta .tag{background-color:var(--code-bg);color:var(--accent);border-radius:4px;padding:.25rem .75rem;font-size:.85rem;text-decoration:none;transition:background-color .2s}.post-detail .post-meta .tag:hover{background-color:var(--border)}.post-detail .post-content{word-wrap:break-word;overflow-wrap:break-word;font-size:1rem;line-height:1.7}.post-detail .post-content h1,.post-detail .post-content h2,.post-detail .post-content h3,.post-detail .post-content h4,.post-detail .post-content h5,.post-detail .post-content h6{color:var(--text-primary);margin-top:2rem;margin-bottom:1rem}.post-detail .post-content h1,.post-detail .post-content h2{border-bottom:2px solid var(--border);padding-bottom:.5rem}.post-detail .post-content h1{font-size:1.85rem}.post-detail .post-content h2{font-size:1.6rem}.post-detail .post-content h3{font-size:1.4rem}.post-detail .post-content p{color:var(--text-secondary);word-break:break-word;margin-bottom:1rem}.post-detail .post-content a{color:var(--accent);word-break:break-all;text-decoration:none}.post-detail .post-content a:hover{text-decoration:underline}.post-detail .post-content ul,.post-detail .post-content ol{color:var(--text-secondary);margin-bottom:1rem;padding-left:2rem}.post-detail .post-content li{margin-bottom:.5rem}.post-detail .post-content pre{border:1px solid var(--border);border-radius:8px;margin-bottom:1rem;padding:0;overflow-x:auto;background-color:var(--code-bg)!important}.post-detail .post-content pre code{color:var(--code-text);font-family:Monaco,Courier New,monospace;font-size:.9rem}.post-detail .post-content pre span{color:inherit}.post-detail .post-content pre>code{background-color:var(--code-bg);color:var(--code-text);padding:1rem;display:block}.post-detail .post-content code{background-color:var(--code-bg);color:var(--accent);border-radius:4px;padding:.2rem .4rem;font-family:Monaco,Courier New,monospace;font-size:.9rem}.post-detail .post-content blockquote{border-left:4px solid var(--accent);color:var(--text-secondary);margin:1rem 0;padding-left:1rem;font-style:italic}.post-detail .post-content img{max-width:100%;height:auto;aspect-ratio:attr(width)/attr(height);object-fit:cover;border-radius:8px;margin:1.5rem 0}.post-detail .post-content video{background:var(--bg-secondary);aspect-ratio:16/9;border-radius:8px;max-width:100%;height:auto;margin:1.5rem 0;display:block}.post-detail .post-content table{border-collapse:collapse;width:100%;margin-bottom:1rem}.post-detail .post-content table th,.post-detail .post-content table td{border:1px solid var(--border);text-align:left;padding:.75rem}.post-detail .post-content table th{background-color:var(--bg-secondary);font-weight:600}.post-detail .post-content hr{border:none;border-top:2px solid var(--border);margin:2rem 0}.post-detail .post-content .custom-html-box{background-color:var(--bg-secondary);border:2px solid var(--accent);border-radius:8px;margin:1.5rem 0;padding:1.5rem}.post-detail .post-content .custom-html-box p{color:var(--text-primary);margin-bottom:.5rem}.post-detail .post-content .custom-html-box p:last-child{margin-bottom:0}.post-detail .post-content .custom-html-box strong{color:var(--accent)}.post-detail .back-link{color:var(--accent);margin-top:2rem;text-decoration:none;display:inline-block}.post-detail .back-link:hover{text-decoration:underline}.post-detail .comments-section{border-top:1px solid var(--border);margin-top:4rem;padding-top:2rem}.post-detail .comments-section h2{color:var(--text-primary);margin-bottom:1.5rem;font-size:1.5rem}.tag-header{margin-bottom:2rem}.tag-header h1{margin-bottom:1rem;font-size:2rem}.tag-header .back-link{color:var(--accent);text-decoration:none}.tag-header .back-link:hover{text-decoration:underline}.no-posts{text-align:center;color:var(--text-secondary);padding:3rem 0}.pagination{justify-content:flex-end;align-items:center;gap:1rem;margin-top:2rem;padding:1rem 0;display:flex}.pagination .pagination-btn{background-color:var(--bg-secondary);border:1px solid var(--border);color:var(--text-primary);cursor:pointer;border-radius:6px;padding:.5rem 1rem;font-size:.9rem;transition:all .2s}.pagination .pagination-btn:hover:not(:disabled){background-color:var(--accent);border-color:var(--accent);color:#fff}.pagination .pagination-btn:disabled{opacity:.5;cursor:not-allowed}.pagination .pagination-info{color:var(--text-secondary);font-size:.9rem}.not-found{text-align:center;padding:4rem 2rem}.not-found h1{margin-bottom:1rem;font-size:3rem}.not-found p{color:var(--text-secondary);margin-bottom:2rem}.not-found a{color:var(--accent);text-decoration:none}.not-found a:hover{text-decoration:underline}.site-footer{background-color:var(--bg-secondary);border-top:1px solid var(--border);text-align:center;contain:layout style paint;min-height:80px;margin-top:4rem;padding:1rem 0}.site-footer .container{padding:1rem}.site-footer p{color:var(--text-secondary);margin-bottom:0;font-size:.9rem;display:inline-block}.site-footer .footer-links{display:inline}.site-footer .footer-links a{color:var(--accent);text-decoration:none}.site-footer .footer-links a:hover{text-decoration:underline}@media (width<=768px){.container{padding:1.5rem 1rem}.blog-header{padding:1.5rem 0}.blog-header .header-intro{font-size:.9rem}.blog-header .header-intro .wave{font-size:1.3rem}.blog-header h1{font-size:2rem}.blog-header .tagline{font-size:1rem}.blog-header .social-icons{gap:.75rem}.blog-header .social-icons .social-icon{width:40px;height:40px}.blog-header .social-icons .social-icon svg{width:18px;height:18px}.post-card h2 a{font-size:1.25rem}.post-card.has-thumbnail{flex-direction:column}.post-card.has-thumbnail .post-thumbnail{width:100%;height:200px}.post-card.has-thumbnail .post-content{padding:1.5rem}.post-detail header h1{font-size:2rem}.post-detail .post-content{font-size:1rem}.post-detail .post-content h1{font-size:1.75rem}.post-detail .post-content h2{font-size:1.5rem}.post-detail .post-content h3{font-size:1.25rem}.post-detail .post-content p{font-size:1rem}.post-detail .post-content pre code{font-size:.75rem;line-height:1.4}.post-detail .post-content code{font-size:.8rem}.post-detail .post-content table{font-size:.85rem}.post-detail .post-content table th,.post-detail .post-content table td{padding:.5rem;font-size:.85rem}.post-detail .post-content blockquote{font-size:.95rem}.site-header nav{gap:1rem;position:relative}.site-header .desktop-nav{display:none}.site-header .mobile-nav{display:flex}.site-header .nav-brand{flex-shrink:0;margin-right:auto}.site-header .nav-right{flex-shrink:0;align-items:center;gap:.5rem;display:flex}.site-header .nav-right .search-container{position:relative}.site-header .nav-right .search-container .search-input{width:120px;padding:.5rem .75rem;font-size:.9rem}.site-header .nav-right .theme-toggle{width:36px;height:36px;padding:.3rem}.site-header .nav-right .theme-toggle .theme-icon{width:18px;height:18px}.site-header .nav-right .hamburger-btn{padding:.3rem;display:flex!important}.site-header .nav-right .hamburger-btn .hamburger-line{width:16px}.nav-right{gap:.5rem;flex-direction:row!important}.nav-links{flex-direction:row}}.about-page .about-content section{margin-bottom:2.5rem}.about-page .about-content section h2{color:var(--accent);border-bottom:2px solid var(--border);margin-bottom:1rem;padding-bottom:.5rem;font-size:1.5rem}.about-page .about-content section p{margin-bottom:1rem;line-height:1.7}.about-page .about-content section ul{margin-bottom:1rem;margin-left:1.5rem}.about-page .about-content section ul li{margin-bottom:.5rem;line-height:1.6}.about-page .tech-list{flex-wrap:wrap;gap:.75rem;margin-top:1rem;display:flex}.about-page .tech-list .tech-item{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border);border-radius:20px;padding:.5rem 1rem;font-size:.9rem;transition:all .2s}.about-page .tech-list .tech-item:hover{background:var(--accent);color:#fff;transform:translateY(-2px)}.about-page .social-links{gap:1.5rem;margin-top:1rem;display:flex}.about-page .social-links a{color:var(--accent);border:2px solid var(--accent);border-radius:8px;padding:.5rem 1rem;font-weight:500;text-decoration:none;transition:all .2s}.about-page .social-links a:hover{background:var(--accent);color:#fff;transform:translateY(-2px)}.about-page .back-link{color:var(--accent);margin-top:2rem;font-weight:500;text-decoration:none;display:inline-block}.about-page .back-link:hover{text-decoration:underline}@media (width<=768px){.about-page .tech-list .tech-item{padding:.4rem .8rem;font-size:.8rem}.about-page .social-links{flex-direction:column;gap:1rem}.about-page .social-links a{text-align:center}}.archive-page .archive-header{margin-bottom:2rem}.archive-page .archive-header h1{color:var(--accent);align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:2.5rem;display:flex}.archive-page .archive-header h1 svg{width:36px;height:36px;color:var(--accent);opacity:.8;flex-shrink:0}.archive-page .year-section{margin-bottom:3rem}.archive-page .year-section .year-title{color:var(--text-primary);border-bottom:2px solid var(--border);margin-bottom:1.5rem;padding-bottom:.5rem;font-size:1.8rem;font-weight:600}.archive-page .year-section .posts-list{flex-direction:column;gap:1rem;display:flex}.archive-page .archive-post{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;align-items:flex-start;gap:1.5rem;padding:1rem;transition:all .2s;display:flex}.archive-page .archive-post:hover{border-color:var(--accent);transform:translateY(-2px)}.archive-page .archive-post .post-date{text-align:center;flex-shrink:0;width:80px}.archive-page .archive-post .post-date .month{background:var(--accent);color:#fff;border-radius:4px;padding:.3rem .6rem;font-size:.85rem;font-weight:500;display:block}.archive-page .archive-post .post-info{flex:1}.archive-page .archive-post .post-info h3{margin:0 0 .5rem;font-size:1.1rem}.archive-page .archive-post .post-info h3 a{color:var(--text-primary);font-weight:600;text-decoration:none}.archive-page .archive-post .post-info h3 a:hover{color:var(--accent)}.archive-page .archive-post .post-info .post-description{color:var(--text-secondary);margin:0;font-size:.9rem;line-height:1.5}.archive-page .back-link{color:var(--accent);margin-top:2rem;font-weight:500;text-decoration:none;display:inline-block}.archive-page .back-link:hover{text-decoration:underline}@media (width<=768px){.archive-page .archive-header h1{font-size:2rem}.archive-page .archive-header h1 svg{width:28px;height:28px}.archive-page .year-section .year-title{font-size:1.5rem}.archive-page .archive-post{flex-direction:column;gap:.75rem}.archive-page .archive-post .post-date{text-align:left;width:auto}.archive-page .archive-post .post-date .month{display:inline-block}}.giscus-wrapper{margin-top:2rem}.giscus-wrapper .giscus{width:100%}.post-content pre.code-light{display:none}.post-content pre.code-dark,html.light-mode .post-content pre.code-light,body.light-mode .post-content pre.code-light{display:block}html.light-mode .post-content pre.code-dark,body.light-mode .post-content pre.code-dark{display:none}.cookie-banner{border-top:1px solid var(--border);z-index:1000;backdrop-filter:blur(10px);opacity:0;background:#2a2a3e;padding:1.5rem;animation:.3s ease-in forwards fadeIn;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -2px 10px rgba(0,0,0,.3)}@keyframes fadeIn{to{opacity:1}}.cookie-banner .cookie-content{justify-content:space-between;align-items:center;gap:2rem;max-width:1200px;margin:0 auto;display:flex}.cookie-banner .cookie-content p{color:var(--text-secondary);margin:0;font-size:.95rem;line-height:1.5}.cookie-banner .cookie-content .cookie-accept{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:none;border-radius:6px;padding:.75rem 2rem;font-size:1rem;font-weight:600;transition:all .2s}.cookie-banner .cookie-content .cookie-accept:hover{background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 4px 8px rgba(0,0,0,.2)}.cookie-banner .cookie-content .cookie-accept:active{transform:translateY(0)}@media (width<=768px){.cookie-banner{padding:1rem}.cookie-banner .cookie-content{text-align:center;flex-direction:column;gap:1rem}.cookie-banner .cookie-content p{font-size:.9rem}.cookie-banner .cookie-content .cookie-accept{width:100%;padding:1rem}}html.light-mode .cookie-banner,body.light-mode .cookie-banner{background:#f5f5f5;border-top:1px solid #e0e0e0}html.light-mode .cookie-banner .cookie-content p,body.light-mode .cookie-banner .cookie-content p{color:#666}