/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial}}}.static{position:static}.hidden{display:none}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.font-sans{font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}:root{--color-neutral-50:#fafafa;--color-neutral-100:#f5f5f5;--color-neutral-200:#e5e5e5;--color-neutral-300:#d4d4d4;--color-neutral-400:#a3a3a3;--color-neutral-500:#737373;--color-neutral-600:#525252;--color-neutral-700:#404040;--color-neutral-800:#262626;--color-neutral-900:#171717;--color-neutral-950:#000;--text-color-primary:var(--color-neutral-900);--text-color-secondary:var(--color-neutral-600);--text-color-tertiary:var(--color-neutral-500);--background-color-main:var(--color-neutral-50);--background-color-primary:#fff;--border-color-primary:#0000001f;--border-color-secondary:#00000017;--link-color:#06c;--scrollbar-color:var(--color-neutral-300);--background:var(--background-color-main);--foreground:var(--text-color-primary);--border-color:var(--border-color-primary);--max-width:44rem;--page-padding:1rem;--radius-bevel:8px;--font-sans:"Helvetica Neue",Helvetica,Arial,sans-serif;--font-mono:"Helvetica Neue",Helvetica,Arial,sans-serif;--social-icon-color:var(--color-neutral-500);--selection-bg:#2e362f;--selection-text:#babbc5}html.dark{--text-color-primary:#ffffffe6;--text-color-secondary:#ffffffb3;--text-color-tertiary:#ffffff80;--background-color-main:#000;--background-color-primary:#000;--border-color-primary:#ffffff1f;--border-color-secondary:#ffffff17;--link-color:#60a5fa;--scrollbar-color:var(--color-neutral-600);--background:var(--background-color-main);--foreground:var(--text-color-primary);--border-color:var(--border-color-primary);--social-icon-color:#ffffff73;--selection-bg:#babbc5;--selection-text:#2e362f}:host,:root{--font-sans:"Helvetica Neue",Helvetica,Arial,sans-serif}@keyframes theme-fade-out{0%{opacity:1}to{opacity:0}}@keyframes theme-fade-in{0%{opacity:0}to{opacity:1}}::view-transition-old(root){animation:theme-fade-out .4s ease-out forwards}::view-transition-new(root){animation:theme-fade-in .4s ease-out forwards}*{-webkit-tap-highlight-color:transparent}html{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color)transparent}body{background:var(--background);color:var(--text-color-primary);font-family:var(--font-sans);font-synthesis:none;font-size:1rem;line-height:1.6;transition:background-color .55s ease-out,color .55s ease-out,border-color .55s ease-out}::selection{background-color:var(--selection-bg);color:var(--selection-text)}img{-webkit-user-select:none;user-select:none}h1,h2,h3{color:var(--text-color-primary)}h1{letter-spacing:-.02em;margin-bottom:.6em;font-size:clamp(1.75rem,3.5vw,2.5rem);font-weight:700;line-height:1.2}h2{letter-spacing:-.015em;margin-top:2em;font-size:1.35rem;line-height:1.25}h2,h3{margin-bottom:.5em;font-weight:700}h3{margin-top:1.75em;font-size:1.1rem;line-height:1.3}p{color:var(--text-color-secondary);max-width:68ch;margin-bottom:1em;font-size:1rem;line-height:1.65}strong{font-weight:700}.meta,small{opacity:.75;font-size:.85rem}.page{max-width:var(--max-width);padding:var(--page-padding);min-height:70vh;margin:0 auto;transition:background-color .55s ease-out,color .55s ease-out,border-color .55s ease-out}@media (min-width:768px){.page{padding:3rem var(--page-padding)}}.page:has(.home-hero){flex-direction:column;align-items:center;display:flex}.site-header{z-index:50;background:var(--background);font-family:var(--font-sans);width:100%;transition:background-color .55s ease-out,color .55s ease-out,border-color .55s ease-out;position:sticky;top:0}.site-header--menu-open{z-index:10000}.site-header__inner{width:100%;max-width:calc(var(--max-width) + 2*var(--page-padding));padding:12px var(--page-padding);box-sizing:border-box;margin:0 auto}.site-header__inner--three{grid-template-columns:auto 1fr auto;place-items:center;gap:12px;display:grid}.site-header__inner--three>.header-icon-btn:first-child{justify-self:start;margin-left:-.5rem}.site-header__inner--three>.header-center{justify-self:center}.site-header__inner--three>.header-icon-btn:last-child{justify-self:end;margin-right:-.5rem}.header-center{flex-wrap:wrap;justify-content:center;align-items:baseline;gap:.35rem;display:flex}.header-center__name{font-family:var(--font-sans);color:var(--text-color-primary);font-size:1.125rem;font-weight:600;line-height:1;text-decoration:none}.header-center__name:hover{opacity:.85}.header-center__divider{color:var(--text-color-tertiary)}.header-center__divider,.header-center__section{font-size:1.125rem;font-weight:400;line-height:1}.header-center__section{color:var(--text-color-secondary);text-decoration:none}.header-center__section:hover{opacity:.85}.header-icon-btn{width:40px;height:40px;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex}.header-icon-btn:hover{background:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.header-icon-btn:hover{background:color-mix(in srgb,var(--foreground)8%,transparent)}}.header-icon-btn .hamburger-line{display:none}.header-logo{color:inherit;flex-shrink:0;justify-content:center;align-items:center;text-decoration:none;display:flex}.header-logo img{object-fit:contain;width:36px;height:36px;display:block}.header-icon-btn--menu{flex-direction:column;justify-content:center;gap:6px}.header-icon-btn--menu .hamburger-line{transform-origin:50%;background:currentColor;border-radius:1px;width:20px;height:2px;transition:transform .25s,opacity .2s;display:block}.header-icon-btn--menu.is-menu-open .hamburger-line:first-child{transform:translateY(8px)rotate(45deg)}.header-icon-btn--menu.is-menu-open .hamburger-line:nth-child(2){opacity:0}.header-icon-btn--menu.is-menu-open .hamburger-line:nth-child(3){transform:translateY(-8px)rotate(-45deg)}.header-icon-btn:first-child svg{display:none}.theme-toggle-icons{width:24px;height:24px;display:block;position:relative}.theme-toggle-icon{justify-content:center;align-items:center;transition:opacity .5s,transform .55s;display:flex;position:absolute;inset:0}.theme-toggle-icon--sun{opacity:1;transform:rotate(0)}.theme-toggle-icon--moon{opacity:0;transform:rotate(90deg)}html.dark .theme-toggle-icon--sun{opacity:0;transform:rotate(-90deg)}html.dark .theme-toggle-icon--moon{opacity:1;transform:rotate(0)}@keyframes menu-overlay-in{0%{opacity:0}to{opacity:1}}@keyframes menu-overlay-content-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.menu-overlay{z-index:9999;background:var(--background);width:100vw;height:100vh;min-height:100%;color:var(--text-color-primary);font-family:var(--font-sans);-webkit-overflow-scrolling:touch;transition:background-color .55s ease-out,color .55s ease-out,border-color .55s ease-out;animation:menu-overlay-in .2s ease-out;position:fixed;inset:0;overflow:auto}.menu-overlay__inner{min-height:100vh;padding:88px var(--page-padding)48px;padding-left:calc(var(--page-padding) - .75rem);max-width:var(--max-width);box-sizing:border-box;margin:0 auto;animation:menu-overlay-content-in .25s ease-out 50ms both}.menu-overlay__inner,.menu-overlay__nav{flex-direction:column;width:100%;display:flex}.menu-overlay__nav{align-items:flex-start;gap:8px}.menu-overlay__nav a{box-sizing:border-box;width:auto;display:block}.menu-overlay .menu-overlay__nav .menu-overlay__link{font-size:1.75rem}.menu-overlay__link{color:var(--social-icon-color);white-space:nowrap;letter-spacing:.02em;padding:0;font-size:1.75rem;font-weight:700;text-decoration:none;transition:color .15s;display:block}.menu-overlay__link.is-active,.menu-overlay__link:hover{color:var(--foreground)}.menu-overlay__social{flex-wrap:nowrap;gap:.75rem;margin-top:1.25rem;padding-left:.25rem;display:flex}.menu-overlay .menu-overlay__inner .menu-overlay__social{gap:.75rem!important}.menu-overlay__social-link{width:36px;height:36px;color:var(--social-icon-color);border-radius:var(--radius-bevel);flex-shrink:0;justify-content:center;align-items:center;text-decoration:none;transition:color .15s,opacity .15s;display:flex}.menu-overlay__social-link:hover{color:var(--foreground);opacity:.9}.menu-overlay__social-link svg{width:28px;height:28px;display:block}a{color:var(--link-color);text-decoration:underline;-webkit-text-decoration-color:var(--text-color-tertiary);text-decoration-color:var(--text-color-tertiary);text-underline-offset:3px;transition:color .15s,opacity .15s,text-decoration-color .15s}a:hover{opacity:.85;text-decoration-color:currentColor}li a,p a{text-decoration:none;position:relative}li a:after,p a:after{content:"";opacity:1;background:currentColor;width:100%;height:1px;transition:transform .18s,opacity .18s;position:absolute;bottom:-2px;left:0;transform:scaleX(1)}li a:hover:after,p a:hover:after{opacity:0;transform:scaleX(0)}.link-body{color:inherit;text-decoration:underline;-webkit-text-decoration-color:var(--text-color-tertiary);text-decoration-color:var(--text-color-tertiary);text-underline-offset:2px}.link-body:hover{color:var(--text-color-primary);text-decoration-color:currentColor}.contact-page{width:100%;max-width:var(--max-width);margin:0 auto;padding:0}.contact-header{margin-bottom:2.5rem}.contact-title{font-family:var(--font-sans);letter-spacing:-.03em;color:var(--text-color-primary);margin:0 0 .75rem;font-size:clamp(2rem,5vw,3rem);font-weight:700;line-height:1.15}.contact-intro{color:var(--text-color-secondary);max-width:42ch;margin:0;font-size:1.0625rem;line-height:1.6}.contact-form{max-width:100%;margin-top:0}.contact-honeypot{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute;left:-9999px;overflow:hidden}.contact-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.contact-full{grid-column:1/-1}.field{font-family:var(--font-sans);flex-direction:column;gap:.5rem;display:flex}.field span{color:var(--text-color-secondary);font-size:.875rem;font-weight:500}.field input,.field textarea{border:1px solid var(--foreground);padding:.4rem .85rem}@supports (color:color-mix(in lab,red,red)){.field input,.field textarea{border:1px solid color-mix(in srgb,var(--foreground)25%,var(--background))}}.field input,.field textarea{border-radius:var(--radius-bevel);background:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.field input,.field textarea{background:color-mix(in srgb,var(--foreground)10%,var(--background))}}.field input,.field textarea{color:var(--text-color-primary);font-family:var(--font-sans);font-size:1rem;line-height:1.3}html.dark .field input,html.dark .field textarea{background:var(--foreground)}@supports (color:color-mix(in lab,red,red)){html.dark .field input,html.dark .field textarea{background:color-mix(in srgb,var(--foreground)14%,var(--background))}}html.dark .field input,html.dark .field textarea{border-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){html.dark .field input,html.dark .field textarea{border-color:color-mix(in srgb,var(--foreground)28%,var(--background))}}html.dark .field input,html.dark .field textarea{color:var(--text-color-primary)}.field input:focus,.field textarea:focus{background:var(--foreground);outline:none}@supports (color:color-mix(in lab,red,red)){.field input:focus,.field textarea:focus{background:color-mix(in srgb,var(--foreground)16%,var(--background))}}.field input:focus,.field textarea:focus{border-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.field input:focus,.field textarea:focus{border-color:color-mix(in srgb,var(--foreground)35%,var(--background))}}html.dark .field input:focus,html.dark .field textarea:focus{background:var(--foreground)}@supports (color:color-mix(in lab,red,red)){html.dark .field input:focus,html.dark .field textarea:focus{background:color-mix(in srgb,var(--foreground)22%,var(--background))}}html.dark .field input:focus,html.dark .field textarea:focus{border-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){html.dark .field input:focus,html.dark .field textarea:focus{border-color:color-mix(in srgb,var(--foreground)40%,var(--background))}}.field textarea{resize:vertical;min-height:8rem}.contact-submit{border-radius:var(--radius-bevel);border:1px solid var(--foreground);background:var(--foreground);color:var(--background);font-family:var(--font-sans);cursor:pointer;margin-top:1.5rem;padding:.4rem .85rem;font-size:1rem;font-weight:500;transition:color .2s,background .2s,border-color .2s,opacity .2s;display:block}.contact-submit:hover{opacity:.92}.contact-submit:disabled{opacity:.6;cursor:not-allowed}.contact-status{font-family:var(--font-sans);color:var(--text-color-secondary);margin-top:.875rem;font-size:.875rem}.contact-success{color:var(--text-color-primary)}.contact-error{color:var(--text-color-secondary)}.home-hero{width:100%;max-width:var(--max-width);padding:0 var(--page-padding);flex-direction:column;align-items:center;gap:1.5rem;margin:0 auto;display:flex}@media (min-width:520px){.home-hero{flex-direction:row;align-items:center;gap:2rem}}.home-hero__photo{border-radius:var(--radius-bevel);background:var(--background);flex-shrink:0;width:160px;height:160px;overflow:hidden}@media (min-width:520px){.home-hero__photo{width:200px;height:200px}}.home-hero__photoImg{object-fit:cover;width:100%;height:100%;display:block}.home-hero__content{text-align:center;width:100%;min-width:0}@media (min-width:520px){.home-hero__content{text-align:left;flex:1;min-width:0}}.home-hero__name{font-family:var(--font-sans);letter-spacing:.03em;margin:0 0 .25rem;font-size:clamp(2rem,5vw,2.75rem);font-weight:700;line-height:1.2}@media (min-width:520px){.home-hero__name{font-size:clamp(2.25rem,4vw,2.75rem)}}.home-hero__name-line{display:block}.home-hero__tagline{font-family:var(--font-sans);color:var(--text-color-secondary);margin:0 0 1rem;font-size:1.125rem;font-weight:700;line-height:1.45}@media (min-width:520px){.home-hero__tagline{font-size:1.25rem}}.home-hero__social{flex-wrap:wrap;justify-content:center;align-items:center;gap:1rem;display:flex}@media (min-width:520px){.home-hero__social{justify-content:flex-start}}.home-hero__social-link{color:var(--social-icon-color);justify-content:center;align-items:center;transition:color .15s,opacity .15s;display:inline-flex}.home-hero__social-link:hover{color:var(--foreground);opacity:.9}.home-hero__social-link svg{width:32px;height:32px;display:block}.projects-page{width:100%;max-width:var(--max-width);margin:0 auto;padding:0}.projects-header{margin-bottom:2.5rem}.projects-title{font-family:var(--font-sans);letter-spacing:-.03em;color:var(--text-color-primary);margin:0 0 .75rem;font-size:clamp(2rem,5vw,3rem);font-weight:700;line-height:1.15}.projects-intro{color:var(--text-color-secondary);max-width:42ch;margin:0;font-size:1.0625rem;line-height:1.6}.projects-toolbar{flex-wrap:wrap;align-items:flex-end;gap:1rem 1.5rem;margin-top:1.5rem;margin-bottom:1.75rem;padding-bottom:1.5rem;display:flex}.projects-toolbar .projects-search{margin-left:auto}.projects-toolbar .projects-list{flex:100%;width:100%}.projects-filter{flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin:0;display:flex}.projects-filter__label{text-transform:uppercase;letter-spacing:.04em;color:var(--text-color-tertiary);margin:0;font-size:.8125rem;font-weight:600}.projects-filter__pills{flex-wrap:wrap;gap:.5rem;display:flex}.projects-filter__pill{color:var(--text-color-primary);background:var(--foreground);padding:.4rem .85rem;font-size:.875rem;font-weight:500;line-height:1.3;display:inline-block}@supports (color:color-mix(in lab,red,red)){.projects-filter__pill{background:color-mix(in srgb,var(--foreground)10%,var(--background))}}.projects-filter__pill{border:1px solid var(--foreground)}@supports (color:color-mix(in lab,red,red)){.projects-filter__pill{border:1px solid color-mix(in srgb,var(--foreground)25%,var(--background))}}.projects-filter__pill{border-radius:var(--radius-bevel);text-decoration:none;transition:color .2s,background .2s,border-color .2s}.projects-filter__pill:after{display:none}.projects-filter__pill:hover{color:var(--text-color-primary);background:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.projects-filter__pill:hover{background:color-mix(in srgb,var(--foreground)16%,var(--background))}}.projects-filter__pill:hover{border-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.projects-filter__pill:hover{border-color:color-mix(in srgb,var(--foreground)35%,var(--background))}}.projects-filter__pill:hover{opacity:1}.projects-filter__pill.is-active{color:var(--background);background:var(--foreground);border-color:var(--foreground)}.projects-filter__pill.is-active:hover{opacity:.92}html.dark .projects-filter__pill{color:var(--text-color-primary);background:var(--foreground)}@supports (color:color-mix(in lab,red,red)){html.dark .projects-filter__pill{background:color-mix(in srgb,var(--foreground)14%,var(--background))}}html.dark .projects-filter__pill{border-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){html.dark .projects-filter__pill{border-color:color-mix(in srgb,var(--foreground)28%,var(--background))}}html.dark .projects-filter__pill:hover{background:var(--foreground)}@supports (color:color-mix(in lab,red,red)){html.dark .projects-filter__pill:hover{background:color-mix(in srgb,var(--foreground)22%,var(--background))}}html.dark .projects-filter__pill:hover{border-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){html.dark .projects-filter__pill:hover{border-color:color-mix(in srgb,var(--foreground)40%,var(--background))}}html.dark .projects-filter__pill.is-active{color:var(--background);background:var(--foreground);border-color:var(--foreground)}.projects-search{flex-shrink:0;margin:0}.projects-search__input{width:100%;min-width:10rem;max-width:20rem;color:var(--text-color-primary);background:var(--foreground);flex:0 20rem;padding:.4rem calc(.85rem + 16px) .4rem .85rem;font-family:inherit;font-size:.875rem;font-weight:500;line-height:1.3}@supports (color:color-mix(in lab,red,red)){.projects-search__input{background:color-mix(in srgb,var(--foreground)10%,var(--background))}}.projects-search__input{border:1px solid var(--foreground)}@supports (color:color-mix(in lab,red,red)){.projects-search__input{border:1px solid color-mix(in srgb,var(--foreground)25%,var(--background))}}.projects-search__input{border-radius:var(--radius-bevel)}html.dark .projects-search__input{color:var(--text-color-primary);background:var(--foreground)}@supports (color:color-mix(in lab,red,red)){html.dark .projects-search__input{background:color-mix(in srgb,var(--foreground)14%,var(--background))}}html.dark .projects-search__input{border-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){html.dark .projects-search__input{border-color:color-mix(in srgb,var(--foreground)28%,var(--background))}}.projects-search__input::placeholder,html.dark .projects-search__input::placeholder{color:var(--text-color-secondary)}.projects-search__input:focus{background:var(--foreground);outline:none}@supports (color:color-mix(in lab,red,red)){.projects-search__input:focus{background:color-mix(in srgb,var(--foreground)16%,var(--background))}}.projects-search__input:focus{border-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.projects-search__input:focus{border-color:color-mix(in srgb,var(--foreground)35%,var(--background))}}.projects-search__input:focus{color:var(--text-color-primary)}html.dark .projects-search__input:focus{background:var(--foreground)}@supports (color:color-mix(in lab,red,red)){html.dark .projects-search__input:focus{background:color-mix(in srgb,var(--foreground)22%,var(--background))}}html.dark .projects-search__input:focus{border-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){html.dark .projects-search__input:focus{border-color:color-mix(in srgb,var(--foreground)40%,var(--background))}}html.dark .projects-search__input:focus{color:var(--text-color-primary)}.projects-search__input::-webkit-search-cancel-button{appearance:none;opacity:.75;background-color:currentColor;width:16px;height:16px;margin-left:0;margin-right:-20px;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cline x1='2' y1='2' x2='14' y2='14' stroke='white' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='14' y1='2' x2='2' y2='14' stroke='white' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") 50%/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cline x1='2' y1='2' x2='14' y2='14' stroke='white' stroke-width='2' stroke-linecap='round'/%3E%3Cline x1='14' y1='2' x2='2' y2='14' stroke='white' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") 50%/contain no-repeat}.projects-search__input::-webkit-search-cancel-button:hover{opacity:1}.projects-list{flex-direction:column;gap:1rem;list-style:none;display:flex}.projects-list,.projects-list li{margin:0;padding:0}.project-card{color:inherit;background:var(--background);border:2px solid var(--foreground);flex-direction:column;align-items:stretch;gap:1rem;padding:1.25rem;text-decoration:none;display:flex}@supports (color:color-mix(in lab,red,red)){.project-card{border:2px solid color-mix(in srgb,var(--foreground)22%,var(--background))}}.project-card{border-radius:var(--radius-bevel);text-align:left;cursor:pointer;box-sizing:border-box;width:100%;transition:background-color .2s,border-color .2s,color .2s}@media (min-width:520px){.project-card{flex-direction:row;align-items:flex-start;gap:1.25rem}}.project-card:hover{background:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.project-card:hover{background:color-mix(in srgb,var(--foreground)6%,var(--background))}}.project-card:hover{border-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.project-card:hover{border-color:color-mix(in srgb,var(--foreground)35%,var(--background))}}.project-card:focus-visible{outline:2px solid var(--foreground);outline-offset:2px}.projects-list li a.project-card:after{content:none!important;display:none!important}.project-card__top{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.35rem 1rem;margin:0 0 .5rem;padding:0;display:flex}.project-card__title{font-family:var(--font-sans);letter-spacing:-.02em;color:var(--text-color-primary);flex:auto;min-width:0;margin:0;padding:0;font-size:1.75rem;font-weight:700;line-height:1.25}.project-card__year{color:var(--text-color-tertiary);flex-shrink:0;font-size:.875rem;font-weight:500}.project-card__tags{margin:0 0 .5rem;padding:0;flex-wrap:wrap;gap:.4rem;margin-inline-start:0;padding-inline-start:0;list-style:none;display:flex}.project-card__tags li{margin:0;padding:0}.project-tag{color:var(--text-color-secondary);background:var(--foreground);padding:.3rem .6rem;font-size:.8125rem;font-weight:500;line-height:1.2;display:inline-block}@supports (color:color-mix(in lab,red,red)){.project-tag{background:color-mix(in srgb,var(--foreground)8%,var(--background))}}.project-tag{border-radius:var(--radius-bevel)}html.dark .project-tag{color:var(--text-color-secondary);background:var(--foreground)}@supports (color:color-mix(in lab,red,red)){html.dark .project-tag{background:color-mix(in srgb,var(--foreground)18%,var(--background))}}html.dark .project-tag{white-space:nowrap}.project-card__description{color:var(--text-color-secondary);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:0;padding:0;font-size:1rem;line-height:1.5;display:-webkit-box;overflow:hidden}.project-card__image-wrap{border-radius:var(--radius-bevel);background:var(--foreground);flex-shrink:0;width:120px;height:120px;display:block;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.project-card__image-wrap{background:color-mix(in srgb,var(--foreground)8%,var(--background))}}.project-card__image-wrap--placeholder{min-width:120px;min-height:120px}@media (min-width:520px){.project-card__image-wrap{width:160px;height:160px}.project-card__image-wrap--placeholder{min-width:160px;min-height:160px}}.project-card__image{object-fit:cover;object-position:center;width:100%;height:100%;display:block}.project-card__content{flex-direction:column;flex:1;align-items:stretch;min-width:0;display:flex}.project-card__content,.project-card__content .project-card__title,.project-card__content>.project-card__description,.project-card__content>.project-card__tags,.project-card__content>.project-card__top{margin-inline-start:0;padding-inline-start:0}.project-detail{width:100%;max-width:var(--max-width);margin:0 auto;padding:0}.project-detail__back{font-size:.875rem;font-weight:500;line-height:1.3;font-family:var(--font-sans);color:var(--text-color-primary);background:var(--foreground);align-items:center;gap:.5rem;margin-bottom:1.5rem;padding:.4rem .85rem;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.project-detail__back{background:color-mix(in srgb,var(--foreground)10%,var(--background))}}.project-detail__back{border:1px solid var(--foreground)}@supports (color:color-mix(in lab,red,red)){.project-detail__back{border:1px solid color-mix(in srgb,var(--foreground)25%,var(--background))}}.project-detail__back{border-radius:var(--radius-bevel);text-decoration:none;transition:color .2s,background .2s,border-color .2s}.project-detail__back-icon{flex-shrink:0;justify-content:center;align-items:center;display:flex}.project-detail__back-icon svg{display:block}.project-detail__back:hover{color:var(--text-color-primary);background:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.project-detail__back:hover{background:color-mix(in srgb,var(--foreground)16%,var(--background))}}.project-detail__back:hover{border-color:var(--foreground)}@supports (color:color-mix(in lab,red,red)){.project-detail__back:hover{border-color:color-mix(in srgb,var(--foreground)35%,var(--background))}}.project-detail__header{margin-bottom:2rem}.project-detail__title{font-family:var(--font-sans);letter-spacing:-.02em;color:var(--text-color-primary);text-wrap:balance;margin:0 0 1.5rem;font-size:clamp(2rem,5vw,3.25rem);font-weight:700;line-height:1.15}.project-detail__meta-grid{font-family:var(--font-mono);grid-template-columns:7.5rem 1fr;gap:.125rem .5rem;margin-bottom:1.25rem;font-size:.875rem;display:grid}.project-detail__meta-label{color:var(--text-color-tertiary)}.project-detail__meta-link,.project-detail__meta-value{color:var(--text-color-primary)}.project-detail__meta-link{text-underline-offset:.2em;text-decoration:underline}.project-detail__meta-link:hover{color:var(--text-color-secondary)}.project-detail__meta-tags{color:var(--text-color-primary)}.project-detail__tags{flex-wrap:wrap;gap:.5rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.project-detail__tags li{margin:0;padding:0}.project-detail__description{color:var(--text-color-secondary);margin:0;font-size:1.125rem;line-height:1.55}.project-detail__image-wrap{border-radius:var(--radius-bevel);background:var(--foreground);margin-bottom:2rem;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.project-detail__image-wrap{background:color-mix(in srgb,var(--foreground)6%,var(--background))}}.project-detail__image{object-fit:cover;width:100%;height:auto;display:block}.project-detail__content{margin-top:2rem}.project-detail__markdown{color:var(--text-color-primary);font-size:1rem;line-height:1.65}.project-detail__markdown>*+*{margin-top:1rem}.project-detail__markdown h1,.project-detail__markdown h2,.project-detail__markdown h3{font-family:var(--font-sans);letter-spacing:-.02em;color:var(--text-color-primary);margin-top:1.75rem;margin-bottom:.5rem;font-weight:700}.project-detail__markdown h1{font-size:1.5rem}.project-detail__markdown h2{font-size:1.25rem}.project-detail__markdown h3{font-size:1.125rem}.project-detail__markdown p{margin:0}.project-detail__markdown ol,.project-detail__markdown ul{margin:0;padding-left:1.5rem}.project-detail__markdown li+li{margin-top:.35rem}.project-detail__markdown a{color:var(--foreground);text-underline-offset:.15em;text-decoration:underline}.project-detail__markdown a:hover{opacity:.85}.project-detail__markdown code{font-family:var(--font-mono);background:var(--foreground);padding:.15em .4em;font-size:.9em}@supports (color:color-mix(in lab,red,red)){.project-detail__markdown code{background:color-mix(in srgb,var(--foreground)8%,var(--background))}}.project-detail__markdown code{border-radius:3px}.project-detail__markdown pre{background:var(--foreground);margin:1rem 0;padding:1rem;overflow-x:auto}@supports (color:color-mix(in lab,red,red)){.project-detail__markdown pre{background:color-mix(in srgb,var(--foreground)8%,var(--background))}}.project-detail__markdown pre{border-radius:4px}.project-detail__markdown pre code{background:0 0;padding:0}.project-detail__markdown blockquote{border-left:3px solid var(--foreground);color:var(--text-color-secondary);margin:1rem 0;padding-left:1rem}.project-detail__markdown hr{border:none;border-top:1px solid var(--foreground)}@supports (color:color-mix(in lab,red,red)){.project-detail__markdown hr{border-top:1px solid color-mix(in srgb,var(--foreground)15%,var(--background))}}.project-detail__markdown hr{margin:1.5rem 0}.project-detail__media{border-radius:var(--radius-bevel);background:var(--foreground);max-width:100%;margin:1.25rem 0;display:block;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.project-detail__media{background:color-mix(in srgb,var(--foreground)6%,var(--background))}}.project-detail__markdown video{width:100%;height:auto;min-height:200px}.project-detail__embed{aspect-ratio:16/9;border:none;width:100%}.project-detail__placeholder{color:var(--text-color-tertiary);margin:0;font-size:.9375rem;font-style:italic}.btn{border:1px solid var(--foreground);background:var(--foreground);color:var(--background);font-family:var(--font-sans);text-transform:uppercase;letter-spacing:.06em;border-radius:0;padding:14px 22px;text-decoration:none;transition:opacity .15s;display:inline-block}.btn:hover{opacity:.85}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}