.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.visible{visibility:visible}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.left-\[50\%\]{left:50%}.right-2{right:.5rem}.top-0{top:0}.top-\[50\%\]{top:50%}.isolate{isolation:isolate}.z-40{z-index:40}.z-50{z-index:50}.-mx-1{margin-left:-.25rem;margin-right:-.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem}.mb-1,.my-1{margin-bottom:.25rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.block{display:block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.table-cell{display:table-cell}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-0\.5{height:.125rem}.h-10{height:2.5rem}.h-14{height:3.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-40{height:10rem}.h-64{height:16rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-96{height:24rem}.h-\[440px\]{height:440px}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-full{height:100%}.h-px{height:1px}.max-h-96{max-height:24rem}.min-h-4{min-height:1rem}.min-h-svh{min-height:100svh}.w-10{width:2.5rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-40{width:10rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[120px\]{width:120px}.w-\[calc\(100\%-2rem\)\]{width:calc(100% - 2rem)}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[8rem\]{min-width:8rem}.min-w-\[9rem\]{min-width:9rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.max-w-6xl{max-width:72rem}.max-w-\[16rem\]{max-width:16rem}.max-w-md{max-width:28rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.translate-x-\[-50\%\]{--tw-translate-x:-50%}.translate-x-\[-50\%\],.translate-y-\[-50\%\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-\[-50\%\]{--tw-translate-y:-50%}.rotate-90{--tw-rotate:90deg}.rotate-90,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.select-none{user-select:none}.select-all{user-select:all}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[8\.5rem_1fr_auto\]{grid-template-columns:8.5rem 1fr auto}.grid-cols-\[minmax\(0\2c 1fr\)\]{grid-template-columns:minmax(0,1fr)}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.overflow-auto{overflow:auto}.overflow-hidden,.truncate{overflow:hidden}.truncate{text-overflow:ellipsis}.truncate,.whitespace-nowrap{white-space:nowrap}.break-all{word-break:break-all}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-destructive\/30{border-color:hsl(var(--destructive)/.3)}.border-input{border-color:hsl(var(--input))}.border-transparent{border-color:transparent}.bg-background{background-color:hsl(var(--background))}.bg-background\/80{background-color:hsl(var(--background)/.8)}.bg-black\/60{background-color:rgb(0 0 0/.6)}.bg-card{background-color:hsl(var(--card))}.bg-chart-1{background-color:hsl(var(--chart-1))}.bg-chart-1\/15{background-color:hsl(var(--chart-1)/.15)}.bg-destructive{background-color:hsl(var(--destructive))}.bg-destructive\/10{background-color:hsl(var(--destructive)/.1)}.bg-destructive\/15{background-color:hsl(var(--destructive)/.15)}.bg-muted{background-color:hsl(var(--muted))}.bg-muted\/30{background-color:hsl(var(--muted)/.3)}.bg-muted\/40{background-color:hsl(var(--muted)/.4)}.bg-muted\/50{background-color:hsl(var(--muted)/.5)}.bg-popover{background-color:hsl(var(--popover))}.bg-primary{background-color:hsl(var(--primary))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-success\/15{background-color:hsl(var(--success)/.15)}.bg-transparent{background-color:transparent}.bg-warning\/15{background-color:hsl(var(--warning)/.15)}.p-0{padding:0}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.pb-2{padding-bottom:.5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pl-2{padding-left:.5rem}.pr-8{padding-right:2rem}.pt-0{padding-top:0}.pt-1{padding-top:.25rem}.pt-1\.5{padding-top:.375rem}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-console{font-family:var(--font-geist),ui-sans-serif,system-ui,sans-serif}.font-mono{font-family:var(--font-geist-mono),ui-monospace,SFMono-Regular,Menlo,monospace}.text-2xl{font-size:1.5rem;line-height:2rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.tracking-tight{letter-spacing:-.025em}.tracking-widest{letter-spacing:.1em}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-destructive-foreground{color:hsl(var(--destructive-foreground))}.text-foreground{color:hsl(var(--foreground))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-popover-foreground{color:hsl(var(--popover-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.text-success{color:hsl(var(--success))}.text-warning{color:hsl(var(--warning))}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-50{opacity:.5}.shadow{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.shadow,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgb(0 0 0/0.1),0 4px 6px -4px rgb(0 0 0/0.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.shadow-md{--tw-shadow:0 4px 6px -1px rgb(0 0 0/0.1),0 2px 4px -2px rgb(0 0 0/0.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}.shadow-md,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 rgb(0 0 0/0.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}.shadow-xl{--tw-shadow:0 20px 25px -5px rgb(0 0 0/0.1),0 8px 10px -6px rgb(0 0 0/0.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur{--tw-backdrop-blur:blur(8px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}html{--project-index-width:clamp(260px,29vw,330px);font-family:var(--font-fredoka);overflow-x:hidden;box-sizing:border-box}*,:after,:before{box-sizing:inherit}body,html{margin:0;overflow-x:hidden}.navbar{position:fixed;top:0;left:0;width:100%;margin:0;padding:20px;z-index:1000;background-color:transparent}.navbar a,footer{text-decoration:none;color:rgb(99,99,99);font-size:14px}footer{text-align:left;padding:10px;position:fixed;bottom:0;left:10px;width:100%;z-index:5000}ol,ul{list-style-type:none;padding-left:0;margin-left:0;margin-bottom:5px}ul a{color:rgb(99,99,99);text-decoration:none}ul a.active{text-decoration:underline}.mobile-only{display:none}#container{width:100%;display:flex;justify-content:center;height:500px}img{padding:30px}.about-text{padding-left:20px;padding-right:20px;text-align:left;font-size:14px;max-width:100%}.links-container{width:90%;max-width:1500px;display:flex;justify-content:center;align-items:center;flex-direction:row;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);font-size:17px;z-index:1000;flex-wrap:wrap;line-height:.8;gap:0 10px;padding:0 20px}.text-link{text-decoration:none;color:rgb(104,104,104)}#image-preview{display:none;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:800px;height:800px;background-size:contain;background-repeat:no-repeat;background-position:50%;pointer-events:none;z-index:1}.text-item{padding:5px 0;position:relative;z-index:2000;white-space:nowrap;transition:opacity .3s ease;font-size:16px}.text-item.filtered{opacity:.3}sup{font-size:8px}#portfolio{color:rgb(99,99,99);text-decoration:underline;display:inline-block}.text-link:hover{color:rgb(0,0,0)}#image-preview:hover,.text-item:hover+#image-preview{display:block}.filter-buttons{position:fixed;top:20px;right:20px;z-index:3000;width:var(--project-index-width);display:flex;align-items:center;gap:14px;white-space:nowrap}.filter-btn{background:none;border:none;color:rgb(172,171,171);font-family:var(--font-fredoka);font-size:14px;margin-left:0;cursor:pointer;padding:5px 0;transition:color .3s ease}.filter-btn.active,.filter-btn:hover{color:black}.filter-btn-link{display:inline-block;text-decoration:none}.personal-section-links{display:inline-flex;align-items:center;gap:3px;margin-left:4px;white-space:nowrap}.personal-section-links .filter-btn{margin-left:0;padding-inline:0}@media (min-width:769px) and (max-width:1100px){.filter-buttons{gap:10px}.filter-buttons .filter-btn{font-size:12px}}.section-link-divider{color:rgb(172,171,171);font-family:var(--font-fredoka);font-size:14px}.mobile-personal-section-links{display:flex;align-items:center;gap:8px;margin-top:16px}.mobile-personal-section-links .mobile-menu-item{width:auto}.hamburger-menu{display:none}.about-layout{display:flex;flex-direction:column;min-height:100vh}.about-left{width:100%;height:100vh;position:relative;padding-top:0}.about-left,.profile-container{display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:transparent}.profile-container{text-align:center;max-width:800px;margin:0 auto;padding:20px;height:calc(100vh - 120px)}.profile-container img{max-height:60vh;width:auto;object-fit:contain;margin:0 auto;display:block;padding:0!important}.about-text{margin:20px auto;font-size:16px;line-height:1.6;color:rgb(99,99,99);text-align:center;max-width:720px}.keep-together{white-space:nowrap}.mobile-about-title,.mobile-work-subtitle,.mobile-work-title{display:none}.resume-section{width:100%;max-width:1000px;margin:0 auto;padding:40px 0 100px;display:flex;gap:40px;background-color:transparent}.resume-column{flex:1}.resume-column-left{padding-right:20px}.resume-column-right{padding-left:20px}.resume-name{margin-bottom:10px}.resume-contact,.resume-name{font-size:12px;color:rgb(99,99,99)}.resume-contact{margin-bottom:30px}.resume-section-title{margin-top:30px;margin-bottom:15px;border-bottom:1px solid rgb(208,208,208);padding-bottom:5px;text-transform:uppercase}.header-text,.resume-section-title{font-size:12px;font-weight:400;color:rgb(0,0,0)}.header-text.time{color:rgb(128,128,128)}.education-item,.experience-item,.honors-item{margin-bottom:20px}.education-header,.experience-header,.honors-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:5px}.education-item p,.experience-item p,.honors-item p,.skills-text{font-size:12px;margin:3px 0;color:rgb(176,176,176);line-height:1.1}.project-detail{min-height:100vh;display:flex;flex-direction:column}.project-initial-view{height:calc(100vh - 80px);padding:40px;max-width:1400px;margin:0 auto;display:flex;flex-direction:column}.project-detail-title{text-align:center;font-size:16px;color:rgb(0,0,0);font-weight:400;margin-bottom:20px}.project-detail-content{flex:1;display:flex;flex-direction:column;height:calc(100% - 44px)}.project-image-container{position:relative;width:100%;height:90%;display:flex;justify-content:center;align-items:center;margin-bottom:20px;aspect-ratio:16/9;max-height:calc(100vh - 200px);cursor:default}.project-detail-image{max-width:80%;max-height:100%;width:auto;height:auto;object-fit:contain;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.project-caption-wrapper{position:relative;text-align:center;height:10%}.project-caption{text-align:center;color:rgb(99,99,99);font-size:14px;line-height:1.6;max-width:800px;margin:0 auto;padding:0 10px;overflow-y:auto}.scroll-arrow{position:absolute;bottom:-20px;left:50%;transform:translateX(-50%);color:rgb(194,194,194)}.project-full-description{padding:80px 40px;max-width:70%;margin:0 auto;color:rgb(99,99,99);position:relative}.project-full-title{font-size:48px;color:rgb(0,0,0);font-weight:300;margin-bottom:80px;text-align:center;text-transform:uppercase;font-family:var(--font-spectral)}.project-full-content{display:grid;grid-template-columns:1fr 1fr;align-items:start;max-width:1200px;margin:0 auto 60px}.project-details-list{font-size:14px;line-height:1.6;position:sticky;top:40px;margin:0;padding:0;justify-self:end;width:100%}.detail-item{margin-bottom:20px}.detail-item:first-child{margin-top:0}.detail-label{color:rgb(0,0,0);margin-bottom:5px;display:block}.detail-value{color:rgb(99,99,99);white-space:pre-line}.project-full-text{font-size:14px;line-height:1.8;color:rgb(99,99,99);white-space:pre-wrap;margin:0;padding:0;width:100%}.project-full-text p{margin:0;padding:0}@media (max-width:768px){.project-full-content{grid-template-columns:1fr;gap:40px}}.nav-button{position:absolute;top:50%;transform:translateY(-50%);font-size:40px;color:rgba(0,0,0,.3);cursor:pointer;opacity:0;transition:opacity .3s ease;z-index:2;user-select:none}.nav-button:hover{color:rgb(0,0,0)}.nav-button.prev{left:-60px}.nav-button.next{right:-60px}.project-image-container:hover .nav-button{opacity:1}@media (max-width:768px){.project-detail{padding:0!important;margin:0!important;border:none!important;outline:none!important}.nav-button{position:absolute;top:50%;transform:translateY(-50%);font-size:30px;color:rgba(0,0,0,.5);cursor:pointer;opacity:1;transition:opacity .3s ease;z-index:2;user-select:none}.nav-button.prev{left:10px}.nav-button.next{right:10px}.project-initial-view{padding:60px 20px 20px;height:auto;min-height:100vh;margin:0}.project-detail-title{text-align:left;margin-bottom:30px}.project-detail-content{height:auto;margin-bottom:0;padding-bottom:0}.project-image-container{width:100%;height:60vh;margin:0 0 30px;display:flex;justify-content:center;align-items:center;position:relative;overflow:hidden;border:none;outline:none}.project-detail-image{max-width:95vw!important;max-height:95%!important;width:auto!important;height:auto!important;object-fit:contain!important;position:absolute!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important}.project-caption-wrapper{height:auto;min-height:0;padding:10px 0}.project-caption{text-align:left;margin:0;padding:0 20px}.scroll-arrow{display:none}.project-full-description{padding:40px 0!important;max-width:100%!important;margin:0 auto!important}.project-full-title{font-size:32px!important;text-align:left!important;margin:0 20px 40px!important}.project-full-content{display:block!important;max-width:calc(100vw - 40px)!important;margin:0 20px!important;padding:0!important}.project-details-list{width:100%;margin-bottom:30px;position:static;display:block}.project-full-text{width:100%;margin:0;padding:0}}.next-project-link{position:relative;display:flex;flex-direction:column;align-items:flex-end;text-decoration:none;padding-right:40px;margin-bottom:40px;cursor:pointer;z-index:1}.next-project-label{font-size:12px;color:rgb(128,128,128);margin-bottom:5px;text-transform:uppercase}.next-project-title{font-size:16px;color:rgb(0,0,0);font-weight:400}.next-project-title:hover{color:rgb(128,128,128);transition:color .3s ease}@media (max-width:768px){.navbar{top:0;left:0;width:100%;min-height:72px;margin:0;padding:max(20px,env(safe-area-inset-top)) 20px 12px}.next-project-link{bottom:20px;left:20px;right:auto;margin-bottom:80px;align-items:flex-start}.links-container{position:static;display:flex;justify-content:flex-start;align-items:flex-start;transform:none;left:auto;top:auto;padding:300px 20px 100px;margin:0;flex-direction:column;min-height:calc(100vh - 160px);overflow-x:hidden}.links-container,.text-item{width:100%;max-width:100%;text-align:left;box-sizing:border-box}.text-item{white-space:normal;word-wrap:break-word;overflow-wrap:break-word;line-height:1;overflow:hidden;font-size:14px}.filter-buttons{display:none}.filter-btn{margin-left:10px}.hamburger-menu{--bar-width:16px;--bar-height:2px;--hamburger-gap:3px;--foreground:rgb(99,99,99);--background:white;--hamburger-margin:8px;--animation-timing:200ms ease-in-out;--hamburger-height:calc(var(--bar-height) * 3 + var(--hamburger-gap) * 2);--x-width:calc(var(--hamburger-height) * 1.41421356237);display:flex;flex-direction:column;gap:var(--hamburger-gap);width:max-content;position:fixed;top:max(20px,env(safe-area-inset-top));right:20px;z-index:4000;cursor:pointer}.hamburger-menu:has(input:checked){--foreground:rgb(99,99,99)}.hamburger-menu input,.hamburger-menu:after,.hamburger-menu:before{content:"";width:var(--bar-width);height:var(--bar-height);background-color:var(--foreground);border-radius:9999px;transform-origin:left center;transition:opacity var(--animation-timing),width var(--animation-timing),rotate var(--animation-timing),translate var(--animation-timing),background-color var(--animation-timing)}.hamburger-menu input{appearance:none;padding:0;margin:0;outline:none;pointer-events:none}.hamburger-menu:has(input:checked):before{rotate:45deg;width:var(--x-width);translate:0 calc(var(--bar-height) / -2)}.hamburger-menu:has(input:checked):after{rotate:-45deg;width:var(--x-width);translate:0 calc(var(--bar-height) / 2)}.hamburger-menu input:checked{opacity:0;width:0}.mobile-menu-dropdown{position:fixed;top:0;left:0;width:100%;height:100vh;background:var(--portfolio-paper);z-index:3500;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding-left:40px;gap:40px;opacity:0;animation:fadeIn .3s ease-in-out forwards}.mobile-menu-dropdown.closing{animation:fadeOut .3s ease-in-out forwards}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.mobile-menu-item{display:block;padding:5px 0;background:none;border:none;text-align:left;font-family:var(--font-fredoka);font-size:14px;font-weight:400;color:rgb(104,104,104);cursor:pointer;transition:color .3s ease}.mobile-menu-item.active,.mobile-menu-item:hover{color:rgb(0,0,0)}.mobile-menu-section{display:flex;flex-direction:column;gap:10px}.mobile-menu-section-title{font-family:var(--font-fredoka);font-size:14px;font-weight:400;color:rgb(172,172,172);margin:0 0 5px;padding:0}body{overflow-y:auto}body,main{min-height:100vh}main{position:static}footer{position:fixed;bottom:0;left:0;width:100%;padding:10px 20px;background-color:white;z-index:5000;color:rgb(0,0,0)}footer ul{display:flex;flex-direction:row;gap:20px;align-items:center;justify-content:flex-start;width:calc(100vw - 40px);margin:0}footer ul a{color:rgb(0,0,0)}footer li{margin:0}footer .linkedin{display:none}.mobile-only{display:block}body.mobile-menu-open #container,body.mobile-menu-open .about-layout,body.mobile-menu-open .links-container,body.mobile-menu-open .navbar>a,body.mobile-menu-open .project-detail,body.mobile-menu-open footer,body.mobile-menu-open main{display:none!important}}.scroll-indicator{position:absolute;bottom:60px;left:50%;transform:translateX(-50%);text-align:center;color:rgb(99,99,99);cursor:pointer}.scroll-arrow{font-size:20px;animation:bounce 4s infinite}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-10px)}60%{transform:translateY(-5px)}}.copyright-text{font-size:12px;color:rgb(150,150,150);margin-top:0;text-align:center}.resume-column-right .honors-item:last-child{margin-bottom:20px}.all-projects-page{min-height:100vh;padding:80px 40px 100px}.all-projects-container{max-width:1200px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(450px,1fr));gap:40px 60px;padding:0;align-items:start}.project-card{display:flex;gap:25px;text-decoration:none;color:inherit;transition:opacity .3s ease;align-items:stretch;margin-bottom:0;width:100%}.project-card:hover{opacity:.7}.project-image-wrapper{flex:0 0 calc(50% - 12.5px);height:auto;overflow:hidden}.project-card-image{transition:transform .3s ease;padding:0}.project-card:hover .project-card-image{transform:scale(1.05)}.project-info{flex:0 0 calc(50% - 12.5px);display:flex;flex-direction:column;justify-content:flex-end;padding:0}.project-card-title{font-size:14px;font-weight:400;color:rgb(0,0,0);margin:0 0 8px;line-height:1.3;font-family:var(--font-fredoka)}.project-card-location{font-size:12px;color:rgb(104,104,104);margin:0;font-family:var(--font-fredoka)}@media (max-width:768px){.all-projects-page{padding:80px 20px 100px}.all-projects-container{grid-template-columns:1fr;gap:40px}.project-card{flex-direction:row;gap:15px}.project-image-wrapper,.project-info{flex:0 0 calc(50% - 7.5px)}.about-layout{box-sizing:border-box}.about-left{height:100vh;min-height:100vh;padding:80px 20px 40px!important;align-items:flex-start;justify-content:flex-end}.mobile-about-title,.mobile-work-title{top:80px;font-size:14px;color:rgb(0,0,0)}.mobile-about-title,.mobile-work-subtitle,.mobile-work-title{display:block;position:absolute;left:20px;font-weight:400;margin:0;font-family:var(--font-fredoka)}.mobile-work-subtitle{top:105px;font-size:12px;color:rgb(99,99,99)}.profile-container{height:auto;max-width:100%;padding:0;align-items:flex-start;text-align:left}.profile-container img{max-height:none;width:120px;height:120px;object-fit:cover;border-radius:0;margin:0 0 20px;align-self:flex-start;padding:0!important}.about-text{margin:0 0 20px;text-align:left;max-width:100%;font-size:14px;line-height:1.5;padding:0}.copyright-text{text-align:left;margin:20px 0}.scroll-indicator{display:none}.resume-section{max-width:100%;padding:40px 20px 100px;flex-direction:column;gap:30px}.resume-column{flex:none}.resume-column-left,.resume-column-right{padding:0}.resume-section-title{text-align:left;margin-top:0;margin-bottom:15px;font-size:14px;font-weight:400;color:rgb(128,128,128)}.education-header,.experience-header,.honors-header{flex-direction:column;align-items:flex-start;gap:2px}.header-text{font-size:14px;font-weight:400;color:rgb(0,0,0)}.header-text.time{font-size:12px;font-weight:400;color:rgb(128,128,128)}.education-item p,.experience-item p,.honors-item p,.skills-text{font-size:13px;line-height:1.3;margin:2px 0}.education-item,.experience-item,.honors-item{margin-bottom:25px}}body:has(.about-layout) .navbar,body:has(.about-layout) footer{background-color:rgb(255,255,255)}.about-left .scroll-indicator{bottom:96px;color:rgb(150,150,150);cursor:pointer;text-decoration:none;outline-offset:8px}.about-left .scroll-arrow{position:static;color:inherit;transform:none;animation:none;transition:color .16s ease}.about-left .scroll-indicator:focus-visible,.about-left .scroll-indicator:hover{color:rgb(99,99,99)}.about-layout .resume-section{display:block;width:min(calc(100% - 80px),820px);max-width:820px;margin:0 auto;padding:80px 0 140px}.resume-block+.resume-block{margin-top:80px}.about-layout .resume-section-title{margin:0 0 24px;padding-bottom:8px;scroll-margin-top:96px;color:rgb(99,99,99);font-size:14px;line-height:1.5;letter-spacing:0}html:has(.about-layout){scroll-behavior:smooth}.about-layout .header-text{color:rgb(99,99,99);font-size:14px;line-height:1.5;letter-spacing:0}.about-layout .header-text.time{color:rgb(128,128,128)}.about-layout .education-item,.about-layout .honors-item{margin-bottom:28px}.about-layout .education-item:last-child,.about-layout .honors-item:last-child{margin-bottom:0}.about-layout .education-item p,.about-layout .honors-item p{color:rgb(150,150,150);font-size:14px;line-height:1.5;letter-spacing:0}@media (max-width:768px){.about-layout .resume-section{width:auto;margin:0 20px;padding:56px 0 120px}.resume-block+.resume-block{margin-top:56px}.about-layout .resume-section-title{margin-bottom:20px}.about-layout .education-item p,.about-layout .header-text,.about-layout .honors-item p,.about-layout .resume-section-title{font-size:14px;line-height:1.5}}body:has(.ascii-home),html:has(.ascii-home){width:100%;height:100%;overflow:hidden;background:rgb(244,244,238)}body:has(.ascii-home) .navbar,body:has(.ascii-home) footer{background:transparent}.ascii-gallery,.ascii-home{position:relative;width:100%;height:100svh;min-height:620px;overflow:hidden;background:rgb(244,244,238);color:rgb(38,39,36)}.ascii-gallery-stage,.ascii-image-layer,.ascii-image-layer canvas,.ascii-image-layer img{position:absolute;inset:0;width:100%;height:100%}.ascii-gallery-stage{z-index:0;overflow:hidden;background:rgb(244,244,238)}.ascii-image-layer{transform:scale(1.012);transform-origin:center;will-change:opacity,transform}.ascii-image-layer.is-active{z-index:2}.ascii-image-layer img{padding:0;object-fit:cover;filter:saturate(.72) contrast(.94) brightness(1.08);opacity:.19}.ascii-image-layer canvas{display:block;mix-blend-mode:multiply}.ascii-gallery:after{position:absolute;inset:0;z-index:3;background:linear-gradient(270deg,rgba(244,244,238,.96) 0,rgba(244,244,238,.9) min(29vw,350px),rgba(244,244,238,0) min(52vw,720px)),linear-gradient(180deg,rgba(244,244,238,.82) 0,rgba(244,244,238,.04) 20%,rgba(244,244,238,.02) 68%,rgba(244,244,238,.82));content:"";pointer-events:none}.ascii-project-meta{position:absolute;bottom:98px;left:20px;z-index:20;display:flex;flex-direction:column;align-items:flex-start;gap:12px;width:min(720px,calc(100vw - 420px));color:rgb(38,39,36);pointer-events:none}.ascii-project-kicker{display:flex;flex-wrap:wrap;gap:8px 18px;color:rgb(88,89,84);font-size:11px;line-height:1.35}.ascii-project-meta h1{max-width:15ch;margin:0;font-family:var(--font-spectral);font-size:clamp(42px,5.4vw,84px);font-weight:300;line-height:.94;letter-spacing:0;text-wrap:balance}.ascii-project-meta p{max-width:54ch;margin:0;color:rgb(74,75,70);font-size:13px;line-height:1.45}.ascii-project-meta a{position:relative;color:rgb(38,39,36);font-size:13px;line-height:1.3;pointer-events:auto;text-decoration:none}.ascii-project-meta a:after{position:absolute;right:0;bottom:-3px;left:0;height:1px;background:currentColor;content:"";transform:scaleX(.32);transform-origin:left;transition:transform .22s cubic-bezier(.22,1,.36,1)}.ascii-project-meta a:focus-visible:after,.ascii-project-meta a:hover:after{transform:scaleX(1)}.ascii-project-index{position:absolute;top:76px;right:20px;bottom:42px;z-index:20;display:flex;flex-direction:column;width:var(--project-index-width);min-width:260px;color:rgb(57,58,54);mask-image:linear-gradient(180deg,transparent 0,black 18px,black calc(100% - 18px),transparent)}.ascii-index-heading{display:flex;justify-content:space-between;align-items:baseline;padding:0 0 8px;border-bottom:1px solid rgba(50,51,47,.24);color:rgb(88,89,84);font-size:10px;line-height:1.3}.ascii-index-sort{display:flex;gap:12px;align-items:baseline}.ascii-index-sort button{position:relative;padding:0;border:0;background:transparent;color:rgba(88,89,84,.52);font:inherit;line-height:inherit;cursor:pointer;transition:color .16s ease}.ascii-index-sort button:after{position:absolute;right:0;bottom:-9px;left:0;height:1px;background:rgb(57,58,54);content:"";opacity:0;transform:scaleX(.45);transition:opacity .16s ease,transform .2s cubic-bezier(.22,1,.36,1)}.ascii-index-sort button.is-active,.ascii-index-sort button:focus-visible,.ascii-index-sort button:hover{color:rgb(57,58,54)}.ascii-index-sort button:focus-visible{outline:1px solid rgba(57,58,54,.65);outline-offset:3px}.ascii-index-sort button.is-active:after{opacity:1;transform:scaleX(1)}.ascii-project-index ol{min-height:0;margin:0;overflow-x:hidden;overflow-y:auto;scrollbar-color:rgba(50,51,47,.28) transparent;scrollbar-width:thin}.ascii-project-index li{position:relative;margin:0}.ascii-index-row{display:grid;grid-template-columns:38px minmax(0,1fr) 14px;gap:8px;align-items:baseline;width:100%;min-height:34px;padding:8px 0;border:0;border-bottom:1px solid rgba(50,51,47,.14);background:transparent;color:rgba(57,58,54,.56);font-family:var(--font-fredoka);text-align:left;text-decoration:none;cursor:pointer;transition:color .18s ease,opacity .18s ease}.ascii-index-row.is-active,.ascii-index-row:focus-visible,.ascii-index-row:hover{color:rgb(35,36,33)}.ascii-index-row:focus-visible{outline:1px solid rgba(35,36,33,.72);outline-offset:-1px}.ascii-index-category,.ascii-index-number{font-size:9px;line-height:1.3}.ascii-index-title{overflow:hidden;font-size:11px;line-height:1.35;text-overflow:ellipsis;transition:transform .24s cubic-bezier(.22,1,.36,1);white-space:nowrap}.ascii-index-row.is-active .ascii-index-title,.ascii-index-row:focus-visible .ascii-index-title,.ascii-index-row:hover .ascii-index-title{transform:translateX(-5px)}.ascii-index-category{justify-self:end;transition:opacity .16s ease}.ascii-index-lock{display:block;width:12px;height:12px}.ascii-index-open{position:absolute;top:50%;right:0;display:grid;place-items:center;width:26px;height:26px;color:rgb(35,36,33);font-family:var(--font-fredoka);font-size:14px;line-height:1;opacity:0;pointer-events:auto;text-decoration:none;transform:translate(4px,-50%);transition:opacity .16s ease,transform .22s cubic-bezier(.22,1,.36,1)}.ascii-index-row:has(.ascii-index-private){grid-template-columns:38px minmax(0,1fr) 44px}.ascii-index-open.ascii-index-private{width:auto;font-size:12px;color:#96512f}.ascii-hover-thumbnail{position:absolute;right:calc(min(330px, 29vw) + 38px);z-index:24;overflow:hidden;background:transparent;pointer-events:none;transform:translateY(-50%)}.ascii-hover-thumbnail img{padding:0;object-fit:contain;filter:saturate(.82) contrast(.96)}.ascii-project-index li:focus-within .ascii-index-open,.ascii-project-index li:hover .ascii-index-open{opacity:1;transform:translateY(-50%)}.ascii-project-index li:focus-within .ascii-index-category,.ascii-project-index li:hover .ascii-index-category{opacity:0}@media (max-width:768px){.ascii-gallery,.ascii-home{min-height:520px}body:has(.ascii-home) .filter-buttons{top:62px;right:20px;left:20px;display:flex;width:auto;gap:22px}body:has(.ascii-home) .filter-btn{display:inline-flex;align-items:center;min-height:44px;margin-left:0;padding:0;font-size:15px}body:has(.ascii-home) .personal-section-links{display:flex;margin-left:0}.ascii-project-meta{top:112px;bottom:auto;width:calc(100% - 40px);gap:9px}.ascii-project-kicker{gap:7px 12px;font-size:9px}.ascii-project-meta h1{max-width:13ch;font-size:clamp(30px,10vw,52px);line-height:.98}.ascii-project-meta p{display:none}.ascii-project-meta a{font-size:11px}.ascii-project-index{top:318px;right:20px;bottom:64px;left:20px;width:auto;min-width:0}.ascii-gallery:after{background:linear-gradient(0deg,rgba(244,244,238,.94) 0,rgba(244,244,238,.86) 58%,rgba(244,244,238,.3) 72%,rgba(244,244,238,.84))}.ascii-index-heading{padding-bottom:6px}.ascii-index-row{min-height:46px;padding:12px 0;color:rgb(57,58,54)}.ascii-index-row.is-active,.ascii-index-row.is-active .ascii-index-title,.ascii-index-row:focus-visible,.ascii-index-row:focus-visible .ascii-index-title,.ascii-index-row:hover,.ascii-index-row:hover .ascii-index-title{transform:none}.ascii-index-number{font-size:10px}.ascii-index-title{font-size:14px}.ascii-index-category{font-size:10px}.ascii-hover-thumbnail,.ascii-index-open{display:none}.ascii-project-index li:focus-within .ascii-index-category,.ascii-project-index li:hover .ascii-index-category{opacity:1}body:has(.ascii-home) footer{background:transparent}}@media (prefers-reduced-motion:reduce){.ascii-hover-thumbnail,.ascii-image-layer.is-active{animation:none}.ascii-hover-thumbnail{opacity:1;transform:translateY(-50%)}.ascii-index-row,.ascii-index-title,.ascii-project-meta a:after{transition:none}}body:has(.cms-shell),html:has(.cms-shell){--cms-scroll-thumb:rgba(77,78,72,0.34);--cms-scroll-thumb-hover:rgba(45,46,42,0.62);--cms-scroll-track:rgba(45,46,42,0.055);scrollbar-color:var(--cms-scroll-thumb) transparent;scrollbar-width:thin}body:has(.cms-shell){overflow-y:auto;background:#f2f1eb;color:#2d2e2a}body:has(.cms-shell)::-webkit-scrollbar,html:has(.cms-shell)::-webkit-scrollbar{width:9px}body:has(.cms-shell)::-webkit-scrollbar-track,html:has(.cms-shell)::-webkit-scrollbar-track{background:transparent}body:has(.cms-shell)::-webkit-scrollbar-thumb,html:has(.cms-shell)::-webkit-scrollbar-thumb{border:3px solid transparent;background:var(--cms-scroll-thumb);background-clip:content-box}body:has(.cms-shell)::-webkit-scrollbar-thumb:hover,html:has(.cms-shell)::-webkit-scrollbar-thumb:hover{background-color:var(--cms-scroll-thumb-hover)}.cms-shell{--cms-ink:#2d2e2a;--cms-muted:#77786f;--cms-line:rgba(45,46,42,0.17);--cms-paper:#f2f1eb;--cms-panel:#e9e8e1;--cms-accent:#ba3f2d;min-height:100vh;font-family:var(--font-fredoka);font-weight:300}.cms-header{position:sticky;top:0;z-index:20;display:flex;align-items:flex-end;justify-content:space-between;min-height:118px;padding:24px 32px 20px;border-bottom:1px solid var(--cms-line);background:color-mix(in srgb,var(--cms-paper) 94%,transparent);backdrop-filter:blur(12px)}.cms-editor-heading h2,.cms-eyebrow,.cms-header h1,.cms-section-title h3,.cms-section-title p{margin:0}.cms-eyebrow{margin-bottom:7px;color:var(--cms-muted);font-size:10px;letter-spacing:.12em;text-transform:uppercase}.cms-header h1{font-family:var(--font-spectral);font-size:clamp(31px,4vw,48px);font-weight:300;line-height:.92;letter-spacing:-.035em}.cms-editor-actions,.cms-gallery-actions,.cms-header-actions{display:flex;align-items:center;gap:14px}.cms-save-status{display:flex;align-items:center;gap:7px;color:var(--cms-muted);font-size:11px}.cms-save-status:before{width:6px;height:6px;border-radius:50%;background:#8b8c84;content:""}.cms-save-status.is-saving:before{background:#bd8d32}.cms-save-status.is-saved:before{background:#607f59}.cms-save-status.is-error:before,.cms-save-status:has(+.cms-button:not(:disabled)):before{background:var(--cms-accent)}.cms-editor button,.cms-header button,.cms-project-panel button,.cms-text-link{border:0;background:transparent;color:var(--cms-ink);font:inherit;text-decoration:none;cursor:pointer}.cms-text-link{border-bottom:1px solid var(--cms-line);font-size:12px}.cms-button.cms-button-primary{min-width:92px;padding:11px 17px;background:var(--cms-ink);color:var(--cms-paper);font-size:12px}.cms-button.cms-button-primary:disabled{background:#d4d3cc;color:#898a82;cursor:default}.cms-message{position:fixed;top:128px;right:32px;z-index:30;max-width:410px;padding:10px 13px;border:1px solid var(--cms-line);background:#deddd5;color:var(--cms-ink);font-size:11px}.cms-message.is-error{border-color:color-mix(in srgb,var(--cms-accent) 45%,transparent);background:#efe0dc;color:#8f2f22}.cms-workspace{display:grid;grid-template-columns:minmax(250px,21vw) minmax(0,1fr);min-height:calc(100vh - 118px)}.cms-project-panel{position:sticky;top:118px;align-self:start;height:calc(100vh - 118px);overflow-y:auto;border-right:1px solid var(--cms-line);background:var(--cms-panel);scrollbar-color:var(--cms-scroll-thumb) transparent;scrollbar-width:thin}.cms-project-panel::-webkit-scrollbar{width:7px}.cms-project-panel::-webkit-scrollbar-track{background:transparent}.cms-project-panel::-webkit-scrollbar-thumb{border:2px solid transparent;background:var(--cms-scroll-thumb);background-clip:content-box}.cms-project-panel::-webkit-scrollbar-thumb:hover{background-color:var(--cms-scroll-thumb-hover)}.cms-panel-heading{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;min-height:66px;padding:16px 18px;border-bottom:1px solid var(--cms-line);background:var(--cms-panel);font-size:11px;text-transform:uppercase;letter-spacing:.08em}.cms-panel-tabs{display:flex;align-self:stretch;gap:18px}.cms-panel-tabs button{position:relative;display:flex;align-items:baseline;gap:5px;padding:0;color:var(--cms-muted)}.cms-panel-tabs button:after{position:absolute;right:0;bottom:-16px;left:0;height:1px;background:transparent;content:""}.cms-panel-tabs button.is-active{color:var(--cms-ink)}.cms-panel-tabs button.is-active:after{background:var(--cms-ink)}.cms-panel-tabs small{color:var(--cms-muted);font-size:9px;letter-spacing:0;text-transform:none}.cms-panel-heading .cms-new-project{padding:7px 0;border-bottom:1px solid var(--cms-ink);font-size:11px}.cms-project-list{margin:0;padding:0}.cms-project-list li{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;min-height:65px;border-bottom:1px solid var(--cms-line);transition:background-color .15s ease}.cms-project-list li.is-selected,.cms-project-list li:hover{background:#f2f1eb}.cms-project-list li.is-selected:before{position:absolute;top:0;bottom:0;left:0;width:3px;background:var(--cms-accent);content:""}.cms-project-select{display:grid;grid-template-columns:14px 26px minmax(0,1fr);gap:7px;align-items:center;width:100%;min-width:0;padding:12px 9px 12px 15px;text-align:left}.cms-drag-handle{color:#aaaba3;font-size:15px;cursor:grab}.cms-project-number{color:var(--cms-muted);font-size:9px;font-variant-numeric:tabular-nums}.cms-project-select>span:last-child{min-width:0}.cms-project-select small,.cms-project-select strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cms-project-select strong{font-size:11px;font-weight:400}.cms-project-select small{margin-top:4px;color:var(--cms-muted);font-size:9px}.cms-order-controls{display:flex;align-items:center;padding-right:7px}.cms-order-controls button{width:22px;height:30px;color:var(--cms-muted);font-size:11px}.cms-gallery-item-footer button:disabled,.cms-order-controls button:disabled{opacity:.24;cursor:default}.cms-editor-empty,.cms-empty{padding:30px 18px;color:var(--cms-muted);font-size:12px}.cms-empty button{padding:0;border-bottom:1px solid var(--cms-muted)}.cms-empty span{display:block;max-width:22ch;margin-top:5px;font-size:10px;line-height:1.45}.cms-editor{min-width:0;padding:0 clamp(24px,5vw,76px) 100px}.cms-editor-heading{display:flex;align-items:flex-end;justify-content:space-between;min-height:146px;padding:32px 0 26px;border-bottom:1px solid var(--cms-line)}.cms-editor-heading span{display:block;margin-bottom:9px;color:var(--cms-muted);font-size:10px;letter-spacing:.08em;text-transform:uppercase}.cms-editor-heading h2{max-width:24ch;font-family:var(--font-spectral);font-size:clamp(27px,3vw,42px);font-weight:300;line-height:1;letter-spacing:-.025em}.cms-editor-actions button,.cms-gallery-actions button{padding:7px 0;border-bottom:1px solid var(--cms-line);color:var(--cms-muted);font-size:11px}.cms-editor-actions .is-danger,.cms-gallery-item-footer .is-danger{color:var(--cms-accent)}.cms-editor-actions .is-archive{color:var(--cms-ink)}.cms-section{padding:36px 0 44px;border-bottom:1px solid var(--cms-line)}.cms-section-title{display:grid;grid-template-columns:30px minmax(0,1fr);gap:10px;margin-bottom:28px}.cms-section-title>span{padding-top:3px;color:var(--cms-muted);font-size:9px;font-variant-numeric:tabular-nums}.cms-section-title h3{font-size:13px;font-weight:500}.cms-section-title p{margin-top:5px;color:var(--cms-muted);font-size:10px}.cms-cover-editor{display:grid;grid-template-columns:minmax(260px,1.25fr) minmax(220px,.75fr);gap:clamp(24px,4vw,58px);align-items:end}.cms-cover-preview{display:grid;place-items:center;min-height:220px;border:1px solid var(--cms-line);background:linear-gradient(45deg,#e7e6df 25%,transparent 0),linear-gradient(-45deg,#e7e6df 25%,transparent 0),linear-gradient(45deg,transparent 75%,#e7e6df 0),linear-gradient(-45deg,transparent 75%,#e7e6df 0);background-position:0 0,0 8px,8px -8px,-8px 0;background-size:16px 16px}.cms-cover-preview img{display:block;width:100%;height:auto;padding:0}.cms-gallery-image img{width:100%;height:100%;padding:0;object-fit:contain}.cms-cover-preview span{color:var(--cms-muted);font-size:11px}.cms-cover-fields{display:flex;flex-direction:column;align-items:flex-start;gap:14px}.cms-cover-fields>p{margin:-6px 0 0;color:var(--cms-muted);font-size:9px}.cms-upload-button{display:inline-flex;min-height:38px;align-items:center;justify-content:center;padding:0 16px;border:1px solid var(--cms-ink);color:var(--cms-ink);font-size:11px;cursor:pointer}.cms-upload-button input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.cms-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px 28px;padding-left:40px}.cms-field{display:flex;min-width:0;flex-direction:column;gap:7px}.cms-field-wide{grid-column:1/-1}.cms-field>span{color:var(--cms-muted);font-size:9px;letter-spacing:.06em;text-transform:uppercase}.cms-field input,.cms-field select,.cms-field textarea{width:100%;min-width:0;border:0;border-bottom:1px solid var(--cms-line);border-radius:0;outline:0;background:transparent;color:var(--cms-ink);font-family:var(--font-fredoka);font-size:12px;font-weight:300}.cms-field input,.cms-field select{height:40px}.cms-field textarea{padding:11px 0;line-height:1.55;resize:vertical;scrollbar-color:var(--cms-scroll-thumb) transparent;scrollbar-width:thin}.cms-field textarea::-webkit-scrollbar{width:6px}.cms-field textarea::-webkit-scrollbar-track{background:transparent}.cms-field textarea::-webkit-scrollbar-thumb{border:2px solid transparent;background:var(--cms-scroll-thumb);background-clip:content-box}.cms-field input:focus,.cms-field select:focus,.cms-field textarea:focus{border-color:var(--cms-ink)}.cms-field input::placeholder,.cms-field textarea::placeholder{color:#a5a69e}.cms-gallery-heading{grid-template-columns:30px minmax(0,1fr) auto;align-items:start}.cms-gallery-actions{justify-self:end}.cms-gallery-actions .cms-upload-button{min-height:34px;padding:0 13px;background:var(--cms-ink);color:var(--cms-paper)}.cms-gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px 12px;margin:0;padding:0 0 0 40px}.cms-gallery-grid>li{min-width:0;cursor:grab}.cms-gallery-image{position:relative;aspect-ratio:4/3;overflow:hidden;border:1px solid var(--cms-line);background:#e5e4dd}.cms-gallery-image>span{position:absolute;top:7px;left:7px;padding:3px 5px;background:rgba(242,241,235,.88);font-size:8px;font-variant-numeric:tabular-nums}.cms-gallery-item-footer{display:flex;align-items:center;justify-content:space-between;gap:5px;min-width:0;padding-top:7px}.cms-gallery-item-footer>span{overflow:hidden;color:var(--cms-muted);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.cms-gallery-item-footer>div{display:flex;flex-shrink:0}.cms-gallery-item-footer button{width:21px;color:var(--cms-muted);font-size:11px}.cms-gallery-empty{margin-left:40px;padding:48px 20px;border:1px dashed var(--cms-line);color:var(--cms-muted);text-align:center}.cms-gallery-empty p{margin:0 0 5px;color:var(--cms-ink);font-size:12px}.cms-gallery-empty span{font-size:9px}@media (max-width:900px){.cms-header{align-items:center;min-height:92px;padding:18px 20px}.cms-header h1{font-size:30px}.cms-save-status,.cms-text-link{display:none}.cms-workspace{grid-template-columns:1fr}.cms-project-panel{position:relative;top:auto;height:auto;max-height:300px;border-right:0;border-bottom:1px solid var(--cms-line)}.cms-panel-heading{position:static}.cms-project-list{display:flex;overflow-x:auto;scrollbar-color:var(--cms-scroll-thumb) var(--cms-scroll-track);scrollbar-width:thin}.cms-project-list::-webkit-scrollbar{height:5px}.cms-project-list::-webkit-scrollbar-track{background:var(--cms-scroll-track)}.cms-project-list::-webkit-scrollbar-thumb{border:1px solid transparent;background:var(--cms-scroll-thumb);background-clip:content-box}.cms-project-list::-webkit-scrollbar-thumb:hover{background-color:var(--cms-scroll-thumb-hover)}.cms-project-list li{flex:0 0 220px;border-right:1px solid var(--cms-line)}.cms-editor{padding:0 20px 80px}.cms-message{top:100px;right:20px;left:20px;max-width:none}}@media (max-width:640px){.cms-header{min-height:78px}.cms-eyebrow{display:none}.cms-header h1{font-size:25px}.cms-button.cms-button-primary{min-width:82px;padding:10px 12px}.cms-editor-heading{min-height:125px;align-items:flex-start;flex-direction:column;gap:18px}.cms-editor-heading h2{font-size:28px}.cms-cover-editor,.cms-form-grid{grid-template-columns:1fr}.cms-form-grid,.cms-gallery-grid{padding-left:0}.cms-field-wide{grid-column:auto}.cms-gallery-heading{grid-template-columns:25px minmax(0,1fr)}.cms-gallery-actions{grid-column:2;justify-self:start;flex-wrap:wrap;margin-top:8px}.cms-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.cms-gallery-empty{margin-left:0}}:root{--portfolio-paper:rgb(244,244,238);--portfolio-ink:rgb(38,39,36);--portfolio-muted:rgb(88,89,84);--portfolio-faint:rgb(132,133,126);--portfolio-line:rgba(50,51,47,0.22);--portfolio-line-soft:rgba(50,51,47,0.12);--portfolio-gutter:clamp(20px,3.4vw,56px);--portfolio-section:clamp(72px,10vw,152px)}body:has(.editorial-about),body:has(.editorial-index),body:has(.editorial-not-found),body:has(.editorial-project){background:var(--portfolio-paper);color:var(--portfolio-ink)}body:has(.editorial-about) .navbar,body:has(.editorial-about) footer,body:has(.editorial-index) .navbar,body:has(.editorial-index) footer,body:has(.editorial-not-found) .navbar,body:has(.editorial-not-found) footer,body:has(.editorial-project) .navbar,body:has(.editorial-project) footer{background:var(--portfolio-paper)}.editorial-page-marker,.editorial-project-marker{display:flex;flex-wrap:wrap;gap:8px 18px;color:var(--portfolio-muted);font-size:11px;line-height:1.35}.editorial-section-label{margin:0;color:var(--portfolio-faint);font-size:10px;line-height:1.4;text-transform:uppercase}.editorial-project{min-height:100vh;padding:0 var(--portfolio-gutter) 128px}.editorial-project-hero{display:grid;grid-template-columns:minmax(180px,.7fr) minmax(0,2.3fr);gap:clamp(32px,7vw,128px);align-items:end;padding:96px 0 64px;border-bottom:1px solid var(--portfolio-line)}.editorial-project-marker{align-self:start}.editorial-project-heading{display:flex;flex-direction:column;gap:28px}.editorial-project-heading h1{max-width:16ch;margin:0;font-family:var(--font-spectral);font-size:clamp(48px,6.4vw,96px);font-weight:300;line-height:.9;letter-spacing:-.025em;text-wrap:balance}.editorial-project-heading p{max-width:62ch;margin:0;color:var(--portfolio-muted);font-size:13px;line-height:1.55}.editorial-gallery{padding-top:76px}.editorial-gallery-stage{position:relative;width:100%;height:min(calc(100svh - 148px),920px);min-height:520px;overflow:hidden;background:var(--portfolio-paper)}.editorial-gallery-image{padding:clamp(16px,3vw,48px)!important;object-fit:contain;animation:editorial-image-enter .32s cubic-bezier(.22,1,.36,1) both}.editorial-gallery-footer{display:flex;justify-content:space-between;align-items:center;min-height:56px;border-bottom:1px solid var(--portfolio-line);color:var(--portfolio-faint);font-size:10px}.editorial-gallery-footer>span:last-child{max-width:48ch;overflow:hidden;color:var(--portfolio-muted);text-overflow:ellipsis;white-space:nowrap}.editorial-gallery-side-controls{position:absolute;inset:0;pointer-events:none}.editorial-gallery-mobile-controls{display:none}.editorial-gallery-side-controls button{position:absolute;top:50%;display:flex;gap:10px;align-items:center;min-width:78px;min-height:48px;padding:0 14px;border:0;background:transparent;color:var(--portfolio-ink);font-family:var(--font-fredoka);font-size:11px;cursor:pointer;pointer-events:auto;transform:translateY(-50%);transition:background-color .16s ease,transform .22s cubic-bezier(.22,1,.36,1)}.editorial-gallery-side-controls .is-previous{left:16px}.editorial-gallery-side-controls .is-next{right:16px}.editorial-gallery-side-controls button:focus-visible,.editorial-gallery-side-controls button:hover{background:transparent;transform:translateY(-50%) scale(1.025)}.editorial-gallery-side-controls button:focus-visible{outline:1px solid var(--portfolio-muted);outline-offset:3px}.editorial-project-body{display:grid;grid-template-columns:minmax(230px,.72fr) minmax(0,1.48fr);gap:clamp(56px,10vw,176px);padding:var(--portfolio-section) 0}.editorial-project-facts{align-self:start;position:sticky;top:96px}.editorial-project-facts dl{margin:24px 0 0}.editorial-project-facts dl>div{display:grid;grid-template-columns:minmax(80px,.42fr) minmax(0,1fr);gap:16px;padding:12px 0;border-top:1px solid var(--portfolio-line-soft)}.editorial-project-facts dl>div:last-child{border-bottom:1px solid var(--portfolio-line-soft)}.editorial-project-facts dd,.editorial-project-facts dt{margin:0;font-size:11px;line-height:1.45}.editorial-project-facts dt{color:var(--portfolio-faint)}.editorial-project-facts dd{color:var(--portfolio-muted);white-space:pre-line}.editorial-project-essay{max-width:70ch}.editorial-project-essay .editorial-section-label{margin-bottom:32px}.editorial-project-essay>p:not(.editorial-section-label){margin:0 0 1.4em;color:var(--portfolio-muted);font-size:clamp(15px,1.08vw,17px);line-height:1.72}.editorial-project-essay>p:not(.editorial-section-label):first-of-type{color:var(--portfolio-ink);font-family:var(--font-spectral);font-size:clamp(22px,2.1vw,32px);font-weight:300;line-height:1.35}.editorial-next-project{display:grid;grid-template-columns:minmax(150px,.55fr) minmax(0,1.8fr) 32px;gap:24px;align-items:end;padding:28px 0 34px;border-top:1px solid var(--portfolio-line);border-bottom:1px solid var(--portfolio-line);color:var(--portfolio-ink);text-decoration:none}.editorial-next-label{align-self:start;color:var(--portfolio-faint);font-size:10px;text-transform:uppercase}.editorial-next-title{max-width:19ch;font-family:var(--font-spectral);font-size:clamp(36px,5.6vw,80px);font-weight:300;line-height:.98;transition:transform .26s cubic-bezier(.22,1,.36,1)}.editorial-next-arrow{justify-self:end;font-size:18px}.editorial-next-project:focus-visible .editorial-next-title,.editorial-next-project:hover .editorial-next-title{transform:translateX(8px)}.editorial-next-project:focus-visible{outline:1px solid var(--portfolio-muted);outline-offset:6px}.editorial-not-found{display:flex;flex-direction:column;gap:24px;justify-content:center;min-height:100svh;padding:100px var(--portfolio-gutter)}.editorial-not-found a,.editorial-not-found span{color:var(--portfolio-muted);font-size:12px}.editorial-not-found h1{margin:0;font-family:var(--font-spectral);font-size:clamp(52px,9vw,112px);font-weight:300}.editorial-about{min-height:100vh;padding:0 var(--portfolio-gutter) 128px}.editorial-about-hero{display:grid;grid-template-columns:minmax(200px,.46fr) minmax(0,1.64fr);gap:clamp(48px,8vw,140px);align-items:end;min-height:94svh;padding:112px 0 56px;border-bottom:1px solid var(--portfolio-line)}.editorial-about-profile{display:flex;flex-direction:column;gap:16px;width:min(100%,220px)}.editorial-about-image{position:relative;width:100%;aspect-ratio:4/5;overflow:hidden;background:rgba(225,225,218,.4)}.editorial-about-image img{padding:0!important;object-fit:cover;filter:saturate(.78) contrast(.96)}.editorial-about-identity{display:flex;justify-content:space-between;gap:16px;color:var(--portfolio-muted);font-size:10px;line-height:1.4}.editorial-about-intro{display:flex;flex-direction:column;gap:30px}.editorial-about-intro h1{max-width:22ch;margin:0;font-family:var(--font-spectral);font-size:clamp(44px,4.9vw,76px);font-weight:300;line-height:.98;letter-spacing:-.02em;text-wrap:balance}.editorial-about-copy{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(24px,4vw,64px);max-width:820px}.editorial-about-copy p{margin:0;color:var(--portfolio-muted);font-size:13px;line-height:1.6}.editorial-about-copy p:first-child{grid-column:1/-1;max-width:48ch;color:var(--portfolio-ink);font-size:16px;line-height:1.5}.editorial-about-links{display:flex;flex-wrap:wrap;gap:10px 28px}.editorial-about-links a{position:relative;color:var(--portfolio-ink);font-size:12px;text-decoration:none}.editorial-about-links a:after{position:absolute;right:0;bottom:-4px;left:0;height:1px;background:currentColor;content:"";transform:scaleX(.28);transform-origin:left;transition:transform .22s cubic-bezier(.22,1,.36,1)}.editorial-about-links a:focus-visible:after,.editorial-about-links a:hover:after{transform:scaleX(1)}.editorial-resume{padding:var(--portfolio-section) 0}.editorial-resume-section{display:grid;grid-template-columns:minmax(160px,.5fr) minmax(0,1.7fr);gap:clamp(32px,7vw,112px)}.editorial-resume-section+.editorial-resume-section{margin-top:var(--portfolio-section)}.editorial-resume-section h2{margin:0;color:var(--portfolio-faint);font-size:10px;font-weight:400;line-height:1.4;text-transform:uppercase}.editorial-resume-list{border-top:1px solid var(--portfolio-line)}.editorial-resume-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;padding:18px 0 20px;border-bottom:1px solid var(--portfolio-line-soft)}.editorial-resume-item h3{margin:0 0 7px;color:var(--portfolio-ink);font-family:var(--font-spectral);font-size:clamp(18px,1.6vw,24px);font-weight:300;line-height:1.2}.editorial-recognition-project{color:inherit;text-decoration:none;text-decoration-thickness:1px;text-underline-offset:4px}.editorial-recognition-project:hover{color:var(--portfolio-ink);text-decoration-line:underline}.editorial-recognition-project:focus-visible{outline:2px solid currentColor;outline-offset:4px}.editorial-resume-item p,.editorial-resume-item time{margin:0;color:var(--portfolio-muted);font-size:11px;line-height:1.5}.editorial-resume-item time{white-space:nowrap}.editorial-about-credit{margin:0;padding-top:24px;border-top:1px solid var(--portfolio-line);color:var(--portfolio-faint);font-size:10px}.editorial-index{min-height:100vh;padding:0 var(--portfolio-gutter) 128px}.editorial-index-header{display:grid;grid-template-columns:minmax(150px,.55fr) minmax(0,1.6fr);gap:28px clamp(40px,8vw,140px);align-items:end;min-height:48svh;padding:112px 0 48px;border-bottom:1px solid var(--portfolio-line)}.editorial-index-header .editorial-page-marker{align-self:start}.editorial-index-header h1{margin:0;font-family:var(--font-spectral);font-size:clamp(56px,8vw,116px);font-weight:300;line-height:.9;letter-spacing:-.025em}.editorial-index-header p{grid-column:2;max-width:58ch;margin:0;color:var(--portfolio-muted);font-size:13px;line-height:1.55}.editorial-index-list{border-top:1px solid var(--portfolio-line-soft);margin-top:20px}.editorial-index-item{display:grid;grid-template-columns:50px minmax(180px,22vw) minmax(0,1fr) 28px;gap:clamp(18px,3vw,48px);align-items:center;padding:20px 0;border-bottom:1px solid var(--portfolio-line-soft);color:var(--portfolio-ink);text-decoration:none}.editorial-index-number{align-self:start;color:var(--portfolio-faint);font-size:10px}.editorial-index-image{position:relative;width:100%;aspect-ratio:4/3;overflow:hidden;background:rgba(225,225,218,.34)}.editorial-index-image img{padding:0!important;object-fit:cover;filter:saturate(.7) contrast(.95);transition:filter .26s ease,transform .32s cubic-bezier(.22,1,.36,1)}.editorial-index-info{display:flex;flex-direction:column;gap:22px}.editorial-index-info h2{max-width:20ch;margin:0;font-family:var(--font-spectral);font-size:clamp(28px,3.4vw,54px);font-weight:300;line-height:1;transition:transform .26s cubic-bezier(.22,1,.36,1)}.editorial-index-info>div{display:flex;flex-wrap:wrap;gap:8px 18px;color:var(--portfolio-faint);font-size:10px;line-height:1.4}.editorial-index-arrow{justify-self:end;font-size:16px;opacity:0;transform:translate(-6px,6px);transition:opacity .18s ease,transform .26s cubic-bezier(.22,1,.36,1)}.editorial-index-item:focus-visible .editorial-index-image img,.editorial-index-item:hover .editorial-index-image img{filter:saturate(.92) contrast(1);transform:scale(1.018)}.editorial-index-item:focus-visible .editorial-index-info h2,.editorial-index-item:hover .editorial-index-info h2{transform:translateX(8px)}.editorial-index-item:focus-visible .editorial-index-arrow,.editorial-index-item:hover .editorial-index-arrow{opacity:1;transform:translate(0)}.editorial-index-item:focus-visible{outline:1px solid var(--portfolio-muted);outline-offset:4px}@keyframes editorial-image-enter{0%{opacity:0;transform:scale(1.012)}to{opacity:1;transform:scale(1)}}@media (max-width:768px){body:has(.editorial-about) footer,body:has(.editorial-index) footer,body:has(.editorial-not-found) footer,body:has(.editorial-project) footer{background:var(--portfolio-paper)}.editorial-page-marker,.editorial-project-marker{font-size:9px}.editorial-about,.editorial-index,.editorial-project{padding-right:20px;padding-bottom:112px;padding-left:20px}.editorial-project-hero{display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;gap:32px;padding:72px 0 40px}.editorial-project-heading{gap:20px}.editorial-project-heading h1{max-width:13ch;font-size:clamp(40px,12vw,58px);line-height:.94}.editorial-project-heading p{font-size:12px}.editorial-gallery{padding-top:72px}.editorial-gallery-stage{aspect-ratio:4/3;height:auto;min-height:0;max-height:none}.editorial-gallery-image{padding:12px!important}.editorial-gallery-footer{min-height:52px}.editorial-gallery-side-controls{display:none}.editorial-gallery-mobile-controls{display:flex;justify-content:space-between;align-items:center;min-height:52px}.editorial-gallery-mobile-controls button{display:flex;gap:8px;align-items:center;min-width:76px;min-height:44px;padding:0;border:0;background:transparent;color:var(--portfolio-ink);font-family:var(--font-fredoka);font-size:10px;cursor:pointer}.editorial-gallery-mobile-controls button:last-child{justify-content:flex-end}.editorial-gallery-mobile-controls button:focus-visible{outline:1px solid var(--portfolio-muted);outline-offset:2px}.editorial-gallery-footer>span:last-child{max-width:22ch}.editorial-project-body{grid-template-columns:1fr;gap:64px;padding:80px 0 96px}.editorial-project-facts{position:static}.editorial-project-essay .editorial-section-label{margin-bottom:24px}.editorial-project-essay>p:not(.editorial-section-label){font-size:14px;line-height:1.65}.editorial-project-essay>p:not(.editorial-section-label):first-of-type{font-size:23px;line-height:1.38}.editorial-next-project{grid-template-columns:1fr 24px;gap:18px;padding:22px 0 26px}.editorial-next-label{grid-column:1/-1}.editorial-next-title{font-size:clamp(32px,10vw,48px)}.editorial-about-hero{display:flex;flex-direction:column;align-items:stretch;gap:52px;min-height:auto;padding:96px 0 48px}.editorial-about-profile{width:min(100%,220px)}.editorial-about-image{width:min(36vw,132px)}.editorial-about-intro{gap:24px}.editorial-about-intro h1{max-width:16ch;font-size:clamp(36px,10.5vw,52px);line-height:1}.editorial-about-copy{grid-template-columns:1fr;gap:18px}.editorial-about-copy p{font-size:12px}.editorial-about-copy p:first-child{font-size:14px}.editorial-about-links a{min-height:44px;display:inline-flex;align-items:center}.editorial-resume{padding:80px 0 96px}.editorial-resume-section{grid-template-columns:1fr;gap:24px}.editorial-resume-section+.editorial-resume-section{margin-top:88px}.editorial-resume-item{grid-template-columns:1fr;gap:12px}.editorial-resume-item h3{font-size:19px}.editorial-resume-item time{grid-row:1;color:var(--portfolio-faint);font-size:9px}.editorial-index-header{display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;gap:28px;min-height:52svh;padding:96px 0 34px}.editorial-index-header h1{font-size:clamp(48px,15vw,72px)}.editorial-index-header p{font-size:12px}.editorial-index-item{grid-template-columns:28px minmax(104px,36vw) minmax(0,1fr);gap:14px;padding:14px 0}.editorial-index-info{gap:12px}.editorial-index-info h2{font-size:clamp(21px,7.2vw,32px)}.editorial-index-info>div{display:flex;flex-direction:column;gap:3px;font-size:8px}.editorial-index-arrow,.editorial-index-info>div span:last-child{display:none}}body:has(.photography-page){background:var(--portfolio-paper);color:var(--portfolio-ink)}body:has(.photography-page) .navbar{background:var(--portfolio-paper)}body:has(.photography-page).lightbox-open .navbar{background:rgb(8,8,7)}body:has(.photography-page).lightbox-open .navbar a{color:rgb(180,180,175)}.photography-page{min-height:100svh;padding:88px 20px 128px;background:var(--portfolio-paper)}.photography-page img{padding:0}.photography-photo:focus-visible{outline:2px solid var(--portfolio-ink);outline-offset:5px}.photography-loose{display:flex;flex-direction:column;gap:clamp(128px,34vw,220px)}.photography-cluster{display:flex;flex-direction:column;gap:96px}.photography-photo{position:relative;display:block;width:76%;margin:0;padding:0;overflow:visible;border:0;background:none;color:var(--portfolio-ink);text-align:left;animation:photography-enter .62s cubic-bezier(.16,1,.3,1) both}.photography-photo:nth-child(2){width:58%;align-self:flex-end}.photography-photo:nth-child(3){width:68%;align-self:flex-start;margin-left:8%}.photography-photo img{display:block;width:100%;height:auto}.photography-stack{position:relative;display:block;isolation:isolate;cursor:zoom-in}.photography-stack.has-layers{margin:16px 16px 0 0}.photography-stack .photography-stack-back{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;transition:transform .26s cubic-bezier(.25,1,.5,1)}.photography-stack-back.layer-1{z-index:-1;transform:translate(8px,-8px)}.photography-stack-back.layer-2{z-index:-2;transform:translate(16px,-16px)}@media (hover:hover) and (prefers-reduced-motion:no-preference){.photography-photo:focus-visible .photography-stack-back.layer-1,.photography-photo:hover .photography-stack-back.layer-1{transform:translate(12px,-12px) rotate(.6deg)}.photography-photo:focus-visible .photography-stack-back.layer-2,.photography-photo:hover .photography-stack-back.layer-2{transform:translate(24px,-24px) rotate(1.2deg)}}@media (prefers-reduced-motion:reduce){.photography-stack .photography-stack-back{transition:none}}.photography-stack-front{position:relative;background:var(--portfolio-paper)}.photography-stack-count{position:absolute;right:-16px;bottom:-24px;color:var(--portfolio-muted);font-size:10px;font-variant-numeric:tabular-nums}.photography-photo-meta{padding-right:28px;display:flex;align-items:baseline;min-width:0;min-height:22px;padding-top:8px;color:var(--portfolio-muted);font-size:10px;line-height:1.4;white-space:nowrap;opacity:0;transform:translateY(-4px);transition:opacity .18s cubic-bezier(.25,1,.5,1),transform .24s cubic-bezier(.16,1,.3,1);pointer-events:none}.photography-photo-meta span+span:before{margin:0 7px;color:var(--portfolio-faint);content:"/"}.photography-photo-meta span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis}.photography-photo:focus-visible .photography-photo-meta,.photography-photo:hover .photography-photo-meta{opacity:1;transform:translateY(0)}.photography-lightbox{position:fixed;inset:0;z-index:60;display:none;align-items:center;justify-content:center;padding:clamp(12px,4vw,48px);background:rgb(8,8,7);animation:photography-lightbox-fade .18s ease both;width:100%;height:100%;max-width:none;max-height:none;margin:0;border:0}.photography-lightbox[open]{display:flex}.photography-lightbox::backdrop{background:rgb(8,8,7)}.photography-lightbox-close{position:fixed;top:clamp(12px,2vw,24px);right:clamp(12px,2vw,24px);display:flex;width:44px;height:44px;align-items:center;justify-content:center;padding:0;border:0;border-radius:50%;background:none;color:rgb(244,244,238);font-size:28px;line-height:1;cursor:pointer;transition:color .16s ease}.photography-lightbox-close:hover{color:rgb(244,244,238)}.photography-lightbox-close:not(:hover):not(:focus-visible){color:rgb(180,180,175)}.photography-lightbox-nav{position:fixed;top:50%;z-index:1;display:grid;width:44px;height:64px;place-items:center;padding:0;border:0;background:none;color:rgb(180,180,175);font-family:var(--font-fredoka);font-size:20px;line-height:1;cursor:pointer;transform:translateY(-50%);transition:color .16s ease,transform .2s cubic-bezier(.25,1,.5,1)}.photography-lightbox-nav.is-previous{left:clamp(8px,2vw,28px)}.photography-lightbox-nav.is-next{right:clamp(8px,2vw,28px)}.photography-lightbox-close:focus-visible,.photography-lightbox-nav:focus-visible,.photography-lightbox-nav:hover{color:rgb(244,244,238)}.photography-lightbox-nav.is-previous:hover{transform:translate(-3px,-50%)}.photography-lightbox-nav.is-next:hover{transform:translate(3px,-50%)}.photography-lightbox-nav:focus-visible{outline:1px solid rgb(180,180,175);outline-offset:2px}.photography-lightbox-stage{display:flex;max-width:100%;max-height:100%;margin:0;flex-direction:column;align-items:center;animation:photography-lightbox-enter .24s cubic-bezier(.16,1,.3,1) both}.photography-lightbox-image{max-width:100%;max-height:calc(100vh - 96px);width:auto;height:auto;object-fit:contain;animation:photography-lightbox-image-in .22s cubic-bezier(.25,1,.5,1) both}.photography-lightbox-meta{display:flex;align-items:baseline;justify-content:center;margin-top:14px;color:rgb(244,244,238);font-size:11px;letter-spacing:.02em}.photography-lightbox-meta span+span:before{margin:0 8px;color:rgb(132,133,126);content:"/"}@keyframes photography-lightbox-fade{0%{opacity:0}to{opacity:1}}@keyframes photography-lightbox-enter{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}@keyframes photography-lightbox-image-in{0%{opacity:0;transform:scale(.995)}to{opacity:1;transform:scale(1)}}@keyframes photography-enter{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}@media (min-width:760px){.photography-page{padding:120px var(--portfolio-gutter) 180px}.photography-loose{gap:clamp(120px,14vw,220px)}.photography-cluster{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;column-gap:0;row-gap:clamp(72px,8vw,132px)}.photography-cluster .photography-photo{grid-row:1;width:auto;align-self:start;margin:0}.photography-cluster .photography-photo:nth-child(3){grid-row:2}.photography-cluster--1 .photography-photo:first-child{grid-column:1/span 4}.photography-cluster--1 .photography-photo:nth-child(2){grid-column:9/span 3;margin-top:9vw}.photography-cluster--1 .photography-photo:nth-child(3){grid-column:5/span 4}.photography-cluster--2 .photography-photo:first-child{grid-column:8/span 4}.photography-cluster--2 .photography-photo:nth-child(2){grid-column:1/span 3;margin-top:11vw}.photography-cluster--2 .photography-photo:nth-child(3){grid-column:4/span 4}.photography-cluster--3 .photography-photo:first-child{grid-column:2/span 3;margin-top:5vw}.photography-cluster--3 .photography-photo:nth-child(2){grid-column:9/span 3}.photography-cluster--3 .photography-photo:nth-child(3){grid-column:6/span 4}.photography-cluster--4 .photography-photo:first-child{grid-column:1/span 4}.photography-cluster--4 .photography-photo:nth-child(2){grid-column:10/span 2;margin-top:13vw}.photography-cluster--4 .photography-photo:nth-child(3){grid-column:4/span 4}}@media (max-width:759px){.photography-lightbox{padding:56px 12px 72px}.photography-lightbox-image{max-height:calc(100svh - 160px)}.photography-lightbox-nav{top:auto;bottom:14px;width:56px;height:44px;transform:none}.photography-lightbox-nav.is-previous{left:calc(50% - 64px)}.photography-lightbox-nav.is-next{right:calc(50% - 64px)}.photography-lightbox-nav.is-next:hover,.photography-lightbox-nav.is-previous:hover{transform:none}}@media (hover:none){.photography-photo-meta{font-size:9px}}@media (prefers-reduced-motion:reduce){.photography-lightbox,.photography-lightbox-image,.photography-lightbox-stage,.photography-photo{animation:none}.photography-lightbox-nav,.photography-photo-meta{transition:none}.editorial-gallery-image{animation:none}.editorial-about-links a:after,.editorial-index-arrow,.editorial-index-image img,.editorial-index-info h2,.editorial-next-title{transition:none}}.ascii-home-intro,.ascii-project-preview{transition:opacity .32s ease,transform .48s cubic-bezier(.22,1,.36,1),visibility .32s}.ascii-project-meta.is-visible{opacity:1;transform:translateY(0);visibility:visible}.ascii-project-meta.is-hidden{opacity:0;transform:translateY(12px);visibility:hidden;pointer-events:none}.ascii-project-meta.is-hidden a{pointer-events:none}.ascii-meta-content{display:flex;flex-direction:column;align-items:flex-start;gap:12px;animation:ascii-copy-enter .42s ease both}.ascii-home-intro p,.ascii-project-preview p{max-width:45ch;font-size:clamp(15px,1.35vw,19px);line-height:1.65;text-wrap:pretty}.ascii-home-intro p a{font:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px;transition:color .18s}.ascii-home-intro p a:after{display:none}.ascii-home-intro p a:hover{color:#96512f}.ascii-intro-about{display:inline-flex;align-items:center;gap:12px;margin-top:8px}.ascii-image-layer.is-active{animation:ascii-background-enter .6s ease both}@keyframes ascii-copy-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes ascii-background-enter{0%{opacity:0}to{opacity:1}}@media (max-width:768px){.ascii-home-intro p,.ascii-project-preview p{display:block;max-width:38ch;font-size:14px;line-height:1.55}.ascii-home-intro h1{font-size:clamp(32px,9vw,48px)}.ascii-meta-content{gap:9px}}@media (prefers-reduced-motion:reduce){.ascii-home-intro,.ascii-home-intro p a,.ascii-project-preview{transition:none}.ascii-image-layer.is-active,.ascii-meta-content{animation:none}}body:has(.books-page),html:has(.books-page){overflow-x:clip;overflow-y:visible}body:has(.books-page) .navbar{background:#f4f4ee}.ascii-index-row.is-shared .ascii-index-category,.ascii-index-row.is-shared .ascii-index-title{color:#b8642f}.share-banner{position:absolute;top:76px;left:20px;z-index:40;display:flex;align-items:center;gap:12px;padding:6px 12px;border:1px solid rgba(38,39,36,.14);border-radius:999px;background:rgba(244,244,238,.86);backdrop-filter:blur(6px);color:rgb(74,75,70);font-size:11px;line-height:1.35;white-space:nowrap}.share-banner strong{color:rgb(38,39,36);font-weight:500}.share-banner button{padding:0;border:0;background:none;color:rgb(38,39,36);font:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.share-banner button:hover{color:#96512f}.share-gate{pointer-events:auto}.share-gate .ascii-project-kicker span:first-child{color:#96512f}.share-gate form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px 18px;margin-top:10px}.share-gate input{width:11em;padding:6px 0;border:0;border-bottom:1px solid rgba(38,39,36,.4);border-radius:0;background:transparent;color:rgb(38,39,36);font:400 20px/1.2 var(--font-spectral),serif;letter-spacing:.12em;outline:none}.share-gate input::placeholder{color:rgba(38,39,36,.3)}.share-gate input:focus{border-bottom-color:rgb(38,39,36)}.share-gate form button{display:inline-flex;align-items:center;gap:8px;padding:6px 0;border:0;background:none;color:rgb(38,39,36);font-size:13px;cursor:pointer}.share-gate form button:disabled{opacity:.5;cursor:default}.share-gate form button:hover{color:#96512f}.share-gate [role=alert]{width:100%;color:#96512f;font-size:12px}@media (max-width:768px){.share-banner{top:auto;bottom:64px;left:50%;max-width:calc(100vw - 32px);transform:translateX(-50%)}.share-gate input{font-size:18px}}.share-gate a.share-gate-public{display:inline-flex;align-items:center;gap:8px;margin-top:6px;color:rgb(88,89,84);font-size:12px}.share-gate a.share-gate-public:hover{color:#96512f}.ascii-gallery.share-gate-stage:after{background:linear-gradient(90deg,rgba(244,244,238,.96) 0,rgba(244,244,238,.9) min(26vw,340px),rgba(244,244,238,0) min(46vw,620px)),linear-gradient(180deg,rgba(244,244,238,.82) 0,rgba(244,244,238,.04) 20%,rgba(244,244,238,.02) 68%,rgba(244,244,238,.82))}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::file-selector-button{background-color:transparent}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.file\:text-foreground::file-selector-button{color:hsl(var(--foreground))}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive)/.9)}.hover\:bg-muted\/30:hover{background-color:hsl(var(--muted)/.3)}.hover\:bg-muted\/40:hover{background-color:hsl(var(--muted)/.4)}.hover\:bg-muted\/50:hover{background-color:hsl(var(--muted)/.5)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary)/.9)}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary)/.8)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-destructive:hover{color:hsl(var(--destructive))}.hover\:underline:hover{text-decoration-line:underline}.focus\:bg-accent:focus{background-color:hsl(var(--accent))}.focus\:text-accent-foreground:focus{color:hsl(var(--accent-foreground))}.focus\:text-destructive:focus{color:hsl(var(--destructive))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-1:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.data-\[active\=true\]\:bg-muted\/50[data-active=true]{background-color:hsl(var(--muted)/.5)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:hsl(var(--muted))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow:0 1px 3px 0 rgb(0 0 0/0.1),0 1px 2px -1px rgb(0 0 0/0.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.data-\[state\=open\]\:animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}@media not all and (min-width:640px){.max-sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.max-sm\:gap-0{gap:0}}@media (min-width:640px){.sm\:inline{display:inline}.sm\:table-cell{display:table-cell}.sm\:w-56{width:14rem}.sm\:w-auto{width:auto}.sm\:min-w-\[17rem\]{min-width:17rem}.sm\:flex-none{flex:none}.sm\:flex-row{flex-direction:row}.sm\:items-start{align-items:flex-start}.sm\:items-stretch{align-items:stretch}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:gap-4{gap:1rem}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.sm\:border-l{border-left-width:1px}.sm\:border-t-0{border-top-width:0}.sm\:p-5{padding:1.25rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-2{padding-bottom:.5rem}.sm\:pb-6{padding-bottom:1.5rem}.sm\:pt-0{padding-top:0}}@media (min-width:768px){.md\:table-cell{display:table-cell}}@media (min-width:1024px){.lg\:table-cell{display:table-cell}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:0}.\[\&\>span\]\:line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-width:0}.\[\&_tr\]\:border-b tr{border-bottom-width:1px}