@layer reset,base,layout,components,utilities,pages;@layer reset{*,*:before,*:after{box-sizing:border-box}html{-moz-text-size-adjust:none;-webkit-text-size-adjust:none;text-size-adjust:none}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd{margin-block-end:0}body,h1,h2,h3,h4,h5,h6,p,a,ul,ol{margin:0;padding:0}ul,ol{list-style:none}body{min-height:100vh;line-height:1.5}h1,h2,h3,h4,button,input,label,summary,select{line-height:1.3}h1,h2,h3,h4,h5,h6{text-wrap:balance}p,li,figcaption{text-wrap:pretty}header,footer,main,section,article{container-type:inline-size}a{text-decoration-skip-ink:auto;color:currentColor;text-decoration:none;font-family:inherit}img,picture{font-style:italic;max-inline-size:100%;vertical-align:middle;height:auto;background-repeat:no-repeat;background-size:cover;shape-margin:1rem}input,button,textarea,select{font-family:inherit;font-size:inherit}textarea:not([rows]){min-height:10em}:target{scroll-margin-block:5ex}button{border:0;outline:0;background:transparent;cursor:pointer}}@layer base{/**
* @license
*
* Font Family: Erode
* Designed by: Nikhil Ranganathan
* URL: https://www.fontshare.com/fonts/erode
* © 2025 Indian Type Foundry

*
*/@font-face{font-family:Erode;src:url(/fonts/Erode/Erode-Variable.woff2) format("woff2"),url(/fonts/Erode/Erode-Variable.woff) format("woff"),url(/fonts/Erode/Erode-Variable.ttf) format("truetype");font-weight:300 700;font-display:swap;font-style:normal}/**
* @license
*
* Font Family: JetBrains Mono
* Designed by: JetBrains, Philipp Nurullin, Konstantin Bulenkov
* URL: https://www.fontshare.com/fonts/jet-brains-mono
* © 2025 Indian Type Foundry

*
*/@font-face{font-family:JetBrainsMono;src:url(/fonts/JetBrainsMono/JetBrainsMono-Variable.woff2) format("woff2"),url(/fonts/JetBrainsMono/JetBrainsMono-Variable.woff) format("woff"),url(/fonts/JetBrainsMono/JetBrainsMono-Variable.ttf) format("truetype");font-weight:100 800;font-display:swap;font-style:normal}}@layer base{:root{--font-serif: "Erode";--code-font: "JetBrainsMono";--font-size-base: 1rem;--font-size-body: 1.25rem;--font-size-s: .95rem;--font-size-xs: .85rem;--font-size-l: 3rem;--font-size-4: 1.25rem;--font-size-3: 1.375rem;--font-size-2: 1.7rem;--font-size-1: 2.3rem;--color-site-background: white;--color-grey-background: rgb(245, 245, 245);--color-dark-background: #121212;--color-text-100: hsl(0, 0%, 10%);--color-text-80: hsl(0, 0%, 20%);--color-text-65: hsl(0, 0%, 30%);--color-text-50: hsl(0, 0%, 41%);--color-text-35: hsl(0, 0%, 60%);--color-text-20: hsl(0, 0%, 85%);--color-text-10: hsl(0, 0%, 93%);--_color-accent: 210, 80%, 40%;--color-accent-100: hsla(var(--_color-accent), 1);--color-accent-70: hsla(var(--_color-accent), .7);--color-accent-40: hsla(var(--_color-accent), .4);--color-accent-40-rgb: rgb(165, 188, 218);--color-accent-25: hsla(var(--_color-accent), .25);--color-accent-15: hsla(var(--_color-accent), .15);--color-accent-15-rgb: rgb(221, 228, 235);--color-accent-5: hsla(var(--_color-accent), .05);--color-accent-yellow: rgb(255, 254, 85);--_color-accent-secondary: 10, 55%, 45%;--color-accent-secondary-15: hsla(var(--_color-accent-secondary), .15);--color-accent-secondary-30: hsla(var(--_color-accent-secondary), .3);--color-accent-secondary-100: hsla(var(--_color-accent-secondary), 1)}body{--line-height: 1.6;font-family:var(--font-serif),serif;font-size:var(--font-size-body);font-weight:400;font-style:normal;line-height:var(--line-height);overflow-x:hidden;background-color:var(--color-site-background);display:grid;grid-template-rows:auto 1fr auto}h1,.h1,h2,.h2,h3,.h3,h4,.h4,a{font-weight:500}.font-weight-400{font-weight:400}h1,.h1{--font-size: var(--font-size-1);font-size:var(--font-size);--font-size-diff: .3}h2,.h2{--font-size: var(--font-size-2);font-size:var(--font-size)}h3,.h3{--font-size: var(--font-size-3);font-size:var(--font-size)}h4,.h4{--font-size: var(--font-size-4);font-size:var(--font-size)}a{&.with-underline{text-decoration:underline}.prose &{text-decoration:underline;code{color:var(--color-accent-100);text-decoration:underline;text-decoration-color:var(--color-accent-100)}}&.with-icon{display:inline-flex;align-items:center;justify-content:start;gap:7px;&.left{flex-direction:row-reverse}}&:hover{background-color:var(--color-accent-15)}&.dark-standard{color:#fff;&:hover{background-color:unset;color:var(--color-text-35)}}&.copy-standard{&:hover{background-color:unset;color:var(--color-text-50)}}}.button{background-color:var(--color-accent-15);color:var(--color-text-65);border-radius:10px;padding:7px 12px;&:hover{background-color:var(--color-accent-40)}}p,.p{--font-size: var(--font-size-body);font-size:var(--font-size)}.fs-base{font-size:var(--font-size-base)}.fs-s{font-size:var(--font-size-s)}.fs-xs{font-size:var(--font-size-xs)}.fs-l{--font-size: var(--font-size-l)}.fluid-type{font-size:clamp(1rem,4cqi,3rem)}@supports (font-size: 1cqi){:is(h1,.h1,h2,.h2,h3,.h3,h4,.h4,.fluid-type){--_font-min: calc(var(--font-size) - var(--font-size) * var(--font-size-diff, .3));font-size:clamp(max(var(--font-size-body),var(--_font-min)),var(--_font-min) + 1cqi,var(--font-size))}}.theme-grey{background-color:var(--color-grey-background);padding:2rem;border-radius:5px;p{color:var(--color-text-65)}span{color:var(--color-text-35)}}.theme-dark{padding:2rem;border-radius:5px;background-color:var(--color-dark-background);color:#d4d4d4;@media (width < 768px){grid-column:full-width}}.theme-beige{padding-block:4rem;border-radius:5px;background-color:#f7f7f5}}@layer layout{@layer content-grid{.content-grid{--padding-inline: 1.5rem;--content-max-width: 1200px;--breakout-max-width: 1200px;--breakout-size: calc((var(--breakout-max-width) - var(--content-max-width)) / 2);container:content-grid / inline-size;display:grid;grid-template-columns:[full-width-start] minmax(var(--padding-inline),1fr) [breakout-start] minmax(0,var(--breakout-size)) [content-start] min(100% - (var(--padding-inline) * 2),var(--content-max-width)) [content-end] minmax(0,var(--breakout-size)) [breakout-end] minmax(var(--padding-inline),1fr) [full-width-end]}.content-grid>:not(.breakout,.full-width),.full-width>:not(.breakout,.full-width){grid-column:content}.content-grid>.breakout{grid-column:breakout}.content-grid>.full-width{grid-column:full-width;display:grid;grid-template-columns:inherit}}@layer dual-column{.dual-column{display:grid;gap:4rem;@media (width > 768px){grid-template-columns:35% 1fr;>:only-child{grid-column:2}}}}@layer single-column{.single-column{width:100%;display:flex;justify-content:flex-end;.prose{width:min(calc(var(--content-max-width) * .65 - 4rem),100%)}}}@layer prose{.prose,.prose .prose-include{overflow:hidden;:first-child{margin-top:0}:first-child:is(img){margin-bottom:1rem}>h1,>h2,>h3,>h4{margin-top:2.5rem}>p,img{margin-top:1rem}>ul{list-style:disc;padding-left:2rem;li ul{list-style:circle;padding-left:2rem}li::marker{font-size:var(--font-size-s)}}>div:not(.prose-exclude){margin-top:1rem;margin-bottom:1rem}}}}@layer utilities{.hidden{display:none}.underline{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1px}.with-border-top{margin-top:1rem;border-top:1px solid var(--color-text-10);padding-top:1rem}.italic{font-style:italic}.color-text-35{color:var(--color-text-35)}.color-text-50{color:var(--color-text-50)}.color-text-65{color:var(--color-text-65)}.color-text-80{color:var(--color-text-80)}.color-text-100{color:var(--color-text-100)}.color-accent-70{color:var(--color-accent-70)}.color-accent-100{color:var(--color-accent-100)}.color-accent-secondary-100{color:var(--color-accent-secondary-100)}.color-success{color:#6bcb77}.color-failure{color:var(--color-accent-secondary-100)}.gap-1{gap:1rem}.flow-1 *+*{margin-top:1rem}.flow-2 *+*{margin-top:2rem}.flex{display:flex;align-items:center}.flex-align-self-start{align-self:start}.flex-space{display:flex;align-items:center;justify-content:space-between}.flex-col{display:flex;flex-direction:column}.flex-col--5{display:flex;flex-direction:column;gap:.5rem}.flex-col-1{display:flex;flex-direction:column;gap:1rem}.flex-col-2{display:flex;flex-direction:column;gap:2rem}.flex-row--5{display:flex;align-items:center;gap:.5rem}.flex-row-1{display:flex;align-items:center;gap:1rem}.flex-row-2{display:flex;align-items:center;gap:2rem}.flex-wrap{display:flex;flex-wrap:wrap}.flow--5 *+*{margin-top:.5rem}.ul-flow{display:flex;flex-direction:column;gap:1rem;*>*+*{margin-top:.5rem}}.indent-line-4{text-indent:4rem}.padding-4-2{padding:4rem}.margin-top-1{margin-top:1rem}.margin-top-2{margin-top:2rem}.margin-top-4{margin-top:4rem}.margin-top-6{margin-top:6rem}.margin-top-8{margin-top:8rem}.margin-top-10{margin-top:10rem}.margin-top-12{margin-top:12rem}.margin-top-16{margin-top:16rem}.max-width-60ch{max-width:60ch}.grid-span-all{grid-column:1 / -1}.ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.two-lines,.three-lines,.four-lines{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}.two-lines{-webkit-line-clamp:2}.three-lines{-webkit-line-clamp:3}.four-lines{-webkit-line-clamp:4}.scroller{overflow:scroll;scrollbar-width:none;-ms-overflow-style:none;&::-webkit-scrollbar{display:none}&.vert{mask:linear-gradient(to bottom,transparent 0%,black 10%,black 50%,transparent 100%) no-repeat 0 / 100% 100%;-webkit-mask:-webkit-linear-gradient(to bottom,transparent 0%,black 5px,black 90%,transparent 100%) no-repeat 0 / 100% 100%}&.horiz{mask:linear-gradient(to right,black 90%,transparent 100%) no-repeat 0 / 100% 100%;-webkit-mask:-webkit-linear-gradient(to right,transparent 0%,black 5px,black 90%,transparent 100%) no-repeat 0 / 100% 100%}}.image-scale{.image-wrapper{overflow:hidden}img{overflow:hidden;transition:transform .3s}&:hover img{transform:scale(1.05)}}.footer-spacer-beige+footer{--color-footer-spacer: rgb(247, 247, 245)}}@layer pages{@layer home;@layer work{.works{display:grid;gap:2rem}.work{display:grid;@container content-grid (inline-size > 800px){grid-template-columns:minmax(50%,60%) minmax(40%,50%);max-height:400px}border-radius:10px;background-color:var(--color-grey-background);p{font-weight:400}img{height:100%;width:100%;object-fit:cover}&:hover{background-color:var(--color-accent-15)}}.work--content{flex:1;padding:1rem 2rem;span{margin-top:auto}}.work--content--header{display:grid;grid-template-columns:1fr auto;gap:1rem;padding:1rem 2rem;background-color:var(--color-accent-5);ul{display:flex;gap:1rem;padding-right:10%;li{white-space:nowrap}}}}@layer writings{.writings-index{display:grid;gap:6rem 2rem;@container content-grid (inline-size > 570px){grid-template-columns:repeat(2,1fr)}@container content-grid (inline-size > 1100px){grid-template-columns:repeat(3,1fr)}img{width:100%;aspect-ratio:1;object-fit:cover}}.writing--image{--object-position: center;object-position:var(--object-position)}}@layer post{.metadata{@media (width < 768px){row-gap:2rem;margin-top:2rem;padding-top:unset;border-top:unset;.description{grid-row:1}.dates{grid-row:2;border-top:1px solid var(--color-text-10);padding-top:1rem}}}.writing--content{nav ul{display:grid;gap:2rem;@media (width > 768px){grid-template-columns:repeat(2,1fr)}li{display:grid}a{text-decoration:none;padding:2rem;display:grid;align-content:start;color:var(--color-accent-secondary-100)}}}.post--image{max-height:650px;img{height:100%;width:100%;object-fit:cover}}.post--header{max-width:min(50ch,100%)}}@layer about{.about--images{display:grid;gap:2rem;img{width:min(400px,100%)}@media (width > 900px){grid-template-columns:1fr 1fr;:nth-child(2){margin-top:30%}}}.cv{display:grid;gap:2rem;span,ul{color:var(--color-text-35)}>li:not(:last-child){padding-bottom:2rem;border-bottom:1px solid var(--color-text-10)}}.role{display:grid;gap:1rem}.role--tags{li{display:inline}li:not(:last-child):after,.date:before{content:" ·";margin-inline:1ch}}}@layer contact.components.form{.form--wrapper{width:min(600px,100%)}form{display:grid;gap:2rem;color:var(--color-text-65)}.form-group{display:grid;grid-auto-rows:min-content;gap:.25rem;&:has([required]) label{display:flex;gap:1ch;&:after{content:"*";color:var(--color-accent-100)}}}input,textarea{--_color-box-shadow: var(--color-accent-40);padding:.75em 1em;border:1px solid var(--color-text-50);border-radius:5px;background:transparent;outline:none;accent-color:var(--color-accent-40);transition:box-shadow .2s ease;&:focus-visible{box-shadow:6px 6px 0 var(--_color-box-shadow)}.form-group:has(.error-message:not(:empty)) &{border-color:var(--color-accent-secondary-100);&:focus-visible{--_color-box-shadow: var(--color-accent-secondary-30)}}}textarea{box-sizing:content-box;resize:vertical;min-block-size:3lh}form button{padding:1em 1.5em;border-radius:16px;background-color:var(--color-accent-15);color:var(--color-text-65);&:hover,&:focus-visible{background-color:var(--color-accent-40)}}.hp{opacity:0;position:absolute;top:0;left:0;height:0;width:0;z-index:-1}#form-status:empty{display:none}.error-message{font-size:var(--font-size-base);color:var(--color-accent-secondary-100)}.error-message:empty{display:none}}@layer sitemap{.sitemap{display:grid;gap:6rem;>li{display:grid;grid-template-columns:100px 1fr;gap:2rem;ul{display:flex;flex-direction:column;gap:.5rem}}p{color:var(--color-accent-100)}a{font-weight:400}.may-scroll{max-height:400px}}}@layer error{.error{display:grid;gap:2rem;& h1{color:var(--color-accent-secondary-100)}}}}@layer components{@layer code-block{.code-block{font-family:var(--code-font),monospace;position:relative;background-color:var(--color-grey-background);overflow:scroll;max-height:min(600px,60svh)}.code-block--header{position:sticky;top:0;left:0;right:0;background:var(--color-accent-40-rgb);padding:.5rem 2rem 0;display:flex;align-items:center;justify-content:space-between}.filename{padding:2px 14px;border-radius:5px 5px 0 0;background-color:var(--color-grey-background)}pre{font-size:var(--font-size-base);padding:1rem;background-color:unset!important;color:unset!important;overflow-x:unset!important}}@layer code-inline{code:not(pre code){font-size:var(--font-size-base);background-color:var(--color-accent-25);padding:2px 6px}}}svg[data-astro-cid-mbqdmgin]{fill:currentColor}header[data-astro-cid-3ef6ksr2]{z-index:999;position:sticky;top:0;left:0;right:0;padding-block:3rem;margin-bottom:8rem;background-color:var(--color-site-background)}.nav-toggle[data-astro-cid-3ef6ksr2]{display:none}nav[data-astro-cid-3ef6ksr2]{z-index:999;display:flex;flex-direction:row;background-color:var(--color-site-background)}.nav--pages[data-astro-cid-3ef6ksr2]{display:flex;flex-direction:row;align-items:center;gap:2rem}.nav--socials[data-astro-cid-3ef6ksr2]{display:none}@media (width < 768px){header[data-astro-cid-3ef6ksr2]{padding-block:2rem;margin-bottom:3rem}.nav-toggle[data-astro-cid-3ef6ksr2]{z-index:1000;display:block;margin-left:auto;color:var(--color-accent-100)}nav[data-astro-cid-3ef6ksr2]{position:fixed;inset:0;flex-direction:column;justify-content:flex-end;align-items:flex-end;gap:2rem;padding:2rem 2rem 6rem;font-size:var(--font-size-2);display:none;transform:translateY(5%);opacity:0;transition:display .8s,transform .4s ease,opacity .2s ease-in-out;transition-behavior:allow-discrete}body:has(nav[data-visible=true]){overflow:hidden}nav[data-astro-cid-3ef6ksr2][data-visible=true]{display:flex;transform:translateY(0);opacity:1;@starting-style{display:flex;transform:translateY(5%);opacity:0}}.nav--pages[data-astro-cid-3ef6ksr2]{flex-direction:column;align-items:flex-end;gap:1rem}.nav--socials[data-astro-cid-3ef6ksr2]{display:flex;gap:1.5rem;border-top:1px solid var(--color-text-65);padding-top:2rem}}footer[data-astro-cid-sz7xmlte]{background-color:var(--color-dark-background)}.footer-spacer[data-astro-cid-sz7xmlte]{background-color:var(--color-footer-spacer, var(--color-site-background));height:20rem;width:100%}.footer[data-astro-cid-sz7xmlte]{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem 2rem;padding-block:2rem;color:#d4d4d4}nav[data-astro-cid-sz7xmlte],ul[data-astro-cid-sz7xmlte]{display:flex;align-items:center;gap:1.5rem 2rem}.socials[data-astro-cid-sz7xmlte]{gap:1rem;padding-left:2rem;border-left:1px solid currentColor;li{display:grid}}@media (width < 768px){.footer[data-astro-cid-sz7xmlte],nav[data-astro-cid-sz7xmlte]{flex-direction:column;align-items:flex-start}.socials[data-astro-cid-sz7xmlte]{padding:unset;border-left:0}}
