/*! tailwindcss v4.1.8 | 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-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size: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-serif:VulfSans,Georgia,serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--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)}}@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%;-moz-tab-size:4;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;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}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance: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}.hidden{display:none}.inline{display:inline}.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,)}.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,visibility,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))}}:root{color-scheme:dark;--bg:#0a0a0a;--bg-rgb:10,10,10;--surface:#141414;--surface-soft:#1b1b1b;--surface-hover:#222;--button-outer:oklch(19.57% 0 0);--button-inner:#e8e5df;--button-text:#dedbd5;--button-hover-text:#111;--text:#f1f0ed;--muted:#aaa6a0;--dim:#746f69;--line:#ffffff0b;--line-strong:#ffffff1b;--accent:#a6a6a6;--shadow:0 24px 70px #0000006b}.light-theme{color-scheme:light;--bg:#f3f3f0;--bg-rgb:243,243,240;--surface:#e9e9e5;--surface-soft:#deded9;--surface-hover:#151515;--button-outer:#e8e8e4;--button-inner:#151515;--button-text:#151515;--button-hover-text:#f4f1eb;--text:#12110f;--muted:#5d5d58;--dim:#8b8b84;--line:#1212100f;--line-strong:#12121038;--accent:#595959;--shadow:0 18px 46px #1c1c1812}*{box-sizing:border-box}html{scroll-behavior:smooth;background-color:var(--bg)}body{background:radial-gradient(circle at 50% -18%,#ffffff07,transparent 34rem),var(--bg);min-width:320px;min-height:100vh;color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-weight:400;overflow-x:hidden}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0}img{max-width:100%;display:block}::selection{color:var(--bg);background:var(--accent)}:focus-visible{outline:1px solid var(--accent);outline-offset:4px}.site-shell{min-height:100vh;padding:22px 20px 104px;position:relative}.site-shell:before{--safe-top:env(safe-area-inset-top,0px);--solid-height:calc(var(--safe-top) + 4px);--fade-height:28px;z-index:20;width:100%;height:calc(var(--solid-height) + var(--fade-height));background:linear-gradient(to bottom,rgba(var(--bg-rgb),1)0%,rgba(var(--bg-rgb),1)var(--solid-height),rgba(var(--bg-rgb),.92)calc(var(--solid-height) + var(--fade-height)*.15),rgba(var(--bg-rgb),.76)calc(var(--solid-height) + var(--fade-height)*.35),rgba(var(--bg-rgb),.53)calc(var(--solid-height) + var(--fade-height)*.55),rgba(var(--bg-rgb),.3)calc(var(--solid-height) + var(--fade-height)*.72),rgba(var(--bg-rgb),.12)calc(var(--solid-height) + var(--fade-height)*.86),rgba(var(--bg-rgb),.03)calc(var(--solid-height) + var(--fade-height)*.95),rgba(var(--bg-rgb),0)100%);pointer-events:none;content:"";position:fixed;top:0;left:0}.page,.footer{width:min(100%,672px);margin:0 auto}.page{padding:34px 0 52px}.intro{isolation:isolate;align-content:center;gap:34px;min-height:48vh;padding:56px 0 42px;display:grid;position:relative}.ascii-backdrop{z-index:0;width:100vw;min-width:100vw;max-width:none;color:var(--text);letter-spacing:.055em;opacity:.2;white-space:pre;-webkit-user-select:none;user-select:none;pointer-events:none;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:9px;line-height:.92;position:absolute;top:-112px;left:calc(50% - 50vw);overflow:hidden;transform:none;-webkit-mask-image:linear-gradient(#000 0% 18%,#00000073 48%,#0000 82%);mask-image:linear-gradient(#000,#000 18%,#00000073 48%,#0000 82%)}.light-theme .ascii-backdrop{opacity:.1}.profile-lockup{z-index:1;display:block;position:relative}.profile-lockup h1{letter-spacing:0;margin:0;font-size:20px;font-weight:560;line-height:1.15}.profile-lockup p{color:var(--muted);margin:8px 0 0;font-size:18px;font-weight:400}.intro-copy{z-index:1;gap:16px;max-width:590px;display:grid;position:relative}.intro-copy p{color:var(--muted);letter-spacing:0;margin:0;font-size:clamp(15px,1.9vw,17px);font-weight:360;line-height:1.62}.intro-copy p:first-child{color:var(--text)}@supports (color:color-mix(in lab,red,red)){.intro-copy p:first-child{color:color-mix(in srgb,var(--text)72%,var(--muted))}}.intro-copy p:first-child{font-weight:390}.intro-copy em,.section-heading p{font-family:var(--font-serif);font-style:italic}.intro-copy a{color:var(--muted);border-bottom:1px solid var(--line-strong);align-items:center;gap:0;transition:border-color .18s,color .18s;display:inline-flex}.intro-copy a:hover{color:var(--text);border-color:var(--text)}.intro-copy a svg{width:14px;height:14px;color:var(--dim);transition:transform .22s,color .18s}.intro-copy a:hover svg{color:var(--muted);transform:translate(2px)}.education-card a{border:1px solid var(--line);background:var(--button-outer);min-height:50px;color:var(--button-text);isolation:isolate;border-radius:4px;align-items:center;gap:0;padding:0 16px;font-size:14px;transition:transform .18s,border-color .18s,color .22s,gap .32s cubic-bezier(.16,1,.3,1),padding .32s cubic-bezier(.16,1,.3,1);display:inline-flex;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff06}.education-card a:before{z-index:0;background:var(--button-inner);opacity:0;content:"";border-radius:4px;transition:opacity .42s cubic-bezier(.16,1,.3,1),transform .42s cubic-bezier(.16,1,.3,1);position:absolute;top:6px;right:6px;bottom:6px;left:6px;transform:scale(.94)}.education-card a>*{z-index:1;position:relative}.education-card a:hover{border-color:var(--line-strong);color:var(--button-hover-text);gap:8px;padding:0 16px;transform:translateY(-1px)}.education-card a:hover:before{opacity:1;transform:scale(1)}.education-card svg,.project-row svg{stroke-width:1.9px;width:15px;height:15px}.education-card a svg{opacity:0;width:0;transition:opacity .26s,width .32s cubic-bezier(.16,1,.3,1),transform .32s cubic-bezier(.16,1,.3,1);overflow:hidden;transform:translate(-4px)}.education-card a:hover svg,.education-card a:focus-visible svg{opacity:1;width:15px;transform:translate(0)}.section{padding-top:70px;scroll-margin-top:100px}.section-heading{margin-bottom:28px}.section-heading p{color:var(--text);margin:0 0 22px;font-size:22px;font-weight:400;line-height:1}.section-heading h2{color:var(--text);letter-spacing:0;text-transform:lowercase;margin:0;font-size:16px;font-weight:560}.timeline-item h3,.education-card h3{letter-spacing:0;margin:0;font-size:16px;font-weight:500}.timeline-item p,.education-card p,.about-copy p{color:var(--muted);line-height:1.68}.project-showcase{position:relative}.featured-project{border:1px solid var(--line-strong);background:var(--surface);border-radius:16px;margin-bottom:16px;padding:9px;display:block;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff0d}.light-theme .featured-project{box-shadow:inset 0 1px #ffffff59}.featured-project img{aspect-ratio:16/9;object-fit:cover;opacity:.94;border:1px solid #ffffff29;border-radius:10px;width:100%;height:auto}.featured-project:after{display:none}.project-list{border:1px solid var(--line);background:var(--button-outer);border-radius:4px;overflow:hidden;box-shadow:inset 0 1px #ffffff06,0 18px 56px #0000002e}.light-theme .project-list{background:var(--button-outer);box-shadow:inset 0 1px #ffffff3d,0 14px 34px #1c1c180f}.project-row{border-bottom:1px solid var(--line);isolation:isolate;grid-template-columns:58px minmax(0,1fr) auto;gap:18px;padding:23px 20px;transition:border-color .22s,color .22s;display:grid;position:relative;overflow:hidden}.project-row:before{z-index:0;background:var(--button-inner);opacity:0;content:"";border-radius:6px;transition:opacity .42s cubic-bezier(.16,1,.3,1),transform .42s cubic-bezier(.16,1,.3,1);position:absolute;top:5px;right:5px;bottom:5px;left:5px;transform:scale(.96)}.project-row:last-child{border-bottom:0}.project-row:hover{color:var(--button-hover-text)}.project-row:hover:before{opacity:1;transform:scale(1)}.project-row>*{z-index:1;position:relative}.project-year,.project-type{color:var(--dim);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;font-weight:420}.project-copy{gap:8px;min-width:0;display:grid}.project-copy strong{width:max-content;max-width:100%;color:var(--text);font-family:var(--font-serif);letter-spacing:0;text-transform:lowercase;align-items:center;gap:7px;font-size:16px;font-style:italic;font-weight:520;display:inline-flex}.project-copy svg{opacity:0;transition:opacity .2s,transform .2s;transform:translate(-5px,5px)}.project-row:hover .project-copy svg{opacity:1;transform:translate(0)}.project-row:hover .project-year,.project-row:hover .project-type,.project-row:hover .project-copy strong,.project-row:hover .project-copy>span{color:var(--button-hover-text)}.project-copy>span{color:var(--muted);font-size:14px;font-weight:360;line-height:1.58}.timeline,.education-card{gap:12px;display:grid}.timeline-item,.education-card{border-top:1px solid var(--line);padding:24px 0}.timeline-item{grid-template-columns:minmax(0,1fr) auto;gap:10px 18px;display:grid}.timeline-item>span,.education-card>span{color:var(--dim);white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px}.timeline-item>p{grid-column:1/-1;max-width:620px;margin:0;font-size:15px}.timeline-item div p,.education-card div p,.education-card div span{color:var(--muted);margin:5px 0 0;font-size:15px;font-weight:360}.education-card{grid-template-columns:minmax(0,1fr) auto;align-items:start}.education-card a{grid-column:1/-1;width:max-content;margin-top:2px}.about-copy{gap:18px;display:grid}.about-copy p{margin:0;font-size:17px;font-weight:360}.social-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.social-grid a{border:1px solid var(--line);background:var(--button-outer);min-height:56px;color:var(--button-text);isolation:isolate;border-radius:4px;justify-content:space-between;align-items:center;padding:0 16px;font-size:14px;transition:transform .18s,border-color .18s,color .22s;display:flex;position:relative;overflow:hidden}.social-grid a:before{z-index:0;background:var(--button-inner);opacity:0;content:"";border-radius:4px;transition:opacity .42s cubic-bezier(.16,1,.3,1),transform .42s cubic-bezier(.16,1,.3,1);position:absolute;top:5px;right:5px;bottom:5px;left:5px;transform:scale(.94)}.social-grid a>*{z-index:1;position:relative}.social-grid a:hover{border-color:var(--line-strong);color:var(--button-hover-text);transform:translateY(-1px)}.social-grid a:hover:before{opacity:1;transform:scale(1)}.social-grid svg{stroke-width:1.8px;width:16px;height:16px}.footer{color:var(--dim);justify-content:space-between;gap:16px;padding:44px 0 24px;font-size:12px;display:flex}.footer a:hover{color:var(--text)}.dock-nav{left:50%;bottom:max(18px,env(safe-area-inset-bottom));z-index:30;border:1px solid var(--line);background:var(--button-outer);-webkit-backdrop-filter:blur(18px)saturate(1.2);backdrop-filter:blur(18px)saturate(1.2);border-radius:4px;align-items:center;gap:5px;max-width:calc(100vw - 28px);padding:4px 8px;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 18px 60px #00000038}.light-theme .dock-nav{background:var(--button-outer)}@supports (color:color-mix(in lab,red,red)){.light-theme .dock-nav{background:color-mix(in srgb,var(--button-outer)92%,transparent)}}.light-theme .dock-nav{box-shadow:0 18px 46px #1c1c1814}.dock-nav a,.dock-nav button{min-width:42px;height:38px;color:var(--button-text);isolation:isolate;border-radius:4px;justify-content:center;align-items:center;padding:0 16px;font-size:16px;font-weight:400;transition:color .18s,transform .18s;display:inline-flex;position:relative;overflow:hidden}.dock-nav a:before,.dock-nav button:before{z-index:0;background:var(--button-inner);opacity:0;content:"";border-radius:3px;transition:opacity .36s cubic-bezier(.16,1,.3,1),transform .36s cubic-bezier(.16,1,.3,1);position:absolute;top:2px;right:2px;bottom:2px;left:2px;transform:scale(.9)}.dock-nav a>*,.dock-nav button>*{z-index:1;position:relative}.dock-nav a:hover,.dock-nav button:hover{color:var(--button-hover-text)}.dock-nav a:hover:before,.dock-nav button:hover:before{opacity:1;transform:scale(1)}.dock-nav svg{width:17px;height:17px}@media (max-width:700px){.site-shell{padding:16px 16px 88px}.ascii-backdrop{display:none}.page{padding-top:12px}.intro{min-height:54vh;padding-top:44px}.ascii-backdrop{opacity:.12;width:100vw;min-width:100vw;font-size:7px;top:-72px;left:calc(50% - 50vw);-webkit-mask-image:linear-gradient(#000 0% 14%,#00000061 38%,#0000 68%);mask-image:linear-gradient(#000,#000 14%,#00000061 38%,#0000 68%)}.intro-copy p{font-size:15px}.social-grid{grid-template-columns:1fr}.project-row{grid-template-columns:1fr auto;gap:8px 14px;padding:20px 16px}.project-year{text-align:right;order:2}.project-copy{order:1;grid-column:1/-1}.project-type{order:3}.timeline-item,.education-card{grid-template-columns:1fr}.timeline-item>span,.education-card>span{white-space:normal}.footer{flex-direction:column}.dock-nav a,.dock-nav button{height:38px;padding:0 11px;font-size:14px}.dock-nav a[href="#about"]{display:none}}@media (max-width:420px){.dock-nav{gap:5px;padding:4px 8px}.dock-nav a,.dock-nav button{padding:0 9px;font-size:16px}.profile-lockup h1{font-size:20px}.social-grid a{min-height:62px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}@font-face{font-family:VulfSans;src:url(/fonts/VulfSans/VulfSans-Regular.otf)format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:VulfSans;src:url(/fonts/VulfSans/VulfSans-Italic.otf)format("opentype");font-weight:400;font-style:italic;font-display:swap}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
