@font-face{font-family:Plus Jakarta Sans;font-display:swap}@font-face{font-family:JetBrains Mono;font-display:swap}:root{--color-bg-primary:#0a0f1a;--color-bg-secondary:#0f172a;--color-bg-elevated:#1e293b;--color-bg-surface:#334155;--color-accent:#2563eb;--color-accent-hover:#3b82f6;--color-accent-glow:#2563eb66;--color-accent-subtle:#2563eb1a;--color-client:#2563eb;--color-opensource:#10b981;--color-sideproject:#8b5cf6;--color-text-primary:#f8fafc;--color-text-secondary:#a8b8cf;--color-text-muted:#89a;--color-border:#94a3b81a;--color-border-hover:#94a3b833;--font-display:"Plus Jakarta Sans", system-ui, sans-serif;--font-body:"Plus Jakarta Sans", system-ui, sans-serif;--font-mono:"JetBrains Mono", monospace;--text-xs:clamp(.75rem, .7rem + .25vw, .875rem);--text-sm:clamp(.875rem, .8rem + .35vw, 1rem);--text-base:clamp(1rem, .9rem + .5vw, 1.125rem);--text-lg:clamp(1.125rem, 1rem + .6vw, 1.25rem);--text-xl:clamp(1.25rem, 1.1rem + .75vw, 1.5rem);--text-2xl:clamp(1.5rem, 1.2rem + 1.5vw, 2rem);--text-3xl:clamp(2rem, 1.5rem + 2.5vw, 3rem);--text-4xl:clamp(2.5rem, 2rem + 3vw, 4rem);--text-5xl:clamp(3rem, 2rem + 5vw, 6rem);--text-hero:clamp(3.25rem, 2.5rem + 4vw, 5.25rem);--space-xs:.25rem;--space-sm:.5rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--space-3xl:4rem;--space-4xl:6rem;--space-5xl:8rem;--space-6xl:12rem;--container-max:1280px;--container-narrow:720px;--transition-fast:.15s ease;--transition-base:.25s ease;--transition-slow:.4s ease;--transition-slower:.6s cubic-bezier(.4, 0, .2, 1);--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-2xl:24px;--radius-full:9999px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text-primary);background-color:var(--color-bg-primary);min-height:100vh;line-height:1.7;overflow-x:hidden}::selection{background:var(--color-accent);color:#fff}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-text-primary);text-wrap:balance;font-weight:700;line-height:1.1}h1{font-size:var(--text-5xl)}h2{font-size:var(--text-4xl)}h3{font-size:var(--text-3xl)}h4{font-size:var(--text-2xl)}h5{font-size:var(--text-xl)}h6{font-size:var(--text-lg)}p{color:var(--color-text-secondary);text-wrap:pretty;max-width:65ch}a{color:var(--color-accent);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-accent-hover)}strong{color:var(--color-text-primary);font-weight:600}code{font-family:var(--font-mono);background:var(--color-bg-elevated);border-radius:var(--radius-sm);padding:.2em .4em;font-size:.9em}.container{width:100%;max-width:var(--container-max);padding-inline:var(--space-lg);margin-inline:auto}.container-narrow{max-width:var(--container-narrow)}.section{padding-block:var(--space-5xl)}.section-lg{padding-block:var(--space-6xl)}.section-sm{padding-block:var(--space-3xl)}.btn{justify-content:center;align-items:center;gap:var(--space-sm);font-family:var(--font-body);font-size:var(--text-sm);padding:var(--space-md) var(--space-xl);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-base);border:none;font-weight:600;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.btn-lg{padding:var(--space-lg) var(--space-2xl);font-size:var(--text-base)}.btn-primary{background:var(--color-accent);color:#fff;box-shadow:0 0 20px var(--color-accent-glow), inset 0 1px 0 #ffffff1a}.btn-primary:hover{background:var(--color-accent-hover);box-shadow:0 0 40px var(--color-accent-glow), 0 10px 40px #3b82f64d, inset 0 1px 0 #fff3;color:#fff;transform:translateY(-2px)}.btn-primary:active{transform:translateY(0)}.btn-ghost{color:var(--color-text-primary);border:1px solid var(--color-border-hover);background:0 0}.btn-ghost:hover{background:var(--color-bg-elevated);border-color:var(--color-accent);color:var(--color-text-primary)}.card{background:linear-gradient(135deg, var(--color-bg-secondary) 0%, #0f172acc 100%);border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-xl);transition:all var(--transition-slower);backdrop-filter:blur(10px);position:relative}.card:before{content:"";border-radius:inherit;pointer-events:none;-webkit-mask-composite:xor;opacity:0;transition:opacity var(--transition-base);background:linear-gradient(135deg,#3b82f633 0%,#0000 50% 100%);padding:1px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);mask-image:linear-gradient(#fff 0 0),linear-gradient(#fff 0 0);-webkit-mask-position:0 0,0 0;mask-position:0 0,0 0;-webkit-mask-size:auto,auto;mask-size:auto,auto;-webkit-mask-repeat:repeat,repeat;mask-repeat:repeat,repeat;-webkit-mask-clip:content-box,border-box;mask-clip:content-box,border-box;-webkit-mask-origin:content-box,border-box;mask-origin:content-box,border-box;mask-composite:exclude;mask-mode:match-source,match-source}.card:hover{border-color:var(--color-border-hover);transform:translateY(-8px);box-shadow:0 25px 50px -12px #00000080,0 0 0 1px #3b82f61a}.card:hover:before{opacity:1}.badge{font-family:var(--font-mono);font-size:var(--text-xs);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);background:var(--color-bg-elevated);color:var(--color-text-secondary);border:1px solid var(--color-border);align-items:center;display:inline-flex}.badge-client{color:var(--color-client);background:#3b82f61a;border-color:#3b82f64d}.badge-opensource{color:var(--color-opensource);background:#10b9811a;border-color:#10b9814d}.badge-sideproject{color:var(--color-sideproject);background:#8b5cf61a;border-color:#8b5cf64d}.grid{gap:var(--space-xl);display:grid}.grid-2{grid-template-columns:repeat(2,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}@media (width<=1024px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}}@media (width<=640px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes float{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-20px)rotate(2deg)}}@keyframes glow{0%,to{box-shadow:0 0 20px var(--color-accent-glow)}50%{box-shadow:0 0 40px var(--color-accent-glow), 0 0 80px var(--color-accent-glow)}}@keyframes gridMove{0%{background-position:0 0}to{background-position:40px 40px}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes orbit{0%{transform:rotate(0)translate(150px)rotate(0)}to{transform:rotate(360deg)translate(150px)rotate(-360deg)}}.animate-fade-in-up{opacity:0;animation:.8s cubic-bezier(.4,0,.2,1) forwards fadeInUp}.animate-fade-in{opacity:0;animation:.8s forwards fadeIn}.animate-slide-in-left{opacity:0;animation:.8s cubic-bezier(.4,0,.2,1) forwards slideInLeft}.delay-1{animation-delay:.1s}.delay-2{animation-delay:.2s}.delay-3{animation-delay:.3s}.delay-4{animation-delay:.4s}.delay-5{animation-delay:.5s}.delay-6{animation-delay:.6s}.delay-7{animation-delay:.7s}.delay-8{animation-delay:.8s}.section-header{text-align:center;margin-bottom:var(--space-4xl)}.section-header h2{margin-bottom:var(--space-md)}.section-header p{margin-inline:auto}.section-label{font-family:var(--font-mono);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.15em;color:var(--color-accent-hover);margin-bottom:var(--space-md);display:inline-block;position:relative}.section-label:before,.section-label:after{content:"";background:linear-gradient(90deg, transparent, var(--color-accent));width:30px;height:1px;position:absolute;top:50%}.section-label:before{background:linear-gradient(90deg, transparent, var(--color-accent));right:calc(100% + 12px)}.section-label:after{background:linear-gradient(90deg, var(--color-accent), transparent);left:calc(100% + 12px)}.gradient-text{background:linear-gradient(135deg, var(--color-text-primary) 0%, var(--color-accent) 50%, var(--color-accent-hover) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.gradient-text-subtle{background:linear-gradient(135deg, var(--color-text-primary) 0%, var(--color-text-secondary) 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.glass{-webkit-backdrop-filter:blur(20px);background:#0f172a99;border:1px solid #94a3b81a}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-secondary)}::-webkit-scrollbar-thumb{background:var(--color-bg-surface);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}.prose{max-width:65ch;color:var(--color-text-secondary)}.prose h1,.prose h2,.prose h3,.prose h4{margin-top:var(--space-2xl);margin-bottom:var(--space-md)}.prose p{margin-bottom:var(--space-lg)}.prose ul,.prose ol{margin-bottom:var(--space-lg);padding-left:var(--space-xl)}.prose li{margin-bottom:var(--space-sm)}.prose pre{background:var(--color-bg-elevated);padding:var(--space-lg);border-radius:var(--radius-md);margin-bottom:var(--space-lg);overflow-x:auto}.prose blockquote{border-left:3px solid var(--color-accent);padding-left:var(--space-lg);color:var(--color-text-muted);margin-left:0;font-style:italic}.prose img{border-radius:var(--radius-md);max-width:100%;margin-block:var(--space-lg)}.prose a{text-underline-offset:2px;text-decoration:underline}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-primary{color:var(--color-text-primary)}.text-secondary{color:var(--color-text-secondary)}.text-muted{color:var(--color-text-muted)}.text-accent{color:var(--color-accent)}.font-display{font-family:var(--font-display)}.font-mono{font-family:var(--font-mono)}.flex{display:flex}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-xs{gap:var(--space-xs)}.gap-sm{gap:var(--space-sm)}.gap-md{gap:var(--space-md)}.gap-lg{gap:var(--space-lg)}.gap-xl{gap:var(--space-xl)}.gap-2xl{gap:var(--space-2xl)}.w-full{width:100%}.h-full{height:100%}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.overflow-hidden{overflow:hidden}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width<=768px){.section{padding-block:var(--space-3xl)}.section-lg{padding-block:var(--space-4xl)}.container{padding-inline:var(--space-md)}.section-label:before,.section-label:after{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.skip-link{top:-100%;left:var(--space-md);background:var(--color-accent);color:#fff;padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);z-index:9999;transition:top var(--transition-fast);font-weight:600;text-decoration:none;position:absolute}.skip-link:focus{top:var(--space-md);outline:2px solid var(--color-text-primary);outline-offset:2px}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/plus-jakarta-sans-latin-400-normal.Dhut76fR.woff2)format("woff2"),url(/_astro/plus-jakarta-sans-latin-400-normal.BDKaGhyp.woff)format("woff")}@font-face{font-family:Plus Jakarta Sans;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/plus-jakarta-sans-latin-400-italic.D5MFNpT-.woff2)format("woff2"),url(/_astro/plus-jakarta-sans-latin-400-italic.BVaBttQe.woff)format("woff")}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/plus-jakarta-sans-latin-500-normal.Bf-nb4oT.woff2)format("woff2"),url(/_astro/plus-jakarta-sans-latin-500-normal.DYtqi0QS.woff)format("woff")}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/plus-jakarta-sans-latin-600-normal.DLTa1BUW.woff2)format("woff2"),url(/_astro/plus-jakarta-sans-latin-600-normal.BR_Ojra4.woff)format("woff")}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/plus-jakarta-sans-latin-700-normal.CfpNZvy6.woff2)format("woff2"),url(/_astro/plus-jakarta-sans-latin-700-normal.DqEcQeE5.woff)format("woff")}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-display:swap;font-weight:800;src:url(/_astro/plus-jakarta-sans-latin-800-normal.CusIZhrK.woff2)format("woff2"),url(/_astro/plus-jakarta-sans-latin-800-normal.BRNHt2w0.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-400-normal.6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-latin-500-normal.BWZEU5yA.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-500-normal.CJOVTJB7.woff)format("woff")}.header[data-astro-cid-isef26zo]{z-index:100;-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--color-border);background:#0a0f1acc;position:fixed;top:0;left:0;right:0}.nav[data-astro-cid-isef26zo]{justify-content:space-between;align-items:center;height:72px;display:flex}.logo[data-astro-cid-isef26zo]{align-items:center;gap:4px;text-decoration:none;display:flex}.logo-text[data-astro-cid-isef26zo]{font-family:var(--font-display);color:var(--color-text-primary);letter-spacing:-.03em;font-size:1.75rem;font-weight:800}.logo-dot[data-astro-cid-isef26zo]{background:var(--color-accent);border-radius:50%;width:8px;height:8px;animation:2s infinite pulse}.nav-links[data-astro-cid-isef26zo]{align-items:center;gap:var(--space-xl);list-style:none;display:flex}.nav-link[data-astro-cid-isef26zo]{font-size:var(--text-sm);color:var(--color-text-secondary);transition:color var(--transition-fast);font-weight:500;text-decoration:none;position:relative}.nav-link[data-astro-cid-isef26zo]:after{content:"";background:var(--color-accent);transform-origin:0;width:100%;height:2px;transition:transform var(--transition-base);position:absolute;bottom:-4px;left:0;transform:scaleX(0)}.nav-link[data-astro-cid-isef26zo]:hover,.nav-link[data-astro-cid-isef26zo].active{color:var(--color-text-primary)}.nav-link[data-astro-cid-isef26zo].active:after,.nav-link[data-astro-cid-isef26zo]:hover:after{transform:scaleX(1)}.nav-cta[data-astro-cid-isef26zo]{font-size:var(--text-sm)}.mobile-toggle[data-astro-cid-isef26zo]{cursor:pointer;background:0 0;border:none;width:48px;height:48px;display:none;position:relative}.hamburger[data-astro-cid-isef26zo],.hamburger[data-astro-cid-isef26zo]:before,.hamburger[data-astro-cid-isef26zo]:after{background:var(--color-text-primary);width:24px;height:2px;transition:all var(--transition-base);position:absolute;left:50%;transform:translate(-50%)}.hamburger[data-astro-cid-isef26zo]{top:50%;transform:translate(-50%,-50%)}.hamburger[data-astro-cid-isef26zo]:before,.hamburger[data-astro-cid-isef26zo]:after{content:""}.hamburger[data-astro-cid-isef26zo]:before{top:-8px}.hamburger[data-astro-cid-isef26zo]:after{top:8px}.mobile-toggle[data-astro-cid-isef26zo][aria-expanded=true] .hamburger[data-astro-cid-isef26zo]{background:0 0}.mobile-toggle[data-astro-cid-isef26zo][aria-expanded=true] .hamburger[data-astro-cid-isef26zo]:before{top:0;transform:translate(-50%)rotate(45deg)}.mobile-toggle[data-astro-cid-isef26zo][aria-expanded=true] .hamburger[data-astro-cid-isef26zo]:after{top:0;transform:translate(-50%)rotate(-45deg)}.mobile-menu[data-astro-cid-isef26zo]{background:var(--color-bg-primary);width:100%;max-width:none;height:calc(100dvh - 72px);max-height:none;color:var(--color-text-primary);border:0;margin:0;padding:0;position:fixed;inset:72px 0 0;overflow-y:auto}.mobile-menu[data-astro-cid-isef26zo]::backdrop{background:#0a0f1ab8}.mobile-menu-inner[data-astro-cid-isef26zo]{min-height:100%;padding:var(--space-xl) max(var(--space-xl), env(safe-area-inset-right)) max(var(--space-xl), env(safe-area-inset-bottom)) max(var(--space-xl), env(safe-area-inset-left));gap:var(--space-xl);flex-direction:column;display:flex}.mobile-nav-links[data-astro-cid-isef26zo]{flex-direction:column;gap:0;list-style:none;display:flex}.mobile-nav-link[data-astro-cid-isef26zo]{font-size:var(--text-xl);color:var(--color-text-secondary);min-height:56px;padding:var(--space-md) 0;border-bottom:1px solid var(--color-border);transition:color var(--transition-fast);font-weight:500;text-decoration:none;display:block}.mobile-nav-link[data-astro-cid-isef26zo]:hover,.mobile-nav-link[data-astro-cid-isef26zo].active{color:var(--color-accent)}@media (width<=900px){.nav-links[data-astro-cid-isef26zo],.nav-cta[data-astro-cid-isef26zo]{display:none}.mobile-toggle[data-astro-cid-isef26zo]{justify-content:center;align-items:center;display:flex}}@media (width>=901px){.mobile-menu[data-astro-cid-isef26zo]{display:none}}.footer[data-astro-cid-oenwriqq]{background:var(--color-bg-secondary);border-top:1px solid var(--color-border);padding-top:var(--space-4xl);padding-bottom:var(--space-xl)}.footer-grid[data-astro-cid-oenwriqq]{gap:var(--space-4xl);padding-bottom:var(--space-3xl);border-bottom:1px solid var(--color-border);grid-template-columns:2fr 1fr 1.5fr;display:grid}.footer-logo[data-astro-cid-oenwriqq]{margin-bottom:var(--space-lg);align-items:center;gap:4px;text-decoration:none;display:inline-flex}.logo-text[data-astro-cid-oenwriqq]{font-family:var(--font-display);color:var(--color-text-primary);letter-spacing:-.03em;font-size:1.5rem;font-weight:800}.logo-dot[data-astro-cid-oenwriqq]{background:var(--color-accent);border-radius:50%;width:6px;height:6px}.footer-tagline[data-astro-cid-oenwriqq]{color:var(--color-text-secondary);font-size:var(--text-sm);margin-bottom:var(--space-lg);line-height:1.6}.footer-social[data-astro-cid-oenwriqq]{gap:var(--space-md);display:flex}.social-link[data-astro-cid-oenwriqq]{border-radius:var(--radius-md);background:var(--color-bg-elevated);width:40px;height:40px;color:var(--color-text-secondary);transition:all var(--transition-base);justify-content:center;align-items:center;display:flex}.social-link[data-astro-cid-oenwriqq]:hover{background:var(--color-accent);color:#fff;transform:translateY(-2px)}.social-icon[data-astro-cid-oenwriqq]{width:20px;height:20px}.footer-heading[data-astro-cid-oenwriqq]{font-family:var(--font-display);font-size:var(--text-sm);color:var(--color-text-primary);margin-bottom:var(--space-lg);text-transform:uppercase;letter-spacing:.05em;font-weight:600}.footer-links[data-astro-cid-oenwriqq]{gap:var(--space-sm);flex-direction:column;list-style:none;display:flex}.footer-link[data-astro-cid-oenwriqq]{color:var(--color-text-secondary);font-size:var(--text-sm);transition:color var(--transition-fast);text-decoration:none}.footer-link[data-astro-cid-oenwriqq]:hover{color:var(--color-accent)}.footer-text[data-astro-cid-oenwriqq]{color:var(--color-text-secondary);font-size:var(--text-sm);margin-bottom:var(--space-lg)}.footer-bottom[data-astro-cid-oenwriqq]{padding-top:var(--space-xl);justify-content:space-between;align-items:center;display:flex}.footer-copyright[data-astro-cid-oenwriqq],.footer-kvk[data-astro-cid-oenwriqq]{font-size:var(--text-sm);color:var(--color-text-muted)}@media (width<=900px){.footer-grid[data-astro-cid-oenwriqq]{gap:var(--space-2xl);grid-template-columns:1fr}}@media (width<=640px){.footer-bottom[data-astro-cid-oenwriqq]{gap:var(--space-sm);text-align:center;flex-direction:column}}
