@font-face{font-family:DM Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(/_astro/dm-sans.DeZdhjXY.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:400 700;font-display:swap;src:url(/_astro/dm-sans-latin.DWLRRLU9.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans Fallback;size-adjust:122.34%;ascent-override:81.1%;descent-override:25.34%;line-gap-override:0%;src:local(Arial)}:root{color-scheme:dark;--color-background:#0f1115;--color-surface:#171a21;--color-surface-raised:#1d222c;--color-text:#f4f7fb;--color-text-muted:#b4bdcb;--color-accent:#7dd3fc;--color-accent-hover:#bae6fd;--color-border:#354052;--color-focus:#fbbf24;--font-sans:"DM Sans", "DM Sans Fallback", sans-serif;--content-max:76rem;--content-measure:65ch;--radius:.875rem;--radius-control:999px;--ease-out:cubic-bezier(.16, 1, .3, 1)}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--color-background);min-width:320px;color:var(--color-text);font-family:var(--font-sans);text-rendering:optimizelegibility;margin:0;font-size:1rem;line-height:1.6}img{max-width:100%;display:block}a{color:var(--color-accent);text-underline-offset:.22em;transition:color .18s var(--ease-out), transform .18s var(--ease-out), border-color .18s var(--ease-out), background-color .18s var(--ease-out);text-decoration-thickness:.08em}a:hover{color:var(--color-accent-hover)}a:active{transform:translateY(1px)}:focus-visible{outline:3px solid var(--color-focus);outline-offset:4px}.skip-link{z-index:100;position:absolute;left:-9999px}.skip-link:focus{border-radius:var(--radius);color:var(--color-background);background:var(--color-accent);padding:.6rem 1rem;font-weight:700;text-decoration:none;display:inline-block;position:fixed;top:1rem;left:1rem}::selection{background:var(--color-accent);color:var(--color-background)}.site-header,main,footer{width:min(100% - 2rem, var(--content-max));margin-inline:auto}.site-header{border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:1rem;min-height:4.5rem;display:flex}.wordmark{color:var(--color-text);font-family:var(--font-sans);gap:.05rem;font-size:.72rem;line-height:1.35;text-decoration:none;display:grid}.wordmark span:last-child{color:var(--color-text-muted)}nav ul,.contact-links,.hero-stack,.hero-profiles,.project-technologies{margin:0;padding:0;list-style:none}nav ul{gap:.9rem;display:flex}nav a{padding-block:.25rem;font-size:.875rem;display:inline-block}nav a[aria-current=location]{color:var(--color-text);text-decoration-thickness:.16em}main>section{scroll-margin-top:1rem}.hero{gap:2rem;padding-block:3.5rem 5rem;display:grid}.hero-copy{align-self:center}.eyebrow{color:var(--color-accent);font-family:var(--font-sans);letter-spacing:.08em;text-transform:uppercase;margin:0 0 .85rem;font-size:.72rem}h1,h2,h3,p{margin-top:0}h1,h2,h3{text-wrap:balance}h1{letter-spacing:-.065em;max-width:10ch;margin-bottom:.75rem;font-size:clamp(2.85rem,13vw,5.75rem);line-height:.98}.hero-role{color:var(--color-accent);margin-bottom:1.25rem;font-weight:600}h2{letter-spacing:-.055em;margin-bottom:0;font-size:clamp(2rem,7vw,3.75rem);line-height:1}h3{letter-spacing:-.04em;margin-bottom:.85rem;font-size:clamp(1.55rem,4vw,2.25rem);line-height:1.05}.hero-intro,.project-details>p,.contact-content>p{max-width:var(--content-measure);color:var(--color-text-muted);margin-bottom:1.5rem}.hero-link,.email-link{border:1px solid var(--color-accent);border-radius:var(--radius-control);min-height:2.75rem;color:var(--color-background);background:var(--color-accent);white-space:nowrap;align-items:center;padding:.6rem 1rem;font-weight:700;text-decoration:none;display:inline-flex}.hero-link:hover,.email-link:hover{border-color:var(--color-accent-hover);color:var(--color-background);background:var(--color-accent-hover)}.hero-panel{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);align-self:center;padding:clamp(1.5rem,4vw,2rem)}.hero-stack{grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem 1.5rem;font-size:.95rem;display:grid}.hero-profiles{border-top:1px solid var(--color-border);flex-wrap:wrap;gap:.7rem 1.25rem;margin-top:1.5rem;padding-top:1.25rem;font-size:.875rem;display:flex}.hero-profiles a{font-weight:600}.projects{border-top:1px solid var(--color-border);padding-block:5rem}.section-heading{margin-bottom:2rem}.project-collection{gap:1rem;display:grid}.project{border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);min-width:0;color:var(--color-text);text-decoration:none;display:block;overflow:hidden}.project-preview{aspect-ratio:16/10;background:var(--color-surface-raised);overflow:hidden}.project-preview img{object-fit:contain;object-position:top center;width:100%;height:100%;transition:transform .5s var(--ease-out)}.project:hover .project-preview img{transform:scale(1.025)}.project:hover{color:var(--color-text)}.project-details{flex-direction:column;align-items:flex-start;min-height:100%;padding:1.5rem;display:flex}.project-details>p{margin-bottom:1.25rem}.project-technologies{color:var(--color-text-muted);font-family:var(--font-sans);flex-wrap:wrap;gap:.45rem;margin-bottom:1.75rem;font-size:.72rem;display:flex}.project-technologies li{border:1px solid var(--color-border);border-radius:var(--radius-control);padding:.2rem .45rem}.project-link{margin-top:auto;font-weight:700}.contact{border-top:1px solid var(--color-border);gap:2rem;padding-block:5rem;display:grid}.contact-content{align-content:start;justify-items:start;display:grid}.contact-links{flex-wrap:wrap;gap:.7rem 1.25rem;margin-top:1.5rem;display:flex}.contact-links a{font-weight:600}footer{border-top:1px solid var(--color-border);padding-block:1.5rem 2rem}footer p{color:var(--color-text-muted);font-family:var(--font-sans);margin:0;font-size:.72rem}@media (width>=48rem){.site-header,main,footer{width:min(100% - 4rem, var(--content-max))}.wordmark{gap:.65rem;display:flex}.wordmark span:last-child:before{color:var(--color-border);content:"/";margin-right:.65rem}nav ul{gap:1.5rem}.hero{grid-template-columns:minmax(0,1.1fr) minmax(17rem,.9fr);align-items:center;gap:clamp(2.5rem,7vw,6rem);min-height:min(38rem,100dvh - 4.5rem);padding-block:4.5rem}.projects,.contact{padding-block:7rem}.project-collection{grid-template-columns:repeat(12,minmax(0,1fr))}.project-primary{grid-column:1/-1;grid-template-columns:minmax(0,1.25fr) minmax(17rem,.75fr);align-items:start;display:grid}.project-primary .project-preview{align-self:start}.project-secondary{grid-column:1/span 5;align-self:start}.project-tertiary{grid-column:6/-1;align-self:start}.contact{grid-template-columns:minmax(0,.65fr) minmax(0,1fr);gap:4rem}}@media (width<=47.99rem){.email-link{overflow-wrap:anywhere;white-space:normal;max-width:100%}}@media (width>=68rem){.hero{min-height:min(40rem,100dvh - 4.5rem)}.project-details{padding:2rem}}@media (prefers-reduced-motion:no-preference){.hero-copy>*,.hero-panel{animation:hero-enter .6s var(--ease-out) backwards}.hero-copy>:nth-child(2){animation-delay:70ms}.hero-copy>:nth-child(3){animation-delay:.14s}.hero-copy>:nth-child(4){animation-delay:.21s}.hero-panel{animation-delay:.28s}}@keyframes hero-enter{0%{opacity:0;transform:translateY(12px)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
