@font-face{font-family:Playfair Display;font-style:normal;font-weight:400 900;font-display:swap;src:url(../media/65c558afe41e89d6-s.013x9cty0dvbp.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Playfair Display;font-style:normal;font-weight:400 900;font-display:swap;src:url(../media/14e23f9b59180572-s.054a9rxhye2rx.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Playfair Display;font-style:normal;font-weight:400 900;font-display:swap;src:url(../media/b49b0d9b851e4899-s.12c_00cnxx2oq.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Playfair Display;font-style:normal;font-weight:400 900;font-display:swap;src:url(../media/2a65768255d6b625-s.p.2r-cuu_7locvx.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:Playfair Display Fallback;src:local(Times New Roman);ascent-override:97.25%;descent-override:22.56%;line-gap-override:0.0%;size-adjust:111.26%}.playfair_display_60d25767-module__pXh9WG__className{font-family:Playfair Display,Playfair Display Fallback;font-style:normal}.playfair_display_60d25767-module__pXh9WG__variable{--display:"Playfair Display", "Playfair Display Fallback"}
@font-face{font-family:DM Sans;font-style:normal;font-weight:100 1000;font-display:swap;src:url(../media/c3cb240f9c892514-s.270md_-rr62el.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans;font-style:normal;font-weight:100 1000;font-display:swap;src:url(../media/5c285b27cdda1fe8-s.p.0lsanbtneewqp.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;src:local(Arial);ascent-override:94.9%;descent-override:29.66%;line-gap-override:0.0%;size-adjust:104.53%}.dm_sans_619a8aa7-module__lgBSAq__className{font-family:DM Sans,DM Sans Fallback;font-style:normal}.dm_sans_619a8aa7-module__lgBSAq__variable{--body:"DM Sans", "DM Sans Fallback"}
:root{--bg:#ecece8;--surface:#f8f8f5;--black:#161614;--dark-gray:#3a3a38;--mid-gray:#55554f;--light-gray:#b9b9b4;--red:#a32626;--red-dark:#7f1d1d;--light-red:#ebcfcf;--border:#16161438;--shapes:.03;--radius:10px;--radius-lg:16px}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background-color:var(--bg);min-height:100vh;color:var(--dark-gray);font-family:var(--body), system-ui, sans-serif;-webkit-font-smoothing:antialiased;flex-direction:column;margin:0;padding-top:64px;line-height:1.6;display:flex;position:relative}body:before{content:"";z-index:-1;pointer-events:none;opacity:var(--shapes);background-image:url(data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%27720%27%20height%3D%27720%27%20viewBox%3D%270%200%20720%20720%27%3E%3Ccircle%20cx%3D%27130%27%20cy%3D%27140%27%20r%3D%2770%27%20fill%3D%27%23161614%27%20fill-opacity%3D%27.8%27/%3E%3Ccircle%20cx%3D%27540%27%20cy%3D%27470%27%20r%3D%2790%27%20fill%3D%27none%27%20stroke%3D%27%23161614%27%20stroke-width%3D%274%27/%3E%3Ccircle%20cx%3D%27330%27%20cy%3D%2790%27%20r%3D%2722%27%20fill%3D%27%23161614%27%20fill-opacity%3D%27.8%27/%3E%3Ccircle%20cx%3D%2760%27%20cy%3D%27420%27%20r%3D%2730%27%20fill%3D%27none%27%20stroke%3D%27%23161614%27%20stroke-width%3D%273%27/%3E%3Cpolygon%20points%3D%27560%2C70%20640%2C200%20480%2C200%27%20fill%3D%27%23161614%27%20fill-opacity%3D%27.8%27/%3E%3Cpolygon%20points%3D%27190%2C560%20260%2C680%20120%2C680%27%20fill%3D%27none%27%20stroke%3D%27%23161614%27%20stroke-width%3D%274%27/%3E%3Cpolygon%20points%3D%27360%2C310%20376.3%2C357.7%20426.5%2C358.5%20386.3%2C388.5%20401.3%2C436.8%20360%2C407.5%20318.7%2C436.8%20333.7%2C388.5%20293.5%2C358.5%20343.7%2C357.7%27%20fill%3D%27%23161614%27%20fill-opacity%3D%27.8%27/%3E%3Cpolygon%20points%3D%27620%2C555.2%20630.4%2C585.8%20662.6%2C586.2%20636.8%2C605.4%20646.4%2C636.3%20620%2C617.6%20593.6%2C636.3%20603.2%2C605.4%20577.4%2C586.2%20609.6%2C585.8%27%20fill%3D%27%23161614%27%20fill-opacity%3D%27.8%27/%3E%3C/svg%3E);background-size:720px 720px;position:absolute;inset:0}main{flex:1;width:100%}h1,h2,h3{font-family:var(--display), Georgia, serif;color:var(--black);letter-spacing:-.02em;margin:0 0 .5em;font-weight:500;line-height:1.1}h1{font-size:clamp(2.2rem,5vw,3.5rem)}h2{font-size:clamp(1.5rem,3vw,2rem)}a{color:inherit}:focus-visible{outline:3px solid var(--red);outline-offset:3px}.nav :focus-visible{outline-color:var(--light-red)}.nav{z-index:100;background:var(--red);border-bottom:1px solid var(--black);justify-content:space-between;align-items:center;height:64px;padding:0 clamp(1rem,4vw,3rem);display:flex;position:fixed;inset:0 0 auto}.nav nav{align-items:center;gap:clamp(1rem,3vw,2.5rem);display:flex}.nav nav a{letter-spacing:.03em;color:#f4f4f0;padding-bottom:2px;font-size:.9rem;text-decoration:none;position:relative}.nav nav a:after{content:"";background:var(--light-red);height:2px;transition:right .25s;position:absolute;bottom:0;left:0;right:100%}.nav nav a:hover{color:#fff}.nav nav a:hover:after{right:0}.nav nav a.active{color:#fff;font-size:1.2rem;font-weight:700}.nav nav a.active:after{right:0}.logo{font-family:var(--display), Georgia, serif;letter-spacing:.05em;color:#f4f4f0;font-size:1.3rem;font-weight:600;text-decoration:none}.foot{text-align:center;background-color:var(--bg);border-top:1px solid var(--border);color:var(--black);margin-top:4rem;padding:1.5rem 3rem;font-size:.85rem}.btn{font:inherit;letter-spacing:.06em;text-transform:uppercase;background:var(--black);color:#f4f4f0;border:2px solid var(--black);border-radius:var(--radius);cursor:pointer;padding:.8rem 1.7rem;font-size:.85rem;font-weight:600;text-decoration:none;transition:background .2s,border-color .2s,transform .15s;display:inline-block}.btn:hover{background:var(--red);border-color:var(--red)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.6;cursor:wait}.btn.ghost{color:var(--black);background:0 0}.btn.ghost:hover{background:var(--black);border-color:var(--black);color:#f4f4f0}.btn.small{padding:.5rem 1.1rem;font-size:.78rem}.row{flex-wrap:wrap;gap:.8rem;margin-top:1.8rem;display:flex}.tags{flex-wrap:wrap;gap:.6rem;margin-top:1.5rem;display:flex}.tag{letter-spacing:.07em;text-transform:uppercase;color:var(--red-dark);background:var(--light-red);border-radius:999px;padding:.35rem .85rem;font-size:.72rem;font-weight:600}.lead{max-width:34em;color:var(--dark-gray);font-size:1.15rem}.hero{grid-template-columns:1fr 340px;align-items:center;gap:4rem;max-width:1100px;margin:0 auto;padding:4rem clamp(1rem,4vw,3rem) 2rem;display:grid}.typing{font-family:var(--display), Georgia, serif;color:var(--black);min-height:11em;font-size:clamp(1.3rem,2.6vw,1.9rem);line-height:1.4}.typing p{margin:0 0 1em}.cursor{color:var(--red);animation:1.1s step-end infinite blink}@keyframes blink{50%{opacity:0}}.sr{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}.photo{text-align:center;justify-self:center;width:100%;max-width:340px;margin:0}.photo-frame{aspect-ratio:4/5;border-radius:var(--radius-lg);border:1px solid var(--border);background:url(/me.png) center top / cover no-repeat, var(--light-gray)}.photo figcaption{color:var(--mid-gray);letter-spacing:.04em;margin-top:1rem;font-size:.85rem}.section{max-width:1100px;margin:0 auto;padding:3rem clamp(1rem,4vw,3rem)}.narrow{max-width:760px}.section>h1{border-bottom:1px solid var(--border);margin-bottom:.6rem;padding-bottom:1rem}.grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:1.2rem;display:grid}.card{aspect-ratio:3/4;border-radius:var(--radius-lg);border:1px solid var(--border);flex-direction:column;justify-content:flex-end;padding:1.5rem;display:flex}.card h3{color:inherit;margin:0;font-size:1.5rem}.card p{opacity:.9;margin:.3rem 0 0}.stack{gap:1.2rem;margin:2rem 0;display:grid}.project{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:1.5rem;transition:transform .2s,box-shadow .2s}.project:hover{transform:translateY(-3px);box-shadow:0 8px 24px #1616141f}.project h2{margin-bottom:.3em}.contact-list{gap:.7rem;margin:2rem 0;padding:0;list-style:none;display:grid}.contact-list strong{min-width:6rem;color:var(--black);display:inline-block}.contact-list a{color:var(--red);text-underline-offset:3px}.contact-list a:hover{color:var(--red-dark)}.contact-form{gap:1.1rem;display:grid}fieldset{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);gap:1.1rem;margin:1.5rem 0 0;padding:1.2rem 1.5rem 1.6rem;display:grid}legend{font-family:var(--display), Georgia, serif;color:var(--black);padding:0 .6rem;font-size:1.4rem;font-weight:600}.field{gap:.35rem;display:grid}.field>span{letter-spacing:.06em;text-transform:uppercase;color:var(--dark-gray);font-size:.8rem;font-weight:600}input:not([type=checkbox]):not([type=radio]),textarea,select{font:inherit;width:100%;color:var(--black);border:1.5px solid var(--border);border-radius:var(--radius);background:#fff;padding:.7rem 1rem;transition:border-color .2s,box-shadow .2s}input::placeholder,textarea::placeholder{color:var(--mid-gray)}input:focus:not([type=checkbox]):not([type=radio]),textarea:focus,select:focus{border-color:var(--red);outline:none;box-shadow:0 0 0 3px #a326262e}input[type=file]{padding:.5rem}.chips{flex-wrap:wrap;gap:.5rem;display:flex}.chip input{opacity:0;position:absolute}.chip em{border:1.5px solid var(--black);color:var(--black);cursor:pointer;border-radius:999px;padding:.45rem 1rem;font-size:.9rem;font-style:normal;transition:background .15s;display:inline-block}.chip em:hover{background:var(--light-red)}.chip input:checked+em{background:var(--black);color:#f4f4f0}.chip input:focus-visible+em{outline:3px solid var(--red);outline-offset:2px}.error{color:#8f1b1b;font-weight:600}@media (max-width:800px){.hero{grid-template-columns:1fr;gap:2rem;padding-top:2rem}.photo{order:-1;max-width:240px}.typing{min-height:0}.foot{text-align:center;background-color:var(--bg);border-top:1px solid var(--border);color:var(--black);margin-top:4rem;padding:1.5rem 3rem;font-size:.85rem}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.cursor{animation:none}.project,.btn,.nav nav a:after{transition:none}}
