/*! tailwindcss v4.3.2 | 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)))){*,:before,:after,::backdrop{--tw-leading:initial;--tw-tracking:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--color-white:#fff;--spacing:.25rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--text-5xl:3rem;--text-5xl--line-height:1;--tracking-wider:.05em;--leading-relaxed:1.625;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-display:"Jellyka Western Princess", cursive;--font-body:"Cormorant Garamond", Georgia, serif;--color-soft:#d8d8d8;--color-muted:#a3a3a3;--color-ink:#6e6e6e}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.relative{position:relative}.z-10{z-index:10}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.flex{display:flex}.hidden{display:none}.table{display:table}.h-full{height:100%}.h-px{height:1px}.w-full{width:100%}.flex-1{flex:1}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.bg-muted{background-color:var(--color-muted)}.bg-soft{background-color:var(--color-soft)}.px-6{padding-inline:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.text-left{text-align:left}.font-display{font-family:var(--font-display)}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[0\.6rem\]{font-size:.6rem}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.text-ink{color:var(--color-ink)}.text-muted{color:var(--color-muted)}.italic{font-style:italic}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-1000{--tw-duration:1s;transition-duration:1s}.ease-linear{--tw-ease:linear;transition-timing-function:linear}@media (hover:hover){.hover\:text-muted:hover{color:var(--color-muted)}}@media (width>=40rem){.sm\:px-10{padding-inline:calc(var(--spacing) * 10)}.sm\:py-10{padding-block:calc(var(--spacing) * 10)}.sm\:text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.sm\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}}@font-face{font-family:Jellyka Western Princess;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/JellykaWesternPrincess.woff)format("woff")}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/CormorantGaramond-Regular.ttf)format("truetype")}@font-face{font-family:Cormorant Garamond;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/CormorantGaramond-Italic.ttf)format("truetype")}@font-face{font-family:Cormorant Garamond;font-style:normal;font-weight:500 700;font-display:swap;src:url(/fonts/CormorantGaramond-Variable.ttf)format("truetype")}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font-body);color:var(--color-ink);background-color:var(--color-white);-webkit-font-smoothing:antialiased;cursor:url(/cursors/cursor-default.png) 0 0,auto;margin:0;line-height:1.5;overflow:hidden}a,button,summary,label,[role=button],.icon-link,.contact-submit,.contact-modal-link,.contact-modal-close,.portfolio-nav-link,.project-link,.rail-cta,.elsewhere-link,.text-back{cursor:url(/cursors/cursor-pointer.png) 0 0,pointer}::selection{color:var(--color-ink);background-color:#ececec}.page-scroll{scrollbar-width:thin;scrollbar-color:#c8c8c8 transparent;height:100%;overflow:hidden auto}.page-scroll::-webkit-scrollbar{width:8px}.page-scroll::-webkit-scrollbar-track{background:0 0}.page-scroll::-webkit-scrollbar-thumb{background-color:#c8c8c8;background-clip:content-box;border:2px solid #0000;border-radius:999px}.page-scroll::-webkit-scrollbar-thumb:hover{background-color:#b0b0b0}.portfolio-footer{border-top:0;flex-direction:column;grid-column:1/-1;gap:.35rem;margin-top:1.5rem;padding:1.5rem 0 .5rem;display:flex;position:relative}.portfolio-footer:before{content:"";border-top:1px solid var(--color-soft);pointer-events:none;width:100vw;height:0;position:absolute;top:0;left:50%;transform:translate(-50%)}.portfolio-footer p{letter-spacing:.04em;color:var(--color-muted);margin:0;font-size:.82rem;font-style:italic}.portfolio-footer-mark{opacity:.75}.portfolio-footer-meta{display:contents}@media (width>=700px){.portfolio-footer{flex-direction:row;justify-content:space-between;align-items:center;gap:1rem}}.page{background-color:var(--color-white)}.page-bg{background-color:var(--color-white);background-image:url(/images/background.png);background-position:50%;background-repeat:no-repeat;background-size:cover}.page-plain{background-color:var(--color-white)}.text-back{color:var(--color-muted);font-size:.85rem;font-style:italic;transition:color .2s}.text-back:hover{color:var(--color-ink)}.icon-row{white-space:nowrap}.icon-link{color:var(--color-muted);vertical-align:middle;margin-left:.55em;transition:color .2s;display:inline-block}.icon-link svg{width:.95em;height:.95em;display:block}.icon-link:hover{color:var(--color-ink)}.tooltip-wrap{vertical-align:middle;display:inline-block}.tooltip{z-index:50;font-family:var(--font-body);letter-spacing:.06em;color:var(--color-ink);white-space:nowrap;pointer-events:none;opacity:0;border:1px solid var(--color-soft);background:#fffffff5;padding:.25rem .55rem;font-size:.72rem;font-style:italic;transition:opacity .18s;position:fixed;box-shadow:0 3px 16px #fff9}.tooltip--visible{opacity:1}.content-row{flex-direction:row;align-items:flex-end;gap:10rem;display:flex}.content-col-left{text-align:left;flex-shrink:0;width:11rem;position:relative;left:40px}.quote-text{max-width:11rem}.spotify-side{text-align:left;flex-shrink:0;width:12rem;position:relative;left:20px}.spotify-content{width:12rem;min-height:4.75rem}.spotify-bar{width:100%;margin-inline:0}.spotify-times{width:100%}.content-scale{justify-content:center;width:100%;display:flex}@media (width<=767px){.page-bg{padding-inline:1rem}.content-row{transform:scale(min(1, calc((100vw - 2rem) / 30rem)));transform-origin:50%}.spotify-bar,.spotify-times{width:8rem}}.portfolio{grid-template-columns:minmax(0,1fr);gap:2.5rem;width:min(79rem,100%);margin-inline:auto;padding:1.75rem 1.25rem 4.5rem;display:grid}.portfolio-aside-inner,.portfolio-rail-inner{flex-direction:column;gap:1.5rem;display:flex}.portfolio-identity{text-align:center;margin-top:.5rem}.portfolio-photo{isolation:isolate;width:min(100%,22rem);max-width:100%;margin:0;position:relative}.portfolio-photo img{aspect-ratio:1024/906;object-fit:contain;object-position:center;filter:none;width:100%;height:auto;display:block}.portfolio-nav{margin-top:.35rem;width:fit-content;max-width:100%;margin-inline:auto}.portfolio-nav-list{flex-direction:column;gap:.15rem;margin:0;padding:0;list-style:none;display:flex;position:relative}.portfolio-nav-list:before{content:"";background:linear-gradient(to bottom, transparent, var(--color-soft) 12%, var(--color-soft) 88%, transparent);width:1px;position:absolute;top:.55rem;bottom:.55rem;left:2.35rem}.portfolio-nav-link{letter-spacing:.08em;color:var(--color-muted);grid-template-columns:1.7rem .85rem 1fr;align-items:center;gap:.45rem;padding:.4rem 0;font-size:.88rem;font-style:italic;text-decoration:none;transition:color .2s;display:grid;position:relative}.portfolio-nav-index{letter-spacing:.12em;opacity:.55;font-size:.68rem;font-style:normal;transition:opacity .2s,color .2s}.portfolio-nav-marker{z-index:1;border:1px solid var(--color-soft);background:var(--color-white);border-radius:999px;width:.42rem;height:.42rem;margin-inline:auto;transition:background .2s,border-color .2s,box-shadow .2s,transform .2s;position:relative}.portfolio-nav-label{transition:transform .2s}.portfolio-nav-link:hover{color:var(--color-ink)}.portfolio-nav-link:hover .portfolio-nav-index{opacity:.9}.portfolio-nav-link:hover .portfolio-nav-marker{border-color:var(--color-muted)}.portfolio-nav-link:hover .portfolio-nav-label{transform:translate(.15rem)}.portfolio-nav-link--active{color:var(--color-ink)}.portfolio-nav-link--active .portfolio-nav-index{opacity:1;color:var(--color-ink)}.portfolio-nav-link--active .portfolio-nav-marker{background:var(--color-ink);border-color:var(--color-ink);box-shadow:0 0 0 3px #6e6e6e1f}@supports (color:color-mix(in lab, red, red)){.portfolio-nav-link--active .portfolio-nav-marker{box-shadow:0 0 0 3px color-mix(in srgb, var(--color-ink) 12%, transparent)}}.portfolio-nav-link--active .portfolio-nav-marker{transform:scale(1.08)}.portfolio-nav-link--active .portfolio-nav-label{transform:translate(.2rem)}.portfolio-main{flex-direction:column;gap:3.5rem;min-width:0;padding-bottom:2rem;scroll-margin-top:1rem;display:flex}#studies,#stack{margin-top:.75rem}.portfolio-section{scroll-margin-top:1.5rem;animation:.7s both portfolio-fade}.portfolio-section:first-child{animation-delay:40ms}.portfolio-section:nth-child(2){animation-delay:.1s}.portfolio-section:nth-child(3){animation-delay:.16s}.portfolio-section:nth-child(4){animation-delay:.22s}.portfolio-section:nth-child(5){animation-delay:.28s}.portfolio-section--projects{isolation:isolate;background:0 0;margin-block:-1rem;margin-inline:-1.25rem;padding:3rem 1.25rem;position:relative;overflow:hidden}.portfolio-section--projects:before{content:"";z-index:-1;background-image:linear-gradient(#fff 0%,#ffffffe0 12%,#ffffff73 30%,#ffffff47 50%,#ffffff73 70%,#ffffffe0 88%,#fff 100%),url(/images/background.png);background-position:38.8%;background-repeat:no-repeat;background-size:cover;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#0000 0%,#000 10% 90%,#0000 100%);mask-image:linear-gradient(#0000 0%,#000 10% 90%,#0000 100%)}#contact{border-top:0}@keyframes portfolio-fade{0%{opacity:0;transform:translateY(.6rem)}to{opacity:1;transform:translateY(0)}}.portfolio-eyebrow{letter-spacing:.06em;color:var(--color-muted);margin:0 0 .2rem;font-size:.9rem;font-style:italic;transform:translate(.35rem,.85rem)}.portfolio-brand{color:var(--color-ink);margin:0;font-size:clamp(3rem,10vw,4.25rem);line-height:.95}.portfolio-heading{font-family:var(--font-body);letter-spacing:.14em;text-transform:lowercase;color:var(--color-muted);align-items:center;gap:.45rem;margin:0 0 .85rem;font-size:.78rem;font-style:italic;font-weight:400;display:flex}.portfolio-heading:before{content:"✧";letter-spacing:0;opacity:.7;flex-shrink:0;font-size:.72em;font-style:normal}.portfolio-copy{color:var(--color-ink);margin:0;font-size:1.05rem;line-height:1.7}.portfolio-copy--tight{margin-bottom:1.35rem}.text-mark{transition:color .2s,opacity .2s,text-decoration-color .2s}.text-mark--bold{font-weight:700}.text-mark--bold:hover{color:#4a4a4a}.text-mark--italic{font-style:italic}.text-mark--italic:hover{color:#4a4a4a}@media (hover:hover) and (pointer:fine){.text-mark{cursor:url(/cursors/cursor-pointer.png) 0 0,pointer}}.about-body{flex-direction:column;gap:1.15rem;display:flex}.about-facts{grid-template-columns:1fr;gap:.85rem;margin:0;padding:.25rem 0 .5rem;list-style:none;display:grid}.about-fact{grid-template-columns:1.35rem minmax(0,1fr);align-items:start;gap:.45rem;padding:.7rem 0;display:grid}.about-fact-icon{width:1.35rem;height:1.05rem;color:var(--color-muted);justify-content:center;align-items:center;display:inline-flex}.about-fact-icon svg{width:1.05rem;height:1.05rem;display:block}.about-fact-text{flex-direction:column;gap:.2rem;min-width:0;display:flex}.about-fact-label{letter-spacing:.14em;text-transform:lowercase;min-height:1.05rem;color:var(--color-muted);align-items:center;font-size:.72rem;font-style:italic;display:flex}.about-fact-value{color:var(--color-ink);font-size:1.05rem;line-height:1.45}.about-fact-value--stack{flex-direction:column;gap:.05rem;display:flex}.portfolio-link{color:var(--color-ink);text-underline-offset:.18em;text-decoration:underline;transition:color .2s}.portfolio-link:hover{color:var(--color-muted)}.portfolio-rail-inner{gap:2rem}.rail-block{min-width:0}.rail-note{color:var(--color-muted);border:1px solid var(--color-soft);margin:0;padding:.95rem 1rem;font-size:.92rem;font-style:italic;line-height:1.55}.rail-list{flex-direction:column;gap:.7rem;margin:0;padding:0;list-style:none;display:flex}.rail-list li{color:var(--color-ink);grid-template-columns:1.1rem minmax(0,1fr);align-items:start;gap:.55rem;font-size:.95rem;line-height:1.45;display:grid}.rail-list-icon{width:1.1rem;height:1.1rem;color:var(--color-muted);justify-content:center;align-items:center;margin-top:.12rem;display:inline-flex}.rail-list-icon svg{width:100%;height:100%;display:block}.rail-copy{color:var(--color-ink);margin:0 0 .7rem;font-size:.95rem;line-height:1.5}.rail-cta{letter-spacing:.06em;color:var(--color-muted);border-bottom:1px solid var(--color-soft);font-size:.85rem;font-style:italic;text-decoration:none;transition:color .2s,border-color .2s}.rail-cta:hover{color:var(--color-ink);border-bottom-color:var(--color-ink)}.rail-spotify .spotify-content,.rail-spotify .spotify-bar,.rail-spotify .spotify-times{width:100%}.elsewhere-list{flex-direction:column;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.elsewhere-link{letter-spacing:.04em;color:var(--color-muted);grid-template-columns:1.1rem minmax(0,1fr);align-items:center;gap:.55rem;font-size:.9rem;font-style:italic;text-decoration:none;transition:color .2s;display:grid}.elsewhere-icon{color:currentColor;justify-content:center;align-items:center;width:1.1rem;height:1.1rem;display:inline-flex}.elsewhere-icon svg{width:100%;height:100%;display:block}.elsewhere-link:hover{color:var(--color-ink)}.stack-groups{grid-template-columns:1fr;gap:1.5rem;display:grid}.stack-group-title{font-family:var(--font-body);letter-spacing:.14em;text-transform:lowercase;color:var(--color-muted);margin:0 0 .55rem;font-size:.72rem;font-style:italic;font-weight:400}.stack-list{flex-flow:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.stack-list li{color:var(--color-ink);font-size:1.05rem;line-height:1.5}.studies-body{flex-direction:column;gap:.35rem;display:flex}.studies-school{color:var(--color-ink);margin:0;font-size:1.15rem;line-height:1.4}.studies-period{letter-spacing:.06em;color:var(--color-muted);margin:0 0 .55rem;font-size:.85rem;font-style:italic}@media (width>=700px){.stack-groups{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem 2rem}}.project-list{flex-direction:column;gap:2.6rem;margin:0;padding:0;list-style:none;display:flex}.project-heading{align-items:center;gap:.45rem;margin-bottom:.25rem;display:flex}.project-star{width:.95rem;height:.95rem;color:var(--color-muted);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.project-star svg{width:100%;height:100%;display:block}.project-title{font-family:var(--font-body);color:var(--color-ink);margin:0;font-size:1.15rem;font-weight:400}.project-stack{letter-spacing:.04em;color:var(--color-muted);margin:0 0 .45rem;font-size:.82rem;font-style:italic}.project-actions{flex-wrap:wrap;gap:.75rem 1.25rem;margin-top:.55rem;display:flex}.project-link{letter-spacing:.04em;color:var(--color-muted);border-bottom:1px solid var(--color-soft);font-size:.88rem;font-style:italic;text-decoration:none;transition:color .2s,border-color .2s;display:inline-block}.project-link:hover{color:var(--color-ink);border-bottom-color:var(--color-ink)}.contact-form{flex-direction:column;gap:1.1rem;display:flex}.contact-field{flex-direction:column;gap:.4rem;display:flex}.contact-field span{letter-spacing:.1em;color:var(--color-muted);font-size:.78rem;font-style:italic}.contact-field input,.contact-field textarea{width:100%;font:inherit;color:var(--color-ink);border:0;border-bottom:1px solid var(--color-soft);resize:vertical;cursor:url(/cursors/cursor-default.png) 0 0,auto;background:0 0;border-radius:0;outline:none;margin:0;padding:.65rem 0;font-size:1.05rem;transition:border-color .2s}.contact-field input::placeholder,.contact-field textarea::placeholder{color:var(--color-muted);opacity:.7}.contact-field input:focus,.contact-field textarea:focus{border-bottom-color:var(--color-ink)}.contact-field input:disabled,.contact-field textarea:disabled{opacity:.55}.contact-field--error input,.contact-field--error textarea{border-bottom-color:var(--color-ink)}.contact-field-error{letter-spacing:.04em;color:#d0a3ae;margin:.15rem 0 0;font-size:.78rem;font-style:italic}.contact-actions{flex-wrap:wrap;align-items:center;gap:.85rem 1.25rem;margin-top:.35rem;display:flex}.contact-submit{font:inherit;letter-spacing:.06em;color:var(--color-muted);border:1px solid var(--color-soft);cursor:url(/cursors/cursor-pointer.png) 0 0,pointer;background:0 0;align-items:center;gap:.65rem;padding:.7rem 1.1rem;font-size:.95rem;font-style:italic;transition:color .2s,border-color .2s;display:inline-flex}.contact-submit-arrow{font-style:normal;line-height:1;transition:transform .2s}.contact-submit:hover:not(:disabled){color:var(--color-ink);border-color:var(--color-ink)}.contact-submit:hover:not(:disabled) .contact-submit-arrow{transform:translate(.2rem)}.contact-submit:disabled{opacity:.55;cursor:default}.contact-feedback{flex:12rem;margin:0;font-size:.9rem;font-style:italic}.contact-feedback--ok{color:var(--color-ink)}.contact-feedback--error{color:#d0a3ae}.contact-feedback a{color:inherit;text-underline-offset:.15em;text-decoration:underline}.contact-success{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.55rem;min-height:14rem;padding:1.5rem .5rem;animation:.28s contact-modal-rise;display:flex}.contact-success-kaomoji{letter-spacing:.04em;color:var(--color-ink);margin:0;font-size:1.55rem}.contact-success-title{letter-spacing:.04em;color:var(--color-ink);margin:0;font-size:1.15rem;font-style:italic}.contact-success-hint{letter-spacing:.05em;color:var(--color-muted);margin:.15rem 0 0;font-size:.82rem;font-style:italic}.contact-modal{z-index:80;background:#6e6e6e47;place-items:center;padding:1.25rem;display:grid;position:fixed;inset:0}@supports (color:color-mix(in lab, red, red)){.contact-modal{background:color-mix(in srgb, var(--color-ink) 28%, transparent)}}.contact-modal{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);animation:.2s contact-modal-fade}.contact-modal-dialog{background:var(--color-white);border:1px solid var(--color-soft);width:min(100%,24rem);padding:1.6rem 1.45rem 1.45rem;position:relative;box-shadow:0 18px 50px #6e6e6e1f}@supports (color:color-mix(in lab, red, red)){.contact-modal-dialog{box-shadow:0 18px 50px color-mix(in srgb, var(--color-ink) 12%, transparent)}}.contact-modal-dialog{animation:.22s contact-modal-rise}.contact-modal-close{font:inherit;color:var(--color-muted);cursor:url(/cursors/cursor-pointer.png) 0 0,pointer;background:0 0;border:0;padding:.15rem .35rem;font-size:1.35rem;line-height:1;position:absolute;top:.55rem;right:.7rem}.contact-modal-close:hover{color:var(--color-ink)}.contact-modal-eyebrow{letter-spacing:.12em;color:#d0a3ae;margin:0 0 .35rem;font-size:.75rem;font-style:italic}.contact-modal-title{font-family:var(--font-body);letter-spacing:.03em;color:var(--color-ink);margin:0 0 .55rem;font-size:1.35rem;font-style:italic;font-weight:400}.contact-modal-copy{color:var(--color-muted);margin:0 0 1.25rem;font-size:.95rem;font-style:italic;line-height:1.55}.contact-modal-actions{flex-direction:column;gap:.55rem;display:flex}.contact-modal-link{width:100%;font:inherit;letter-spacing:.05em;color:var(--color-muted);text-align:left;border:1px solid var(--color-soft);cursor:url(/cursors/cursor-pointer.png) 0 0,pointer;background:0 0;align-items:center;gap:.7rem;padding:.7rem .85rem;font-size:.92rem;font-style:italic;text-decoration:none;transition:color .2s,border-color .2s;display:inline-flex}.contact-modal-link:hover{color:var(--color-ink);border-color:var(--color-ink)}.contact-modal-link:hover .contact-modal-link-icon{color:var(--color-ink)}.contact-modal-link-icon{width:1.1rem;height:1.1rem;color:var(--color-muted);place-items:center;display:grid}.contact-modal-link-icon svg{width:100%;height:100%}@keyframes contact-modal-fade{0%{opacity:0}to{opacity:1}}@keyframes contact-modal-rise{0%{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:translateY(0)}}@media (width>=900px){.portfolio{grid-template-columns:22rem minmax(0,1fr) 13rem;align-items:start;gap:0 2.25rem;padding:0 2rem 2.75rem}.portfolio-aside,.portfolio-rail,.portfolio-main{padding-top:2.5rem}.portfolio-aside{overscroll-behavior:contain;scrollbar-width:none;align-self:start;max-height:100dvh;position:sticky;top:0;overflow:hidden auto}.portfolio-rail{align-self:start;position:sticky;top:0}.portfolio-aside::-webkit-scrollbar{display:none}.portfolio-aside-inner{gap:1.75rem;width:100%;padding-bottom:2rem}.portfolio-photo{width:100%}.portfolio-main{border-left:1px solid var(--color-soft);border-right:1px solid var(--color-soft);padding-inline:2rem;gap:4.25rem;padding-bottom:2.5rem}#studies,#stack{margin-top:.85rem}.portfolio-section--projects{margin-block:-1.25rem -.35rem;margin-inline:-2rem;padding-block:3.5rem 2.75rem;padding-inline:2rem}.about-facts{grid-template-columns:1fr 1fr;gap:.35rem 1.75rem}.about-fact{padding:.85rem 0}.portfolio-rail-inner{gap:2.25rem;padding-bottom:2rem}.portfolio-footer{margin-top:0;width:calc(100% + 4rem);margin-inline:-2rem;padding:1.5rem 2rem 0}}@media (width<=899px){.tooltip{display:none!important}.portfolio-nav--desktop,.portfolio-aside-back{display:none}.portfolio{gap:1.75rem;padding:0 1.25rem 3.5rem}.portfolio-aside-inner{align-items:center;gap:1.15rem}.portfolio-identity{margin-top:.15rem}.portfolio-photo{width:min(100%,22rem);margin-inline:auto}#about,#studies,#contact{text-align:center}#about .portfolio-heading,#studies .portfolio-heading,#contact .portfolio-heading{justify-content:center}#about .about-facts{grid-template-columns:1fr 1fr;justify-items:center;gap:.85rem 1.25rem}#about .about-fact{grid-template-columns:1fr;justify-items:center;width:100%}#about .about-fact-text{text-align:center;align-items:center;width:100%}#about .about-fact-label{justify-content:center;width:100%}#about .about-fact-value--stack{align-items:center}#stack{text-align:center}#stack .portfolio-heading{justify-content:center}#stack .stack-groups{grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem .85rem}#stack .stack-group-title{text-align:center}#stack .stack-list{flex-flow:column;align-items:center;gap:.35rem}#stack .stack-list li{font-size:.95rem}#projects{text-align:center}#projects .portfolio-heading,#projects .project-heading,#projects .project-actions{justify-content:center}#contact .contact-form{border:1px solid var(--color-soft);width:100%;padding:1.15rem 1rem 1.25rem}#contact .contact-form,#contact .contact-field,#contact .contact-actions{align-items:center}#contact .contact-field{width:100%}#contact .contact-field input,#contact .contact-field textarea{text-align:center}.mobile-topbar{z-index:50;background:0 0;border-bottom:1px solid #0000;transition:background-color .22s,border-color .22s,-webkit-backdrop-filter .22s,backdrop-filter .22s;position:sticky;top:0}.mobile-topbar--pinned{background:var(--color-white);border-bottom-color:var(--color-soft)}.mobile-topbar-inner{grid-template-columns:auto 1fr auto;align-items:center;gap:.75rem;width:min(72rem,100%);min-height:3.4rem;margin-inline:auto;padding:.7rem 1.15rem;display:grid}.mobile-topbar-back{letter-spacing:.04em;color:var(--color-muted);white-space:nowrap;font-size:.78rem;font-style:italic;text-decoration:none;transition:color .2s}.mobile-topbar-back:hover{color:var(--color-ink)}.mobile-topbar-identity{text-align:center;opacity:0;visibility:hidden;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;min-width:0;transition:opacity .22s,transform .22s,visibility .22s;display:flex;transform:translateY(-.2rem)}.mobile-topbar--pinned .mobile-topbar-identity{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.mobile-topbar-brand{font-family:var(--font-display);color:var(--color-ink);margin:0;font-size:1.45rem;line-height:.95}.mobile-menu-trigger{border:1px solid var(--color-soft);cursor:url(/cursors/cursor-pointer.png) 0 0,pointer;background:0 0;place-content:center;justify-self:end;gap:.28rem;width:2.35rem;height:2.35rem;padding:0;display:grid}.mobile-menu-trigger-line{background:var(--color-ink);width:1.05rem;height:1px;transition:transform .22s,opacity .22s;display:block}.mobile-menu-trigger--open .mobile-menu-trigger-line:first-child{transform:translateY(.29rem)rotate(45deg)}.mobile-menu-trigger--open .mobile-menu-trigger-line:nth-child(2){opacity:0}.mobile-menu-trigger--open .mobile-menu-trigger-line:nth-child(3){transform:translateY(-.29rem)rotate(-45deg)}.mobile-menu-layer{z-index:55;pointer-events:none;position:fixed;inset:0}.mobile-menu-layer--open{pointer-events:auto}.mobile-menu-backdrop{background:#6e6e6e38;border:0;margin:0;padding:0;position:absolute;inset:0}@supports (color:color-mix(in lab, red, red)){.mobile-menu-backdrop{background:color-mix(in srgb, var(--color-ink) 22%, transparent)}}.mobile-menu-backdrop{opacity:0;cursor:url(/cursors/cursor-pointer.png) 0 0,pointer;transition:opacity .25s}.mobile-menu-layer--open .mobile-menu-backdrop{opacity:1}.mobile-menu-panel{background-color:var(--color-white);border-left:1px solid var(--color-soft);isolation:isolate;background-image:url(/images/menu-bg.png);background-position:top;background-repeat:no-repeat;background-size:cover;flex-direction:column;width:min(18.5rem,84vw);transition:transform .28s;display:flex;position:absolute;top:0;bottom:0;right:0;transform:translate(100%)}.mobile-menu-panel:before{content:"";z-index:0;background:#fff9;position:absolute;inset:0}@supports (color:color-mix(in lab, red, red)){.mobile-menu-panel:before{background:color-mix(in srgb, var(--color-white) 60%, transparent)}}.mobile-menu-panel:before{pointer-events:none}.mobile-menu-panel-header,.mobile-menu-panel-body{z-index:1;position:relative}.mobile-menu-layer--open .mobile-menu-panel{transform:translate(0)}.mobile-menu-panel-header{justify-content:flex-end;align-items:center;padding:1.15rem 1.15rem .85rem;display:flex}.mobile-menu-close{font:inherit;color:var(--color-muted);cursor:url(/cursors/cursor-pointer.png) 0 0,pointer;background:0 0;border:0;padding:.1rem .35rem;font-size:1.4rem;line-height:1}.mobile-menu-close:hover{color:var(--color-ink)}.mobile-menu-panel-body{flex:1;padding:1.25rem 1.15rem 1.75rem;overflow-y:auto}.portfolio-nav-mobile{width:100%}.portfolio-nav-mobile-list{flex-direction:column;gap:.55rem;margin:0;padding:0;list-style:none;display:flex}.portfolio-nav-mobile-link{letter-spacing:.08em;width:100%;color:var(--color-muted);background:#ffffff8c;justify-content:center;align-items:center;padding:.75rem 1rem;font-size:.95rem;font-style:italic;text-decoration:none;display:flex}@supports (color:color-mix(in lab, red, red)){.portfolio-nav-mobile-link{background:color-mix(in srgb, var(--color-white) 55%, transparent)}}.portfolio-nav-mobile-link{border:1px solid #d8d8d8b3}@supports (color:color-mix(in lab, red, red)){.portfolio-nav-mobile-link{border:1px solid color-mix(in srgb, var(--color-soft) 70%, transparent)}}.portfolio-nav-mobile-link{transition:color .2s,border-color .2s,background .2s}.portfolio-nav-mobile-link--active,.portfolio-nav-mobile-link:hover{color:var(--color-ink);border-color:#6e6e6e59}@supports (color:color-mix(in lab, red, red)){.portfolio-nav-mobile-link--active,.portfolio-nav-mobile-link:hover{border-color:color-mix(in srgb, var(--color-ink) 35%, transparent)}}.portfolio-nav-mobile-link--active,.portfolio-nav-mobile-link:hover{background:#ffffffc7}@supports (color:color-mix(in lab, red, red)){.portfolio-nav-mobile-link--active,.portfolio-nav-mobile-link:hover{background:color-mix(in srgb, var(--color-white) 78%, transparent)}}.portfolio-rail{border-top:0;padding-top:.5rem}.portfolio-rail-inner{grid-template-columns:1fr;gap:1.5rem;display:grid}.rail-block--quote,.rail-block--currently,.rail-block--availability,.rail-spotify{display:none}.rail-block--elsewhere{text-align:center;grid-column:1/-1;justify-self:center;min-width:0}.rail-block--elsewhere .portfolio-heading{justify-content:center}.rail-block--elsewhere .elsewhere-list{grid-template-columns:repeat(4,minmax(0,1fr));place-items:start center;gap:.85rem .65rem;display:grid}.rail-block--elsewhere .elsewhere-link{text-align:center;flex-direction:column;align-items:center;gap:.35rem;display:flex}.rail-block--elsewhere .elsewhere-icon{width:1.2rem;height:1.2rem}.mobile-menu-listening{text-align:center;margin-top:1.75rem;padding-top:0}.mobile-menu-listening .spotify-content,.mobile-menu-listening .spotify-bar,.mobile-menu-listening .spotify-times{width:100%}.mobile-menu-listening .spotify-content p{text-align:center}.portfolio-footer{text-align:center;align-items:center;gap:.55rem}.portfolio-footer-meta{justify-content:center;align-items:center;gap:1rem;width:100%;display:flex}.portfolio-footer-copy,.portfolio-footer-mark{width:auto}}@media (width>=900px){.mobile-topbar,.mobile-menu-layer{display:none!important}}@media (width>=1100px){.portfolio{grid-template-columns:22rem minmax(0,1fr) 14.5rem;column-gap:3rem}.portfolio-main{padding-inline:2.5rem}#studies,#stack{margin-top:1rem}.portfolio-section--projects{margin-block:-1.5rem -.5rem;margin-inline:-2.5rem;padding-block:3.75rem 3rem;padding-inline:2.5rem}.portfolio-footer{width:calc(100% + 4rem);margin-inline:-2rem;padding-inline:2rem}}.side-ribbons,.lace-curtain{display:none}@media (width>=1280px){.side-ribbons{z-index:31;pointer-events:none;width:30px;display:flex;position:fixed;top:0;bottom:0;left:0}.side-ribbon{background:linear-gradient(90deg,#fafafa 0%,#f3f3f3 45%,#ececec 100%);border-left:1px solid #cfcfcf;border-right:1px solid #bdbdbd;flex:1 1 0;height:100%}.side-ribbon+.side-ribbon{border-left:0}.lace-curtain{z-index:30;pointer-events:none;width:48px;image-rendering:pixelated;image-rendering:crisp-edges;background-image:url(/images/lace-vertical.png);background-position:top;background-repeat:repeat-y;background-size:48px 54px;display:block;position:fixed;top:0;bottom:0}.lace-curtain--left{left:30px;transform:scaleX(-1)}.page-plain .portfolio{width:min(79rem,100% - 7.5rem)}}@property --tw-leading{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
