:root{--bg:210 20% 98%;--fg:215 15% 18%;--card:0 0% 100%;--muted:215 12% 45%;--border:215 15% 91%;--secondary:215 20% 95%;--accent:220 85% 58%;--gh0:0 0% 91%;--gh1:120 38% 74%;--gh2:120 40% 55%;--gh3:120 44% 40%;--gh4:120 48% 28%;--ease-out-expo:cubic-bezier(.16, 1, .3, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1)}[data-theme=dark]{--bg:0 0% 3%;--fg:0 0% 91%;--card:0 0% 6%;--muted:0 0% 52%;--border:0 0% 14%;--secondary:0 0% 10%;--accent:220 80% 64%;--gh0:0 0% 14%;--gh1:120 32% 24%;--gh2:120 38% 34%;--gh3:120 44% 44%;--gh4:120 50% 54%}[data-theme=dark] body{image-rendering:pixelated;background-color:#0a0a0a;background-image:radial-gradient(circle at 25% 25%,#222 .5px,#0000 1px),radial-gradient(circle at 75% 75%,#111 .5px,#0000 1px);background-size:10px 10px;background-attachment:fixed}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:hsl(var(--bg));color:hsl(var(--fg));-webkit-font-smoothing:antialiased;transition:background .35s var(--ease-in-out), color .35s var(--ease-in-out);font-family:Inter,system-ui,sans-serif;line-height:1.6}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}#scroll-progress{background:linear-gradient(90deg, hsl(var(--accent)), #94b6f9);z-index:200;pointer-events:none;border-radius:0 2px 2px 0;width:0%;height:2px;position:fixed;top:0;left:0}body.page-exit{opacity:0;transition:opacity .28s,transform .28s;transform:translateY(6px)}.container-narrow{max-width:48rem;margin:0 auto;padding:0 1.5rem}.nav-shell{z-index:40;border-bottom:1px solid hsl(var(--border) / .5);background:hsl(var(--bg) / .84);-webkit-backdrop-filter:blur(18px);position:sticky;top:0}.dynamic-icon{color:hsl(var(--fg))!important}.nav{justify-content:space-between;align-items:center;gap:.75rem;min-height:3.5rem;display:flex}.brand{letter-spacing:-.02em;flex-shrink:0;font-size:1rem;font-weight:600;transition:opacity .15s}.brand:hover{opacity:.65}.brand span{color:hsl(var(--accent))}.nav-links{white-space:nowrap;align-items:center;gap:1rem;margin-left:auto;margin-right:.5rem;list-style:none;display:flex}.nav-links a{color:hsl(var(--muted));padding-bottom:.15rem;font-size:.84rem;transition:color .15s;position:relative}.nav-links a:after{content:"";background:hsl(var(--accent));transform-origin:0;width:100%;height:1.5px;transition:transform .22s var(--ease-out-expo);border-radius:2px;position:absolute;bottom:-.15rem;left:0;transform:scaleX(0)}.nav-links a:hover,.nav-links a.active{color:hsl(var(--fg))}.nav-links a:hover:after,.nav-links a.active:after{transform:scaleX(1)}.nav-actions{align-items:center;gap:.35rem;display:flex}.theme-toggle{width:2rem;height:2rem;color:hsl(var(--muted));transition:background .16s ease, color .16s ease, transform .2s var(--ease-out-expo);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:.5rem;justify-content:center;align-items:center;padding:0;display:inline-flex}.theme-toggle:hover{background:hsl(var(--secondary));color:hsl(var(--fg));transform:scale(1.08)}.theme-toggle:active{transform:scale(.95)}.theme-flip-stage{justify-content:center;align-items:center;width:1rem;height:1rem;display:flex;position:relative}.theme-flip-icon{backface-visibility:hidden;width:1rem;height:1rem;transition:opacity .5s,transform .5s;position:absolute}.theme-flip-moon{opacity:1;transform:rotateY(0)}.theme-flip-sun{opacity:0;transform:rotateY(-180deg)}[data-theme=dark] .theme-flip-moon{opacity:0;transform:rotateY(180deg)}[data-theme=dark] .theme-flip-sun{opacity:1;transform:rotateY(0)}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}.menu-btn{border:1px solid hsl(var(--border));background:hsl(var(--card));color:hsl(var(--fg));cursor:pointer;min-width:2rem;min-height:2rem;transition:background .15s ease, color .15s ease, transform .2s var(--ease-out-expo);z-index:52;border-radius:.6rem;justify-content:center;align-items:center;padding:0;display:inline-flex;position:relative}.menu-btn svg{width:1.15rem;height:1.15rem}.menu-btn .menu-icon-close,.menu-btn.open .menu-icon-hamburger{display:none}.menu-btn.open .menu-icon-close{display:block}.menu-btn:hover{background:hsl(var(--secondary));color:hsl(var(--fg));transform:scale(1.08)}.drawer-overlay{z-index:48;opacity:0;pointer-events:none;-webkit-tap-highlight-color:transparent;-webkit-backdrop-filter:blur(2px);background:#0006;transition:opacity .35s;position:fixed;inset:0}.drawer-overlay.open{opacity:1;pointer-events:auto}.drawer{z-index:50;background:hsl(var(--bg) / .96);border-left:1px solid hsl(var(--border));width:min(22rem,82vw);height:100dvh;transition:transform .4s var(--ease-out-expo);flex-direction:column;padding:0;display:flex;position:fixed;top:0;right:0;overflow-y:auto;transform:translate(100%);box-shadow:-8px 0 40px #0000001a}[data-theme=dark] .drawer{box-shadow:-8px 0 40px #00000059}.drawer.open{transform:translate(0)}.drawer-head{border-bottom:1px solid hsl(var(--border) / .5);flex-shrink:0;align-items:center;min-height:3.5rem;padding:1rem 1.5rem;display:flex}.drawer-brand{letter-spacing:-.02em;font-size:1rem;font-weight:600}.drawer-brand span{color:hsl(var(--accent))}.drawer-nav{flex-direction:column;flex:1;gap:.2rem;padding:1rem 1.5rem;display:flex}.drawer-nav a{color:hsl(var(--muted));transition:background .2s ease, color .2s ease, transform .2s var(--ease-out-expo);opacity:0;border-radius:.7rem;align-items:center;padding:.8rem 1rem;font-size:1.02rem;font-weight:500;display:flex;position:relative;overflow:hidden;transform:translate(1.5rem)}.drawer.open .drawer-nav a{animation:drawer-link-in .45s var(--ease-out-expo) forwards;animation-delay:calc(var(--dl-i,0) * 60ms + 80ms)}.drawer-nav a:before{content:"";background:hsl(var(--accent));width:3px;height:0%;transition:height .25s var(--ease-out-expo);border-radius:0 2px 2px 0;position:absolute;top:50%;left:0;transform:translateY(-50%)}.drawer-nav a:hover{background:hsl(var(--secondary));color:hsl(var(--fg));transform:translate(4px)}.drawer-nav a:hover:before{height:60%}.drawer-nav a.active{color:hsl(var(--accent));background:hsl(var(--accent) / .06)}.drawer-nav a.active:before{height:60%}@keyframes drawer-link-in{0%{opacity:0;transform:translate(1.5rem)}to{opacity:1;transform:translate(0)}}.drawer-footer{border-top:1px solid hsl(var(--border) / .5);flex-shrink:0;padding:1.25rem 1.5rem}.drawer-footer p{color:hsl(var(--muted));margin:0;font-size:.72rem}.page{padding-top:2.5rem;padding-bottom:3rem}.hero{position:relative}.banner{aspect-ratio:16/9;border:1px solid hsl(var(--border));background:linear-gradient(145deg,#d9ecdd,#d8e7f9);border-radius:1rem;width:100%;position:relative;overflow:hidden;box-shadow:0 4px 28px #00000012}[data-theme=dark] .banner{background:linear-gradient(145deg,#1a2530,#1e2235);box-shadow:0 4px 36px #00000052}.banner img{object-fit:cover;object-position:center;width:100%;height:100%;transition:transform 7s;position:absolute;inset:0}.banner:hover img{transform:scale(1.04)}.banner-overlay{background:linear-gradient(#0000000f,#0000009e);position:absolute;inset:0}.banner figcaption{z-index:3;color:#fffffff2;text-shadow:0 2px 18px #00000073;white-space:nowrap;letter-spacing:.04em;animation:caption-in 1s .4s var(--ease-out-expo) both;font-family:Playfair Display,Georgia,serif;font-size:clamp(.88rem,2.4vw,1.22rem);font-style:italic;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes caption-in{0%{opacity:0;transform:translate(-50%,calc(8px - 50%))}to{opacity:1;transform:translate(-50%,-50%)}}.fallback-note{z-index:3;color:#ffffffe0;font-size:.64rem;display:none;position:absolute;bottom:.7rem;right:.7rem}.image-shell.is-missing .fallback-note{display:block}.avatar-wrap{z-index:5;margin-top:-2.8rem;padding-left:1.5rem;position:relative}.avatar{border:3px solid hsl(var(--bg));width:5rem;height:5rem;box-shadow:0 0 0 1px hsl(var(--border)), 0 8px 24px #00000024;transition:transform .35s var(--ease-out-expo), box-shadow .35s ease;background:linear-gradient(145deg,#bcd1de,#d2deca);border-radius:999px;position:relative;overflow:hidden}.avatar:hover{box-shadow:0 0 0 2px hsl(var(--accent) / .55), 0 14px 36px #0000002e;transform:scale(1.07)rotate(-2deg)}[data-theme=dark] .avatar{background:linear-gradient(145deg,#435266,#55604f)}.avatar img{object-fit:cover;object-position:center 24%;width:100%;height:100%}.fallback-initials{color:#223341;letter-spacing:.06em;place-items:center;font-size:1.36rem;font-weight:600;display:grid;position:absolute;inset:0}.image-shell:not(.is-missing) .fallback-initials{display:none}[data-theme=dark] .fallback-initials{color:#dce5f0}.intro{text-align:left;margin-top:1rem}.signature-wrap{line-height:1}.signature-svg{width:100%;max-width:400px;height:auto;display:block;overflow:visible}.sig-text{fill:hsl(var(--fg));fill-opacity:0;stroke:hsl(var(--fg));stroke-width:1.4px;stroke-linecap:round;stroke-linejoin:round;paint-order:stroke fill;stroke-dasharray:var(--sig-len,3000);stroke-dashoffset:var(--sig-len,3000);animation:sig-draw 2.2s .15s var(--ease-out-expo) forwards, sig-fill .5s 2.1s ease forwards;font-family:Dancing Script,cursive;font-size:88px;font-weight:700}@keyframes sig-draw{to{stroke-dashoffset:0}}@keyframes sig-fill{to{fill-opacity:1;stroke-width:0}}.signature-wrap{animation:4s ease-in-out 2.8s infinite sig-float}@keyframes sig-float{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.signature-svg{width:100%;max-width:400px;height:auto;filter:drop-shadow(0 0 0px hsl(var(--accent) / 0));animation:3s ease-in-out 2.6s infinite sig-glow;display:block;overflow:visible}@keyframes sig-glow{0%,to{filter:drop-shadow(0 0 0px hsl(var(--accent) / 0))}50%{filter:drop-shadow(0 0 18px hsl(var(--accent) / .35))}}[data-theme=light] .sig-text{fill:#141414;stroke:#141414}.subtitle{color:hsl(var(--muted));letter-spacing:.01em;margin-top:.35rem;font-size:.88rem}.social-pills{flex-wrap:wrap;align-items:center;gap:.45rem;margin-top:.85rem;display:flex}.social-pills a{border:1px solid hsl(var(--border));background:hsl(var(--card));min-height:2rem;color:hsl(var(--muted));transition:color .18s ease, background .18s ease, border-color .18s ease, transform .25s var(--ease-out-expo), box-shadow .25s ease;border-radius:999px;align-items:center;padding:0 .82rem;font-size:.78rem;display:inline-flex}.social-pills a:hover{color:hsl(var(--fg));background:hsl(var(--secondary));border-color:hsl(var(--muted) / .4);transform:translateY(-2px);box-shadow:0 5px 14px #00000017}@keyframes fade-up{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.section{padding-top:2.8rem;scroll-margin-top:5.6rem}.section h2{color:hsl(var(--muted));text-transform:uppercase;letter-spacing:.12em;align-items:center;gap:.6rem;font-size:.72rem;font-weight:600;display:flex}.section h2:after{content:"";background:hsl(var(--border));transform-origin:0;height:1px;transition:transform .7s var(--ease-out-expo);border-radius:1px;flex:1;transform:scaleX(0)}.reveal.visible h2:after,.section.visible h2:after,.reveal.visible>h2:after{transform:scaleX(1)}.section h2 span{color:hsl(var(--fg));text-transform:none;letter-spacing:0}.section p{margin-top:.5rem}.muted{color:hsl(var(--muted));font-size:.92rem}.about-section{flex-direction:column;gap:.8rem;margin-top:.9rem;display:flex}.about-lead{color:hsl(var(--fg));max-width:48rem;font-size:1rem;line-height:1.75}.about-copy{color:hsl(var(--fg) / .78);max-width:46rem;font-size:.94rem;line-height:1.75}.about-grid{gap:.85rem;margin-top:1.2rem;display:grid}.about-grid article{border:1px solid hsl(var(--border));background:hsl(var(--card));transition:border-color .22s ease, transform .28s var(--ease-out-expo), box-shadow .28s ease;border-radius:.9rem;padding:1.05rem 1.15rem;position:relative;overflow:hidden}.about-grid article:before{content:"";background:hsl(var(--accent));transform-origin:bottom;width:3px;height:100%;transition:transform .28s var(--ease-out-expo);border-radius:0 2px 2px 0;position:absolute;top:0;left:0;transform:scaleY(0)}.about-grid article:hover:before{transform:scaleY(1)}.about-grid article:hover{border-color:hsl(var(--muted) / .3);transform:translateY(-3px)translate(2px);box-shadow:0 8px 24px #00000012}[data-theme=dark] .about-grid article:hover{box-shadow:0 8px 24px #00000047}.about-grid h3{font-size:.92rem;font-weight:600}.about-grid p{color:hsl(var(--muted));margin-top:.4rem;font-size:.88rem;line-height:1.65}.page-top{padding-top:1.5rem}.page-title{letter-spacing:-.02em;animation:title-in .7s var(--ease-out-expo) both;font-family:Instrument Serif,Playfair Display,Georgia,serif;font-size:clamp(2rem,5vw,3.5rem);font-weight:400;line-height:.96}.page-subtitle{color:hsl(var(--muted));max-width:42rem;animation:title-in .7s .1s var(--ease-out-expo) both;margin-top:.5rem;font-size:.94rem;line-height:1.65}@keyframes title-in{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.work-list article.reveal:first-child{transition-delay:80ms}.work-list article.reveal:nth-child(2){transition-delay:.16s}.work-list article.reveal:nth-child(3){transition-delay:.24s}.blog-list .blog-card.reveal:first-child{transition-delay:80ms}.blog-list .blog-card.reveal:nth-child(2){transition-delay:.16s}.blog-list .blog-card.reveal:nth-child(3){transition-delay:.24s}.blog-list .blog-card.reveal:nth-child(4){transition-delay:.32s}.oss-full-list .oss-full-card.reveal:first-child{transition-delay:80ms}.oss-full-list .oss-full-card.reveal:nth-child(2){transition-delay:.16s}.stack-marquee{border:1px solid hsl(var(--border));background:hsl(var(--card));border-radius:.9rem;margin-top:1.2rem;padding:1.15rem 0;position:relative;overflow:hidden}.stack-marquee .edge{z-index:5;pointer-events:none;width:6rem;position:absolute;top:0;bottom:0}.stack-marquee .edge.left{background:linear-gradient(to right, hsl(var(--card)), transparent);left:0}.stack-marquee .edge.right{background:linear-gradient(to left, hsl(var(--card)), transparent);right:0}.track{gap:1.4rem;width:max-content;padding:0 1.5rem;animation:30s linear infinite marquee;display:flex}.track:hover{animation-play-state:paused}.stack-item{cursor:default;flex-direction:column;flex-shrink:0;align-items:center;gap:.45rem;width:4.3rem;display:flex}.stack-item i{border:1px solid hsl(var(--border));background:hsl(var(--bg) / .6);width:3.6rem;height:3.6rem;transition:transform .28s var(--ease-out-expo), border-color .2s ease, box-shadow .28s ease;border-radius:.75rem;place-items:center;font-size:1.65rem;display:grid}.stack-item:hover i{border-color:hsl(var(--muted) / .4);transform:translateY(-5px)scale(1.1);box-shadow:0 8px 20px #0000001f}.stack-item .devicon-nextjs-original.colored,.stack-item .devicon-amazonwebservices-original.colored{color:hsl(var(--fg))!important}[data-theme=dark] .stack-item .devicon-nextjs-original.colored,[data-theme=dark] .stack-item .devicon-amazonwebservices-original.colored,[data-theme=dark] .stack-item .devicon-express-original.colored,[data-theme=dark] .stack-item .devicon-prisma-original.colored,[data-theme=dark] .stack-item .devicon-github-original.colored{color:#f4f4f5!important}[data-theme=dark] .stack-item i{background:hsl(var(--bg) / .35)}.stack-item span{color:hsl(var(--muted));white-space:nowrap;font-size:.7rem;transition:color .2s}.stack-item:hover span{color:hsl(var(--fg))}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}.heatmap-card{border:1px solid hsl(var(--border));background:hsl(var(--card));border-radius:.9rem;margin-top:1rem;padding:1rem;overflow-x:auto}.months{min-width:max-content;height:14px;color:hsl(var(--muted));margin-left:2.2rem;font-size:.64rem;position:relative}.months span{position:absolute;top:0}.map-row{gap:.34rem;width:max-content;margin-top:.2rem;display:flex}.days-label{width:1.9rem;color:hsl(var(--muted));grid-template-rows:repeat(7,11px);gap:3px;font-size:.62rem;display:grid}.days-label span{align-items:center;display:grid}.grid{grid-template-rows:repeat(7,11px);grid-template-columns:repeat(53,11px);grid-auto-flow:column;gap:3px;display:grid}.cell{background:hsl(var(--gh0));cursor:default;opacity:0;width:11px;height:11px;animation:cell-in .4s var(--ease-out-expo) forwards;border-radius:2px;transition:transform .12s}.cell:hover{transform:scale(1.5)}.cell.lv1{background:hsl(var(--gh1))}.cell.lv2{background:hsl(var(--gh2))}.cell.lv3{background:hsl(var(--gh3))}.cell.lv4{background:hsl(var(--gh4))}@keyframes cell-in{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}.map-footer{border-top:1px solid hsl(var(--border));min-width:max-content;color:hsl(var(--muted));justify-content:space-between;align-items:center;gap:.8rem;margin-top:.8rem;padding-top:.72rem;font-size:.65rem;display:flex}.legend{align-items:center;gap:.35rem;display:flex}.legend .cells{gap:2px;display:flex}.legend i{border-radius:2px;width:11px;height:11px;display:inline-block}.legend .lv0{background:hsl(var(--gh0))}.legend .lv1{background:hsl(var(--gh1))}.legend .lv2{background:hsl(var(--gh2))}.legend .lv3{background:hsl(var(--gh3))}.legend .lv4{background:hsl(var(--gh4))}.work-list{gap:1rem;margin-top:1.2rem;display:grid}.work-list article a{border:1px solid hsl(var(--border));background:hsl(var(--card));transition:border-color .22s ease, transform .3s var(--ease-out-expo), box-shadow .3s ease;will-change:transform;backface-visibility:hidden;border-radius:.9rem;padding:1.15rem;display:block;position:relative;overflow:hidden}.work-list article a:before{content:"";background:linear-gradient(135deg, hsl(var(--accent) / .05), transparent 60%);opacity:0;transition:opacity .25s;position:absolute;inset:0}.work-list article a:hover:before{opacity:1}.work-list article a:hover{border-color:hsl(var(--muted) / .3);transform:translateY(-4px);box-shadow:0 12px 32px #00000017}[data-theme=dark] .work-list article a:hover{box-shadow:0 12px 32px #00000052}.work-list .head{justify-content:space-between;align-items:flex-start;gap:.6rem;display:flex}.work-list h3{letter-spacing:-.01em;font-size:.98rem;font-weight:600}.work-list .head span{color:hsl(var(--accent));opacity:0;transition:opacity .2s ease, transform .25s var(--ease-out-expo);font-size:1rem;transform:translate(-6px,6px)}.work-list article a:hover .head span{opacity:1;transform:translate(0)}.work-list p{color:hsl(var(--muted));margin-top:.5rem;font-size:.88rem;line-height:1.65}.work-list ul{flex-wrap:wrap;gap:.4rem;margin-top:.8rem;list-style:none;display:flex}.work-list li{border:1px solid hsl(var(--border));background:hsl(var(--secondary));color:hsl(var(--muted));border-radius:999px;padding:.18rem .58rem;font-size:.7rem;transition:color .16s,border-color .16s,background .16s}.work-list article a:hover li{color:hsl(var(--fg));border-color:hsl(var(--muted) / .3);background:hsl(var(--secondary))}.quote-card{border:1px dashed hsl(var(--border));background:hsl(var(--card));color:hsl(var(--fg) / .8);border-radius:.9rem;margin-top:1.2rem;padding:1.3rem 1.5rem 1.3rem 2.2rem;font-family:Playfair Display,Georgia,serif;font-size:1.04rem;font-style:italic;line-height:1.7;position:relative}.quote-card:before{content:"“";color:hsl(var(--accent) / .35);font-family:Georgia,serif;font-size:2.8rem;line-height:1;position:absolute;top:.6rem;left:.9rem}.blog-list{gap:.85rem;margin-top:1.2rem;display:grid}.blog-card{border:1px solid hsl(var(--border));background:hsl(var(--card));transition:border-color .22s ease, transform .3s var(--ease-out-expo), box-shadow .3s ease;border-radius:.9rem;padding:1.05rem 1.15rem;position:relative;overflow:hidden}.blog-card:after{content:"";background:hsl(var(--accent));width:0%;height:2px;transition:width .3s var(--ease-out-expo);border-radius:0 2px 0 0;position:absolute;bottom:0;left:0}.blog-card:hover:after{width:100%}.blog-card:hover{border-color:hsl(var(--muted) / .3);transform:translateY(-3px);box-shadow:0 8px 24px #00000012}[data-theme=dark] .blog-card:hover{box-shadow:0 8px 24px #00000047}.blog-card h3{letter-spacing:-.01em;font-size:.95rem;font-weight:600}.blog-card p{color:hsl(var(--muted));margin-top:.42rem;font-size:.88rem;line-height:1.65}.blog-card span{border:1px solid hsl(var(--border));background:hsl(var(--secondary));color:hsl(var(--muted));border-radius:999px;margin-top:.65rem;padding:.2rem .52rem;font-size:.68rem;display:inline-flex}.cta{text-align:center;padding-top:2.8rem}.cta p{color:hsl(var(--muted));font-size:.95rem}.call-btn{background:hsl(var(--fg));color:hsl(var(--bg));letter-spacing:.01em;min-height:2.8rem;transition:transform .28s var(--ease-out-expo), box-shadow .28s ease, opacity .16s ease;border-radius:999px;align-items:center;gap:.5rem;margin-top:1rem;padding:0 1.3rem;font-size:.85rem;font-weight:500;display:inline-flex;position:relative;overflow:hidden}.call-btn:before{content:"";transition:transform .35s var(--ease-out-expo);background:#ffffff1f;position:absolute;inset:0;transform:translate(-100%)}.call-btn:hover:before{transform:translate(0)}.call-btn:hover{transform:translateY(-3px);box-shadow:0 10px 28px #0000002e}[data-theme=dark] .call-btn:hover{box-shadow:0 10px 28px #00000073}.mini{background:hsl(var(--muted));border-radius:999px;flex-shrink:0;width:1.4rem;height:1.4rem;position:relative;overflow:hidden}.mini img{object-fit:cover;width:100%;height:100%}.mini .fallback-initials{color:#fff;font-size:.58rem}.footer{border-top:1px solid hsl(var(--border) / .5);margin-top:1rem;padding:2.5rem 0}.footer-inner{text-align:center;flex-direction:column;align-items:center;gap:1.5rem;display:flex}.footer-inner p{color:hsl(var(--fg));font-size:.88rem}.footer-inner small{color:hsl(var(--muted));font-size:.8rem}.footer-links{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.footer-links a{background:hsl(var(--secondary));min-width:2.5rem;min-height:2.5rem;color:hsl(var(--muted));border:1px solid hsl(var(--border));transition:color .16s ease, border-color .16s ease, transform .25s var(--ease-out-expo);border-radius:999px;justify-content:center;align-items:center;padding:0 .75rem;font-size:.75rem;display:inline-flex}.footer-links a:hover{color:hsl(var(--fg));border-color:hsl(var(--muted) / .4);transform:translateY(-2px)}.copyright{color:hsl(var(--muted));font-size:.78rem}.reveal{opacity:0;will-change:opacity, transform;transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1);transform:translateY(22px)}.reveal.visible{opacity:1;transform:translateY(0)}.work-list article.reveal,.oss-full-list .oss-full-card.reveal,.blog-list .blog-card.reveal,.project-card-modern.reveal,.oss-card-modern.reveal,.blog-item-modern.reveal,.resume-card-modern.reveal{transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1),box-shadow .3s,border-color .22s;transform:translateY(32px)}.about-grid article:nth-child(odd){opacity:0;transition:opacity .6s var(--ease-out-expo), transform .6s var(--ease-out-expo);transform:translate(-18px)}.about-grid article:nth-child(2n){opacity:0;transition:opacity .6s 80ms var(--ease-out-expo), transform .6s 80ms var(--ease-out-expo);transform:translate(18px)}.about-grid article.visible{opacity:1;transform:translate(0)}.heatmap-card{opacity:0;transition:opacity .7s var(--ease-out-expo), transform .7s var(--ease-out-expo);transform:scale(.98)}.reveal.visible .heatmap-card{opacity:1;transform:scale(1)}@media (min-width:640px){.banner{aspect-ratio:21/9}.avatar-wrap{margin-top:-3.4rem;padding-left:1.5rem}.avatar{width:6rem;height:6rem}.footer-inner{text-align:left;flex-direction:row;justify-content:space-between;align-items:center}.about-grid,.blog-list{grid-template-columns:1fr 1fr}.blog-list .blog-card:last-child,.copyright{grid-column:1/-1}}@media (min-width:1024px){.avatar{width:7rem;height:7rem}}@media (max-width:760px){.nav-links{gap:.72rem}.nav-links a{font-size:.76rem}}@media (max-width:640px){.nav-links{display:none}.menu-btn{display:inline-flex}}@media (max-width:520px){.container-narrow{padding:0 1rem}.brand{font-size:.94rem}.nav-links{gap:.58rem}.nav-links a{font-size:.74rem}.stack-item{width:4rem}.stack-item i{width:3.2rem;height:3.2rem;font-size:1.5rem}.signature-svg{max-width:280px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-delay:0s!important}.reveal,.about-grid article,.heatmap-card{opacity:1;transform:none}.sig-text{stroke-dashoffset:0;fill-opacity:1;stroke-width:0}.signature-wrap{animation:none}.signature-svg{filter:none;animation:none}.social-pills a,.subtitle,.cell{opacity:1}.page-title,.page-subtitle{opacity:1;animation:none;transform:none}.section h2:after{transform:scaleX(1)}}.oss-list{gap:1rem;margin-top:1.2rem;display:grid}.oss-card{border:1px solid hsl(var(--border));background:hsl(var(--card));transition:border-color .22s ease, transform .3s var(--ease-out-expo), box-shadow .3s ease;color:inherit;border-radius:.9rem;flex-direction:column;gap:.6rem;padding:1.15rem;text-decoration:none;display:flex;position:relative;overflow:hidden}.oss-card:before{content:"";background:linear-gradient(135deg, hsl(var(--accent) / .06), transparent 55%);opacity:0;transition:opacity .25s;position:absolute;inset:0}.oss-card:hover:before{opacity:1}.oss-card:hover{border-color:hsl(var(--accent) / .4);transform:translateY(-4px);box-shadow:0 12px 32px #00000017}[data-theme=dark] .oss-card:hover{box-shadow:0 12px 32px #00000059}.oss-card-head{justify-content:space-between;align-items:flex-start;gap:.75rem;display:flex}.oss-repo{align-items:center;gap:.5rem;display:flex}.oss-repo-icon{border:1px solid hsl(var(--border));background:hsl(var(--secondary));border-radius:.5rem;flex-shrink:0;place-items:center;width:2rem;height:2rem;transition:border-color .22s;display:grid}.oss-card:hover .oss-repo-icon{border-color:hsl(var(--accent) / .5)}.oss-repo-icon svg{width:1rem;height:1rem;color:hsl(var(--muted))}.oss-repo-name{color:hsl(var(--muted));letter-spacing:.01em;font-size:.72rem;font-weight:500;line-height:1.2}.oss-repo-name strong{color:hsl(var(--fg));font-size:.82rem;font-weight:600;display:block}.oss-arrow{color:hsl(var(--accent));opacity:0;transition:opacity .2s ease, transform .25s var(--ease-out-expo);flex-shrink:0;font-size:1rem;transform:translate(-5px,5px)}.oss-card:hover .oss-arrow{opacity:1;transform:translate(0)}.oss-title{letter-spacing:-.01em;font-size:.96rem;font-weight:600;line-height:1.4}.oss-desc{color:hsl(var(--muted));font-size:.87rem;line-height:1.65}.oss-meta{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.2rem;display:flex}.oss-badge{border:1px solid hsl(var(--border));background:hsl(var(--secondary));color:hsl(var(--muted));border-radius:999px;align-items:center;gap:.3rem;padding:.2rem .55rem;font-size:.68rem;font-weight:500;transition:color .16s,border-color .16s;display:inline-flex}.oss-badge.merged{color:#a670db;background:#8c47d114;border-color:#8c47d159}.oss-badge.open{color:#39c66d;background:#2eb86014;border-color:#2eb86059}.oss-badge svg{width:.7rem;height:.7rem}@media (min-width:640px){.oss-list{grid-template-columns:1fr 1fr}}.oss-full-list{gap:1rem;margin-top:1.2rem;display:grid}.oss-full-card a{border:1px solid hsl(var(--border));background:hsl(var(--card));transition:border-color .22s ease, transform .3s var(--ease-out-expo), box-shadow .3s ease;color:inherit;border-radius:.9rem;padding:1.15rem;text-decoration:none;display:block;position:relative;overflow:hidden}.oss-full-card a:before{content:"";background:linear-gradient(135deg, hsl(var(--accent) / .05), transparent 60%);opacity:0;transition:opacity .25s;position:absolute;inset:0}.oss-full-card a:hover:before{opacity:1}.oss-full-card a:hover{border-color:hsl(var(--accent) / .35);transform:translateY(-4px);box-shadow:0 12px 32px #00000017}[data-theme=dark] .oss-full-card a:hover{box-shadow:0 12px 32px #00000052}.oss-full-head{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.oss-full-repo{align-items:center;gap:.55rem;display:flex}.oss-full-repo .oss-repo-name{color:hsl(var(--muted));font-size:.78rem;font-weight:400}.oss-full-repo .oss-repo-name strong{color:hsl(var(--muted));font-weight:600}.oss-full-card h3{letter-spacing:-.01em;margin-bottom:.45rem;font-size:.98rem;font-weight:600}.oss-full-card p{color:hsl(var(--muted));margin-top:0;font-size:.88rem;line-height:1.65}.oss-full-card ul{flex-wrap:wrap;gap:.4rem;margin-top:.8rem;list-style:none;display:flex}.oss-full-card li{border:1px solid hsl(var(--border));background:hsl(var(--secondary));color:hsl(var(--muted));border-radius:999px;padding:.18rem .58rem;font-size:.7rem;transition:color .16s,border-color .16s}.oss-full-card a:hover li{color:hsl(var(--fg));border-color:hsl(var(--muted) / .3)}.oss-full-card .oss-meta{margin-top:.85rem}.oss-full-card .oss-arrow{color:hsl(var(--accent));opacity:0;transition:opacity .2s ease, transform .25s var(--ease-out-expo);flex-shrink:0;font-size:1rem;transform:translate(-5px,5px)}.oss-full-card a:hover .oss-arrow{opacity:1;transform:translate(0)}.resume-card{border:1px solid hsl(var(--border));background:hsl(var(--card));border-radius:.9rem;grid-template-rows:1fr auto;margin-top:1.2rem;transition:border-color .22s,box-shadow .3s;display:grid;overflow:hidden}.resume-card:hover{border-color:hsl(var(--accent) / .35);box-shadow:0 12px 40px #00000017}[data-theme=dark] .resume-card:hover{box-shadow:0 12px 40px #00000059}.resume-preview{background:hsl(var(--secondary));border-bottom:1px solid hsl(var(--border));width:100%;height:480px;position:relative}.resume-preview object{border:none;width:100%;height:100%;display:block}.resume-fallback{color:hsl(var(--muted));flex-direction:column;justify-content:center;align-items:center;gap:.75rem;display:flex;position:absolute;inset:0}.resume-fallback svg{opacity:.5;width:3rem;height:3rem}.resume-fallback p{margin:0;font-size:.85rem}.resume-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.15rem;display:flex}.resume-info{align-items:center;gap:.65rem;display:flex}.resume-file-icon{background:hsl(var(--accent) / .1);border:1px solid hsl(var(--accent) / .2);border-radius:.55rem;flex-shrink:0;place-items:center;width:2.4rem;height:2.4rem;transition:background .2s,border-color .2s;display:grid}.resume-card:hover .resume-file-icon{background:hsl(var(--accent) / .15);border-color:hsl(var(--accent) / .35)}.resume-file-icon svg{width:1.15rem;height:1.15rem;color:hsl(var(--accent))}.resume-filename{color:hsl(var(--fg));font-size:.88rem;font-weight:600;line-height:1.3;margin:0!important}.resume-size{color:hsl(var(--muted));font-size:.72rem;margin:.1rem 0 0!important}.resume-btns{align-items:center;gap:.5rem;display:flex}.resume-btn{transition:transform .28s var(--ease-out-expo), box-shadow .28s ease, background .18s ease, color .18s ease, border-color .18s ease;cursor:pointer;white-space:nowrap;border-radius:.6rem;align-items:center;gap:.4rem;padding:.5rem 1rem;font-size:.8rem;font-weight:500;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.resume-btn svg{flex-shrink:0;width:.95rem;height:.95rem}.resume-btn.primary{background:hsl(var(--fg));color:hsl(var(--bg));border:1px solid #0000}.resume-btn.primary:before{content:"";transition:transform .35s var(--ease-out-expo);background:#ffffff1f;position:absolute;inset:0;transform:translate(-100%)}.resume-btn.primary:hover:before{transform:translate(0)}.resume-btn.primary:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000002e}[data-theme=dark] .resume-btn.primary:hover{box-shadow:0 8px 24px #00000073}.resume-btn.secondary{background:hsl(var(--card));color:hsl(var(--muted));border:1px solid hsl(var(--border))}.resume-btn.secondary:hover{color:hsl(var(--fg));background:hsl(var(--secondary));border-color:hsl(var(--muted) / .4);transform:translateY(-2px)}.resume-card{opacity:0;transition:opacity .7s var(--ease-out-expo), transform .7s var(--ease-out-expo), border-color .22s ease, box-shadow .3s ease;transform:scale(.98)}.reveal.visible .resume-card{opacity:1;transform:scale(1)}@media (max-width:520px){.resume-preview{height:320px}.resume-actions{flex-direction:column;align-items:stretch;gap:.75rem}.resume-btns{width:100%}.resume-btn{flex:1;justify-content:center}}@media (prefers-reduced-motion:reduce){.resume-card{opacity:1;transform:none}}.project-list-modern{flex-direction:column;gap:1.5rem;display:flex}.project-card-modern{border:1px dashed hsl(var(--border) / .6);background:0 0;grid-template-columns:1fr;gap:1.5rem;padding:1rem;transition:border-color .22s;display:grid}@media (min-width:768px){.project-card-modern{grid-template-columns:320px 1fr}}.project-card-modern:hover{border-color:hsl(var(--muted) / .5)}.project-image-wrap{border:1px solid hsl(var(--border));background:hsl(var(--secondary));aspect-ratio:16/10;border-radius:.2rem;position:relative;overflow:hidden}.project-image-wrap img{object-fit:cover;width:100%;height:100%;transition:transform .3s}.project-card-modern:hover .project-image-wrap img{transform:scale(1.03)}.project-content-modern{flex-direction:column;display:flex}.project-head-modern{justify-content:space-between;align-items:flex-start;margin-bottom:.5rem;display:flex}.project-title-modern{color:hsl(var(--fg));align-items:center;gap:.5rem;font-size:1.1rem;font-weight:400;display:flex}.project-title-modern span.icon{font-size:1.1rem}.project-links-modern{gap:.5rem;display:flex}.project-links-modern a{color:hsl(var(--muted));border:1px solid hsl(var(--border));border-radius:.2rem;padding:.2rem .6rem;font-size:.75rem;transition:all .2s}.project-links-modern a:hover{color:hsl(var(--fg));border-color:hsl(var(--muted));background:hsl(var(--secondary))}.project-desc-modern{color:hsl(var(--muted));margin-bottom:1.2rem;font-size:.88rem;line-height:1.6}.project-tech-label{color:hsl(var(--fg));margin-bottom:.6rem;font-size:.85rem}.project-tech-list{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.project-tech-list li{background:hsl(var(--secondary));border:1px solid hsl(var(--border));color:hsl(var(--muted));border-radius:.2rem;padding:.2rem .5rem;font-size:.72rem}.pill-label{border:1px dashed hsl(var(--border) / .6);color:hsl(var(--muted));border-radius:.1rem;margin-bottom:1.5rem;padding:.4rem .8rem;font-size:.85rem;display:inline-block}.blog-list-modern{flex-direction:column;gap:2rem;display:flex}.blog-item-modern{flex-direction:column;gap:.4rem;text-decoration:none;display:flex}.blog-item-head{justify-content:space-between;align-items:baseline;display:flex}.blog-item-title{color:hsl(var(--fg));margin:0;font-size:1.05rem;font-weight:400;line-height:1.4;transition:color .2s}.blog-item-modern:hover .blog-item-title{color:hsl(var(--accent))}.blog-item-title svg{vertical-align:middle;opacity:.5;width:.9rem;height:.9rem;margin-bottom:.15rem;margin-left:.4rem;transition:opacity .2s,transform .2s;display:inline-block}.blog-item-modern:hover .blog-item-title svg{opacity:1;transform:translate(2px,-2px)}.blog-item-date{color:hsl(var(--muted));align-items:center;gap:.4rem;font-size:.8rem;display:flex}.blog-item-date svg{width:.85rem;height:.85rem}.blog-item-desc{color:hsl(var(--muted));max-width:85%;margin:0;font-size:.88rem;line-height:1.6}.oss-list-modern{grid-template-columns:1fr;gap:1.5rem;display:grid}@media (min-width:768px){.oss-list-modern.two-col{grid-template-columns:1fr 1fr}}.oss-card-modern{border:1px dashed hsl(var(--border) / .6);color:inherit;background:0 0;border-radius:.2rem;flex-direction:column;gap:1rem;padding:1.25rem;text-decoration:none;transition:border-color .22s;display:flex}.oss-card-modern:hover{border-color:hsl(var(--muted) / .5)}[data-theme=light] .oss-card-modern:hover{border-color:#3b82f666;box-shadow:0 4px 12px #3b82f60d}.oss-head-modern{justify-content:space-between;align-items:flex-start;display:flex}.oss-repo-modern{align-items:center;gap:.8rem;display:flex}.oss-repo-icon-modern{border:1px solid hsl(var(--border));background:hsl(var(--secondary));width:2.5rem;height:2.5rem;color:hsl(var(--fg));border-radius:.25rem;place-items:center;display:grid}.oss-repo-icon-modern svg{width:1.25rem;height:1.25rem}.oss-repo-name-modern{color:hsl(var(--muted));font-size:.85rem;line-height:1.3}.oss-repo-name-modern strong{color:hsl(var(--fg));font-size:1rem;font-weight:500;display:block}.oss-arrow-modern{color:hsl(var(--accent));opacity:0;transition:opacity .2s,transform .2s;transform:translate(-4px,4px)}.oss-card-modern:hover .oss-arrow-modern{opacity:1;transform:translate(0)}.oss-title-modern{color:hsl(var(--fg));font-size:1.05rem;font-weight:400}.oss-desc-modern{color:hsl(var(--muted));font-size:.88rem;line-height:1.6}.oss-meta-modern{flex-wrap:wrap;gap:.5rem;margin-top:.2rem;display:flex}.resume-card-modern{border:1px dashed hsl(var(--border) / .6);background:0 0;border-radius:.2rem;flex-direction:column;gap:1.5rem;padding:1.5rem;transition:border-color .22s;display:flex}.resume-card-modern:hover{border-color:hsl(var(--muted) / .5)}.resume-preview-modern{background:hsl(var(--secondary) / .5);border:1px solid hsl(var(--border));border-radius:.2rem;width:100%;height:480px;position:relative;overflow:hidden}.resume-preview-modern object{border:none;width:100%;height:100%;display:block}.resume-actions-modern{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.resume-info-modern{align-items:center;gap:.75rem;display:flex}.resume-info-modern svg{width:2rem;height:2rem;color:hsl(var(--muted))}.resume-info-modern .resume-filename{color:hsl(var(--fg));font-size:.95rem;font-weight:500}.resume-info-modern .resume-size{color:hsl(var(--muted));font-size:.8rem}.resume-btns-modern{gap:.75rem;display:flex}.resume-btns-modern a{border-radius:.2rem;align-items:center;gap:.4rem;padding:.4rem 1rem;font-size:.85rem;transition:all .2s;display:inline-flex}.resume-btns-modern a svg{width:1rem;height:1rem}.resume-btns-modern a.primary{background:hsl(var(--fg));color:hsl(var(--bg));border:1px solid hsl(var(--fg))}.resume-btns-modern a.primary:hover{color:hsl(var(--fg));background:0 0}.resume-btns-modern a.secondary{color:hsl(var(--fg));border:1px solid hsl(var(--border));background:0 0}.resume-btns-modern a.secondary:hover{border-color:hsl(var(--muted));background:hsl(var(--secondary))}.section-title-modern{width:fit-content;color:hsl(var(--fg));margin-bottom:1.5rem;padding:.2rem .5rem;font-size:1.1rem;font-weight:500;position:relative}.section-title-modern .corner-dots{background:hsl(var(--secondary) / .3);z-index:0;width:100%;height:100%;position:absolute;inset:0}.section-title-modern .dot{background:hsl(var(--muted) / .8);border-radius:50%;width:4px;height:4px;animation:2s cubic-bezier(.4,0,.6,1) infinite pulse-dot;position:absolute}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.3}}.section-title-modern .dot.top-left{top:-2px;left:-2px}.section-title-modern .dot.top-right{top:-2px;right:-2px}.section-title-modern .dot.bottom-left{bottom:-2px;left:-2px}.section-title-modern .dot.bottom-right{bottom:-2px;right:-2px}.section-title-modern .title-text{z-index:1;position:relative}.project-card-modern:hover .project-icon-modern{transform:scale(1.05)rotate(-2deg)}.project-icon-modern{transition:transform .3s cubic-bezier(.22,1,.36,1)}.project-card-modern.reveal:first-child{transition-delay:80ms}.project-card-modern.reveal:nth-child(2){transition-delay:.16s}.project-card-modern.reveal:nth-child(3){transition-delay:.24s}.project-card-modern.reveal:nth-child(4){transition-delay:.32s}.oss-card-modern.reveal:first-child{transition-delay:80ms}.oss-card-modern.reveal:nth-child(2){transition-delay:.16s}.oss-card-modern.reveal:nth-child(3){transition-delay:.24s}.blog-item-modern.reveal:first-child{transition-delay:80ms}.blog-item-modern.reveal:nth-child(2){transition-delay:.16s}.blog-item-modern.reveal:nth-child(3){transition-delay:.24s}.osc-section{margin-top:2rem;font-family:Inter,system-ui,sans-serif}.osc-header{border-bottom:1px dashed hsl(var(--border));flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:0;padding-bottom:1.5rem;display:flex}.osc-title{color:hsl(var(--fg));font-size:1.5rem;font-weight:600}.osc-toggle-group{background:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:8px;gap:4px;padding:4px;display:flex}.osc-toggle-btn{color:hsl(var(--muted));cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 14px;font-size:.85rem;font-weight:500;transition:all .2s}.osc-toggle-btn:hover{color:hsl(var(--fg))}.osc-toggle-btn.active{color:hsl(var(--fg));background:hsl(var(--secondary));box-shadow:0 1px 2px #0000000d}.osc-list{flex-direction:column;display:flex}.osc-row{border-bottom:1px dashed hsl(var(--border));align-items:flex-start;gap:16px;padding:20px 0;text-decoration:none;transition:opacity .2s;display:flex}.osc-row:last-child{border-bottom:none}.osc-row:hover{opacity:.7}.osc-dot-container{padding-top:6px}.osc-dot{border-radius:50%;width:10px;height:10px;display:inline-block}.osc-dot.merged{background-color:#a855f7;box-shadow:0 0 10px #a855f780}.osc-dot.open{background-color:#22c55e;box-shadow:0 0 10px #22c55e80}.osc-dot.closed{background-color:#ef4444;box-shadow:0 0 10px #ef444480}.osc-content{flex:1}.osc-item-title{color:hsl(var(--fg));margin-bottom:4px;font-size:1rem;font-weight:500;line-height:1.4}.osc-item-repo{color:hsl(var(--muted));font-size:.85rem}.osc-empty{text-align:center;color:hsl(var(--muted));padding:40px 0;font-size:.95rem;font-style:italic}.osc-footer{border-top:1px dashed hsl(var(--border));justify-content:center;padding-top:1.5rem;display:flex}.osc-view-all{color:hsl(var(--muted));border:1px solid hsl(var(--border));cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:6px;padding:8px 16px;font-size:.85rem;font-weight:500;text-decoration:none;transition:all .2s;display:inline-flex}.osc-view-all:hover{color:hsl(var(--fg));background:hsl(var(--card));border-color:hsl(var(--muted))}.tech-stack-section{border-top:1px dashed hsl(var(--border));border-bottom:1px dashed hsl(var(--border));margin:4rem 0;padding:2rem 0}.tech-stack-header{margin-bottom:2rem}.tech-stack-title{color:hsl(var(--fg));border:1px dashed hsl(var(--border));border-radius:4px;margin-bottom:1rem;padding:4px 12px;font-size:.85rem;font-weight:600;display:inline-block}.tech-stack-desc{color:hsl(var(--muted));font-size:.95rem}.marquee-container{width:100%;display:flex;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 5% 95%,#0000);mask-image:linear-gradient(90deg,#0000,#000 5% 95%,#0000)}.marquee-content{gap:1rem;min-width:200%;animation:30s linear infinite marquee;display:flex}.marquee-content:hover{animation-play-state:paused}.tech-card{background:hsl(var(--card));border:1px solid hsl(var(--border));cursor:pointer;border-radius:12px;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:12px;width:110px;height:110px;transition:all .3s;display:flex}.tech-card:hover{background:hsl(var(--secondary));border-color:hsl(var(--muted));transform:translateY(-2px)}.tech-card i{font-size:2.2rem}.tech-card span{color:hsl(var(--muted));font-size:.75rem;font-weight:500}.blog-layout{align-items:flex-start;gap:4rem;max-width:1100px;margin:0 auto;padding:8rem 2rem 4rem;display:flex}.blog-sidebar{flex-direction:column;flex-shrink:0;align-self:flex-start;gap:2rem;width:250px;height:max-content;max-height:calc(100vh - 10rem);display:flex;position:sticky;top:8rem;overflow-y:auto}.back-btn{color:hsl(var(--muted));align-items:center;gap:8px;font-weight:500;text-decoration:none;transition:color .2s;display:inline-flex}.back-btn:hover{color:hsl(var(--fg))}.tldr-section h4{text-transform:uppercase;letter-spacing:.05em;color:hsl(var(--fg));margin-bottom:1rem;font-size:.85rem}.tldr-section ul{flex-direction:column;gap:.75rem;list-style:none;display:flex}.tldr-section li{color:hsl(var(--muted));font-size:.9rem;line-height:1.4}.blog-article{flex:1;max-width:700px}.blog-header{margin-bottom:3rem}.blog-meta{color:hsl(var(--muted));text-transform:uppercase;letter-spacing:.05em;margin-bottom:1.5rem;font-size:.85rem}.blog-title{color:hsl(var(--fg));margin-bottom:1.5rem;font-size:2.5rem;font-weight:700;line-height:1.2}.blog-subtitle{color:hsl(var(--muted));font-size:1.25rem;line-height:1.6}.blog-content{color:hsl(var(--fg) / .9);font-size:1.15rem;line-height:1.85}.blog-content p{color:hsl(var(--fg) / .85);margin-bottom:1.75rem}.blog-content h2{color:hsl(var(--fg));letter-spacing:-.02em;margin-top:3.5rem;margin-bottom:1.5rem;font-size:1.85rem;font-weight:700}.blog-content h3{color:hsl(var(--fg));letter-spacing:-.01em;margin-top:2.5rem;margin-bottom:1rem;font-size:1.4rem;font-weight:600}.blog-content ul{margin-bottom:1.75rem;padding-left:1.5rem;list-style-type:disc}.blog-content li{color:hsl(var(--fg) / .85);margin-bottom:.75rem;padding-left:.25rem}.blog-content strong{color:hsl(var(--fg));font-weight:600}.blog-content a{color:hsl(var(--accent));text-underline-offset:4px;text-decoration:underline;-webkit-text-decoration-color:hsl(var(--accent) / .4);text-decoration-color:hsl(var(--accent) / .4);transition:all .2s}.blog-content a:hover{-webkit-text-decoration-color:hsl(var(--accent));text-decoration-color:hsl(var(--accent));color:hsl(var(--accent))}.blog-content pre:not(.code-block-pre){background:hsl(var(--secondary) / .5);border:1px solid hsl(var(--border));border-radius:8px;margin:2rem 0;padding:1.25rem;font-size:.95rem;line-height:1.6;overflow-x:auto}.blog-content code{color:hsl(var(--fg));font-family:JetBrains Mono,Consolas,monospace}.blog-content p code,.blog-content li code{background:hsl(var(--secondary));color:hsl(var(--fg));border:1px solid hsl(var(--border));border-radius:4px;padding:.25rem .4rem;font-size:.9em}@media (max-width:900px){.blog-layout{flex-direction:column;gap:2rem;padding:6rem 1.5rem 3rem}.blog-sidebar{border-bottom:1px dashed hsl(var(--border));width:100%;margin-bottom:2rem;padding-bottom:2rem;position:static}}.code-block-wrapper{background-color:hsl(var(--card));border:1px solid hsl(var(--border));border-radius:8px;margin:2rem 0;overflow:hidden;box-shadow:0 4px 20px #0000001a}.code-block-header{background-color:hsl(var(--secondary));border-bottom:1px solid hsl(var(--border));justify-content:space-between;align-items:center;padding:8px 16px;display:flex}.code-block-lang{font-family:var(--font-mono);color:hsl(var(--muted));text-transform:uppercase;letter-spacing:.05em;font-size:.75rem}.copy-button{color:hsl(var(--muted));cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;align-items:center;gap:6px;padding:4px 8px;font-size:.75rem;transition:all .2s;display:flex}.copy-button:hover{background:hsl(var(--border));color:hsl(var(--fg))}.copy-button.copied{color:#10b981}.code-block-pre{color:hsl(var(--fg));font-size:.875rem;line-height:1.6;font-family:var(--font-mono);margin:0;padding:16px;overflow-x:auto}.toc-title{text-transform:uppercase;letter-spacing:.05em;color:hsl(var(--muted));margin-bottom:1rem;font-size:.75rem;font-weight:700}.toc-list{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.toc-link{color:hsl(var(--muted));font-size:.875rem;text-decoration:none;transition:all .2s;display:inline-block;position:relative}.toc-link:hover{color:hsl(var(--fg))}.toc-link.active{color:hsl(var(--fg));font-weight:600}.tool-item{background:hsl(var(--secondary));border:1px solid hsl(var(--border));border-radius:12px;margin-bottom:1.5rem;padding:1.5rem;transition:background .2s,border-color .2s}.tool-item:hover{background:hsl(var(--card));border-color:hsl(var(--border))}.tool-item h3{color:hsl(var(--fg));flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:0;margin-bottom:.75rem;font-size:1.2rem;font-weight:600;display:flex}.tool-item p{color:hsl(var(--muted));margin:0;font-size:1.05rem;line-height:1.6}.badge{text-transform:uppercase;letter-spacing:.05em;font-size:.7rem;font-weight:700;font-family:var(--font-mono);border-radius:12px;padding:3px 10px;margin-bottom:0!important}.badge-blue{color:#2563eb;background:#3b82f61a}.badge-gray{color:#4b5563;background:#9ca3af1a}.badge-yellow{color:#ca8a04;background:#eab3081a}.badge-green{color:#059669;background:#10b9811a}.badge-purple{color:#9333ea;background:#a855f71a}.badge-red{color:#dc2626;background:#ef44441a}[data-theme=dark] .badge-blue{color:#60a5fa;background:#3b82f626}[data-theme=dark] .badge-gray{color:#9ca3af;background:#9ca3af26}[data-theme=dark] .badge-yellow{color:#facc15;background:#eab30826}[data-theme=dark] .badge-green{color:#34d399;background:#10b98126}[data-theme=dark] .badge-purple{color:#c084fc;background:#a855f726}[data-theme=dark] .badge-red{color:#f87171;background:#ef444426}.column-list{color:hsl(var(--muted));background:hsl(var(--secondary));border:1px solid hsl(var(--border));border-radius:8px;padding:1rem;font-size:.875rem;line-height:1.8}@media (max-width:768px){html{font-size:14px}.container,.container-narrow{padding:0 1rem}.page-title{font-size:2rem!important}.page-subtitle{font-size:.95rem!important}.avatar-wrap{width:100px;height:100px;margin-top:-50px}.project-card-modern,.oss-card-modern,.blog-item-modern{flex-direction:column;padding:1.25rem}.blog-layout{gap:1.5rem!important;padding:5rem 1rem 2rem!important}.blog-sidebar{display:none}.blog-header .blog-title{font-size:1.7rem;line-height:1.25}.blog-content h2{margin-top:2rem;font-size:1.4rem}.blog-content h3{font-size:1.2rem}.tool-item{padding:1rem!important}.code-block-wrapper{border-left:none!important;border-right:none!important;border-radius:0!important;margin:1.5rem -1rem!important}.code-block-wrapper pre{padding:1rem!important;font-size:.85rem!important}.blog-layout{flex-direction:column!important;width:100%!important;padding:2rem 1rem!important}.blog-article{width:100%!important;min-width:0!important;max-width:100%!important}}body.hide-oneko #oneko{display:none!important}
