@font-face{font-family:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(../media/instrument-serif-latin-ext-400-normal.1-60h_wy7j2h_.woff2)format("woff2"),url(../media/instrument-serif-latin-ext-400-normal.2sowzapzts2o2.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Serif;font-style:normal;font-display:swap;font-weight:400;src:url(../media/instrument-serif-latin-400-normal.2zo21yor93qdc.woff2)format("woff2"),url(../media/instrument-serif-latin-400-normal.1tckdf9uwvrm7.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Instrument Serif;font-style:italic;font-display:swap;font-weight:400;src:url(../media/instrument-serif-latin-ext-400-italic.20oblg8q8k24u.woff2)format("woff2"),url(../media/instrument-serif-latin-ext-400-italic.0mww3qs0cp08u.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Instrument Serif;font-style:italic;font-display:swap;font-weight:400;src:url(../media/instrument-serif-latin-400-italic.3bg-hzmj1g17f.woff2)format("woff2"),url(../media/instrument-serif-latin-400-italic.3im7aav-gdfim.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(../media/dm-sans-latin-ext-wght-normal.0x9ccydb91kkt.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Sans Variable;font-style:normal;font-display:swap;font-weight:100 1000;src:url(../media/dm-sans-latin-wght-normal.0fpdy-lufm69d.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/ibm-plex-mono-cyrillic-ext-400-normal.0_q8wa_t-7-c7.woff2)format("woff2"),url(../media/ibm-plex-mono-cyrillic-ext-400-normal.1-h66gx1kjeux.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/ibm-plex-mono-cyrillic-400-normal.2dcg25_89g34d.woff2)format("woff2"),url(../media/ibm-plex-mono-cyrillic-400-normal.1r3eey-1tdqwh.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/ibm-plex-mono-vietnamese-400-normal.40ek894ady0so.woff2)format("woff2"),url(../media/ibm-plex-mono-vietnamese-400-normal.0blsyrk14nago.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/ibm-plex-mono-latin-ext-400-normal.1ih4rrmj883u6.woff2)format("woff2"),url(../media/ibm-plex-mono-latin-ext-400-normal.0hj8bqnym411c.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/ibm-plex-mono-latin-400-normal.19gbeb610ur4n.woff2)format("woff2"),url(../media/ibm-plex-mono-latin-400-normal.3nj-glub930lh.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
:root{--serif:"Instrument Serif", Georgia, serif;--sans:"DM Sans Variable", Arial, sans-serif;--mono:"IBM Plex Mono", monospace}*{box-sizing:border-box}html{background:var(--paper,#f3f2e9);scroll-behavior:smooth;min-height:100%;scroll-padding-top:32px;overflow-x:clip}body{background:var(--paper);min-height:100dvh;color:var(--ink);font:400 16px/1.75 var(--sans);-webkit-font-smoothing:antialiased;margin:0;transition:background .4s,color .4s;overflow-x:clip}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}a{color:inherit;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:5px;transition:color .2s}a:hover{color:var(--berry);text-decoration-color:currentColor}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--berry);outline-offset:6px;border-radius:2px}::selection{background:var(--berry);color:var(--paper)}h1,h2,h3,p,figure,blockquote{margin:0}h1,h2,h3{font-weight:400}h1,h2{font-family:var(--serif);letter-spacing:-.025em;line-height:1.07}h1{font-size:90px}h2{margin-bottom:22px;font-size:43px}h3{margin:24px 0 9px;font-size:18px;font-weight:550}p+p{margin-top:18px}p a{text-decoration:underline}img{max-width:100%}svg{display:block}main{min-height:65vh}.site-shell{width:min(1040px,100% - 96px);margin:auto;position:relative}.skip-link{background:var(--paper);z-index:100;padding:12px;position:fixed;top:-80px;left:20px}.skip-link:focus{top:10px}.eyebrow{color:var(--muted);letter-spacing:.035em;margin-bottom:18px;font-size:12px}.title-dot{color:var(--berry)}.intro-copy{max-width:610px;font-size:17px}.intro-links,.link-row{flex-wrap:wrap;gap:26px;font-size:13px;display:flex}.text-link{border-bottom:1px solid var(--line);padding-bottom:3px;text-decoration:none}.intro-links{margin-top:28px}.intro-links>a:last-child{color:var(--muted);text-decoration:none}.section-space{margin-top:110px}.narrow-copy{max-width:660px}.photo{min-width:0;margin:0}.photo-frame{background:var(--wash);aspect-ratio:4/3;border:0;width:100%;padding:0;display:block;position:relative;overflow:hidden;box-shadow:0 3px 8px #0000000a}.photo-frame img{object-fit:cover;transition:transform .5s}.photo figcaption{color:var(--muted);margin:10px 0 0;font-size:11px;line-height:1.6}.page-intro{padding:65px 0 75px}.page-intro h1{margin-bottom:25px}.page-intro.with-aside{grid-template-columns:1fr 280px;align-items:center;gap:70px;display:grid}.story-meta{color:var(--muted);padding-top:7px;font-size:13px}.story-meta span{margin-top:8px;font-size:11px;display:block}.story-content{max-width:690px}.story-content>.text-link{margin-top:24px;font-size:13px}.work-details{margin:28px 0 3px}.work-details summary{cursor:pointer;align-items:center;gap:14px;width:fit-content;min-height:44px;padding:6px 0;font-size:14px;list-style:none;display:flex}.work-details summary:hover{color:var(--berry)}.work-details summary:focus-visible{outline:2px solid var(--berry);outline-offset:5px;border-radius:3px}.work-details summary::-webkit-details-marker{display:none}.work-details summary span{border:1px solid var(--line);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:28px;line-height:1;transition:transform .2s;display:inline-flex}.work-details[open] summary span{transform:rotate(45deg)}.feature-list{grid-template-columns:1fr 1fr;gap:20px 30px;padding:12px 0 27px;display:grid}.feature-list h3{margin:0 0 6px;font-size:14px}.feature-list p{color:var(--muted);font-size:13px}.link-row{margin-top:26px}@media (min-width:1500px){.site-shell{width:1080px}}@media (max-width:1000px){.site-shell{width:calc(100% - 64px)}.page-intro.with-aside{grid-template-columns:1fr 230px;gap:35px}}@media (max-width:700px){body{font-size:15px}.site-shell{width:calc(100% - 40px)}.photo figcaption{font-size:10px}.section-space{margin-top:75px}.page-intro{padding:42px 0 50px}.page-intro h1{font-size:clamp(54px,18vw,73px)}.intro-copy{font-size:16px}.page-intro.with-aside{grid-template-columns:1fr;gap:25px}.story-meta{justify-content:space-between;gap:20px;padding:0;font-size:11px;display:flex}.story-meta span{margin:0}.story-content h2{font-size:38px}.feature-list{grid-template-columns:1fr}.link-row{gap:20px;font-size:12px}h2{font-size:38px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}.signature{width:116px;height:42px;display:block;overflow:visible}.external-arrow{vertical-align:-2px;flex-shrink:0;width:13px;height:13px;margin-left:5px;display:inline-block}.text-link{align-items:center;gap:2px;display:inline-flex}.text-link span{margin-left:0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}body:before{content:"";z-index:-1;opacity:.025;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 160 160' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.9'/%3E%3C/svg%3E");position:fixed;inset:0}.brand-strip{flex-wrap:wrap;align-items:center;gap:25px;margin:25px 0;display:flex}.brand-strip img{object-fit:contain}.brand-xai{width:30px;height:33px}.brand-strip>.collaboration-logo{width:110px;height:28px}.brand-xai{filter:var(--logo-filter,none)}.mentor-marks{align-items:center;gap:30px;padding:20px 0;display:flex}.mentor-marks img{object-fit:contain;max-width:80px;height:60px}.city-labels{fill:var(--ink);font:8px var(--sans);-webkit-user-select:none;user-select:none;pointer-events:none}.city-labels circle{fill:var(--berry)}.city-labels text{paint-order:stroke;stroke:var(--paper);stroke-width:3px;stroke-linejoin:round;stroke-opacity:.85}@media (max-width:700px){.brand-strip{gap:20px}.brand-strip>.collaboration-logo{width:100px}.mentor-marks{gap:20px}}.home-intro{grid-template-columns:1.35fr 1fr;align-items:center;gap:65px;padding:75px 0 110px;display:grid}.home-intro h1{margin-bottom:32px;font-size:clamp(90px,9vw,122px);line-height:.98}.home-intro p{max-width:495px;font-size:15px;line-height:1.85}.home-intro p+p{color:var(--muted)}.home-lately{grid-template-columns:135px 1fr;gap:35px;padding:38px 0;display:grid}.home-lately h2{font-size:30px}.lately-pages{grid-template-columns:repeat(3,minmax(0,1fr));gap:38px;display:grid}.lately-pages a{text-decoration:none}.lately-pages h3{font:27px/1.12 var(--serif);margin:13px 0}.lately-pages p{-webkit-line-clamp:3;color:var(--muted);text-align:justify;-webkit-box-orient:vertical;font-size:12px;line-height:1.75;display:-webkit-box;overflow:hidden}@media (max-width:1000px){.home-intro{gap:35px}.home-intro h1{font-size:95px}.home-lately{grid-template-columns:100px 1fr;gap:25px}.lately-pages{gap:24px}}@media (max-width:700px){.home-intro{grid-template-columns:1fr;gap:45px;padding:55px 0 65px}.home-intro h1{font-size:clamp(78px,20vw,105px)}.home-intro .attractor{justify-self:center;max-width:330px}.home-lately{grid-template-columns:1fr;gap:5px}.home-lately h2{margin-bottom:20px}.lately-pages{grid-template-columns:1fr;gap:25px}.lately-pages h3{margin:0 0 8px}}.experience{border-top:1px solid var(--line);grid-template-columns:210px 1fr;gap:70px;padding:45px 0 65px;display:grid}.experience-identity{padding-top:12px}.experience-logo{object-fit:contain;object-position:center;background:#f3f2e9;width:180px;height:100px;margin-bottom:28px;padding:12px;display:block}.experience-identity p{color:var(--muted);font-size:12px}.experience-identity span{margin-top:5px;font-size:11px;display:block}.experience-story{max-width:680px}.experience-role{color:var(--muted);margin-bottom:12px;font-size:11px}.experience-story>p:not(.experience-role){font-size:15px}.milestones-intro{max-width:700px;padding:65px 0 75px}.milestones-intro>p:first-child{font:italic 22px var(--serif);color:var(--berry);margin-bottom:12px}.milestones-intro h1{margin-bottom:25px;font-size:82px}.milestones-intro>p:last-child{color:var(--muted);font-size:15px}@media (max-width:1000px){.experience{grid-template-columns:180px 1fr;gap:40px}}@media (max-width:700px){.experience{grid-template-columns:1fr;gap:25px;padding:35px 0 50px}.experience-identity{justify-content:space-between;align-items:center;gap:25px;padding:0;display:flex}.experience-logo{width:155px;height:70px;margin:0}.experience-identity p{text-align:right;font-size:10px}.milestones-intro{padding:45px 0}.milestones-intro h1{font-size:62px}}.home-intro-copy{position:relative}.home-curiosity{color:var(--berry);font:inherit;text-align:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:none;display:inline}.home-curiosity:focus-visible{outline:1px dashed var(--berry);outline-offset:4px}.home-curiosity-phrase{animation:.18s ease-out curiosity-reveal}@keyframes curiosity-reveal{0%{opacity:.35}to{opacity:1}}@media (prefers-reduced-motion:reduce){.home-curiosity-phrase{animation:none}}.home-greeting{font:24px/1.4 var(--serif);margin-bottom:5px;display:block}.pixel-heart{width:112px;height:94px;color:var(--berry);opacity:.16;pointer-events:none;position:absolute;top:-26px;left:300px;transform:rotate(-13deg)}@media (max-width:700px){.pixel-heart{width:108px;height:90px;top:-22px;left:min(64%,265px)}}.home-email{margin-top:22px;font-size:12px;display:inline-block}.home-email,.footer-email{align-items:center;gap:7px;display:inline-flex}.home-email .external-arrow,.footer-email .external-arrow{width:13px;height:13px}#portfolio-page{isolation:isolate}
.site-header{align-items:center;gap:24px;min-height:110px;padding:34px 0;font-size:13px;display:flex}.site-name{flex-shrink:0;margin-right:auto;text-decoration:none}.site-name .signature{width:174px;height:63px}.site-header nav{gap:20px;display:flex}.site-header nav a{white-space:nowrap;text-decoration:none;position:relative}.site-header nav a[aria-current=page]{color:var(--berry)}.site-header nav a[aria-current=page]:after{content:"";background:currentColor;border-radius:50%;width:3px;height:3px;position:absolute;bottom:-7px;left:50%}.theme-switch{background:0 0;border:0;flex-shrink:0;align-items:center;gap:7px;min-width:90px;padding:6px 0 6px 10px;font-size:12px;display:flex}.journal-navigation{border-left:1px solid var(--line);align-items:center;gap:20px;padding-left:20px;display:flex}@media (max-width:1000px){.site-header{gap:17px}.site-name .signature{width:142.5px;height:52px}.site-header nav{gap:15px}.theme-switch{min-width:78px;font-size:11px}}@media (max-width:800px){.site-header{flex-wrap:wrap;padding:22px 0}.site-header nav{flex-wrap:wrap;order:3;justify-content:space-between;gap:12px;width:100%;font-size:12px}.journal-navigation{gap:10px;padding-left:10px}}@media (max-width:700px){.site-header nav{display:none}.site-name .signature{width:156px;height:57px}.theme-switch{min-width:80px}}@media (max-width:380px){.theme-label{display:none}.theme-switch{min-width:24px}}@media (max-width:360px){.site-header{gap:12px}}
.quote-end{border-top:1px solid var(--line);grid-template-columns:1.6fr 1fr;align-items:center;gap:60px;margin-top:100px;padding:70px 0;display:grid}.quote-end blockquote{margin:0}.cursor-trail{pointer-events:none;z-index:90;width:100%;height:100%;color:var(--berry);position:fixed;inset:0}@media (max-width:700px){.quote-end{grid-template-columns:1fr;gap:15px;margin-top:75px;padding:50px 0 35px}}@media (prefers-reduced-motion:reduce){.cursor-trail{display:none}}.star-field{pointer-events:none;width:100%;height:100%;color:var(--stars);z-index:-1;position:fixed;inset:0}.quote-reveal{--quote-blur-bleed:12px;text-align:left;width:100%;color:inherit;cursor:default;--quote-x:-300px;--quote-y:-300px;--quote-lens-radius:200px;display:flow-root;position:relative}.quote-words{font:40px/1.2 var(--serif);letter-spacing:-.015em;display:block}.quote-attribution{font:11px/1.7 var(--sans);color:var(--muted);margin-top:24px;display:block}.quote-attribution cite{font-style:normal}.quote-soft{margin:calc(-1 * var(--quote-blur-bleed));padding:var(--quote-blur-bleed);filter:blur(4px);opacity:.55}.quote-sharp{pointer-events:none;opacity:0;-webkit-mask-image:radial-gradient(circle var(--quote-lens-radius) at var(--quote-x) var(--quote-y), #000 35%, transparent 100%);mask-image:radial-gradient(circle var(--quote-lens-radius) at var(--quote-x) var(--quote-y), #000 35%, transparent 100%);transition:none;position:absolute;inset:0}.quote-reveal[data-lens=true] .quote-sharp{opacity:1}.quote-reveal[data-lens=true] .quote-soft{-webkit-mask-image:radial-gradient(circle var(--quote-lens-radius) at calc(var(--quote-x) + var(--quote-blur-bleed)) calc(var(--quote-y) + var(--quote-blur-bleed)), transparent 35%, #000 100%);mask-image:radial-gradient(circle var(--quote-lens-radius) at calc(var(--quote-x) + var(--quote-blur-bleed)) calc(var(--quote-y) + var(--quote-blur-bleed)), transparent 35%, #000 100%)}.quote-reveal:focus-visible{outline:1px dashed var(--line);outline-offset:12px}.quote-reveal:focus-visible .quote-soft{filter:none;opacity:1;-webkit-mask-image:none;mask-image:none}.quote-reveal:focus-visible .quote-sharp{visibility:hidden}@media (max-width:700px),(hover:none),(pointer:coarse),(prefers-reduced-motion:reduce){.quote-reveal .quote-soft,.quote-reveal[data-lens] .quote-soft{filter:none;opacity:1;-webkit-mask-image:none;mask-image:none}.quote-sharp{display:none}}.quote-art{width:100%;max-width:320px;color:var(--berry)}.quote-art svg{width:100%;overflow:visible}.quote-art polyline{fill:none;stroke:currentColor;stroke-width:.65px;opacity:.5}.quote-orbit{transform-origin:150px 150px;animation:38s linear infinite paused orbit}.quote-art[data-visible=true]:not([data-paused=true]) .quote-orbit{animation-play-state:running}.quote-art-industry .quote-orbit{animation-name:signal-breathe;animation-duration:7s;animation-timing-function:ease-in-out}.quote-art-research .quote-orbit{animation-name:orbit-breathe;animation-duration:18s;animation-timing-function:ease-in-out}.quote-art-life .quote-orbit{animation-name:harmony;animation-duration:14s;animation-timing-function:ease-in-out}.quote-art-projects .quote-orbit{animation-name:turn-object;animation-duration:18s;animation-timing-function:ease-in-out}.quote-end{margin-bottom:0;padding-bottom:35px}.particle-flower{pointer-events:none;z-index:25;width:150px;height:167px;position:fixed;bottom:0;right:0}.particle-flower canvas{width:100%;height:100%}.particle-flower button{pointer-events:auto;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:0 0;border:0;border-radius:50%;width:65px;height:65px;position:absolute;top:28px;left:48px}.particle-flower button:focus-visible{outline:1px dashed var(--berry)}@keyframes orbit{to{transform:rotate(360deg)}}@keyframes signal-breathe{50%{transform:translateY(-6px)scaleY(.77)}}@keyframes orbit-breathe{50%{transform:rotate(18deg)scale(.92)}}@keyframes harmony{50%{transform:rotate(-14deg)scaleX(.85)}}@keyframes turn-object{50%{transform:rotate(180deg)scaleX(.65)}to{transform:rotate(360deg)}}@media (max-width:700px){.quote-words{font-size:35px;display:inline}.quote-attribution{vertical-align:middle;max-width:40%;margin:0 0 0 12px;display:inline-block}.quote-art{display:none}.particle-flower{width:80px;height:89px;right:4px;bottom:max(4px, env(safe-area-inset-bottom))}.particle-flower canvas{opacity:.8}.particle-flower button{width:44px;height:44px;top:9px;left:20px}}.attractor{width:100%;min-width:0;color:var(--accent)}.attractor-heading{color:var(--muted);font:11px/1.8 var(--mono);text-align:left;justify-content:space-between;align-items:center;gap:13px;display:flex}.attractor-equation{text-align:right;font-size:9px}.attractor-explain{align-items:center;min-height:32px;display:inline-flex}.attractor-explain svg{width:17px;height:17px}.attractor-drawing{aspect-ratio:1;background:0 0;border:0;width:100%;padding:0;display:block}.attractor canvas{width:100%;height:100%;color:var(--accent);display:block}.attractor-controls{font:10px/1.8 var(--mono);color:var(--muted);justify-content:space-between;padding:0 25px;display:flex}.attractor-controls button{font:inherit;background:0 0;border:0;padding:5px 0}.attractor-controls button:hover{color:var(--berry)}.attractor-compact{justify-self:end;max-width:260px}.chapter-map-section{text-align:center;padding-top:110px}.chapter-map{aspect-ratio:1;width:min(100%,650px);margin:0 auto;position:relative}.chapter-map svg{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.chapter-map line{stroke:var(--ink);stroke-opacity:.18;stroke-width:.1px;transition:stroke-opacity .2s}.chapter-map line.is-visited{stroke:var(--berry);stroke-opacity:.95;stroke-width:.15px}.chapter-map line.lit{stroke:var(--berry);stroke-opacity:.65}.chapter-map line.is-visited.lit{stroke-opacity:1}.chapter-map a.is-visited{color:var(--berry)}.chapter-map a{font:16px/1.5 var(--sans);background:var(--paper);white-space:nowrap;padding:6px 10px;text-decoration:none;position:absolute;transform:translate(-50%,-50%)}@media (max-width:700px){.attractor-compact{justify-self:center;max-width:260px}.chapter-map-section{padding-top:70px}.chapter-map{margin:0 auto}.chapter-map a{padding:7px 3px;font-size:clamp(11px,3.3vw,14px)}}.piano-room{margin-top:0;padding:0}.piano-header{justify-content:space-between;align-items:center;gap:40px;display:flex}.piano-intro{flex:1;max-width:640px}.piano-description{min-height:4.5em}.piano-menu{flex-direction:column;align-items:flex-end;gap:10px;max-width:320px;display:flex}.piano-menu>div:first-child{gap:20px;display:flex}.piano-menu button{color:var(--muted);background:0 0;border:0;border-bottom:1px solid #0000;padding:5px 0;font-size:11px}.piano-menu button[aria-pressed=true]{color:var(--berry);border-bottom-color:var(--berry)}.piano-stage{--piano-air-height:35px;position:relative}.piano-scroll{scrollbar-width:thin;scrollbar-color:var(--line) transparent;padding:var(--piano-air-height) 2px 13px;overflow-x:auto}.piano-scroll:focus-visible{outline:1px dashed var(--berry);outline-offset:5px}.piano-surface{min-width:900px}.piano-air{height:var(--piano-air-height);z-index:2;clip-path:inset(-230px 0 0);pointer-events:none;position:absolute;top:0;left:2px;right:2px}.piano-note-track{width:100%;min-width:900px;height:100%;position:relative}.piano-flying-note{color:var(--berry);font:25px var(--serif);opacity:0;animation:2.4s ease-out both piano-note-rise;position:absolute;bottom:0}@keyframes piano-note-rise{0%{opacity:0;transform:translate(-50%,4px)rotate(-8deg)}12%{opacity:.85}to{opacity:0;transform:translate(-30%,-220px)rotate(12deg)}}.piano-keyboard{position:relative}.white-keys{height:125px;display:flex}.piano-key{touch-action:none;border-radius:0 0 3px 3px;padding:0;transition:background 80ms}.white-key{background:linear-gradient(#e9e8df,#fffff8 22%,#f7f5ed 93%,#d0cfc3 94%);border:1px solid #d1d0c7;border-top:0;flex:1;min-width:0;position:relative}.white-key span{font:9px var(--mono);color:#93988f;position:absolute;bottom:11px;left:0;right:0}.black-key{top:0;left:var(--key-left);z-index:1;background:linear-gradient(#151914,#3d433a 85%,#1d231a 86%);border:1px solid #1b1e1a;width:1.15%;height:77px;position:absolute;transform:translate(-50%);box-shadow:2px 3px 2px #00000020}.white-key:hover,.white-key.is-playing{background:linear-gradient(#f5e5ef,#d9aec5)}.black-key:hover,.black-key.is-playing{background:linear-gradient(#987587,#6f4259)}.piano-key.is-playing{box-shadow:0 -10px 19px color-mix(in srgb, var(--berry), transparent 70%)}.piano-key:focus-visible{outline-offset:-3px;outline:2px solid #ba7998}.piano-error{color:var(--berry);font-size:12px}@media (max-width:700px){.piano-header{flex-direction:column;align-items:stretch;gap:14px}.piano-menu{flex-direction:column;align-items:start;gap:15px}.piano-menu>div:first-child{flex-wrap:wrap;gap:20px}.piano-menu button{font-size:10px}}.attractor-heading{padding:0 18px}.attractor-title{align-items:center;gap:8px;display:flex}.quote-art-home .quote-orbit{animation:none}.theme-glyph{flex-shrink:0;width:20px;height:20px}.midnight-meteor{pointer-events:none;z-index:-1;background:linear-gradient(90deg,#0000,#e8e5ed);border-radius:50%;width:190px;height:2px;animation:3.4s cubic-bezier(.3,.05,.55,1) both midnight-crossing;position:fixed;top:23vh;left:-220px;box-shadow:0 0 12px #d5d0ff66}.midnight-meteor:after{content:"";background:#fff;border-radius:50%;width:6px;height:6px;position:absolute;top:-2px;right:0;box-shadow:0 0 8px 2px #fff9,0 0 28px 7px #b3b5d544}@keyframes midnight-crossing{0%{opacity:0;transform:translate(0)rotate(9deg)}12%,75%{opacity:1}to{opacity:0;transform:translate(calc(100vw + 440px),22vh)rotate(9deg)}}@media (max-width:700px){.midnight-meteor{width:100px}}@media (prefers-reduced-motion:reduce){.piano-flying-note{display:none}}.piano-now-playing{text-align:right;justify-content:end;margin-top:8px;margin-left:auto;display:grid}.piano-now-playing>span{visibility:hidden;font:600 18px/1.4 var(--serif);color:var(--ink);grid-area:1/1}.piano-now-playing>span[data-selected=true]{visibility:visible}.piano-menu>div:first-child{flex-shrink:0}@media (max-width:700px){.piano-now-playing{text-align:left;justify-content:flex-start;margin-left:0}}
.note-article{z-index:1;max-width:760px;margin:50px auto 0;padding-bottom:clamp(100px,11vw,168px);position:relative}.back-link{min-height:44px;color:var(--ink);align-items:center;gap:10px;padding:8px 0;font-size:16px;font-weight:500;text-decoration:none;display:inline-flex}.back-link>svg{opacity:.7;flex:none}.back-link:hover{text-underline-offset:5px;text-decoration:underline}.note-article header{margin:38px 0 28px}.note-article h1{max-width:730px;margin-bottom:0;font-size:72px}.note-body>p{max-width:660px;font-size:17px;line-height:1.9}.note-body>p+p{margin-top:24px}.note-highlight{color:inherit;background:var(--highlight);-webkit-box-decoration-break:clone;box-decoration-break:clone;border-radius:.12em;padding:.04em .08em}.note-equations{border-left:2px solid var(--line);font:clamp(12px, 2.8vw, 16px) / 2.1 var(--mono);white-space:nowrap;margin:28px 0;padding:18px clamp(12px,4vw,28px);overflow-x:auto}.note-body>p .text-link{text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:3px;border-bottom:0;padding-bottom:0;display:inline}.note-body .link-row{margin:30px 0}.note-body .attractor{max-width:440px;margin:40px auto}.note-body:has(>.attractor){max-width:660px}.note-photos{grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:22px;margin:35px 0;display:grid}.note-photos:has(>:only-child){max-width:600px;margin-inline:auto}.note-photos .photo figcaption{text-align:center}.note-photos-collage{isolation:isolate;grid-template-columns:repeat(12,minmax(0,1fr));align-items:start;gap:0;max-width:700px;margin:55px auto 45px;padding:12px}.note-photos-collage .photo{background:color-mix(in srgb, var(--paper), white 12%);padding:8px;box-shadow:0 8px 24px #00000026}.note-photos-collage .photo:first-child{grid-area:1/1/2/9;transform:rotate(-4deg)}.note-photos-collage .photo:nth-child(2){grid-area:1/9/2/13;margin-top:64px;transform:rotate(6deg)}.note-photos-collage .photo:nth-child(3){z-index:1;grid-area:2/6/3/11;margin-top:-140px;transform:rotate(-3deg)}.note-photos-collage .photo:not(:first-child) .photo-frame{aspect-ratio:3/4}.note-photos-collage:has(>.photo:nth-child(2):last-child) .photo:first-child{grid-column:1/8}.note-photos-collage:has(>.photo:nth-child(2):last-child) .photo:nth-child(2){grid-column:7/13;margin-top:96px;transform:rotate(4deg)}.note-photos-collage:has(>.photo:nth-child(2):last-child) .photo-frame{aspect-ratio:3/4}@media (max-width:540px){.note-photos-collage{margin-block:35px;padding-inline:14px}.note-photos-collage .photo:first-child{grid-area:1/1/2/12}.note-photos-collage .photo:nth-child(2){grid-area:2/1/3/8;margin-top:24px;transform:rotate(3deg)}.note-photos-collage .photo:nth-child(3){grid-area:2/7/3/13;margin-top:30px;transform:rotate(-4deg)}.note-photos-collage:has(>.photo:nth-child(2):last-child) .photo:first-child{grid-column:1/11}.note-photos-collage:has(>.photo:nth-child(2):last-child) .photo:nth-child(2){grid-column:3/13;margin-top:-20px}}@keyframes record-spin{to{transform:rotate(360deg)}}@media (max-width:700px){.note-article{margin-top:40px}.note-article h1{font-size:52px}.note-article header{margin-top:30px}.note-body>p{font-size:16px}}@media (prefers-reduced-motion:reduce){.quote-orbit{animation:none!important}}.notebook-index{padding:70px 0 40px}.notebook-index>header{max-width:480px;margin:0 0 75px 12%}.projects-page>header{text-wrap:pretty;max-width:900px}.notebook-kicker{font:italic 22px var(--serif);color:var(--berry);margin-bottom:10px}.notebook-index h1{margin-bottom:22px;font-size:80px}.notebook-index header>p:last-child{color:var(--muted);font-size:14px}.notebook-leaves{grid-template-columns:repeat(2,minmax(0,1fr));gap:50px 65px;max-width:865px;margin:auto;padding-bottom:65px;display:grid}.notebook-leaf{background:color-mix(in srgb, var(--paper), white 15%);border:1px solid color-mix(in srgb, var(--line), transparent 60%);border-radius:1px;flex-direction:column;min-height:290px;padding:36px 35px 25px;text-decoration:none;transition:transform .25s,box-shadow .25s;display:flex;box-shadow:1px 3px 3px #0000000a,6px 9px 25px #00000007}.notebook-leaf:nth-child(2n){margin-top:40px;margin-bottom:-40px}.notebook-leaf.leaf-0{transform:rotate(-2deg)}.notebook-leaf.leaf-1{transform:rotate(1.7deg)}.notebook-leaf.leaf-2{transform:rotate(-.5deg)}.notebook-leaf:hover,.notebook-leaf:focus-visible{transform:rotate(0);box-shadow:1px 4px 5px #00000010,8px 14px 30px #00000009}.notebook-leaf h2{margin-bottom:18px;font-size:38px}.notebook-leaf p{color:var(--muted);font-size:12px;line-height:1.8}@media (max-width:700px){.notebook-index{padding-top:50px}.notebook-index>header{margin:0 0 50px 5%}.notebook-index h1{font-size:60px}.notebook-leaves{grid-template-columns:minmax(0,1fr);gap:35px;max-width:420px;padding:0 12px}.notebook-leaf{min-height:270px;padding:30px}.notebook-leaf:nth-child(2n){margin:0}}.notes-page{padding:70px 0 40px}.notes-page>header{max-width:720px;margin:0 auto 48px}.notes-page h1{margin-bottom:22px;font-size:80px}.notes-page>header p{max-width:440px;color:var(--muted);font-size:14px}.notes-index{grid-template-columns:minmax(0,1fr);gap:26px;max-width:720px;margin:0 auto 60px;display:grid}.notes-entry{--note-fold:22px;isolation:isolate;padding:32px 38px 34px;position:relative}.notes-entry:before{content:"";z-index:-1;background:color-mix(in srgb, var(--paper) 94%, var(--ink));clip-path:polygon(0 0, calc(100% - var(--note-fold)) 0, 100% var(--note-fold), 100% 100%, 0 100%);position:absolute;inset:0}.notes-entry:after{content:"";width:var(--note-fold);height:var(--note-fold);background:var(--line);clip-path:polygon(0 0,0 100%,100% 100%);pointer-events:none;position:absolute;top:0;right:0}.notes-entry h2{text-wrap:pretty;margin:0 0 16px;font-size:clamp(30px,3.5vw,38px);line-height:1.15}.notes-entry-link{text-decoration:none}.notes-entry-link:after{content:"";z-index:1;position:absolute;inset:0}.notes-entry-link:focus-visible{outline:none}.notes-entry:has(:focus-visible){outline:2px solid var(--berry);outline-offset:5px}.notes-entry:hover h2{color:var(--berry)}.notes-entry:has(:focus-visible) h2{color:var(--berry)}.notes-entry>p{max-width:65ch;color:var(--muted);font-size:15px;line-height:1.85}@media (max-width:700px){.notes-page{padding-top:50px}.notes-page>header{margin-bottom:32px}.notes-page h1{font-size:60px}.notes-index{gap:20px}.notes-entry{--note-fold:18px;padding:25px 24px 28px}.notes-entry>p{font-size:14px;line-height:1.8}}.vibes-room{padding:65px 0 100px}.vibes-cabinet{--gallery-columns:2;--gallery-gap:48px;grid-template-columns:repeat(var(--gallery-columns), minmax(0, 1fr));gap:var(--gallery-gap);margin:12px;display:grid;position:relative}.vibes-cabinet[data-ready]{display:block}.gallery-item{min-width:0;padding:8px 6px 12px;display:flow-root}.vibes-cabinet[data-ready]>.gallery-item{width:calc((100% - (var(--gallery-columns) - 1) * var(--gallery-gap)) / var(--gallery-columns));position:absolute;top:0;left:0}.gallery-item>figure{margin:0 auto}.gallery-item>.cabinet-photo{width:84%}.gallery-item>.cabinet-photo-small{width:68%}.gallery-item>.cabinet-photo-large{width:100%}.gallery-item>.record-object{width:62%;max-width:260px}.gallery-item-small>.record-object{width:48%;max-width:200px}.gallery-item-large>.record-object{width:76%;max-width:300px}.gallery-item-record:nth-child(3n)>figure{margin-left:8%}.gallery-item-record:nth-child(3n+1)>figure{margin-right:7%}.gallery-item-record:last-child>figure{margin-inline:auto}.cabinet-photo{background:#fbfaf5;padding:7px 7px 19px;box-shadow:0 2px 3px #00000015,3px 6px 12px #00000012}.cabinet-photo>div{overflow:hidden}.cabinet-photo img{width:100%;height:auto;display:block}.cabinet-tilt-0{transform:rotate(-1deg)}.cabinet-tilt-1{transform:rotate(1.2deg)}.cabinet-tilt-2{transform:rotate(-.5deg)}.cabinet-tilt-3{transform:rotate(.7deg)}.record-object{justify-self:center;width:205px;max-width:100%;padding-bottom:0;position:relative}.record-button{aspect-ratio:1;background:0 0;border:0;width:100%;padding:0;display:block;position:relative}.record-disc{aspect-ratio:1;background:repeating-radial-gradient(circle,#171719 0,#252527 1px,#101012 2px,#171719 3px);border-radius:50%;place-items:center;width:100%;display:grid;position:relative;box-shadow:2px 6px 11px #00000025}.record-disc:before{content:"";background:conic-gradient(from 35deg,#0000,#fff2,#0000 35%,#ffffff15,#0000 75%);border-radius:50%;position:absolute;inset:0}.record-label{aspect-ratio:1;background:var(--record-color);border-radius:50%;width:34%;position:relative;overflow:hidden}.record-label img{object-fit:cover;width:100%;height:100%}.record-label:after{content:"";aspect-ratio:1;background:var(--paper);border:1px solid #444;border-radius:50%;width:10%;position:absolute;top:45%;left:45%}.record-cd .record-disc{background:conic-gradient(from 40deg,#dedede,#f6edce,#dedeee,#d7e3e9,#ddd7e4,#efe5d5,#e4e6e1,#dedede)}.record-cd .record-label{opacity:.85;width:70%}.record-cd .record-disc:after{content:"";aspect-ratio:1;background:var(--paper);border:6px solid #d2d2d0;border-radius:50%;width:18%;position:absolute;box-shadow:0 0 0 1px #ffffff80}.record-cd .record-label:after{display:none}.record-turntable{width:250px}.record-turntable .record-button{aspect-ratio:1.15;background:linear-gradient(110deg,#aa8466,#ba9678 60%,#9b795e);border:2px solid #987559;border-radius:5px;padding:17px 40px 17px 14px;box-shadow:2px 6px 10px #0002}.record-turntable.record-finish-silver .record-button{background:linear-gradient(135deg,#dce1df,#aab5b6 55%,#cbd1cf);border-color:#919c9e;border-radius:2px;box-shadow:2px 6px 10px #0002,inset 0 0 0 5px #e6e9e780}.record-turntable.record-finish-silver .record-arm{background:linear-gradient(90deg,#333b40,#697379,#262e32)}.record-arm{transform-origin:top;background:linear-gradient(90deg,#aaa,#efeeee,#999);width:5px;height:60%;position:absolute;top:17%;right:8%;transform:rotate(12deg);box-shadow:1px 2px 2px #0005}.record-arm:before{content:"";background:#555;border:3px solid #c7c6c0;border-radius:50%;width:15px;height:15px;position:absolute;top:-7px;left:-5px}.record-arm:after{content:"";background:#333;border-radius:2px;width:10px;height:20px;position:absolute;bottom:-3px;left:-3px}.record-button[aria-pressed=true] .record-disc{animation:6s linear infinite record-spin}.record-button[aria-pressed=true] .record-arm{transform:rotate(28deg)}.record-state{background:color-mix(in srgb, var(--paper) 90%, transparent);width:40px;height:40px;color:var(--ink);opacity:1;box-shadow:0 0 0 1px color-mix(in srgb, var(--ink) 12%, transparent), 0 2px 10px #0002;border-radius:50%;place-items:center;font-size:13px;transition:opacity .2s;display:grid;position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.spotify-link{color:var(--ink);background:var(--paper);width:40px;height:40px;box-shadow:0 0 0 3px var(--paper), 0 2px 8px #0002;border-radius:50%;padding:10px;position:absolute;bottom:-7px;right:-7px}.spotify-link svg{width:20px;height:20px}.spotify-link:hover{color:var(--berry)}@media (max-width:700px){.vibes-room{padding:45px 0 85px}.vibes-cabinet{--gallery-columns:1;--gallery-gap:32px;max-width:440px;margin-inline:auto}.cabinet-photo{padding:5px 5px 17px}.record-object{width:150px}.record-turntable{width:170px}.record-turntable .record-button{padding:10px 28px 10px 10px}}@media (prefers-reduced-motion:reduce){.record-button[aria-pressed=true] .record-disc{animation:none}}.record-platter{aspect-ratio:1;width:100%;display:block;position:relative}.record-cd .spotify-link,.record-vinyl .spotify-link{bottom:8px;right:8px}
.site-footer{color:var(--ink);margin-top:clamp(-120px,-7vw,-50px);position:relative;overflow:clip}.campus-print{width:100%;overflow:hidden;-webkit-mask-image:linear-gradient(#0000,#000 7%,#000);mask-image:linear-gradient(#0000,#000 7%,#000)}.campus-scene{position:relative}.campus-print svg{width:100%;height:auto;position:relative}.footer-bottom{justify-content:space-between;align-items:center;gap:24px;width:min(1040px,100% - 96px);margin:0;display:flex;position:absolute;bottom:1%;left:50%;transform:translate(-50%)}.footer-signature{flex-shrink:0;text-decoration:none}.footer-signature .signature{width:150px;height:53px}.footer-actions{white-space:nowrap;align-items:center;gap:32px;font-size:12px;display:flex;transform:translate(24px)}.footer-year{color:var(--muted);font-size:11px}.footer-note{min-height:44px;text-decoration:underline;-webkit-text-decoration-color:var(--line);text-decoration-color:var(--line);text-underline-offset:5px;align-items:center;display:inline-flex}.footer-note:hover{text-decoration-color:currentColor}@media (min-width:1500px){.footer-bottom{width:1080px}}@media (max-width:1000px){.footer-bottom{width:calc(100% - 64px)}}.campus-ink-art{filter:url(#campus-ink);width:100%;height:100%;opacity:var(--campus-ink-opacity,.9);position:absolute;inset:0}.campus-ink-original{clip-path:polygon(0 0,61% 0,61% 53%,95.5% 53%,90% 100%,0 100%)}.campus-ink-right-tree{clip-path:polygon(61% 0,100% 0,100% 100%,90% 100%,95.5% 53%,61% 53%)}.campus-lights{opacity:var(--campus-light-opacity,.85);transition:opacity 1s}:root[data-theme=dusk]{--campus-light-opacity:.85}:root[data-theme=night]{--campus-ink-opacity:.52;--campus-light-opacity:.9}:root[data-theme=midnight]{--campus-ink-opacity:.44;--campus-light-opacity:1}.campus-lights[data-on=false]{opacity:0}.campus-lamp-switch{background:0 0;border:0;border-radius:50%;width:44px;height:44px;padding:0;position:absolute;transform:translate(-50%,-50%)}.campus-lamp-switch:hover{background:#ffe6a014}.campus-lamp-switch:focus-visible{outline-offset:2px;outline:1px solid #e3bf79}.campus-rooms path{fill:#ffdda1;opacity:0;transition:opacity 1.8s}:root[data-theme=night] .campus-rooms .room-lit,:root[data-theme=midnight] .campus-rooms .room-lit{opacity:.78}.footer-email{text-underline-offset:5px;align-items:center;min-height:44px;display:inline-flex}@media (max-width:700px){.campus-scene{width:780px;max-width:none;left:50%;transform:translate(-48%)}.footer-bottom{gap:10px;width:calc(100% - 24px);margin:0 auto;padding:10px 0 16px;position:relative;bottom:auto;left:auto;transform:none}.footer-signature .signature{width:80px;height:44px}.footer-actions{flex-wrap:wrap;justify-content:flex-end;gap:0 14px;width:100%;font-size:10px;transform:none}.footer-year{font-size:10px}}@media (prefers-reduced-motion:reduce){.campus-lights,.campus-rooms path{transition:none}}
.life-intro{grid-template-columns:1.05fr 1fr;align-items:center;gap:80px;padding:75px 0 60px;display:grid}.life-intro h1{margin-bottom:30px}.life-intro p{max-width:470px;font-size:15px}.life-photo-stack{justify-content:center;display:flex}.life-photo-stack .photo{width:min(84%,320px);transform:rotate(4deg)}.life-photo-stack .photo-frame{aspect-ratio:.8;border:7px solid #fbfaf5;box-shadow:2px 6px 18px #00000012}.life-photo-stack .photo-frame img{object-position:60% top;transform-origin:100% 0;transform:scale(1.06)}.life-notes{grid-template-columns:repeat(3,minmax(0,1fr));gap:32px;display:grid}.life-note-preview{text-decoration:none;display:block}.life-note-photo{aspect-ratio:1.25;border:7px solid #fbfaf5;position:relative;box-shadow:2px 4px 12px #0000000d}.life-note-photo img{object-fit:cover}.life-note-preview:nth-child(2) .life-note-photo{transform:rotate(2deg)}.life-note-preview h3{font:29px/1.1 var(--serif);margin:24px 0 12px}.life-note-preview p{color:var(--muted);font-size:13px}.life-note-heading>span{white-space:nowrap;text-underline-offset:5px;margin-top:0;font-size:10px;text-decoration:underline;display:inline-block}.community-commitments{grid-template-columns:1.5fr .7fr;align-items:center;gap:90px;display:grid}.community-commitments p{font-size:14px}.community-commitments .photo-frame{aspect-ratio:1.15}.research-paper{border-block:1px solid var(--line);grid-template-columns:minmax(0,1fr) 220px;gap:20px 65px;padding:40px 0 45px;display:grid}.research-paper>h2{grid-column:1/-1;margin:0;font-size:clamp(32px,3.55vw,46px)}.paper-explanation{align-self:center}.paper-graph{width:100%;max-width:310px;height:130px;margin:0 0 0 auto}.paper-graph path{fill:none;stroke:var(--accent);stroke-width:1px;opacity:.5}.paper-graph circle{fill:var(--berry)}.research-talk{grid-template-columns:1.2fr 1fr;align-items:center;gap:65px;display:grid}.research-talk h2{margin-top:14px;font-size:47px}.research-talk p,.research-contest p,.research-origins p{font-size:14px}.research-talk p+p,.research-origins p+p{color:var(--muted)}.research-talk+.research-contest,.research-contest+.research-origins{margin-top:145px}.research-contest,.research-origins{grid-template-columns:1fr 1.2fr;align-items:center;gap:75px;display:grid}.research-contest h2,.research-origins h2{margin-top:14px}.contest-photos{grid-template-columns:1fr;gap:0;padding:10px 8px;display:grid}.contest-photos .photo:first-child{width:96%;transform:rotate(-2deg)}.contest-photos .photo:first-child .photo-frame{aspect-ratio:20/9}.contest-photos .photo:last-child{z-index:1;justify-self:end;width:38%;max-width:190px;margin-top:clamp(-82px,-7vw,-52px);margin-right:0;position:relative;transform:rotate(5deg)}.contest-photos .photo:last-child .photo-frame{aspect-ratio:1}.contest-photos .photo:last-child img{object-position:50% 68%}.contest-photos .photo:last-child figcaption{color:#626c60;text-align:center;background:#fbfaf5;padding:6px 2px 0;font-size:9px;line-height:1.3;position:static}.contest-photos .photo-frame{border:6px solid #fbfaf5}.research-origins{grid-template-columns:1.2fr 1fr}@media (max-width:1000px){.life-intro{gap:45px}.life-photo-stack{height:auto}.research-paper,.research-talk,.research-contest,.research-origins,.community-commitments{gap:35px}}@media (max-width:700px){.research-talk+.research-contest,.research-contest+.research-origins{margin-top:100px}.life-intro{grid-template-columns:1fr;gap:35px;padding:45px 0 10px}.life-intro h1{font-size:72px}.life-photo-stack{width:min(90%,350px);height:auto;margin:0 auto}.life-notes{grid-template-columns:1fr;gap:45px}.life-note-preview{max-width:420px}.life-note-photo{aspect-ratio:1.45}.community-commitments{grid-template-columns:1fr}.community-commitments .photo{justify-self:center;width:65%;max-width:280px}.research-paper,.research-talk,.research-contest,.research-origins{grid-template-columns:1fr;gap:32px}.research-paper>h2{font-size:39px}.paper-explanation{max-width:480px}.research-talk h2{font-size:40px}.research-origins>div:last-child{grid-row:1}}.industry-page .intro-copy,.research-page .intro-copy{text-wrap:pretty;max-width:900px}.industry-page .quote-end{margin-top:32px}.experience{grid-template-columns:170px 1fr;gap:55px;padding:35px 0 45px}.experience-logo{object-position:center;background:0 0;width:100%;max-width:100%;height:100%;margin:0;padding:0}.experience-story h2{margin-bottom:18px;font-size:42px}.experience-story>p:not(.experience-role){font-size:14px}.experience-heading .link-row{flex-shrink:0;margin:0}.mentor-marks{gap:25px;padding:15px 0 0}.mentor-marks img{width:auto;max-width:64px;height:30px}.mentor-marks img[alt=CEMC]{max-width:44px;height:44px}@media (max-width:700px){.experience{grid-template-columns:1fr;gap:18px}.experience-identity{align-items:center}.experience-story h2{font-size:32px}.mentor-marks{flex-wrap:wrap}}.life-photo-stack .photo:focus-within{z-index:3}.project-leaf-photo{aspect-ratio:1.65;background:#f9f7ee;margin:-8px -8px 28px;position:relative;overflow:hidden}.project-leaves .notebook-leaf{min-height:420px}@media (min-width:701px){.project-leaves>.notebook-leaf:last-child:nth-child(odd){grid-column:1/-1;min-height:0;margin-top:35px}.project-leaves>.notebook-leaf:last-child:nth-child(odd) .project-leaf-photo{aspect-ratio:4.5}}.project-leaf-photo img[alt=Codeforces\ logo]{padding:24px}.life-page #music{margin-top:45px}.life-note-heading{justify-content:space-between;align-items:baseline;gap:12px;margin:24px 0 12px;display:flex}.life-note-heading h3{margin:0;font-size:26px}.paper-heading>p{margin-top:24px;font-size:14px}.research-framed-photo{border:7px solid #fbfaf5;position:relative;box-shadow:2px 6px 18px #00000012}.research-framed-photo>figcaption{color:#fff;pointer-events:none;background:linear-gradient(#0000,#000a);margin:0;padding:38px 14px 12px;font-size:10px;line-height:1.5;position:absolute;bottom:0;left:0;right:0}.research-talk .photo-frame{aspect-ratio:1.5}.origins-photos{grid-template-columns:1fr;gap:0;display:grid}.origins-photos .photo:nth-child(2){width:77%;margin:-60px 0 0 auto;transform:rotate(4deg)}.origins-photos .photo:first-child{width:85%;margin-right:0;transform:rotate(-4deg)}.origins-photos .photo-frame{aspect-ratio:1.65}.experience-heading{justify-content:flex-start;align-items:baseline;gap:18px;margin-bottom:20px;display:flex}.experience-heading h2{margin:0}.experience-heading .link-row{gap:16px;font-size:11px}.experience-website{border:0;padding:0}.experience-website .external-arrow{width:20px;height:20px}.experience-logo-frame{border:1px solid var(--line);background:#fff;border-radius:3px;flex-shrink:0;width:130px;height:130px;margin-bottom:20px;padding:8px;position:relative}.experience-logo-frame-hamming,.experience-logo-frame-waterloo,.experience-logo-frame-web24{background:0 0;border:0;padding:0}.mentor-marks img[alt=USACO]{object-fit:contain;width:64px;max-width:64px;height:52px}.quote-end{z-index:1;border-top:1px solid var(--line);margin-top:145px;padding-bottom:0;position:relative}@media (max-width:700px){.life-note-heading h3{font-size:29px}.experience-heading{flex-wrap:wrap;gap:14px}.experience-heading .link-row{margin-left:auto}.experience-logo-frame{margin:0}.quote-end{margin-top:90px}.origins-photos{max-width:480px}}.experience-role{color:var(--ink);font-size:17px;line-height:1.5}.experience-yc{border:3px solid var(--paper);box-sizing:content-box;position:absolute;bottom:-5px;right:-8px}.project-title-row{justify-content:space-between;align-items:baseline;gap:20px;margin-bottom:16px;display:flex}.project-title-row h2{margin:0}.project-title-row .text-link{flex-shrink:0;font-size:11px}.project-leaf-photo:has(img[alt="Prompty AI guessing game"]) img{padding:14px}.project-leaf-photo img[alt="The Legend of Shoo game"]{transform:scale(.82)}@media (max-width:700px){.experience-role{font-size:16px}.experience-story h2{font-size:36px}.research-paper>h2{font-size:37px}.paper-explanation{justify-self:end;width:180px}.origins-photos .photo:nth-child(2){margin-top:-40px}.project-title-row{flex-wrap:wrap;gap:12px}}.milestone-timeline{padding-left:18px;position:relative}.milestone-timeline:before{content:"";background:var(--line);width:1px;position:absolute;top:85px;bottom:35px;left:0}.milestone-event{grid-template-columns:120px minmax(0,1fr) 240px;grid-template-areas:"date entry photo";align-items:start;gap:40px;padding:25px 0 50px;display:grid}.milestone-event time{text-align:left;color:var(--muted);grid-area:date;padding-top:0}.milestone-year-label{font:38px/1.2 var(--serif);color:var(--ink);display:block}.milestone-month-label{font:12px/20px var(--sans);margin-top:6px;display:block;position:relative}.milestone-month-label:after{content:"";border:1px solid var(--muted);background:var(--paper);border-radius:50%;width:9px;height:9px;position:absolute;top:50%;left:-22px;transform:translateY(-50%)}.milestone-entry{grid-area:entry}.milestone-entry h2{font:29px/1.2 var(--serif);margin:0 0 12px}.milestone-entry h2 a{text-decoration:none}.milestone-entry p{color:var(--muted);font-size:13px}.milestone-event:not(:has(figure)) .milestone-entry{grid-column:2/4;max-width:650px}.milestone-event figure{grid-area:photo;margin:0;transform:rotate(2deg)}.milestone-event:nth-child(odd) figure{transform:rotate(-2deg)}.milestone-event figure>div{aspect-ratio:1.3;border:7px solid #fbfaf5;position:relative;box-shadow:2px 5px 12px #00000017}.milestone-event img{object-fit:cover}.milestone-event figcaption{font:italic 15px var(--serif);color:var(--muted);text-align:center;margin-top:14px}@media (max-width:1000px){.milestone-event{grid-template-columns:100px minmax(0,1fr) 180px;gap:25px}}@media (max-width:700px){.milestone-event{grid-template-columns:75px minmax(0,1fr);grid-template-areas:"date entry""date photo";gap:22px 16px}.milestone-event:not(:has(figure)) .milestone-entry{grid-column:2}.milestone-year-label{font-size:31px}.milestone-month-label{font-size:11px}.milestone-timeline:before{top:78px}.milestone-event figure{justify-self:start;width:100%;max-width:280px;margin:5px 0 0}}.origins-photos .photo:first-child>figcaption{background:linear-gradient(#0009,#0000);padding:12px 14px 35px;top:0;bottom:auto}.quote-end-home{border-top:0;margin-top:35px}.quote-end-home:before{content:"";background:var(--line);width:min(600px,95%);height:1px;position:absolute;top:0;left:50%;transform:translate(-50%)}.contest-photos .research-framed-photo .photo-frame{border:0}.research-in-progress{filter:blur(6px);opacity:.55;-webkit-user-select:none;user-select:none;pointer-events:none;border-block:0;margin-bottom:45px}
.flower-story{z-index:200;cursor:default;position:fixed;inset:0;overflow:hidden}.flower-story>canvas{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:100%;height:100%;display:block}[data-flower-story] #portfolio-page{pointer-events:none;filter:url(#page-dispersal);transform-origin:50% 100%;animation:3.8s ease-in .35s forwards page-to-powder}[data-flower-story] .particle-flower{pointer-events:none;animation:1.6s ease-out forwards flower-farewell}[data-flower-story] .cursor-trail{display:none}@keyframes page-to-powder{0%{opacity:1}25%{opacity:.95}to{opacity:0;visibility:hidden;transform:translate(-20px,-40px)scale(1.025)}}@keyframes flower-farewell{0%,25%{opacity:1}to{opacity:0;visibility:hidden}}@media (prefers-reduced-motion:reduce){[data-flower-story] #portfolio-page{filter:none;animation:1.5s forwards quiet-page-fade}@keyframes quiet-page-fade{to{opacity:0;visibility:hidden}}}.meadow-close{color:#fff;cursor:pointer;background:0 0;border:0;width:44px;height:44px;padding:9px;position:absolute;top:24px;right:28px}.meadow-close svg{width:100%;height:100%}.meadow-close:focus-visible,.meadow-cd:focus-visible,.meadow-song a:focus-visible{outline-offset:5px;outline:1px solid #ddd}.meadow-song{text-align:center;color:#e8e5de;justify-content:center;align-items:center;gap:22px;width:max-content;max-width:calc(100% - 160px);animation:2.5s 8s both meadow-song-arrives;display:flex;position:absolute;top:38px;left:50%;transform:translate(-50%)}.meadow-song-title{font:26px/1.15 var(--serif);justify-content:center;align-items:center;gap:12px;text-decoration:none;display:inline-flex}.meadow-song-title:hover{text-underline-offset:5px;text-decoration:underline}.meadow-song-artist{font:italic 19px/1.4 var(--serif);opacity:.8;margin:6px 0 0}.meadow-cd{cursor:pointer;background:0 0;border:0;flex:0 0 76px;width:76px;height:76px;padding:0}.meadow-cd>span{background:conic-gradient(#ddd,#bdb7c8,#ededeb,#6e7b91,#eee,#a9adc4,#ddd);border-radius:50%;width:100%;height:100%;animation:14s linear infinite paused meadow-cd-spin;display:block;position:relative;overflow:hidden;box-shadow:0 0 24px #d3c8e912;-webkit-mask-image:radial-gradient(circle,#0000 6px,#000 7px);mask-image:radial-gradient(circle,#0000 6px,#000 7px)}.meadow-cd img{object-fit:cover;opacity:.83;border-radius:50%}.meadow-cd>span:after{content:"";background:#c6c9d855;border:1px solid #ffffff75;border-radius:50%;position:absolute;inset:34%}.meadow-song[data-playing=true] .meadow-cd>span{animation-play-state:running}.meadow-lyrics{text-align:center;color:#e7e2db;pointer-events:none;width:min(760px,100% - 60px);animation:2.5s 8s both meadow-song-arrives;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.meadow-lyrics p{margin:0}.lyric-neighbor{font:28px/1.4 var(--serif);color:#c6c9d0a6}.lyric-current{font:40px/1.3 var(--serif);min-height:1.3em}@keyframes meadow-song-arrives{0%{opacity:0;visibility:hidden}to{opacity:1;visibility:visible}}@keyframes meadow-cd-spin{to{transform:rotate(360deg)}}@media (max-width:700px){.meadow-close{top:15px;right:13px}.meadow-song{gap:14px;width:max-content;max-width:calc(100% - 40px);top:70px;left:50%;transform:translate(-50%)}.meadow-cd{flex-basis:62px;width:62px;height:62px}.meadow-song-title{font-size:20px}.meadow-song-artist{margin:7px 0}.meadow-lyrics{width:calc(100% - 40px);top:50%}.lyric-current{font-size:31px}.lyric-neighbor{font-size:23px}}@media (prefers-reduced-motion:reduce){.meadow-cd>span{animation:none}.meadow-song,.meadow-lyrics{animation:1s 1.5s both meadow-song-arrives}}.meadow-song-title svg{--spotify-cutout:#101d3b;flex:0 0 18px;width:18px;height:18px}.lyric-lines{grid-template-rows:1fr auto 1fr;gap:18px;height:290px;animation:.65s cubic-bezier(.2,.7,.3,1) both lyric-line-switch;display:grid}@keyframes lyric-line-switch{0%{opacity:.15;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.meadow-meteor{--meteor-travel-x:calc(100vw + 240px);--meteor-travel-y:130px;--meteor-angle:atan2(var(--meteor-travel-y), var(--meteor-travel-x));pointer-events:none;background:linear-gradient(90deg,#0000,#e4e8ff);width:200px;height:1px;animation:3.8s linear both meadow-star-crossing;position:absolute;top:17%;left:-220px;box-shadow:8px 0 8px #bac7ff75}@keyframes meadow-star-crossing{0%{opacity:0;transform:translate(0, 0) rotate(var(--meteor-angle))}10%{opacity:.85}70%{opacity:.65}to{opacity:0;transform:translate(var(--meteor-travel-x), var(--meteor-travel-y)) rotate(var(--meteor-angle))}}@media (prefers-reduced-motion:reduce){.lyric-lines{animation:none}.meadow-meteor{display:none}}html[data-flower-story]{overscroll-behavior:none;background:#080f25;overflow:hidden}html[data-flower-story] body{overscroll-behavior:none;overflow:hidden}.flower-story{width:100vw;max-width:none;height:100dvh}.flower-story>canvas{width:100%;height:100%;position:absolute;inset:0}.lyric-neighbor:first-child{align-self:end}.lyric-neighbor:last-child{align-self:start}@media (max-height:500px){.meadow-song{top:12px}.meadow-cd{flex-basis:42px;width:42px;height:42px}.meadow-song-title{font-size:20px}.meadow-song-artist{margin:3px 0}.lyric-lines{gap:10px;height:190px}.lyric-current{font-size:28px}.lyric-neighbor{font-size:21px}}.meadow-song>div{text-align:left}@media (max-width:700px){.meadow-song-artist{font-size:17px}}
