@font-face{font-family:EB Garamond;font-style:normal;font-weight:400 800;font-display:swap;src:url(../media/0fec32c78403d184-s.52db332e.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:EB Garamond;font-style:normal;font-weight:400 800;font-display:swap;src:url(../media/9d30e1ac529a223a-s.072a0475.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:EB Garamond;font-style:normal;font-weight:400 800;font-display:swap;src:url(../media/9056bf441d45cedc-s.cb42ab76.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:EB Garamond;font-style:normal;font-weight:400 800;font-display:swap;src:url(../media/e6c3b2b7c3a61f79-s.9b5477f3.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:EB Garamond;font-style:normal;font-weight:400 800;font-display:swap;src:url(../media/e557826f452dbd06-s.0dabfe84.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:EB Garamond;font-style:normal;font-weight:400 800;font-display:swap;src:url(../media/1497d94d4ac5c969-s.a27bcaa7.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:EB Garamond;font-style:normal;font-weight:400 800;font-display:swap;src:url(../media/e4505858a30c79c2-s.p.0f58a291.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:EB Garamond Fallback;src:local(Times New Roman);ascent-override:106.26%;descent-override:31.44%;line-gap-override:0.0%;size-adjust:94.77%}.eb_garamond_230da3be-module__G9ya2W__className{font-family:EB Garamond,EB Garamond Fallback;font-style:normal}.eb_garamond_230da3be-module__G9ya2W__variable{--font-garamond:"EB Garamond","EB Garamond Fallback"}
@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.static{position:static}.contents{display:contents}}:root{--primary:#1a1a1a;--primary-hover:#000;--background:#f8f6f2;--foreground:#1a1a1a;--text-primary:#1a1a1a;--text-secondary:#4a4a4a;--text-muted:#666;--border-color:#1a1a1a;--card-bg:#f8f6f2;--card-border:#e8e4dd;--card-shadow:0 2px 8px #0000000a;--card-shadow-hover:0 12px 32px #00000014;--link-color:#1a1a1a;--link-hover:#000}[data-theme=dark]{--primary:#f5f5f5;--primary-hover:#fff;--background:#0a0a0a;--foreground:#f5f5f5;--text-primary:#f5f5f5;--text-secondary:silver;--text-muted:#999;--border-color:#f5f5f5;--card-bg:#141414;--card-border:#2a2a2a;--card-shadow:0 2px 8px #0000004d;--card-shadow-hover:0 16px 40px #0006;--link-color:#f5f5f5;--link-hover:#fff}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{font-family:var(--font-garamond),"EB Garamond",Georgia,"Times New Roman",serif;background-color:var(--background);color:var(--text-primary);font-size:19px;line-height:1.7;transition:background-color .3s,color .3s}a{color:var(--link-color);text-decoration:underline;transition:color .2s}a:hover{color:var(--link-hover)}img{max-width:100%;height:auto}.site-wrapper{flex-direction:column;min-height:100vh;display:flex}.main-content{flex:1}.navbar{z-index:100;background-color:#0000;padding:1.5rem 2rem;position:fixed;top:0;right:0}.navbar-container{align-items:center;gap:1.5rem;display:flex}.navbar-links{gap:1.5rem;display:flex}.navbar-link{color:var(--text-secondary);font-size:1rem;text-decoration:none;transition:color .2s}.navbar-link:hover,.navbar-link.active{color:var(--text-primary)}.theme-toggle{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;justify-content:center;align-items:center;padding:.25rem;transition:color .2s;display:flex}.theme-toggle:hover{color:var(--text-primary)}.footer{text-align:center;padding:3rem 2rem}.footer-container{max-width:700px;margin:0 auto}.footer-text{color:var(--text-muted);font-size:.9rem}.footer-link{color:var(--link-color)}.intro-section{flex-direction:column;justify-content:center;max-width:800px;min-height:100vh;margin:2rem auto 0;padding:3rem 2.5rem;display:flex}.intro-header{flex-direction:row;justify-content:space-between;align-items:flex-start;gap:2rem;margin-bottom:.5rem;display:flex}.intro-name-block{flex-direction:column;flex:1;display:flex}.intro-name{letter-spacing:.2em;text-transform:uppercase;color:var(--text-primary);flex-direction:column;gap:0;font-size:2.5rem;font-weight:700;line-height:1.2;display:flex}.intro-subtitle{color:var(--text-secondary);margin-top:.5rem;margin-bottom:.35rem;font-size:1.1rem;font-style:italic}.intro-avatar{object-fit:cover;border-radius:50%;flex-shrink:0;width:130px;height:130px}.intro-buttons{gap:1.25rem;margin-top:.25rem;display:flex}.projects-trigger-btn{color:var(--link-color);cursor:pointer;text-align:left;background:0 0;border:none;padding:0;font-family:inherit;font-size:1.05rem;text-decoration:underline;transition:color .2s}.projects-trigger-btn:hover{color:var(--link-hover)}.intro-divider{background:var(--text-primary);width:100%;height:2px;margin:1.25rem 0 1.75rem}.intro-content{grid-template-columns:1.8fr 1fr;gap:2.5rem;width:100%;display:grid}.intro-left h2{color:var(--text-primary);margin-bottom:.75rem;font-size:1.05rem;font-weight:700}.intro-left p{color:var(--text-secondary);font-size:1rem;line-height:1.8}.intro-sidebar h3{color:var(--text-primary);margin-top:1.25rem;margin-bottom:.5rem;font-size:1.05rem;font-weight:700}.intro-sidebar h3:first-child{margin-top:0}.sidebar-links{flex-direction:column;gap:.25rem;display:flex}.sidebar-links a{color:var(--link-color);font-size:1rem;text-decoration:underline}.contact-info{color:var(--text-secondary);font-size:1rem}.contact-info p{margin-bottom:.15rem}.projects-section{opacity:0;max-width:1100px;max-height:0;margin:0 auto;padding:4rem 2rem;transition:opacity .6s,max-height .6s;overflow:hidden}.projects-section.visible{opacity:1;max-height:5000px}.projects-header{text-align:center;margin-bottom:2.5rem}.projects-title{letter-spacing:.2em;text-transform:uppercase;color:var(--text-primary);font-size:1.35rem;font-weight:400}.filter-tabs{flex-wrap:wrap;justify-content:center;gap:1.5rem;margin-bottom:3rem;display:flex}.filter-tab{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-bottom:1px solid #0000;padding:.25rem 0;font-family:inherit;font-size:.95rem;text-decoration:none;transition:all .2s}.filter-tab:hover{color:var(--text-primary)}.filter-tab.active{color:var(--text-primary);border-bottom-color:var(--text-primary)}.project-grid{grid-template-columns:repeat(3,1fr);gap:2rem;display:grid}.project-card{background-color:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);border-radius:10px;text-decoration:none;transition:transform .4s cubic-bezier(.25,.46,.45,.94),box-shadow .4s cubic-bezier(.25,.46,.45,.94),border-color .3s;display:block;position:relative;overflow:hidden}.project-card:hover{box-shadow:var(--card-shadow-hover);border-color:#0000;transform:translateY(-8px)}.project-card-image-wrapper{aspect-ratio:4/3;border-bottom:1px solid var(--card-border);position:relative;overflow:hidden}.project-card:hover .project-card-image-wrapper{border-bottom-color:#0000}.project-card-image{object-fit:cover;width:100%;height:100%;transition:transform .5s cubic-bezier(.25,.46,.45,.94),opacity .4s}.project-card:hover .project-card-image{opacity:.95;transform:scale(1.05)}.project-card-overlay{opacity:0;background:linear-gradient(#0000 50%,#00000080 100%);transition:opacity .4s;position:absolute;inset:0}.project-card:hover .project-card-overlay{opacity:1}.project-card-content{padding:1.25rem 1.25rem 1.5rem}.project-card-title{color:var(--text-primary);margin-bottom:.5rem;font-size:1.05rem;font-weight:500;transition:color .2s}.project-card:hover .project-card-title{color:var(--link-color);text-decoration:underline}.project-card-summary{color:var(--text-muted);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;font-size:.88rem;line-height:1.6;display:-webkit-box;overflow:hidden}.project-card-tags{flex-wrap:wrap;gap:.4rem;margin-top:.85rem;display:flex}.project-tag{color:var(--text-secondary);letter-spacing:.02em;font-size:.72rem;font-style:italic}.cv-section{flex-direction:column;justify-content:flex-start;max-width:900px;min-height:100vh;margin:2rem auto 0;padding:3rem 2.5rem;display:flex}.cv-header{flex-direction:row;justify-content:space-between;align-items:flex-start;gap:2rem;margin-bottom:.5rem;display:flex}.cv-name-block{flex-direction:column;flex:1;display:flex}.cv-name{letter-spacing:.2em;text-transform:uppercase;color:var(--text-primary);flex-direction:column;gap:0;font-size:2.5rem;font-weight:700;line-height:1.2;display:flex}.cv-subtitle{color:var(--text-secondary);margin-top:.5rem;font-size:1.1rem;font-style:italic}.cv-avatar{object-fit:cover;border-radius:50%;flex-shrink:0;width:130px;height:130px}.cv-divider{background:var(--text-primary);width:100%;height:2px;margin:1.25rem 0 1.75rem}.cv-content{grid-template-columns:1.6fr 1fr;gap:3rem;width:100%;display:grid}.cv-main{flex-direction:column;gap:1.75rem;display:flex}.cv-sidebar{flex-direction:column;gap:1.5rem;display:flex}.cv-block h2{color:var(--text-primary);margin-bottom:.6rem;font-size:1rem;font-weight:700}.cv-block p{color:var(--text-secondary);font-size:.95rem;line-height:1.7}.cv-item{margin-bottom:1rem}.cv-item:last-child{margin-bottom:0}.cv-item h3{color:var(--text-primary);margin-bottom:.15rem;font-size:.95rem;font-weight:600}.cv-item-meta{color:var(--text-muted);margin-bottom:.25rem;font-size:.85rem;font-style:italic}.cv-item p{font-size:.9rem}.cv-links{flex-direction:column;gap:.25rem;display:flex}.cv-links a{color:var(--link-color);font-size:.95rem;text-decoration:underline}.cv-download{border-top:1px solid var(--card-border);margin-top:.5rem;padding-top:1rem}.cv-download-link{color:var(--link-color);align-items:center;gap:.5rem;font-size:.95rem;text-decoration:underline;transition:color .2s;display:inline-flex}.cv-download-link:hover{color:var(--link-hover)}.cv-achievements-list{margin:0;padding-left:1.25rem;list-style:outside}.cv-achievements-list li{color:var(--text-secondary);margin-bottom:.3rem;font-size:.85rem;line-height:1.6}.cv-achievements-list li::marker{color:var(--text-muted)}.cv-coursework p{margin-bottom:.5rem;font-size:.9rem}.cv-coursework p:last-child{margin-bottom:0}.cv-coursework strong{color:var(--text-primary);font-weight:600}.cv-contact-details p{margin-bottom:.15rem;font-size:.95rem}.cv-contact-details .cv-location{color:var(--text-muted);margin-top:.5rem;font-style:italic}.about-section{flex-direction:column;justify-content:center;max-width:750px;min-height:100vh;margin:2rem auto 0;padding:3rem 2.5rem;display:flex}.about-header{text-align:center;margin-bottom:2rem}.about-avatar{object-fit:cover;border-radius:50%;width:120px;height:120px;margin-bottom:1rem}.about-name{letter-spacing:.2em;text-transform:uppercase;color:var(--text-primary);font-size:2rem;font-weight:700}.social-links{justify-content:center;gap:.75rem;margin-top:1rem;display:flex}.social-link{color:var(--text-muted);padding:.35rem;text-decoration:none;transition:color .2s}.social-link:hover{color:var(--link-color)}.about-bio{color:var(--text-secondary);text-align:center;margin-bottom:1.5rem;font-size:1rem;line-height:1.85}.resume-button{color:var(--link-color);align-items:center;gap:.5rem;font-size:1rem;text-decoration:underline;transition:color .2s;display:inline-flex}.resume-button:hover{color:var(--link-hover)}.contact-section{text-align:center;border-top:1px solid var(--border-color);max-width:700px;margin:0 auto;padding:2rem}.contact-title{color:var(--text-primary);margin-bottom:.75rem;font-size:1.15rem;font-weight:700}.contact-email{color:var(--link-color);font-size:1rem}.project-page{max-width:750px;margin:0 auto;padding:6rem 2rem 4rem}.project-header{margin-bottom:2rem}.project-title{letter-spacing:.03em;color:var(--text-primary);margin-bottom:.75rem;font-size:1.85rem;font-weight:400}.project-meta{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.project-date{color:var(--text-muted);font-size:.95rem;font-style:italic}.project-links{gap:.75rem;display:flex}.project-link{color:var(--link-color);align-items:center;gap:.4rem;font-size:.95rem;text-decoration:underline;display:inline-flex}.project-link:hover{color:var(--link-hover)}.project-featured-image{width:100%;margin-bottom:2rem}.markdown-content{color:var(--text-secondary);line-height:1.85}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6{color:var(--text-primary);letter-spacing:.01em;margin-top:2rem;margin-bottom:.75rem;font-weight:600}.markdown-content h1{font-size:1.6rem}.markdown-content h2{font-size:1.4rem}.markdown-content h3{font-size:1.2rem}.markdown-content p{margin-bottom:1rem}.markdown-content ul,.markdown-content ol{margin-bottom:1rem;padding-left:1.5rem}.markdown-content li{margin-bottom:.4rem}.markdown-content img{margin:1.5rem 0}.markdown-content a{color:var(--link-color)}.markdown-content strong{color:var(--text-primary);font-weight:600}.markdown-content em{font-style:italic}.back-link{color:var(--text-muted);align-items:center;gap:.4rem;margin-bottom:2rem;font-size:.95rem;text-decoration:none;display:inline-flex}.back-link:hover{color:var(--link-color);text-decoration:underline}@media (max-width:900px){.project-grid{grid-template-columns:repeat(2,1fr)}.cv-content{grid-template-columns:1fr;gap:2rem}}@media (max-width:768px){.intro-section{min-height:auto;margin-top:4rem;padding:2.5rem 1.5rem}.intro-header{text-align:center;flex-direction:column-reverse;align-items:center;gap:1.5rem}.intro-name-block{align-items:center}.intro-name{letter-spacing:.15em;align-items:center;font-size:2rem}.intro-buttons{justify-content:center}.projects-trigger-btn{text-align:center}.intro-content,.project-grid{grid-template-columns:1fr;gap:1.5rem}.navbar{background-color:var(--background);justify-content:center;padding:1rem;display:flex;position:relative}.about-section{min-height:auto;margin-top:1rem;padding:2.5rem 1.5rem}.about-name,.project-title{font-size:1.5rem}.projects-section{padding:3rem 1rem}.cv-section{margin-top:4rem;padding:2.5rem 1.5rem}.cv-header{text-align:center;flex-direction:column-reverse;align-items:center;gap:1.5rem}.cv-name-block{align-items:center}.cv-name{letter-spacing:.15em;align-items:center;font-size:2rem}.cv-content{grid-template-columns:1fr;gap:2rem}.cv-sidebar{order:-1}}
