@font-face{font-family:Ronzino;src:url("/css/Ronzino-Regular-U3S3PK36.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Ronzino;src:url("/css/Ronzino-Oblique-6AJNL47A.woff2") format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Ronzino;src:url("/css/Ronzino-Medium-PYHUWFKM.woff2") format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Ronzino;src:url("/css/Ronzino-MediumOblique-RZW6UCC6.woff2") format("woff2");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:Ronzino;src:url("/css/Ronzino-Bold-FTCNL3NL.woff2") format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Ronzino;src:url("/css/Ronzino-BoldOblique-QI2DBQ3P.woff2") format("woff2");font-weight:700;font-style:italic;font-display:swap}header{width:100%;box-sizing:border-box;display:flex;justify-content:space-between;align-items:center;padding:var(--section-y) var(--gutter)}header .logo{display:inline-block;font-family:var(--font-mono);font-size:var(--fs-lg);font-weight:400;background:linear-gradient(90deg,var(--ink) 5ch,var(--link) 5ch);-webkit-background-clip:text;background-clip:text;color:transparent}header nav ul{display:flex;gap:var(--s-1);list-style:none;margin:0;padding:0}header .header-actions{display:flex;align-items:center;gap:var(--s-1)}header nav ul li a,header nav ul li a:visited,header .lang-switch{display:inline-block;background-color:var(--ink);color:var(--paper);font-size:var(--fs-sm);padding:var(--s-1) var(--s-2);border-radius:var(--radius-pill);transition:background-color .2s ease}header nav ul li a:hover,header nav ul li a:focus-visible,header nav ul li a.active,header .lang-switch:hover,header .lang-switch:focus-visible{background-color:var(--accent);color:var(--ink)}.nav-short{display:none}@media(max-width:768px){header{flex-direction:column;gap:var(--s-3);text-align:center}header nav ul{flex-wrap:wrap;justify-content:center}header .header-actions{justify-content:center}.nav-long{display:none}.nav-short{display:inline}}.project-group{padding:0 var(--gutter);margin:var(--s-5) 0 var(--s-9)}.project-category{display:inline-block;background-color:var(--ink);color:var(--paper);font-size:var(--fs-sm);font-weight:400;padding:var(--s-1) var(--s-2);border-radius:var(--radius-pill);margin:0}.project-group-intro{font-size:var(--fs-xl);line-height:1.25;max-width:53rem;margin:var(--s-4) 0 0}.project-list{display:flex;flex-direction:column;gap:var(--s-7);margin-top:var(--s-7)}.project{display:grid;grid-template-columns:var(--aside) 7rem minmax(0,38.75rem) 1fr;column-gap:var(--col-gap);align-items:center}.project-media{grid-column:2}.project-media img{display:block;width:auto;height:auto;max-width:7rem;max-height:4.75rem;border:1px solid var(--ink);padding:8px;filter:grayscale(1);transition:filter .3s ease}.project:hover .project-media img{filter:grayscale(0)}.project-body{grid-column:3}.project-name{display:inline-block;font-size:var(--fs-sm);font-weight:400;line-height:1.2;padding:var(--s-0) var(--s-1);border:1px solid var(--ink);border-radius:var(--radius-pill);margin:0}.project-text{font-size:var(--fs-sm);line-height:1.3;margin-top:var(--s-3)}.project-text p{margin:0}.project-link{grid-column:4;justify-self:end;display:inline-flex;color:var(--ink);transition:transform .2s ease}.project-link:hover,.project-link:focus-visible{transform:translate(3px,-3px)}@media(max-width:768px){.project-group{margin:var(--s-3) 0 var(--s-7)}.project-group-intro{margin-top:var(--s-3)}.project-list{gap:var(--s-5);margin-top:var(--s-4)}.project{display:flex;flex-direction:column;align-items:flex-start;gap:var(--s-2);position:relative}.project-media,.project-body,.project-link{grid-column:auto;grid-row:auto}.project-media img{max-width:5.5rem;max-height:3.75rem}.project-body{width:100%}.project-text{margin-top:var(--s-2)}.project-link{position:absolute;top:0;right:0}}.blog-section{padding:var(--section-y) 0}.post-single-section{padding:var(--section-y) var(--gutter)}.blog-intro,.blog-content{padding:0 var(--gutter)}.blog-intro{font-size:var(--fs-xl);line-height:1.25;max-width:53rem;margin:var(--s-7) 0 0}.blog-content{display:grid;grid-template-columns:var(--aside) minmax(0,1fr);column-gap:var(--col-gap);margin:var(--s-8) 0 var(--s-9)}.blog-illustration{grid-column:1;align-self:end}.blog-illustration img{display:block;width:100%;max-width:80%;height:auto}.post-list{grid-column:2;display:flex;flex-direction:column;gap:var(--s-7)}.post-item{display:grid;grid-template-columns:minmax(0,50rem) 1fr;column-gap:var(--col-gap);align-items:center}.post-body{grid-column:1}.post-title{font-size:var(--fs-lg);font-weight:400;line-height:1.2;margin:0}.post-title a{color:var(--link);transition:color .2s ease}.post-title a:hover{color:var(--ink)}.post-date{display:inline-block;font-size:var(--fs-xs);line-height:1.2;padding:var(--s-0) var(--s-1);border:1px solid var(--ink);border-radius:var(--radius-pill);margin-top:var(--s-2)}.post-subtitle{font-size:var(--fs-lg);margin:var(--s-2) 0 0}.post-summary{font-size:var(--fs-sm);line-height:1.3;margin-top:var(--s-3)}.post-summary p{margin:0}.post-link{grid-column:2;justify-self:end;display:inline-flex;color:var(--ink);transition:transform .2s ease}.post-link:hover,.post-link:focus-visible{transform:translate(3px,-3px)}.post-back{display:inline-block;font-size:var(--fs-sm);margin-bottom:var(--s-4);transition:color .2s ease;padding:0 var(--gutter)}.post-back span{display:inline-block;transition:transform .2s ease}.post-back:hover{color:var(--link)}.post-back:hover span{transform:translate(-4px)}.post-header{border-bottom:var(--rule);padding-bottom:var(--s-6)}.post-page-title{font-size:var(--fs-post);font-weight:400;line-height:1.05;letter-spacing:-.02em;max-width:70rem;margin:0}.post-layout{display:grid;grid-template-columns:var(--aside) minmax(0,43.75rem);column-gap:var(--col-gap);margin:var(--s-6) 0 var(--s-9)}.post-meta{position:sticky;top:var(--s-3);align-self:start;padding:0 var(--gutter)}.post-meta .post-date{margin-top:0}.post-meta-subtitle{display:block;font-size:var(--fs-sm);margin:var(--s-2) 0 0}.post-content{font-size:var(--fs-md);line-height:1.5}.post-content>:first-child{margin-top:0}.post-cover{margin:0 0 var(--s-5)}.post-content .post-cover img{display:block;margin:0;width:100%;height:auto;border:1px solid var(--ink)}.post-lead{font-size:var(--fs-xl);line-height:1.3;margin-bottom:var(--s-5)}.post-content p{margin:0 0 1.2em}.post-content h2{font-size:var(--fs-2xl);font-weight:400;line-height:1.2;margin:2em 0 .6em}.post-content h3{font-size:var(--fs-lg);font-weight:400;line-height:1.25;margin:1.6em 0 .5em}.post-content a{color:var(--link);text-decoration:underline;text-underline-offset:.2em}.post-content a:hover{color:var(--ink)}.post-content ul,.post-content ol{padding-left:1.2em;margin:0 0 1.2em}.post-content li{margin-bottom:.4em}.post-content blockquote{margin:1.6em 0;padding-left:var(--s-3);border-left:3px solid var(--link);font-size:var(--fs-lg);line-height:1.35}.post-content img{display:block;max-width:100%;height:auto;margin:2em 0;border:1px solid var(--ink)}.post-content code{font-family:var(--font-mono);font-size:.85em;background-color:var(--ink);color:var(--paper);padding:.125em .375em;border-radius:var(--radius-sm)}.post-content pre{background-color:var(--ink);color:var(--paper);padding:var(--s-3);border-radius:var(--radius-md);overflow-x:auto;margin:1.6em 0}.post-content pre code{background:none;padding:0}.post-content hr{border:0;border-top:var(--rule);margin:2.5em 0}.post-next{display:flex;justify-content:space-between;align-items:center;gap:var(--s-3);border-top:var(--rule);padding:var(--s-3) var(--gutter)}.post-next-label{font-size:var(--fs-sm)}.post-next a{display:inline-flex;align-items:center;gap:var(--s-2);font-size:var(--fs-lg);color:var(--link)}.post-next a:hover{color:var(--ink)}@media(max-width:768px){.blog-intro{margin-top:var(--s-5)}.blog-content{grid-template-columns:1fr;row-gap:var(--s-6);margin:var(--s-6) 0 var(--s-8)}.post-list{grid-column:1;grid-row:1;gap:var(--s-5)}.blog-illustration{grid-row:2;justify-self:start}.blog-illustration img{max-width:15rem}.post-item{display:flex;flex-direction:column;align-items:flex-start;gap:var(--s-2);position:relative}.post-body,.post-link{grid-column:auto;grid-row:auto}.post-body{width:100%}.post-title{padding-right:var(--s-5)}.post-summary{margin-top:var(--s-2)}.post-link{position:absolute;top:0;right:0}.post-header{padding-bottom:var(--s-4)}.post-layout{display:flex;flex-direction:column;margin:var(--s-4) 0 var(--s-8)}.post-meta{position:static}.post-meta-subtitle{display:none}.post-content{margin:var(--s-2)}.post-lead{margin-bottom:var(--s-3)}.post-content blockquote{padding-left:var(--s-2)}.post-next{flex-direction:column;align-items:flex-start;gap:var(--s-2)}}.site-footer{display:grid;grid-template-columns:1fr 1fr;gap:var(--col-gap);align-items:flex-end;box-sizing:border-box;background-color:var(--ink);color:var(--paper);padding:var(--section-y) var(--gutter)}.footer-info p{margin:0}.footer-logo{font-family:var(--font-mono);font-size:var(--fs-md);letter-spacing:.02em}.footer-info .footer-tagline{font-size:var(--fs-lg);line-height:1.35;margin-top:var(--s-2)}.footer-info .footer-text{font-size:var(--fs-md);line-height:1.35;max-width:22.5rem;margin-top:var(--s-6)}.footer-text a{text-decoration:underline}.footer-contact{display:flex;flex-direction:column;text-align:end;gap:var(--s-1);justify-self:end;width:100%;max-width:80%;margin-top:var(--s-3)}.footer-contact-label{margin:0;font-size:var(--fs-lg)}.footer-contact-email{font-size:var(--fs-2xl);line-height:1.2;text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:.15em;overflow-wrap:anywhere}.footer-contact-email span{display:inline-block;transition:transform .2s ease}.footer-contact-email:hover,.footer-contact-email:focus-visible{color:var(--accent)}.footer-contact-email:hover span,.footer-contact-email:focus-visible span{transform:translate(4px)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){.footer-contact-email span{transition:none}}@media(max-width:768px){.site-footer{grid-template-columns:1fr;gap:var(--s-5)}.footer-info .footer-text{max-width:100%;margin-top:var(--s-3)}.footer-contact{justify-self:stretch;max-width:100%;margin-top:0}}:root{--ink: #1f1f1f;--paper: #d9d9d9;--accent: #8c85eb;--link: #696eff;--font-sans: "Ronzino", sans-serif;--font-mono: "JetBrains", ui-monospace, "SFMono-Regular", Menlo, monospace;--fs-xs: 1rem;--fs-sm: 1.125rem;--fs-md: 1.25rem;--fs-lg: 1.5rem;--fs-xl: 1.75rem;--fs-2xl: 2.25rem;--fs-post: clamp(2.5rem, 1.5rem + 4vw, 5rem);--fs-hero: clamp(3.5rem, 2.5rem + 4.5vw, 6rem);--fs-display: clamp(3.5rem, 2rem + 6vw, 7rem);--s-0: .25rem;--s-1: .5rem;--s-2: 1rem;--s-3: 1.5rem;--s-4: 2rem;--s-5: 2.5rem;--s-6: 3rem;--s-7: 4rem;--s-8: 5rem;--s-9: 7.5rem;--gutter: 4rem;--section-y: 3rem;--col-gap: var(--s-6);--aside: calc((100% - var(--col-gap)) / 3);--radius-sm: .25rem;--radius-md: .75rem;--radius-lg: 1rem;--radius-pill: 2rem;--rule: 1.5px solid var(--ink)}@media(max-width:1100px){:root{--gutter: 2.5rem;--section-y: 3rem}}@media(max-width:768px){:root{--fs-sm: 1rem;--fs-md: 1.125rem;--fs-lg: 1.25rem;--fs-xl: 1.5rem;--fs-2xl: 1.75rem;--gutter: 1.25rem;--section-y: 2rem}}html{scroll-behavior:smooth}body{background-color:var(--paper);color:var(--ink);font-family:var(--font-sans);margin:0}a{text-decoration:none;color:inherit}a:focus-visible,button:focus-visible{outline:2px dashed currentColor;outline-offset:var(--s-0)}.blog-title,.projects-title{font-size:var(--fs-display);font-weight:400;line-height:1;letter-spacing:-.02em;margin:0;padding:0 var(--gutter) var(--s-7);border-bottom:var(--rule)}.hero-section{padding:0 var(--gutter) var(--section-y)}.hero-top{display:grid;grid-template-columns:1fr 1fr;align-items:start;gap:var(--col-gap)}.hero-title-left,.hero-title-right{font-size:var(--fs-hero);font-weight:400;line-height:1;letter-spacing:-.02em;margin:0}.hero-title-right{line-height:1.05;text-align:right}.hero-bottom{display:flex;justify-content:space-between;align-items:flex-end;margin-top:var(--s-8)}.hero-illustration img{display:block;width:70%;height:auto}.intro-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-3);padding:0 var(--gutter);margin-bottom:var(--s-7)}.card.bg-purple{background-color:var(--accent);color:var(--ink);padding:var(--s-3);border-radius:var(--radius-lg);font-size:var(--fs-lg);line-height:1.45}.content-section{display:grid;grid-template-columns:var(--aside) minmax(0,1fr);column-gap:var(--col-gap);align-items:start;border-top:1px solid var(--ink);padding:var(--section-y) var(--gutter)}.section-header{display:flex;align-items:center;gap:var(--s-2)}.number-badge{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:2rem;height:2rem;border-radius:50%;background-color:var(--ink);color:var(--paper);font-size:var(--fs-sm);line-height:1}.section-header h3{margin:0;font-size:var(--fs-lg);font-weight:400}.section-body{display:flex;flex-direction:column}.section-body .lead{font-size:var(--fs-2xl);line-height:1.2;margin:0 0 var(--s-3)}.section-body .secondary{font-size:var(--fs-xl);line-height:1.3;align-self:flex-end;width:70%}.services-container{display:block;padding:0}.content-section.services-container{border-top:0}.services-container .section-header{margin-bottom:var(--s-3);padding:0 var(--gutter)}.services-list{display:flex;flex-direction:column;gap:var(--s-4);background-color:var(--accent);padding:var(--s-6) var(--gutter)}.service-row{display:grid;grid-template-columns:var(--aside) 1fr .5fr;gap:var(--s-3);align-items:center}.service-tag{max-width:fit-content;background-color:var(--ink);color:var(--paper);padding:var(--s-1) var(--s-2);border-radius:var(--radius-pill);font-size:var(--fs-lg)}.service-text{font-size:var(--fs-lg);line-height:1.4}.service-arrow{font-size:var(--fs-lg);font-weight:700;text-align:right}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}@media(max-width:1100px){.intro-cards{grid-template-columns:1fr;gap:var(--s-2)}}@media(max-width:768px){.blog-title,.projects-title{padding-bottom:var(--s-5)}.hero-section{padding-bottom:0}.hero-top{grid-template-columns:1fr;gap:var(--s-3)}.hero-title-right{text-align:left}.hero-bottom{flex-direction:column-reverse;align-items:flex-start;gap:var(--s-4);margin-top:var(--s-6)}.hero-illustration{display:flex;justify-content:flex-end}.hero-illustration img{margin-bottom:var(--s-3)}.intro-cards{margin-bottom:var(--s-5)}.content-section{grid-template-columns:1fr;row-gap:var(--s-3)}.section-body .secondary{width:100%;align-self:stretch}.services-list{padding-block:var(--s-4)}.service-row{grid-template-columns:1fr;gap:var(--s-2);padding-bottom:var(--s-2)}.service-row:last-child{padding-bottom:0}}
