/*! tailwindcss v4.3.3 | 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}}}@layer theme{:host,:root{--font-sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",Arial,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;--ease-out:cubic-bezier(0,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{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}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans",Arial,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;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{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:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,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,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-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,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.static{position:static}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.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,)}.resize{resize:both}.outline-none{--tw-outline-style:none;outline-style:none}}:root{color-scheme:light;--background:#fffefd;--loading:#b9b5af;--accent:#3f4b63;--ink:#121212;--media:#b9b5af;--content-width:770px;--page-gutter:20px;--type-size:16px}html[data-theme=dark]{color-scheme:dark;--background:#29374c;--loading:#202c3e;--accent:#d6deea;--ink:#f4f1eb;--media:#202c3e}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--background);color:var(--ink);letter-spacing:-.04em;-webkit-font-smoothing:antialiased;margin:0;font-family:Lora,Georgia,serif;font-size:15px;font-weight:400;line-height:1.5;transition:background-color .32s,color .32s;overflow-x:hidden}button,input,select,textarea{font:inherit}a{color:inherit}.top-actions{top:68px;right:max(var(--page-gutter),calc((100vw - var(--content-width)) / 2));align-items:center;gap:32px;display:flex}.home-link,.top-actions{z-index:30;position:absolute}.home-link{top:72px;left:max(var(--page-gutter),calc((100vw - var(--content-width)) / 2));width:20px;transition:transform .16s;display:block}.home-link:hover{transform:scale(1.04)}.home-link:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.home-link img{width:100%;height:auto;display:block}html[data-theme=dark] .home-link img{filter:brightness(0)invert()}.site-links{align-items:center;gap:32px;display:flex}.site-links a{min-height:30px;color:var(--accent);letter-spacing:-.04em;text-underline-offset:4px;align-items:center;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;font-weight:300;line-height:1.15;text-decoration:none;transition:transform .16s;display:inline-flex}.site-links a:hover{transform:scale(1.04)}.site-links a[aria-current=page]{text-decoration:underline}.theme-toggle{box-sizing:border-box;width:30px;height:30px;color:var(--accent);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:0 0 30px;place-items:center;padding:4px;transition:transform .22s cubic-bezier(.22,1,.36,1);display:grid}.theme-toggle:hover{background:0 0;transform:scale(1.06)}.theme-toggle:active{transform:scale(.94)}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.theme-icon{object-fit:contain;grid-area:1/1;width:20px;height:20px;transition:opacity .18s,transform .26s cubic-bezier(.22,1,.36,1);display:block}.theme-icon-sun{opacity:0;transform:rotate(-12deg)scale(.78)}html[data-theme=dark] .theme-icon-moon{opacity:0;transform:rotate(25deg)scale(.72)}html[data-theme=dark] .theme-icon-sun{opacity:1;filter:brightness(0)invert();transform:rotate(0)scale(1)}html[data-theme=dark] .project-arrow{filter:brightness(0)invert()}html[data-theme=dark] .card-pill{color:var(--ink);background:#182232e6}.page-shell{width:min(calc(100% - (var(--page-gutter) * 2)),var(--content-width));margin-inline:auto}.hero-inner{flex-direction:column;justify-content:flex-end;min-height:45svh;padding-top:120px;padding-bottom:58px;display:flex}.hero-characters{align-items:end;gap:0;width:100%;margin-bottom:24px;display:flex}.hero-characters>img,.hero-photo{width:100%;max-width:153px;margin-inline:auto;display:block}.hero-characters>img{object-fit:contain;object-position:center bottom;height:auto;max-height:255px}.hero-photo{aspect-ratio:1329/2233;flex:none;width:auto;max-width:none;height:min(470px,46vw);margin-inline:0;position:relative;overflow:hidden;transform:translateY(25px)}.hero-photo img{pointer-events:none;width:100%;max-width:none;height:100%;transition:opacity .18s;display:block;position:absolute;inset:0}.hero-photo-room{aspect-ratio:1143/2167;height:min(455px,44.5vw);transform:translate(-20px)translateY(13px)}.hero-photo-dark,html[data-theme=dark] .hero-photo-light{opacity:0}html[data-theme=dark] .hero-photo-dark{opacity:1}h1,h2,p{font-size:var(--type-size);font-weight:500}h1{width:fit-content;font-style:italic}.hero-datetime,h1{color:var(--accent);margin:0 0 24px;line-height:1.2}.hero-datetime{font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:12px;font-weight:300;display:block}.intro{max-width:100%;margin:0;line-height:1.42}.intro a,.intro em{color:var(--accent);font-style:italic;font-weight:400;text-decoration:none;transition:font-weight .5s cubic-bezier(.22,1,.36,1)}.intro a,[data-hover-card]{text-underline-offset:4px}[data-hover-card]{text-decoration-style:dotted;text-decoration-thickness:1px}.text-hover-card{--hover-card-bg:#e0ddd7;--hover-card-color:var(--accent);--hover-card-width:220px;z-index:20;width:min(var(--hover-card-width),calc(100vw - 24px));border:1px solid var(--hover-card-color);padding:12px 14px 14px;position:fixed;top:0;left:0}@supports (color:color-mix(in lab,red,red)){.text-hover-card{border:1px solid color-mix(in srgb,var(--hover-card-color) 45%,transparent)}}.text-hover-card{background:var(--hover-card-bg);color:var(--hover-card-color);box-shadow:4px 4px 0 var(--hover-card-color)}@supports (color:color-mix(in lab,red,red)){.text-hover-card{box-shadow:4px 4px 0 color-mix(in srgb,var(--hover-card-color) 14%,transparent)}}.text-hover-card{pointer-events:none;opacity:0;visibility:hidden;transform:translate3d(var(--hover-card-x,0),var(--hover-card-y,0),0) scale(.96);transform-origin:0 0;transition:opacity .12s,transform .12s,visibility .12s}.text-hover-card.is-visible{opacity:1;visibility:visible;transform:translate3d(var(--hover-card-x,0),var(--hover-card-y,0),0) scale(1)}.text-hover-card.is-link-card{width:250px;height:160px;overflow:hidden}.text-hover-card.is-link-card.has-image{border:0;padding:0}.text-hover-card.is-portrait-card{width:min(var(--hover-card-width),calc(100vw - 24px));height:min(var(--hover-card-width),calc(100vw - 24px));box-shadow:none;border:0;border-radius:50%;padding:0;overflow:hidden}.text-hover-card-image{object-fit:cover;width:100%;height:100%;display:none}.text-hover-card.has-image .text-hover-card-image{display:block}.text-hover-card.has-image .text-hover-card-copy,.text-hover-card.has-image .text-hover-card-title{display:none}.text-hover-card-copy,.text-hover-card-title{font-size:14px;line-height:1.35;display:block}.text-hover-card-title{margin-bottom:5px;font-style:italic;font-weight:500}.text-hover-card-title:empty{display:none}.text-hover-card-copy{color:inherit}.work{background:var(--background);min-height:39svh;padding:0 0 200px;scroll-margin-top:24px;transition:background-color .32s}.category-tabs{flex-wrap:wrap;gap:8px;margin-bottom:32px;display:flex}.category-tabs [role=tab]{appearance:none;border:1px dashed var(--accent);color:var(--accent);cursor:pointer;letter-spacing:-.04em;background:0 0;border-radius:8px;padding:3px 9px 4px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;font-weight:300;line-height:1.15;text-decoration:none;transition:background-color .16s,color .16s}.category-tabs [role=tab]:hover{border-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.category-tabs [role=tab]:hover{border-color:color-mix(in srgb,var(--accent) 50%,transparent)}}.category-tabs [role=tab]:hover{background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.category-tabs [role=tab]:hover{background:color-mix(in srgb,var(--accent) 50%,transparent)}}.category-tabs [role=tab]:hover{opacity:1;color:var(--background)}.category-tabs [role=tab][aria-selected=true]{background:var(--accent);opacity:.75;color:var(--background)}.category-tabs [role=tab]:focus-visible,.faq-question:focus-visible,.graphics-scroll:focus-visible,.project-card:focus-visible,.project-github:focus-visible,.site-footer a:focus-visible,.site-links a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.collection-grid{grid-template-columns:repeat(2,minmax(0,422px));justify-content:space-between;gap:29px 48px;transition:opacity .13s;display:grid}.collection-grid.is-changing{opacity:0}.project-card{width:100%;min-width:0;max-width:422px;color:inherit;text-decoration:none;display:block}.card-art{aspect-ratio:1.55;background:var(--media);border-radius:20px;width:100%;margin-bottom:11px;position:relative;overflow:hidden}.card-image,.card-video{object-fit:cover;width:100%;height:100%;display:block}.card-video{-webkit-appearance:none}.card-video,.card-video-poster{pointer-events:none;position:absolute;inset:0}.card-video-poster{z-index:1;transition:opacity .14s,visibility 0s linear .14s}.card-art.video-is-playing .card-video-poster{opacity:0;visibility:hidden}.card-video::-webkit-media-controls,.card-video::-webkit-media-controls-enclosure{-webkit-appearance:none;opacity:0!important;pointer-events:none!important;display:none!important}.card-video::-webkit-media-controls-overlay-enclosure,.card-video::-webkit-media-controls-panel{-webkit-appearance:none;opacity:0!important;pointer-events:none!important;display:none!important}.card-video::-webkit-media-controls-overlay-play-button,.card-video::-webkit-media-controls-play-button{-webkit-appearance:none;opacity:0!important;pointer-events:none!important;display:none!important}.card-video::-webkit-media-controls-start-playback-button{-webkit-appearance:none;opacity:0!important;pointer-events:none!important;display:none!important}.card-pills{z-index:2;opacity:0;visibility:hidden;pointer-events:none;flex-wrap:wrap;gap:7px;max-width:calc(100% - 28px);transition:opacity .16s,transform .16s,visibility .16s;display:flex;position:absolute;top:14px;left:14px;transform:translateY(-1px)}.project-card:focus-visible .card-pills,.project-card:hover .card-pills{opacity:1;visibility:visible;transform:translateY(0)}.card-pill{min-height:31px;color:var(--accent);letter-spacing:-.04em;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#dcd9d2eb;border-radius:10px;align-items:center;padding:3px 10px 4px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:14px;font-weight:300;line-height:1.1;display:inline-flex}.project-card h2{align-items:center;gap:12px;margin:0 0 4px;line-height:1.35;display:flex}.project-heading-label{align-items:baseline;gap:6px;min-width:0;display:inline-flex}.project-github{flex:0 0 18px;place-items:center;width:18px;height:18px;margin-left:auto;transition:transform .16s;display:grid}.project-github:hover{transform:scale(1.06)}.project-github-icon{grid-area:1/1;width:18px;height:18px;transition:opacity .16s;display:block}.project-github-icon-dark,html[data-theme=dark] .project-github-icon-light{opacity:0}html[data-theme=dark] .project-github-icon-dark{opacity:1}.project-arrow{object-fit:contain;opacity:1;flex:none;width:1em;height:1em;display:block}.project-card p{letter-spacing:-.04em;margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;font-weight:300;line-height:1.35}.collection-grid.is-graphics,.collection-grid.is-ifaq{display:block}.graphics-scroll{overscroll-behavior-inline:contain;gap:0;display:flex;overflow:auto hidden}.graphics-slide{aspect-ratio:16/9;background:var(--media);border-radius:0;flex:0 0 min(612px,82vw);margin:0;overflow:hidden}.graphics-slide img{object-fit:cover;width:100%;height:100%;display:block}.ifaq-layout{grid-template-columns:repeat(2,minmax(0,1fr));gap:48px;display:grid}.faq-item{border-bottom:1px solid var(--accent)}.faq-question{width:100%;color:var(--ink);cursor:pointer;text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:17px;padding:15px 0;font-family:Lora,Georgia,serif;font-size:15px;font-weight:400;display:flex}.faq-question>span:first-child{transition:transform .18s}.faq-question:focus-visible>span:first-child,.faq-question:hover>span:first-child{transform:translate(4px)}.faq-toggle{width:20px;height:20px;color:var(--accent);flex:0 0 20px;position:relative}.faq-toggle:after,.faq-toggle:before{content:"";background:currentColor;width:16px;height:2px;transition:transform .22s;position:absolute;top:9px;left:2px}.faq-toggle:after{transform:rotate(90deg)}.faq-item.is-open .faq-toggle:after{transform:rotate(0)}.faq-answer{opacity:0;grid-template-rows:0fr;transition:grid-template-rows .28s,opacity .22s;display:grid}.faq-answer-inner{overflow:hidden}.faq-answer p{color:var(--accent);letter-spacing:-.04em;margin:0;padding:0 29px 15px 0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;font-weight:300;line-height:1.42}.faq-item.is-open .faq-answer{opacity:1;grid-template-rows:1fr}.faq-answer-link{color:inherit;text-underline-offset:4px}.ifaq-image{background:var(--media);border-radius:20px;min-height:357px;overflow:hidden}.ifaq-image img{object-fit:contain;width:100%;height:100%;padding:24px;display:block}.ifaq-image img,.site-footer{background:var(--background);transition:background-color .32s}.site-footer{padding:0 0 110px}.footer-inner{padding-top:28px}.footer-inner:before{content:"";background:var(--ink);width:100%;height:1px;margin-bottom:28px;display:block}.site-footer p{color:var(--accent);margin:0 0 22px;font-size:15px}.site-footer nav{flex-wrap:wrap;gap:18px 32px;display:flex}.site-footer a{min-height:30px;color:var(--accent);letter-spacing:-.04em;align-items:center;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;font-weight:300;line-height:1.15;text-decoration:none;transition:transform .16s;display:inline-flex}.site-footer a:hover{transform:scale(1.04)}@media (max-width:948px){.collection-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:700px){:root{--type-size:18px}.faq-answer p,.faq-question,.project-card p,body{font-size:16px}.collection-grid{grid-template-columns:minmax(0,422px);justify-content:start;gap:44px}.ifaq-layout{grid-template-columns:1fr;gap:34px}.ifaq-image{min-height:300px}}@media (max-width:560px){.home-link{top:32px}.top-actions{top:28px;right:var(--page-gutter);gap:32px}.site-links{gap:32px}.category-tabs{flex-wrap:nowrap;gap:clamp(2px,.8vw,5px)}.category-tabs [role=tab]{text-align:center;white-space:nowrap;border-width:1px;border-radius:6px;flex:auto;min-width:0;padding:2px clamp(3px,1vw,5px) 3px;font-size:clamp(9px,2.8vw,12px)}.hero-characters{margin-bottom:22px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-delay:0s!important}}.subpage-main{min-height:100svh;padding:170px 0 120px}.subpage-heading{margin-bottom:52px}.about-intro{grid-template-columns:minmax(260px,360px) minmax(0,1fr);align-items:stretch;gap:48px;min-height:410px;display:grid}.about-copy h1{margin:6px 0 20px}.about-copy li,.about-copy p{color:var(--accent);letter-spacing:-.04em;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;font-weight:300;line-height:1.5}.about-copy p{margin:0 0 24px}.about-copy strong{font-weight:500}.about-copy .about-list-intro{margin-bottom:0}.about-copy ul{margin:0;padding-left:22px}.about-portrait-card{background:var(--media);border-radius:20px;width:100%;max-width:360px;min-height:410px;position:relative;overflow:hidden}.about-portrait{object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}.about-faq{padding-top:96px}.about-faq-heading{color:var(--accent);font-size:var(--type-size);margin:0 0 2px;font-style:italic;font-weight:500;line-height:1.35}.about-faq-subtitle{color:var(--accent);letter-spacing:-.04em;margin:0 0 30px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;font-weight:300}.about-faq .ifaq-layout{align-items:start}.about-faq .ifaq-image{aspect-ratio:1;min-height:0}.art-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.art-column,.art-grid{gap:28px;display:grid}.art-card{width:100%;min-width:0;margin:0}.art-card img{width:100%;max-width:100%;height:auto;display:block}.art-card--fish,.art-card--garden{overflow:hidden}.art-card--fish{aspect-ratio:1125/1500}.art-card--garden{aspect-ratio:952/1500}.art-card--fish img,.art-card--garden img{width:auto;max-width:none;height:100%}.resume-content p{max-width:580px;color:var(--accent);letter-spacing:-.04em;margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;font-weight:300}@media (max-width:700px){.subpage-main{padding-top:132px}.about-intro{grid-template-columns:1fr;gap:34px;min-height:0}.about-portrait-card{aspect-ratio:1;max-width:100%;min-height:0}.about-faq{padding-top:84px}.art-grid{grid-template-columns:minmax(0,1fr)}}@media (max-width:560px){.subpage-main{padding-top:108px}.subpage-heading{margin-bottom:36px}}:root{--ease-out:cubic-bezier(.22,1,.36,1)}.skip-link{z-index:100;background:var(--background);padding:12px;position:fixed;top:12px;left:12px;transform:translateY(-160%)}.skip-link:focus{transform:translateY(0)}[tabindex="0"]:focus-visible,a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.category-tabs button{cursor:pointer}.portfolio-panel[data-state=inactive]{display:none}.portfolio-panel[data-state=active]{min-height:360px;animation:none}.hero-copy{animation:content-in .7s var(--ease-out) both}@keyframes content-in{0%{opacity:0;translate:0 12px}to{opacity:1;translate:0}}.project-card .card-art{aspect-ratio:1.55;overflow:hidden}.card-art video{object-fit:cover;width:100%;height:100%}.project-card .card-image{transition:transform .55s var(--ease-out)}.project-card:hover .card-image{transform:scale(1.018)}.project-card h2 a{text-decoration:none}.intro a{transition:color .18s,text-decoration-color .18s}.intro a:hover{text-decoration:underline;text-decoration-thickness:1px}.graphics-scroll{scroll-snap-type:x mandatory;scrollbar-width:thin}.graphics-slide{scroll-snap-align:start}.accordion-content{overflow:hidden}.accordion-content[data-state=open]{animation:accordion-down .26s var(--ease-out)}.accordion-content[data-state=closed]{animation:accordion-up .22s var(--ease-out)}@keyframes accordion-down{0%{opacity:0;height:0}to{height:var(--radix-accordion-content-height);opacity:1}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height)}to{height:0}}.art-card{overflow:hidden}.art-card img{transition:transform .5s var(--ease-out)}.art-card:hover img{transform:scale(1.015)}@media (max-width:600px){.site-links,.top-actions{gap:18px}.theme-toggle{min-width:44px}.site-links a,.theme-toggle{min-height:44px}.hero-photo{height:min(470px,68vw)}.hero-photo-room{height:min(455px,66vw)}.portfolio-panel{min-height:300px}.card-pills{opacity:1!important}.hero-inner{padding-top:130px}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.link-preview{z-index:50;background:var(--background);width:min(250px,100vw - 32px);color:var(--accent);border:1px solid var(--accent);padding:10px}@supports (color:color-mix(in lab,red,red)){.link-preview{border:1px solid color-mix(in srgb,var(--accent) 20%,transparent)}}.link-preview{animation:content-in .18s var(--ease-out);border-radius:10px;box-shadow:0 8px 28px #0002}.link-preview img{border-radius:5px;height:150px}.link-preview p,.link-preview strong{letter-spacing:0;font-family:Inter,sans-serif;font-size:12px;display:block}.link-preview strong{margin-top:8px}.link-preview p{margin:4px 0 0}.resume-menu{align-items:center;display:inline-flex;position:relative}.site-links .resume-trigger{min-height:30px;color:var(--accent);letter-spacing:-.04em;cursor:pointer;background:0 0;border:0;align-items:center;padding:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:15px;font-weight:300;line-height:1.15;transition:transform .16s;display:inline-flex}.resume-trigger:hover{transform:scale(1.04)}.resume-panel{z-index:40;border:1px solid var(--accent);width:max-content;max-width:calc(100vw - 40px);padding:12px 16px;position:absolute;top:calc(100% + 10px);right:0}@supports (color:color-mix(in lab,red,red)){.resume-panel{border:1px solid color-mix(in srgb,var(--accent) 20%,transparent)}}.resume-panel{background:var(--background);color:var(--accent);letter-spacing:-.02em;opacity:0;visibility:hidden;transition:opacity .22s ease,transform .28s var(--ease-out),visibility .22s;font-family:Inter,sans-serif;font-size:13px;font-weight:300;line-height:1.4;transform:translateY(-8px);box-shadow:0 8px 24px #00000012}.resume-menu:focus-within .resume-panel,.resume-menu:hover .resume-panel{opacity:1;visibility:visible;transform:translateY(0)}.resume-menu:after{content:"";width:100%;height:12px;position:absolute;top:100%;right:0}@media (max-width:600px){.site-links .resume-trigger{min-height:44px}.category-tabs{flex-wrap:wrap;gap:6px}.category-tabs [role=tab]{flex:none;min-height:0;padding:4px 8px;font-size:12px;line-height:1.2}}.hero-characters{justify-content:flex-start;align-items:stretch;gap:24px;height:min(475px,46.4vw);margin-bottom:12px}.hero-characters .hero-photo{flex:none;width:auto;height:100%;margin:0;transform:none}.hero-characters .hero-photo-workspace{aspect-ratio:918/1747}.hero-characters .hero-photo-room{aspect-ratio:940/1798}.hero-photo-workspace img{width:116.667%;height:103.034%;inset:-.457928% auto auto 0}.hero-photo-room img{width:100.957%;height:100.111%;inset:-.0556174% auto auto -.106383%}@media (max-width:948px){.hero-characters{height:min(404.3px,68.5vw)}}.hero-name{display:inline-grid;position:relative}.hero-name-reserve,.hero-name-typing{white-space:pre;grid-area:1/1}.hero-name-reserve{visibility:hidden}.hero-name-cursor{vertical-align:-.08em;background:currentColor;width:1px;height:1em;margin-left:2px;animation:hero-cursor-blink .6s step-end infinite;display:inline-block}@keyframes hero-cursor-blink{0%,to{opacity:1}50%{opacity:0}}@media (prefers-reduced-motion:reduce){.hero-name-reserve{visibility:visible}.hero-name-typing{display:none}}.hero-inner{padding-top:142px}@media (max-width:600px){.hero-inner{padding-top:148px}}@media (max-width:560px){.hero-inner{padding-top:188px}}@font-face{font-family:Harmony FAQ;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/lora-faq-regular.ttf)format("truetype")}@font-face{font-family:Harmony FAQ;font-style:italic;font-weight:500;font-display:swap;src:url(/fonts/lora-faq-italic.ttf)format("truetype")}.about-faq-heading,.faq-question{font-family:Harmony FAQ,Georgia,serif}.faq-question{letter-spacing:-.04em;line-height:1.5}.faq-item h3{font-size:inherit;font-weight:inherit;line-height:inherit;margin:0}.faq-question[data-state=open] .faq-toggle:after{transform:rotate(0)}.faq-answer.accordion-content{opacity:1;transition:none;display:block}.faq-answer.accordion-content[data-state=open]{animation:faq-expand .28s}.faq-answer.accordion-content[data-state=closed]{animation:faq-collapse .28s}@keyframes faq-expand{0%{opacity:0;height:0}to{height:var(--radix-accordion-content-height);opacity:1}}@keyframes faq-collapse{0%{height:var(--radix-accordion-content-height);opacity:1}to{opacity:0;height:0}}.about-copy ul{list-style-type:disc;list-style-position:outside}.category-tabs-reveal{isolation:isolate;position:relative}.category-tabs-reveal [role=tab]{transition:transform .8s var(--ease-out),opacity .28s ease,background-color .16s ease,color .16s ease;position:relative}.category-tabs-reveal [role=tab]:first-child{z-index:2}.category-tabs-reveal[data-reveal=pending] [role=tab]:not(:first-child){transform:translate(var(--tab-start-x,0),var(--tab-start-y,0));opacity:0;pointer-events:none}.category-tabs-reveal[data-reveal=expanded] [role=tab]:not(:first-child){opacity:1;transform:translate(0)}@media (prefers-reduced-motion:reduce){.category-tabs-reveal[data-reveal] [role=tab]:not(:first-child){opacity:1;pointer-events:auto;transform:none}}.hero-characters .hero-photo{animation:hero-card-slide-down 1.15s both}.hero-characters .hero-photo-workspace{animation-delay:.1s}.hero-characters .hero-photo-room{animation-delay:.24s}@keyframes hero-card-slide-down{0%{opacity:0;transform:translateY(-32px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.hero-characters .hero-photo{opacity:1;animation:none;transform:none}}.category-tabs-reveal [role=tab]:first-child{transition:opacity .45s,background-color .16s,color .16s}.category-tabs-reveal[data-reveal=pending] [role=tab]:first-child{opacity:0}.category-tabs-reveal[data-reveal=fading] [role=tab]:first-child{opacity:.75}.category-tabs-reveal[data-reveal=fading] [role=tab]:not(:first-child){transform:translate(var(--tab-start-x,0),var(--tab-start-y,0));opacity:0;pointer-events:none}@media (prefers-reduced-motion:reduce){.category-tabs-reveal[data-reveal] [role=tab]:first-child{opacity:.75}}.line-reveal [data-bio-word]{display:inline-block}.line-reveal[data-reveal=pending] [data-bio-word]{opacity:0}@media (prefers-reduced-motion:reduce){.line-reveal[data-reveal] [data-bio-word]{opacity:1;transform:none}}.resume-panel{border:1px dashed var(--accent);box-shadow:none;letter-spacing:-.04em;border-radius:8px;padding:3px 9px 4px;font-size:15px;line-height:1.15;top:calc(100% + 3px)}.resume-menu:after{height:5px}@media (max-width:600px){.resume-panel{padding:4px 8px;font-size:12px;line-height:1.2}}.hero-characters{animation:journal-card-drift 6s ease-in-out 1.2s infinite alternate}@keyframes journal-card-drift{0%{translate:0}to{translate:0 -3px}}.hero-characters:focus-within,.hero-characters:has(.hero-photo:hover){animation-play-state:paused}@media (prefers-reduced-motion:reduce){.hero-characters{animation:none;translate:none}}.hero-characters .hero-photo{transition:scale .26s var(--ease-out),translate .26s var(--ease-out);transform-origin:50%}@media (hover:hover) and (pointer:fine){.hero-characters .hero-photo:hover{translate:0 -3px;scale:1.025}}@media (prefers-reduced-motion:reduce){.hero-characters .hero-photo:hover{translate:none;scale:1}}.link-preview{width:min(250px,100vw - 24px);height:160px;box-shadow:4px 4px 0 var(--accent);background:0 0;border:0;border-radius:0;padding:0;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.link-preview{box-shadow:4px 4px 0 color-mix(in srgb,var(--accent) 14%,transparent)}}.link-preview img{object-fit:cover;border-radius:0;width:100%;height:100%;display:block}.project-card[data-fade=pending]{opacity:0}.project-card .card-image,.project-card .card-pills,.project-card .project-github,.project-card .project-github:hover,.project-card:hover .card-image,.project-card:hover .card-pills{transition-property:opacity,color,background-color;transform:translate(0)scale(1)}@media (prefers-reduced-motion:reduce){.project-card[data-fade]{opacity:1}}.project-card[data-fade=visible] .project-card-drift{animation:project-card-gentle-drift 6s ease-in-out 1.2s infinite alternate}.project-card:focus-within .project-card-drift,.project-card:hover .project-card-drift{animation-play-state:paused}.project-card-hover{transform-origin:50%;transition:scale .26s var(--ease-out),translate .26s var(--ease-out)}@media (hover:hover) and (pointer:fine){.project-card:hover .project-card-hover{translate:0 -1px;scale:1.015}}@media (prefers-reduced-motion:reduce){.project-card[data-fade] .project-card-drift{animation:none;translate:none}.project-card:hover .project-card-hover{translate:none;scale:1}}.hero-bio{width:calc(100% + 40px);max-width:min(810px,calc(100vw - var(--page-gutter) * 2))}.resume-panel{transition:opacity .22s ease,transform .28s var(--ease-out),visibility .22s,background-color .18s ease,border-color .18s ease,color .18s ease;padding:0}.resume-copy{border-radius:inherit;color:inherit;font:inherit;letter-spacing:inherit;line-height:inherit;cursor:pointer;background:0 0;border:0;padding:3px 20px 4px}.resume-copy,.resume-copy-label{text-align:center;align-items:center;display:inline-grid;position:relative}.resume-copy-label>span{visibility:visible;opacity:0;grid-area:1/1;transition:opacity .18s}.resume-copy-default{opacity:1!important}.resume-copy:focus-visible .resume-copy-default,.resume-copy:hover .resume-copy-default,.resume-copy[data-status=copied] .resume-copy-default,.resume-copy[data-status=error] .resume-copy-default{opacity:0!important}.resume-copy[data-status=copied] .resume-copy-success,.resume-copy[data-status=error] .resume-copy-error,.resume-copy[data-status=idle]:focus-visible .resume-copy-hover,.resume-copy[data-status=idle]:hover .resume-copy-hover{opacity:1}.resume-copy-label .resume-copy-error{place-items:center;font-size:11px;display:grid;position:absolute;inset:0}.resume-copy svg{position:absolute;top:50%;right:5px;transform:translateY(-50%)}.resume-panel:focus-within,.resume-panel:hover{border-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.resume-panel:focus-within,.resume-panel:hover{border-color:color-mix(in srgb,var(--accent) 50%,transparent)}}.resume-panel:focus-within,.resume-panel:hover{background:var(--accent)}@supports (color:color-mix(in lab,red,red)){.resume-panel:focus-within,.resume-panel:hover{background:color-mix(in srgb,var(--accent) 50%,var(--background))}}.resume-panel:focus-within,.resume-panel:hover{color:var(--background)}@media (max-width:600px){.resume-copy{padding:4px 20px;line-height:1.2}}.hero-characters .hero-photo,.hero-characters .hero-photo:hover{transition:none;overflow:hidden;translate:none;scale:1}.hero-photo-art{transform-origin:50%;transition:transform .5s var(--ease-out);display:block;position:absolute;inset:0;transform:scale(1.025)}.hero-photo:after{content:"";z-index:2;pointer-events:none;border:1.2px solid #485154;position:absolute;inset:0}html[data-theme=dark] .hero-photo:after{border-color:#dce0e0}@media (hover:hover) and (pointer:fine){.hero-photo:hover .hero-photo-art{transform:scale(1.06)}}@media (prefers-reduced-motion:reduce){.hero-photo:hover .hero-photo-art{transform:scale(1.025)}}@keyframes project-card-gentle-drift{0%{translate:0}to{translate:0 -1px}}.link-preview{box-shadow:none}.project-card-hover,.project-card:hover .project-card-hover{transition:none;translate:none;scale:1}.project-card .card-art .card-image,.project-card .card-art video{transform-origin:50%;transition:transform .45s var(--ease-out);transform:scale(1)}@media (hover:hover) and (pointer:fine){.project-card:hover .card-art .card-image,.project-card:hover .card-art video{transform:scale(1.035)}}@media (prefers-reduced-motion:reduce){.project-card:hover .card-art .card-image,.project-card:hover .card-art video{transform:none}}@media (max-width:700px){.category-tabs{flex-wrap:nowrap;gap:6px;width:100%;display:flex}.category-tabs [role=tab]{text-align:center;white-space:nowrap;flex:1 1 0;min-width:0;padding-inline:4px}}.graphics-scroll{scrollbar-width:none;-ms-overflow-style:none;scroll-snap-type:none;scroll-behavior:auto}.graphics-scroll::-webkit-scrollbar{width:0;height:0;display:none}.hero-bio a,.hero-bio a:focus,.hero-bio a:hover{text-decoration:none}.link-preview{pointer-events:none;max-height:calc(100dvh - 24px);animation:hero-preview-fade .12s;translate:none}@keyframes hero-preview-fade{0%{opacity:0}to{opacity:1}}.resume-copy svg{opacity:0;transition:opacity .18s}.resume-copy[data-status=idle]:focus-visible svg,.resume-copy[data-status=idle]:hover svg{opacity:1}.resume-panel{left:0;right:auto}@media (max-width:948px){.resume-panel{left:auto;right:-48px}}.resume-menu .resume-panel{left:50%;right:auto;translate:-50%}@keyframes about-bio-reveal{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}.faq-reveal{min-width:0}.faq-reveal[data-reveal=pending] .faq-item{opacity:0}@media (prefers-reduced-motion:reduce){.about-bio{animation:none}.about-bio,.faq-reveal[data-reveal] .faq-item{opacity:1;transform:none}}.about-portrait-card{animation:about-element-in .7s var(--ease-out) .1s both}.about-copy .hero-name{animation:about-element-in .65s var(--ease-out) .25s both}.about-bio{animation:none}@keyframes about-element-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.about-copy .hero-name,.about-portrait-card{opacity:1;animation:none;transform:none}}.line-reveal li[data-bio-word]{display:list-item}.faq-reveal[data-reveal=pending] .about-faq-heading,.faq-reveal[data-reveal=pending] .about-faq-subtitle{opacity:0}@media (prefers-reduced-motion:reduce){.faq-reveal[data-reveal] .about-faq-heading,.faq-reveal[data-reveal] .about-faq-subtitle{opacity:1}}@font-face{font-family:Harmony Handwriting;src:url(/fonts/myfont1-regular.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}.hero-journal-trigger{color:inherit;cursor:pointer;background:0 0;border:0;padding:0}.hero-journal-trigger:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.handwritten-entry{letter-spacing:0;white-space:pre-wrap;overflow-wrap:break-word;font-family:Harmony Handwriting,cursive;font-size:26px;font-weight:400;line-height:1.55;display:grid}.handwritten-reserve,.handwritten-writing{grid-area:1/1;min-width:0}.handwritten-reserve{visibility:hidden}.journal-skip{border:1px dashed var(--accent);color:inherit;cursor:pointer;background:0 0;border-radius:8px;margin:20px 0 0 auto;padding:3px 9px;font-family:Inter,sans-serif;font-size:12px;display:block}.hero-art-row{width:calc(100% + 40px);max-width:min(810px,calc(100vw - var(--page-gutter) * 2));margin-bottom:12px}.hero-art-row .hero-characters{margin-bottom:0}.hero-art-row[data-journal-open=true]{grid-template-columns:minmax(0,1fr) minmax(0,2fr);align-items:start;gap:20px;display:grid}.inline-journal{min-width:0;box-shadow:none;background:0 0;border:0;padding:0}.hero-art-row[data-journal-open=true] .hero-characters{grid-template-columns:.5255fr .5228fr;align-self:start;width:100%;height:auto;display:grid}.hero-art-row[data-journal-open=true] .hero-photo{width:100%;height:auto}@media (max-width:600px){.hero-art-row[data-journal-open=true]{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr);gap:12px}.inline-journal .handwritten-entry{font-size:20px;line-height:1.4}}.hero-art-row[data-journal-open=true]{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.inline-journal .handwritten-entry{font-size:19px;line-height:1.45}@media (max-width:600px){.hero-art-row[data-journal-open=true]{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}.inline-journal .handwritten-entry{font-size:17px;line-height:1.4}}@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}