.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}:root{color-scheme:dark;--page-x-pad: 2rem;--body-font: "Geist", system-ui, sans-serif;--head-font: "Geist", system-ui, sans-serif;--mono-font: "Geist Mono", ui-monospace, monospace;--ease-out: cubic-bezier(.16, 1, .3, 1);--bg: #070C16;--text: #E6EDF7;--muted: #8496AD;--accent: #38BDF8;--accent-2: #3B82F6;--on-accent: #04131F;--surface: #0F1726;--border: #1C2A3F;--grad: linear-gradient(135deg, #38BDF8 0%, #3B82F6 100%);--btn-grad: linear-gradient(135deg, #0369A1 0%, #1D4ED8 100%);--on-btn: #F8FAFC;--glow: rgba(56, 189, 248, .16);--toggle-glow: rgba(56, 189, 248, .45);--success-bg: #0a1f14;--success-border: #16a34a;--success-text: #bbf7d0;--success-bar: #16a34a;--error-bg: #1a0f0f;--error-border: #dc2626;--error-text: #fecaca;--error-bar: #dc2626}[data-theme=light]{color-scheme:light;--bg: #F1F6FB;--text: #0C1A2E;--muted: #566A82;--accent: #0369A1;--accent-2: #1D4ED8;--on-accent: #F8FAFC;--surface: #FFFFFF;--border: #CFDCEA;--grad: linear-gradient(135deg, #0284C7 0%, #1D4ED8 100%);--glow: rgba(2, 132, 199, .14);--toggle-glow: rgba(2, 132, 199, .35);--success-bg: #f0fdf4;--success-border: #16a34a;--success-text: #15803d;--success-bar: #16a34a;--error-bg: #fef2f2;--error-border: #dc2626;--error-text: #b91c1c;--error-bar: #dc2626}*{margin:0;padding:0;box-sizing:border-box}html{overflow-x:hidden}body{background:var(--bg);color:var(--text);font-family:var(--body-font);font-size:1rem;line-height:1.6;min-height:100dvh;display:flex;flex-direction:column;position:relative}main{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:0 var(--page-x-pad)}h1,h2,h3{font-family:var(--head-font);line-height:1.1;letter-spacing:-.03em;font-weight:600;text-wrap:balance}p{text-wrap:pretty}nav{display:flex;justify-content:space-between;align-items:center;gap:1rem;height:64px;padding:0 var(--page-x-pad);position:sticky;top:0;z-index:100;background:color-mix(in srgb,var(--bg) 78%,transparent);-webkit-backdrop-filter:blur(14px) saturate(140%);backdrop-filter:blur(14px) saturate(140%);border-bottom:1px solid var(--border)}.scroll-progress{position:fixed;inset:0 0 auto;height:2px;z-index:101;background:var(--grad);transform-origin:0 50%;transform:scaleX(0);animation:grow linear both;animation-timeline:scroll(root)}@keyframes grow{to{transform:scaleX(1)}}.logo{display:flex;align-items:center;gap:.6rem;font-family:var(--head-font);font-weight:700;font-size:1.05rem;letter-spacing:.06em;color:var(--text);text-decoration:none}.logo-mark{width:34px;height:34px;border-radius:10px;object-fit:cover;transition:transform .5s var(--ease-out)}.logo:hover .logo-mark{transform:rotate(-6deg) scale(1.06)}.logo-mark-light,[data-theme=light] .logo-mark-dark{display:none}[data-theme=light] .logo-mark-light{display:block}.nav-links{display:flex;gap:.25rem;margin-left:auto}.nav-links a{position:relative;font-family:var(--mono-font);font-size:.8rem;color:var(--muted);padding:.5rem .8rem;transition:color .2s ease;white-space:nowrap}.nav-links a:after{content:"";position:absolute;left:.8rem;right:.8rem;bottom:.25rem;height:2px;border-radius:2px;background:var(--grad);transform:scaleX(0);transform-origin:0 50%;transition:transform .35s var(--ease-out)}.nav-links a:hover{color:var(--text)}.nav-links a:hover:after,.nav-links .nav-link.active:after{transform:scaleX(1)}.nav-links .nav-link.active{color:var(--text)}.hamburger{display:none;background:none;border:none;color:var(--text);cursor:pointer}.hamburger svg{width:26px;height:26px}footer{border-top:1px solid var(--border);width:100%}.footer-inner{display:flex;align-items:center;justify-content:space-between;max-width:1100px;width:100%;margin:0 auto;padding:1.5rem var(--page-x-pad)}.footer-links{display:flex;gap:1.25rem}.footer-links a{font-family:var(--mono-font);font-size:.78rem;color:var(--muted);text-decoration:none;transition:color .2s ease}.footer-links a:hover{color:var(--accent)}.footer-socials{display:flex;gap:.75rem}.footer-socials a{color:var(--muted);text-decoration:none;transition:color .2s ease;display:flex;align-items:center}.footer-socials a:hover{color:var(--accent)}.footer-socials svg{width:22px;height:22px}.footer-bottom{text-align:center;font-size:.78rem;color:var(--muted);padding:0rem 0 1rem}@keyframes fadeUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.fade-up-delay-1{opacity:0;animation:fadeUp .6s ease .1s forwards}.fade-up-delay-2{opacity:0;animation:fadeUp .6s ease .2s forwards}.fade-up-delay-3{opacity:0;animation:fadeUp .6s ease .3s forwards}.fade-up-delay-4{opacity:0;animation:fadeUp .6s ease .4s forwards}.fade-up-delay-5{opacity:0;animation:fadeUp .6s ease .5s forwards}.shimmer-wrap:before{content:"";position:absolute;inset:0;background-color:var(--surface);background-image:linear-gradient(115deg,transparent 25%,color-mix(in srgb,var(--accent) 35%,transparent) 50%,transparent 75%);background-size:200% 100%;animation:shimmerSweep 1.6s ease-in-out infinite}.shimmer-wrap.loaded:before{content:none}.shimmer-wrap img{opacity:0;transition:opacity .35s ease}.shimmer-wrap.loaded img{opacity:1}@keyframes shimmerSweep{0%{background-position:150% 0}to{background-position:-150% 0}}@media(prefers-reduced-motion:reduce){.shimmer-wrap:before{animation:none}}@media(max-width:768px){.hamburger{display:grid}.theme-toggle{margin-left:auto}.nav-links{display:none;flex-direction:column;position:absolute;top:100%;left:0;width:100%;background:var(--bg);padding:.75rem 1.25rem 1.25rem;border-bottom:1px solid var(--border);gap:0}.nav-links.open{display:flex}.nav-links a{align-self:flex-start;padding:.75rem 0;font-size:.9rem}.nav-links a:after{left:0;right:0;bottom:.45rem}main{padding:0 1.25rem}.footer-inner{flex-direction:column;align-items:center;text-align:center;gap:1.25rem;padding:1.5rem 1.25rem}.footer-links{flex-wrap:wrap;justify-content:center;gap:.75rem}}a{color:inherit;text-decoration:none}.reveal{opacity:0;transform:translateY(28px);transition:opacity .6s ease,transform .6s ease}.reveal.visible{opacity:1;transform:translateY(0)}.reveal-delay-1{transition-delay:.1s}.reveal-delay-2{transition-delay:.2s}.reveal-delay-3{transition-delay:.3s}.reveal-delay-4{transition-delay:.4s}.reveal-delay-5{transition-delay:.5s}.reveal.revealed{transition-delay:0s}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.project-prose a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.blog-header{padding:3.5rem 0 2rem}.blog-label{font-family:var(--mono-font);font-size:.75rem;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin-bottom:.75rem}.blog-header h1{font-size:clamp(2rem,5vw,3rem);margin-bottom:.75rem}.blog-subtitle{font-size:1rem;color:var(--muted);max-width:480px}.blog-controls{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.25rem}.blog-search{width:100%;padding:.65rem 1rem;background:var(--surface);border:1px solid var(--border);border-radius:10px;color:var(--text);font-family:var(--body-font);font-size:.95rem;outline:none;transition:border-color .2s ease}.blog-search::placeholder{color:var(--muted)}.blog-search:focus{border-color:var(--accent)}.tag-filters{display:flex;flex-wrap:wrap;gap:.5rem}.pill{font-family:var(--mono-font);font-size:.72rem;letter-spacing:.06em;padding:.3rem .85rem;border:1px solid var(--border);border-radius:999px;background:transparent;color:var(--muted);cursor:pointer;transition:all .2s ease}.pill:hover{border-color:var(--accent);color:var(--accent)}.pill.active{background:var(--accent);border-color:var(--accent);color:var(--bg)}.post-count{font-family:var(--mono-font);font-size:.75rem;color:var(--muted);margin-bottom:1.5rem}.posts-grid{display:flex;flex-direction:column;gap:1rem;padding-bottom:4rem}.post-card{display:flex;gap:1.25rem;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.1rem 1.25rem;text-decoration:none;color:var(--text);cursor:pointer;transition:transform .2s ease,border-color .2s ease}.post-card:hover{transform:translateY(-3px);border-color:var(--accent)}.post-card.hidden{display:none}.card-thumb{position:relative;flex-shrink:0;width:120px;height:84px;border-radius:8px;overflow:hidden;background:var(--bg)}.card-thumb img{width:100%;height:100%;object-fit:contain;background:var(--surface)}.card-thumb-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.card-body{display:flex;flex-direction:column;gap:.3rem;min-width:0}.card-title{font-family:var(--head-font);font-size:1.05rem;font-weight:700;line-height:1.3;color:var(--text)}.card-meta{font-family:var(--mono-font);font-size:.72rem;color:var(--muted)}.card-excerpt{font-size:.88rem;color:var(--muted);line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.card-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.2rem}.tag-chip{font-family:var(--mono-font);font-size:.68rem;letter-spacing:.05em;padding:.2rem .6rem;border-radius:999px;background:var(--bg);border:1px solid var(--border);color:var(--muted)}.post-page{padding:2.5rem 0 4rem}.post-breadcrumb{font-family:var(--mono-font);font-size:.78rem;color:var(--accent);display:inline-flex;align-items:center;gap:.35rem;margin-bottom:1.75rem;transition:opacity .2s ease}.post-breadcrumb:hover{opacity:.75}.post-header{margin-bottom:1.5rem}.post-header h1{font-size:clamp(1.8rem,4vw,2.75rem);line-height:1.15;margin-bottom:.75rem}.post-meta{font-family:var(--mono-font);font-size:.78rem;color:var(--muted);margin-bottom:.75rem}.post-tags{display:flex;flex-wrap:wrap;gap:.4rem}.post-cover{position:relative;width:100%;aspect-ratio:1200 / 630;overflow:hidden;border-radius:12px;margin-bottom:2rem;display:block}.post-cover img{width:100%;height:100%;object-fit:cover;display:block}.post-body{display:flex;gap:2.5rem;align-items:start}.post-body .prose{flex:1 1 0;min-width:0;max-width:720px}.prose{min-width:0;overflow-x:clip;font-size:1rem;line-height:1.75;color:var(--text);counter-reset:prose-section prose-subsection}.prose h2{font-size:1.5rem;margin:2rem 0 .75rem;padding-top:.5rem;border-top:1px solid var(--border);counter-increment:prose-section;counter-set:prose-subsection 0}.prose h2:before{content:counter(prose-section) ". ";color:var(--accent)!important;font-family:var(--mono-font);font-size:.9em}.prose h3{font-size:1.1rem;margin:1.5rem 0 .5rem;color:var(--muted);counter-increment:prose-subsection}.prose h3:before{content:counter(prose-section) "." counter(prose-subsection) " ";color:var(--muted);font-family:var(--mono-font);font-size:.85em}.prose hr{display:none}.prose table{display:block;width:fit-content;max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--muted) 45%,transparent) transparent;border-collapse:separate;border-spacing:0;border:1px solid var(--border);border-radius:12px;margin:1.5rem auto;font-size:.9rem}@media(min-width:769px){.prose table{display:table;width:100%;max-width:calc(68ch / .9);margin-left:0;overflow:visible}.prose th:first-child{border-top-left-radius:11px}.prose th:last-child{border-top-right-radius:11px}}.prose th,.prose td{padding:.6rem .9rem;border:0;border-bottom:1px solid var(--border);text-align:left}.prose tr:last-child td{border-bottom:0}.prose th{background:var(--surface);color:var(--accent);font-family:var(--mono-font);font-size:.75rem;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}.prose tr:nth-child(2n) td{background:color-mix(in srgb,var(--surface) 40%,transparent)}.prose img{max-width:100%;height:auto;border-radius:8px;display:block;margin:1.5rem auto}.prose p{margin-bottom:1.25rem;max-width:68ch}.prose ul,.prose ol{margin:0 0 1.25rem 1.5rem}.prose li{margin-bottom:.4rem}.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.prose strong{color:var(--text);font-weight:600}.prose pre{position:relative;background:#0d1117;border:1px solid #30363d;border-radius:10px;padding:1.25rem;margin:1.5rem 0;overflow-x:auto;font-size:.875rem;line-height:1.6}.prose code:not(pre code){background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.15em .4em;font-size:.875em;font-family:var(--mono-font)}.code-block{position:relative;margin:1.5rem 0}.code-block pre{margin:0}.copy-btn{position:absolute;top:.6rem;right:.6rem;padding:.25rem .65rem;background:#1e293b;border:1px solid #334155;border-radius:6px;color:#94a3b8;font-family:var(--mono-font);font-size:.7rem;cursor:pointer;transition:color .2s ease,border-color .2s ease;line-height:1.4}.copy-btn:hover,.copy-btn:focus-visible{color:var(--accent);border-color:var(--accent);outline:none}.copy-btn.copied{color:#22c55e;border-color:#22c55e}.toc-sidebar{position:sticky;top:5.5rem;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1rem;min-width:0;max-height:calc(100vh - 8rem);overflow-y:auto;width:260px}.toc-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.toc-title-text{font-family:var(--mono-font);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.toc-nav{list-style:none;display:flex;flex-direction:column;gap:.1rem}.toc-nav a{display:flex;gap:.4rem;font-size:.82rem;color:var(--muted);padding:.3rem .5rem;border-radius:6px;border-left:2px solid transparent;transition:color .15s ease,background .15s ease,border-color .15s ease;line-height:1.4}.toc-nav a:before{content:attr(data-prefix);color:var(--accent);font-family:var(--mono-font);font-size:.75em;flex-shrink:0;opacity:.8;padding-top:.1em}.toc-nav a:hover{color:var(--text);background:var(--bg)}.toc-nav a.active{color:var(--accent);border-left-color:var(--accent);background:var(--bg)}.toc-nav .toc-h3 a{padding-left:1.1rem;font-size:.78rem}.share-bar{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--border)}.share-label{font-family:var(--mono-font);font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.share-btn{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .9rem;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-family:var(--mono-font);font-size:.72rem;cursor:pointer;text-decoration:none;transition:border-color .2s ease,color .2s ease}.share-btn:hover{border-color:var(--accent);color:var(--accent)}.related-posts{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--border)}.related-posts h2{font-size:1.3rem;margin-bottom:1.25rem}.related-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem}@media(max-width:768px){.post-body{flex-direction:column}.post-body .prose{max-width:100%}.toc-sidebar{position:static;width:auto!important;max-width:100%;align-self:flex-start;order:-1;overflow-x:hidden;max-height:none}.card-thumb{width:80px;height:60px}.related-grid{grid-template-columns:1fr}}.btn,.btn-primary,.btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:46px;padding:.7rem 1.4rem;border-radius:12px;font-family:var(--body-font);font-size:.95rem;font-weight:600;text-decoration:none;white-space:nowrap;cursor:pointer;transition:transform .35s var(--ease-out),box-shadow .35s var(--ease-out),background-color .2s ease,border-color .2s ease,color .2s ease}.btn:active,.btn-primary:active,.btn-secondary:active{transform:translateY(1px) scale(.97);transition-duration:.08s}.btn-primary{background:var(--btn-grad);background-size:140% 100%;background-position:0 0;color:var(--on-btn);border:1px solid transparent}.btn-primary:hover{transform:translateY(-2px);background-position:100% 0;box-shadow:0 10px 28px -8px color-mix(in srgb,var(--accent-2) 70%,transparent)}.btn-outline,.btn-secondary{background:transparent;color:var(--text);border:1px solid var(--border)}.btn-outline:hover,.btn-secondary:hover{transform:translateY(-2px);border-color:var(--text)}.btn-arrow:after{content:"→";transition:transform .35s var(--ease-out)}.btn-arrow:hover:after{transform:translate(4px)}.hero{display:grid;grid-template-columns:1fr auto;align-items:center;gap:clamp(2rem,6vw,5rem);padding:clamp(3rem,9vw,6rem) 0 clamp(2.5rem,6vw,4rem)}.hero-role{font-family:var(--mono-font);font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:1.25rem}.hero h1{font-size:clamp(2.9rem,9.5vw,6.5rem);font-weight:600;line-height:.95;letter-spacing:-.05em;margin-bottom:1.5rem}.hero-first{display:block;color:color-mix(in srgb,var(--text) 78%,var(--bg));font-weight:400;font-size:.42em;letter-spacing:-.02em;margin-top:.6em}.hero-tagline{font-size:clamp(1.05rem,2.2vw,1.25rem);color:var(--muted);line-height:1.55;max-width:34ch;margin-bottom:2rem}.hero-ctas{display:flex;gap:.75rem;flex-wrap:wrap}.hero-photo-frame{position:relative;isolation:isolate}.hero-photo-frame:before{content:"";position:absolute;inset:-8px;border-radius:28px;background:var(--grad);filter:blur(26px);opacity:.4;z-index:-1;transition:opacity .6s var(--ease-out),transform .6s var(--ease-out)}.hero-photo-frame:hover:before{opacity:.65;transform:scale(1.04)}.hero-photo-wrap{position:relative;border:1px solid var(--border);width:clamp(220px,30vw,320px);aspect-ratio:4 / 5;border-radius:18px;overflow:hidden;background:var(--surface)}.hero-photo-wrap img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}.marquee{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;cursor:grab;border-block:1px solid var(--border);padding:1rem 0;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}.marquee-track{display:flex;gap:3rem;width:max-content;list-style:none}.marquee::-webkit-scrollbar{display:none}.marquee-track li{font-family:var(--mono-font);font-size:.85rem;color:var(--muted);white-space:nowrap}.marquee-track li:before{content:"/";color:var(--accent);margin-right:3rem}.home-section{padding:clamp(3.5rem,8vw,6rem) 0 0}.home-section-header{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:2rem}.home-section-header h2{font-size:clamp(1.8rem,4vw,2.6rem)}.section-link{font-family:var(--mono-font);font-size:.8rem;color:var(--muted);white-space:nowrap;transition:color .2s ease}.section-link:hover{color:var(--accent)}[data-spot]{position:relative;isolation:isolate}[data-spot]:before{content:"";position:absolute;inset:0;z-index:1;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .4s ease;background:radial-gradient(360px circle at var(--mx, 50%) var(--my, 50%),var(--glow),transparent 70%)}[data-spot]:hover:before{opacity:1}.projects-grid{display:grid;grid-template-columns:1.3fr 1fr;grid-template-rows:1fr 1fr;gap:1.25rem}.project-card{background:var(--surface);border:1px solid var(--border);border-radius:18px;overflow:hidden;color:var(--text);display:flex;flex-direction:column;transition:opacity .6s ease,transform .5s var(--ease-out),border-color .3s ease}.projects-grid .project-card:first-child{grid-row:span 2}.project-card:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--accent) 55%,var(--border))}.project-card:active{transform:translateY(-1px) scale(.995)}.project-cover-wrap{position:relative;width:100%;aspect-ratio:16 / 9;overflow:hidden;background:var(--bg)}.project-cover{width:100%;height:100%;object-fit:cover;display:block;transition:transform .9s var(--ease-out)}.project-card:hover .project-cover{transform:scale(1.04)}.project-cover-placeholder{width:100%;aspect-ratio:16 / 9;background:var(--bg)}.project-body{padding:1.1rem 1.25rem 1.3rem;display:flex;flex-direction:column;gap:.45rem;flex:1}.project-title{font-size:1.1rem;font-weight:600;letter-spacing:-.02em;line-height:1.3}.projects-grid .project-card:first-child .project-title{font-size:clamp(1.3rem,2.6vw,1.7rem)}.project-desc{font-size:.9rem;color:var(--muted);line-height:1.55;flex:1}.project-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}.latest-post-card{display:grid;grid-template-columns:1fr minmax(180px,280px);gap:2rem;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:1.75rem;color:var(--text);transition:opacity .6s ease,transform .5s var(--ease-out),border-color .3s ease}.latest-post-card:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--accent) 55%,var(--border))}.latest-post-meta{font-family:var(--mono-font);font-size:.75rem;color:var(--accent);margin-bottom:.6rem}.latest-post-title{font-size:clamp(1.3rem,3vw,1.8rem);font-weight:600;letter-spacing:-.025em;line-height:1.2;margin-bottom:.7rem}.latest-post-excerpt{font-size:.95rem;color:var(--muted);line-height:1.6;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.latest-post-thumb-wrap{position:relative;width:100%;aspect-ratio:4 / 3;border-radius:12px;overflow:hidden;background:var(--bg)}.latest-post-thumb{width:100%;height:100%;object-fit:cover;display:block;transition:transform .9s var(--ease-out)}.latest-post-card:hover .latest-post-thumb{transform:scale(1.04)}.latest-post-thumb-placeholder{width:100%;aspect-ratio:4 / 3;background:var(--bg);border-radius:12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.cta-banner{position:relative;overflow:hidden;background:radial-gradient(560px circle at 100% 0%,var(--glow),transparent 70%),radial-gradient(420px circle at 0% 100%,color-mix(in srgb,var(--accent-2) 12%,transparent),transparent 70%),var(--surface);border:1px solid var(--border);border-radius:24px;margin:clamp(3.5rem,8vw,6rem) 0 4rem;padding:clamp(2rem,6vw,4rem) clamp(1.5rem,5vw,3.5rem)}.cta-inner{max-width:640px;margin:0 auto;text-align:center;display:flex;flex-direction:column;align-items:center;gap:1.5rem}.cta-label{font-family:var(--mono-font);font-size:.75rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.cta-heading{font-size:clamp(1.9rem,5vw,3rem);font-weight:600;color:var(--text);margin:0}.cta-tags{display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem}.cta-tag{font-family:var(--mono-font);font-size:.75rem;background:transparent;border:1px solid var(--border);border-radius:999px;padding:.35rem .85rem;color:var(--muted)}.section-divider{border:none;border-top:1px solid var(--border);margin:0}.empty-state{font-size:.9rem;color:var(--muted);font-family:var(--mono-font);padding:2rem 0}@media(min-width:961px){.projects-grid{grid-template-columns:1fr 1fr;grid-template-rows:auto}.projects-grid .project-card:first-child{grid-column:1 / -1;grid-row:auto;flex-direction:row}.projects-grid .project-card:first-child .project-cover-wrap{flex:1.5}.projects-grid .project-card:first-child .project-body{flex:1;justify-content:center;padding:2rem}}@media(max-width:960px){.projects-grid{grid-template-columns:1fr 1fr;grid-template-rows:auto}.projects-grid .project-card:first-child{grid-column:1 / -1;grid-row:auto}}@media(max-width:768px){.hero{gap:1.5rem}.hero-photo-wrap{width:clamp(200px,38vw,280px)}.projects-grid{grid-template-columns:1fr}.latest-post-card{grid-template-columns:1fr;gap:1.25rem;padding:1.25rem}.latest-post-thumb-wrap{order:-1;aspect-ratio:16 / 9}.latest-post-thumb-placeholder{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.fade-up-delay-1,.fade-up-delay-2,.fade-up-delay-3,.fade-up-delay-4,.fade-up-delay-5{opacity:1;animation:none}.reveal{opacity:1;transform:none;transition:none}.marquee-track{flex-wrap:wrap;width:auto}.scroll-progress{display:none}}.prose pre span[style*="#6A737D"]{color:#8b949e!important}.hamburger{width:44px;height:44px;place-items:center;margin-right:-8px}.footer-links a,.section-link{display:inline-block;padding:.6rem .25rem}.footer-socials a{padding:.6rem}.dot{position:relative}.dot:after{content:"";position:absolute;inset:-12px}@media(pointer:coarse){.pill,.share-btn{min-height:40px}.breadcrumb,.post-breadcrumb,.project-gh-link{padding:.6rem 0}}@media(max-width:520px){.hero{grid-template-columns:1fr;gap:2.5rem}.hero{text-align:center;justify-items:center}.hero-ctas{justify-content:center}.hero-photo-frame{order:-1;margin:0 0 14px}.hero-photo-wrap{width:min(260px,70vw)}}@media(max-width:768px){.prose table{max-height:70vh;overscroll-behavior:contain}.prose th,.prose td{min-width:9rem}.prose th{position:sticky;top:0;z-index:1}}:root{--fx-a: .4;--px: -999px;--py: -999px}[data-theme=light]{--fx-a: .28}.bg-fx{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}.bg-blob{position:absolute;width:62vmax;height:62vmax;border-radius:50%;will-change:transform}.bg-blob-1{top:-22vmax;left:-14vmax;background:radial-gradient(circle at center,color-mix(in srgb,var(--accent) calc(var(--fx-a) * 100%),transparent),transparent 65%);animation:drift-1 26s ease-in-out infinite alternate}.bg-blob-2{right:-20vmax;top:18vh;background:radial-gradient(circle at center,color-mix(in srgb,var(--accent-2) calc(var(--fx-a) * 100%),transparent),transparent 65%);animation:drift-2 32s ease-in-out infinite alternate}.bg-blob-3{bottom:-30vmax;left:20vw;width:50vmax;height:50vmax;background:radial-gradient(circle at center,color-mix(in srgb,var(--accent) calc(var(--fx-a) * 70%),transparent),transparent 65%);animation:drift-3 38s ease-in-out infinite alternate}@keyframes drift-1{to{transform:translate3d(22vw,16vh,0) scale(1.15)}}@keyframes drift-2{to{transform:translate3d(-26vw,22vh,0) scale(.9)}}@keyframes drift-3{to{transform:translate3d(-18vw,-20vh,0) scale(1.2)}}.bg-dots{position:absolute;inset:0;background-image:radial-gradient(circle,var(--accent) 1px,transparent 1.4px);background-size:30px 30px;opacity:.16;-webkit-mask-image:linear-gradient(to bottom,#000,transparent 85%);mask-image:linear-gradient(to bottom,#000,transparent 85%)}.bg-dots-spot{opacity:.85;-webkit-mask-image:radial-gradient(240px circle at var(--px) var(--py),#000,transparent 70%);mask-image:radial-gradient(240px circle at var(--px) var(--py),#000,transparent 70%)}@media(prefers-reduced-motion:reduce){.bg-blob{animation:none}}@media(pointer:coarse){.bg-dots-spot{display:none}}button:not(:disabled),[role=button],label[for],select,summary{cursor:pointer}button:disabled{cursor:not-allowed}.theme-toggle[data-astro-cid-sckkx6r4]{background:none;border:1px solid var(--border);border-radius:12px;color:var(--muted);cursor:pointer;width:38px;height:38px;display:grid;place-items:center;transition:color .2s ease,border-color .2s ease,transform .35s var(--ease-out)}.theme-toggle[data-astro-cid-sckkx6r4]:hover{color:var(--accent);border-color:var(--accent)}.theme-toggle[data-astro-cid-sckkx6r4]:active{transform:scale(.9)}.toggle-icons[data-astro-cid-sckkx6r4]{position:relative;width:18px;height:18px}.toggle-icons[data-astro-cid-sckkx6r4] svg[data-astro-cid-sckkx6r4]{width:18px;height:18px;position:absolute;top:0;left:0;transition:transform .4s cubic-bezier(.34,1.56,.64,1),opacity .25s ease}#icon-sun[data-astro-cid-sckkx6r4]{opacity:0;transform:rotate(-180deg) scale(.3)}#icon-moon[data-astro-cid-sckkx6r4],[data-astro-cid-sckkx6r4][data-theme=light] #icon-sun[data-astro-cid-sckkx6r4]{opacity:1;transform:rotate(0) scale(1)}[data-astro-cid-sckkx6r4][data-theme=light] #icon-moon[data-astro-cid-sckkx6r4]{opacity:0;transform:rotate(180deg) scale(.3)}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}
