@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/jakarta.woff2)format("woff2")}@font-face{font-family:Inter;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/inter.woff2)format("woff2")}@font-face{font-family:Fira Code;font-style:normal;font-weight:400 500;font-display:swap;src:url(/fonts/fira-code.woff2)format("woff2")}:root{color-scheme:dark;--color-bg:#081e29;--color-bg-soft:#0d2935;--color-surface:#103241;--color-surface-raised:#194655;--color-primary:#96c8d5;--color-primary-hover:#bcdee6;--color-primary-pale:#96c8d5;--color-text:#f3f8fa;--color-muted:#b4c8cf;--color-border:#29515f;--color-border-strong:#4b7b8a;--color-button-text:#0c2028;--color-grid:#7aa6b409;--font-sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-display:"Plus Jakarta Sans", system-ui, sans-serif;--container:1180px;--radius-sm:10px;--radius-md:18px;--radius-lg:28px;--transition:.18s ease}:root[data-theme=light]{color-scheme:light;--color-bg:#edf4f6;--color-bg-soft:#e0edf1;--color-surface:#f8fcfd;--color-surface-raised:#d8e8ed;--color-primary:#2e6579;--color-primary-hover:#204b5d;--color-primary-pale:#2b6074;--color-text:#173541;--color-muted:#496773;--color-border:#c1d6de;--color-border-strong:#779eac;--color-button-text:#fff;--color-grid:#2e657909}*{box-sizing:border-box}.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}html{scroll-behavior:smooth;scroll-padding-top:2rem}body{background:var(--color-bg);color:var(--color-text);font:1rem/1.7 var(--font-sans);-webkit-font-smoothing:antialiased;margin:0}body:before{content:"";z-index:-1;pointer-events:none;background-image:linear-gradient(var(--color-grid) 1px, transparent 1px), linear-gradient(90deg, var(--color-grid) 1px, transparent 1px);background-size:72px 72px;position:fixed;inset:0}a{color:inherit;text-underline-offset:.25em;transition:color var(--transition), background-color var(--transition);text-decoration:none}a:hover{color:var(--color-primary-hover)}button{font:inherit}:focus-visible{outline:3px solid var(--color-primary-pale);outline-offset:4px}img,svg{max-width:100%;display:block}img{height:auto}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.035em;overflow-wrap:anywhere;font-weight:750;line-height:1.15}h1{margin:1rem 0 1.5rem;font-size:clamp(2.8rem,5.4vw,5rem)}h2{margin:0 0 1.5rem;font-size:clamp(2rem,3.1vw,3rem)}h3{margin:0 0 1rem;font-size:1.65rem}p{margin:0 0 1.25rem}.skip-link{z-index:10;background:var(--color-text);color:var(--color-bg);border-radius:var(--radius-sm);padding:.75rem 1rem;position:fixed;top:-8rem;left:1rem}.skip-link:focus{top:1rem}.site-header{background:var(--color-bg-soft);border-bottom:1px solid var(--color-border)}.header-inner,main,.site-footer{width:100%;max-width:var(--container);margin:auto;padding-inline:1.5rem}.header-inner{justify-content:space-between;align-items:center;gap:1.5rem;min-height:76px;display:flex}.wordmark{min-height:44px;font:bold 1.55rem/1 var(--font-display);letter-spacing:-.06em;flex-shrink:0;align-items:center;gap:.1rem;display:inline-flex}.wordmark>span:first-child{color:var(--color-primary-pale)}.brand-divider{color:var(--color-border-strong);margin-inline:.55rem;font-weight:400}.wordmark .brand-labs{font:650 .75rem/1 var(--font-sans);letter-spacing:.14em;margin-left:.4rem}.main-nav,.header-actions{align-items:center;gap:1.5rem;display:flex}.main-nav{color:var(--color-muted);font-size:.9rem}.main-nav a,.header-contact,.text-link,.back-link{align-items:center;gap:.5rem;min-height:44px;display:inline-flex}[aria-current=page]{color:var(--color-text);text-decoration:underline;text-decoration-color:var(--color-primary-pale)}.header-actions{gap:.5rem}.header-contact{margin-right:.75rem;font-size:.8rem}.language-switch,.theme-toggle{border:1px solid var(--color-border);background:var(--color-surface);width:44px;height:44px;color:var(--color-text);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.75rem;font-weight:700;display:flex}main{min-height:65vh;padding-block:3rem 5rem}.eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--color-primary-pale);margin-bottom:1.25rem;font-size:.75rem;font-weight:750}.hero{padding-block:2rem 3.5rem}.hero h1{max-width:950px}.hero h1 em{color:var(--color-primary-pale);font-style:normal}.lead{max-width:760px;color:var(--color-muted);font-size:1.125rem}.actions{flex-wrap:wrap;align-items:center;gap:1rem 1.75rem;margin-top:2rem;display:flex}.button{background:var(--color-primary-pale);min-height:48px;color:var(--color-button-text);border-radius:24px;justify-content:center;align-items:center;gap:1rem;padding:.65rem 1.5rem;font-size:.9rem;font-weight:700;display:inline-flex}.button:hover{background:var(--color-primary-hover);color:var(--color-button-text)}.text-link{font-size:.9rem;font-weight:650}.section{border-top:1px solid var(--color-border);padding-block:3.5rem}.section:last-child{padding-bottom:0}.section-heading{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:1rem 2rem;margin-bottom:2rem;display:flex}.section-heading h2{margin-bottom:0}.section-heading .eyebrow{margin-bottom:.75rem}.muted,.section-heading>p{color:var(--color-muted)}.section-heading>p{max-width:460px;margin-bottom:0}.service-list{margin:0;padding:0;list-style:none}.service-row{border-bottom:1px solid var(--color-border);grid-template-columns:45px minmax(180px,1fr) 1.3fr 44px;align-items:center;gap:1.5rem;padding-block:1.4rem;display:grid}.service-row .number{font:.8rem/1.5 var(--font-sans);color:var(--color-primary-pale)}.service-row h3{margin:0;font-size:1.45rem}.service-row p{color:var(--color-muted);margin:0;font-size:.95rem}.service-row a{border:1px solid var(--color-border);border-radius:50%;justify-content:center;align-items:center;min-height:44px;display:flex}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem;display:grid}.project-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.project-cover{border-bottom:1px solid var(--color-border);display:block;overflow:hidden}.project-cover img{aspect-ratio:16/10;object-fit:cover;object-position:top;width:100%;transition:transform var(--transition)}.project-cover:hover img{transform:scale(1.025)}.project-content{padding:1.5rem 2rem}.project-content h3{margin-top:1rem;font-size:2rem}.project-content h2 a,.project-content h3 a{align-items:center;min-height:44px;display:inline-flex}.project-content p{color:var(--color-muted)}.status{color:var(--color-primary-pale);align-items:center;gap:.5rem;font-size:.75rem;font-weight:600;display:inline-flex}.status:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.tags{flex-wrap:wrap;gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.tags li{color:var(--color-muted);border:1px solid var(--color-border);border-radius:20px;padding:.15rem .65rem;font-size:.75rem}.steps{counter-reset:steps;grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem;margin:0;padding:0;list-style:none;display:grid}.steps li{counter-increment:steps}.steps li:before{content:"0" counter(steps);color:var(--color-primary-pale);margin-bottom:1rem;font-size:.8rem;display:block}.steps h3{font-size:1.5rem}.steps p{color:var(--color-muted);font-size:.95rem}.callout{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);margin-top:1rem;padding:2.5rem 3rem}.callout p{max-width:760px;color:var(--color-muted)}.callout .eyebrow{color:var(--color-primary-pale)}.split{grid-template-columns:1fr 1.3fr;gap:3rem;display:grid}.service-detail{border-top:1px solid var(--color-border);padding:2.5rem 0;scroll-margin-top:2rem}.service-detail h2{font-size:2.25rem}.feature-list{color:var(--color-muted);padding-left:1.25rem}.service-detail p{color:var(--color-muted)}.note{color:var(--color-muted);max-width:800px;margin-top:1rem;font-size:.85rem}.back-link{color:var(--color-muted);margin-bottom:1.5rem;font-size:.85rem}.project-back-link{color:var(--color-primary);text-underline-offset:.3em;font-size:1rem;font-weight:650;text-decoration:underline 1px}.project-back-link--bottom{margin-top:2.5rem}.entry{max-width:800px;margin:auto}.entry .project-category{margin-bottom:.5rem;font-size:1.125rem;line-height:1.4}.entry .project-tags{margin-bottom:1.5rem}.entry .project-tags li{font-size:.85rem}.entry h1{font-size:clamp(2.5rem,4.8vw,4.5rem)}.prose{margin-top:2.5rem}.prose h2{margin-top:2.5rem;font-size:2rem}.prose h3{margin-top:2rem}.prose p,.prose li{color:var(--color-muted)}.prose a{color:var(--color-primary-pale);align-items:center;min-height:44px;padding-block:.35rem;text-decoration:underline;display:inline-flex}.prose pre{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:1rem;font-size:.85rem;overflow:auto}.prose code{overflow-wrap:anywhere}.prose pre code{overflow-wrap:normal}:root[data-theme=light] .astro-code,:root[data-theme=light] .astro-code span{background-color:var(--shiki-light-bg)!important;color:var(--shiki-light)!important}.facts{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);margin-top:2rem;padding:1.5rem}.facts dt{color:var(--color-primary-pale);font-size:.8rem;font-weight:650}.facts dd{color:var(--color-muted);margin:.25rem 0 1rem}.facts dd:last-child{margin-bottom:0}.gallery{gap:1.5rem;margin-top:2rem;display:grid}figure{margin:0}.gallery img{border:1px solid var(--color-border);border-radius:var(--radius-sm)}figcaption{color:var(--color-muted);margin-top:.5rem;font-size:.8rem}.docs-list{margin:0;padding:0;list-style:none}.docs-list li{border-top:1px solid var(--color-border);padding-block:1.75rem}.docs-list h2{margin-bottom:.75rem;font-size:2rem}.docs-list h2 a{align-items:center;min-height:44px;display:inline-flex}.docs-list p{color:var(--color-muted);margin-bottom:.5rem}.toc{border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius-md);margin-top:2rem;padding:1rem 1.5rem}.toc summary{cursor:pointer;min-height:44px}.toc a{min-height:44px;color:var(--color-muted);align-items:center;display:inline-flex}.email-link{font-size:clamp(1.2rem,3vw,2rem);font-family:var(--font-display);overflow-wrap:anywhere;align-items:center;min-height:44px;text-decoration:underline;display:inline-flex}.collaboration{grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem;margin-top:2rem;display:grid}.collaboration h3{font-size:1.5rem}.collaboration p{color:var(--color-muted)}.site-footer{border-top:1px solid var(--color-border);padding-block:2.5rem}.footer-main,.footer-bottom{flex-wrap:wrap;align-items:center;gap:1.5rem;display:flex}.footer-main>p{max-width:450px;color:var(--color-muted);margin:0 auto 0 0;font-size:.9rem}.footer-bottom{color:var(--color-muted);justify-content:space-between;margin-top:2rem;font-size:.8rem}.footer-bottom p{margin:0}.footer-bottom nav{flex-wrap:wrap;gap:1.5rem;display:flex}.site-footer a{align-items:center;min-width:44px;min-height:44px;display:inline-flex}@media (width<=1023px){.header-contact{display:none}.main-nav{gap:1rem}}@media (width<=767px){.header-inner,main,.site-footer{padding-inline:1.25rem}main{padding-block:2rem 3rem}.hero{padding-block:1rem 2.5rem}.hero h1 br{display:none}.lead{font-size:1rem}.section{padding-block:2.5rem}.service-row{grid-template-columns:28px minmax(0,1fr) 44px;gap:.75rem}.service-row p{grid-area:2/2;font-size:.9rem}.service-row a{grid-area:1/3/span 2}.project-grid,.steps,.split,.collaboration{grid-template-columns:1fr}.project-content{padding:1.5rem}.steps,.split{gap:1.5rem}.steps li{border-bottom:1px solid var(--color-border);padding-bottom:1rem}.callout{padding:1.75rem}.footer-main{align-items:start;gap:1rem}.footer-main>p{width:100%}.footer-bottom nav{gap:.5rem 1.25rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}body:not(.landing-page){padding-top:var(--header-height,76px)}.dg-brand.dg-brand{flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:4px;min-width:76px;min-height:56px;line-height:1;text-decoration:none;display:inline-flex}.dg-brand.dg-brand img{aspect-ratio:731/337;object-fit:contain;border-radius:3px;width:76px;max-width:none;height:auto;display:block}.dg-brand.dg-brand .dg-brand-label{letter-spacing:.5em;text-indent:.5em;color:var(--color-muted);margin:0;font:650 10px/1.2 ui-sans-serif,system-ui,sans-serif}.landing-page .dg-brand.dg-brand .dg-brand-label{color:var(--dl-secondary)}.site-header,.site-menu-dialog,.group-footer{--color-bg-soft:#1c272b;--color-surface:#232f33;--color-text:#f1f5f5;--color-muted:#afbec2;--color-border:#37494f;--color-border-strong:#526a72;--color-primary-pale:#bccdd1;color:var(--color-text);font:1rem/1.7 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}:root[data-theme=light] .site-header,:root[data-theme=light] .site-menu-dialog,:root[data-theme=light] .group-footer{--color-bg-soft:#e4ebed;--color-surface:#fafcfc;--color-text:#24363d;--color-muted:#536870;--color-border:#c8d5da;--color-border-strong:#9db3bc;--color-primary-pale:#425f69}.site-header{z-index:200;border-bottom:1px solid var(--color-border);background:var(--color-bg-soft);backdrop-filter:none;padding:0;transition:none;position:fixed;inset:0 0 auto}.site-header .header-inner{flex-wrap:nowrap;justify-content:space-between;align-items:center;gap:24px;width:100%;max-width:1180px;height:76px;min-height:76px;margin-inline:auto;padding:0 24px;display:flex}.site-header .main-nav{color:var(--color-muted);align-items:center;gap:20px;font-size:.9rem;display:flex}.site-header .main-nav a{min-width:44px;min-height:44px;color:inherit;justify-content:center;align-items:center;display:inline-flex}.site-header .main-nav a[aria-current]{color:var(--color-text);text-decoration:underline;text-decoration-color:var(--color-primary-pale);text-underline-offset:4px}.site-header .header-actions{align-items:center;gap:8px;display:flex}.site-header .language-switch,.site-header .theme-toggle,.site-header .site-menu-toggle{border:1px solid var(--color-border);background:var(--color-surface);width:44px;height:44px;color:var(--color-text);letter-spacing:normal;cursor:pointer;border-radius:50%;flex:0 0 44px;justify-content:center;align-items:center;padding:0;font:700 .75rem/1.7 Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;transition:none;transform:none}.site-header .language-switch,.site-header .theme-toggle{display:inline-flex}.site-header .theme-toggle svg,.site-header .site-menu-toggle svg{width:20px;height:20px}.site-header .site-menu-toggle{margin-inline-start:16px;display:none}.site-header .main-nav a:hover,.site-header .header-actions a:hover,.site-menu-dialog nav a:hover{color:var(--color-primary-pale)}.site-header .dg-brand.dg-brand .dg-brand-label{color:var(--color-muted)}.site-header :focus-visible,.site-menu-dialog :focus-visible{outline:3px solid var(--color-primary-pale);outline-offset:4px}.site-menu-dialog{border:1px solid var(--color-border-strong);background:var(--color-surface);border-radius:24px;width:min(92vw,460px);max-height:calc(100dvh - 32px);padding:72px 24px 40px;overflow-y:auto;box-shadow:0 20px 100px #00000073}.site-menu-dialog::backdrop{backdrop-filter:blur(12px);background:#051216cc}.site-menu-dialog nav{flex-direction:column;align-items:center;gap:12px;display:flex}.site-menu-dialog nav a{justify-content:center;align-items:center;min-height:44px;font-size:20px;font-weight:600;display:flex}.site-menu-dialog nav a[aria-current]{color:var(--color-text);text-decoration:underline;text-decoration-color:var(--color-primary-pale);text-underline-offset:4px}.site-menu-close{border:1px solid var(--color-border-strong);width:44px;height:44px;color:var(--color-text);background:var(--color-surface);cursor:pointer;border-radius:50%;place-items:center;padding:0;display:grid;position:absolute;top:16px;right:16px}@media (width<=1200px){.site-header .main-nav{display:none!important}.site-header .site-menu-toggle{display:inline-flex}.site-header .header-inner{max-width:1280px}.site-header .header-actions{justify-content:flex-end;margin-inline-start:auto}}html{--anchor-offset:100px;scroll-padding-top:var(--anchor-offset)}.skip-link{z-index:1000}.site-header .ecosystem-links--header{border-inline-end:1px solid var(--color-border);margin-inline-end:8px;padding-inline-end:16px}.site-header .ecosystem-links a{color:var(--color-text)}.site-header .theme-icon--moon,:root[data-theme=light] .site-header .theme-icon--sun{display:none}:root[data-theme=light] .site-header .theme-icon--moon{display:block}.site-menu-dialog .ecosystem-links--menu{border-top:1px dashed var(--color-border-strong);flex-direction:row;justify-content:center;gap:24px;width:min(100%,240px);margin:24px auto 0;padding-top:24px;display:none}.site-menu-dialog .ecosystem-links--menu a{letter-spacing:.04em;font-size:14px;font-weight:700}@media (width<=600px){.site-header .header-inner{gap:16px}.site-header .ecosystem-links--header{display:none}.site-menu-dialog .ecosystem-links--menu{display:flex}}.group-footer{z-index:1;border-top:1px solid var(--color-border);background:var(--color-bg-soft);width:100%;max-width:none;color:var(--color-text);margin:0;padding:0;position:relative}.group-footer .footer-inner{width:100%;max-width:1180px;margin-inline:auto;padding:56px 24px 28px}.group-footer .footer-main{grid-template-columns:76px minmax(240px,.8fr) minmax(0,1.6fr);align-items:center;gap:32px;padding-bottom:40px;display:grid}.group-footer .footer-main>p{max-width:420px;color:var(--color-muted);margin:0;font-size:.9rem;line-height:1.7}.group-footer .footer-navigation{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:16px 24px;display:flex}.group-footer .footer-nav{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:0 20px;display:flex}.group-footer .footer-nav a,.group-footer .footer-legal a{min-height:44px;color:var(--color-muted);align-items:center;font-size:.8rem;text-decoration:none;display:inline-flex}.group-footer .footer-bottom{border-top:1px solid var(--color-border);grid-template-columns:auto 1fr auto;align-items:center;gap:24px;margin:0;padding-top:24px;display:grid}.group-footer .footer-bottom>p{color:var(--color-muted);margin:0;font-size:.78rem}.group-footer .footer-legal{flex-wrap:wrap;justify-content:center;align-items:center;gap:0 20px;display:flex}.group-footer .social-links{align-items:center;gap:8px;display:flex}.group-footer .social-links a{border:1px solid var(--color-border);width:44px;height:44px;color:var(--color-muted);border-radius:50%;place-items:center;display:grid}.group-footer .social-links svg{width:17px;height:17px}.group-footer .dg-brand.dg-brand .dg-brand-label{color:var(--color-muted)}.group-footer a:hover{color:var(--color-primary-pale)}.group-footer .social-links a:hover{background:var(--color-surface);border-color:var(--color-border-strong)}.group-footer :focus-visible{outline:3px solid var(--color-primary-pale);outline-offset:4px}.ecosystem-links{flex-shrink:0;align-items:center;gap:8px;display:flex}.ecosystem-links a{min-width:44px;min-height:44px;color:var(--color-text);letter-spacing:.04em;justify-content:center;align-items:center;font-size:.7rem;font-weight:700;display:inline-flex}.ecosystem-links--footer{border-inline-start:1px solid var(--color-border);padding-inline-start:16px}@media (width<=900px){.group-footer .footer-main{grid-template-columns:76px 1fr}.group-footer .footer-navigation{grid-column:1/-1;justify-content:flex-start}.group-footer .footer-nav{justify-content:flex-start}.group-footer .footer-bottom{grid-template-columns:1fr auto}.group-footer .footer-legal{grid-area:2/1/auto/-1;justify-content:flex-start}}@media (width<=480px){.group-footer .footer-inner{padding-inline:24px}.group-footer .footer-main{grid-template-columns:1fr;gap:24px}.group-footer .footer-navigation{flex-direction:column;grid-column:auto;align-items:flex-start}.group-footer .ecosystem-links--footer{padding-inline-start:0;border-inline-start:0;border-top:1px solid var(--color-border);padding-top:8px}.group-footer .footer-bottom{grid-template-columns:1fr;gap:12px}.group-footer .footer-legal{grid-row:auto}}
