@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}.site-header{align-items:center;min-height:110px;padding:34px 0;font-size:13px;display:flex}.site-header nav{display:flex}.site-header nav a{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;align-items:center;gap:7px;padding:6px 0 6px 10px;font-size:12px;display:flex}.theme-switch span:first-child{font-size:19px}.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}.narrow-copy+.three-photos{margin-top:34px}.photo-strip,.three-photos{grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;display:grid}.photo-strip .photo:first-child{margin-top:9px;transform:rotate(-3deg)}.photo-strip .photo:nth-child(2){margin-bottom:15px;transform:rotate(2deg)}.photo-strip .photo:nth-child(3){margin-top:17px;transform:rotate(-1.5deg)}.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}.photo-strip .photo-frame{aspect-ratio:1.35}.two-photos{grid-template-columns:1fr 1fr;gap:22px;margin:30px 0;display:grid}.small-photos .photo-frame{aspect-ratio:2;background:var(--wash)}.small-photos .photo-frame img{object-fit:contain;padding:25px}.three-photos .photo-frame{aspect-ratio:1.1}.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-row{border-top:1px solid var(--line);grid-template-columns:210px 1fr;gap:60px;padding:40px 0 55px;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{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:28px 0 3px}.work-details summary{cursor:pointer;justify-content:space-between;padding:18px 0;font-size:14px;list-style:none;display:flex}.work-details summary::-webkit-details-marker{display:none}.work-details summary span{transition:transform .2s}.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}.split-story{grid-template-columns:1fr 1fr;align-items:center;gap:70px;display:grid}.split-story>div>.photo{max-width:340px;margin-top:30px}.split-story>.photo .photo-frame{aspect-ratio:.95}.link-row{margin-top:26px}.education>p{max-width:690px}@media (min-width:1500px){.site-shell{width:1080px}}@media (max-width:1000px){.site-shell{width:calc(100% - 64px)}.site-header{gap:22px}.site-header nav{gap:17px}.story-row{grid-template-columns:170px 1fr;gap:30px}.split-story{gap:40px}.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)}.site-header{flex-wrap:wrap;gap:15px;min-height:110px;padding:22px 0}.site-header nav{order:3;justify-content:space-between;gap:10px;width:100%;font-size:12px}.theme-switch{font-size:11px}.photo-strip{gap:12px}.photo-strip .photo-frame{aspect-ratio:.8}.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-row{grid-template-columns:1fr;gap:20px;padding:30px 0 40px}.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}.split-story{grid-template-columns:1fr;gap:30px}.split-story>.photo{max-width:500px}.split-story>.photo .photo-frame{aspect-ratio:1.25}.link-row{gap:20px;font-size:12px}.three-photos{grid-template-columns:1fr 1fr;gap:15px}.three-photos .photo:first-child{grid-column:1/-1}.three-photos .photo:first-child .photo-frame{aspect-ratio:1.5}h2{font-size:38px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}@media (max-width:360px){.site-header nav{gap:8px;font-size:11px}}.signature{width:116px;height:42px;display:block;overflow:visible}.site-header{gap:24px}.site-header nav{gap:20px}.theme-switch{min-width:90px}.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)}.organization-logo{object-fit:contain;object-position:left center;width:auto;max-width:170px;height:auto;max-height:70px;margin-bottom:14px}.mentor-marks{align-items:center;gap:30px;padding:20px 0;display:flex}.mentor-marks img{object-fit:contain;max-width:80px;height:60px}.community-chapter>.split-story{margin-top:35px}.city-labels{fill:var(--ink);font:8px var(--sans)}.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:1000px){.site-header{gap:17px}.site-header nav{gap:15px}.theme-switch{min-width:78px;font-size:11px}}@media (max-width:700px){.site-header nav{order:4;gap:12px;font-size:12px}.theme-switch{min-width:80px}.brand-strip{gap:20px}.brand-strip>.collaboration-logo{width:100px}.mentor-marks{gap:20px}}@media (max-width:360px){.site-header nav{gap:10px;font-size:11px}.site-header{gap:12px}}.chapter-shortcuts{gap:24px;margin-top:25px;font-size:12px;display:flex}.site-name{flex-shrink:0;margin-right:auto;text-decoration:none}.site-name .signature{width:174px;height:63px}.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-topic{color:var(--muted);font-size:11px}.lately-pages h3{font:27px/1.12 var(--serif);margin:13px 0}.lately-pages p{color:var(--muted);font-size:12px;line-height:1.75}@media (max-width:1000px){.site-name .signature{width:142.5px;height:52px}.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){.site-name .signature{width:156px;height:57px}.site-name{margin-right:auto}.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 a{grid-template-columns:85px 1fr;gap:0 20px;display:grid}.lately-topic{grid-row:span 2;padding-top:5px}.lately-pages h3{margin:0 0 8px}}@media (max-width:380px){.theme-label{display:none}.theme-switch{min-width:24px}}.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-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:90px;height:75px;top:-22px;left:min(68%,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}
.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{text-align:left;width:100%;color:inherit;cursor:default;--quote-x:-300px;--quote-y:-300px;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{filter:blur(4px);opacity:.55}.quote-sharp{pointer-events:none;opacity:0;-webkit-mask-image:radial-gradient(circle 125px at var(--quote-x) var(--quote-y), #000 20%, transparent 100%);mask-image:radial-gradient(circle 125px at var(--quote-x) var(--quote-y), #000 20%, 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 125px at var(--quote-x) var(--quote-y), transparent 20%, #000 100%);mask-image:radial-gradient(circle 125px at var(--quote-x) var(--quote-y), transparent 20%, #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 (prefers-reduced-motion:reduce){.quote-soft{filter:none;opacity:1}.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;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}.quote-art{justify-self:center;max-width:240px}.particle-flower{width:105px;height:117px}.particle-flower button{width:50px;height:50px;top:15px;left:30px}}.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.lit{stroke:var(--berry);stroke-opacity:.65}.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:24px;padding:0}.piano-menu{justify-content:space-between;align-items:center;gap:25px;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-scroll{scrollbar-width:thin;scrollbar-color:var(--line) transparent;padding:0 2px 13px;overflow-x:auto}.piano-scroll:focus-visible{outline:1px dashed var(--berry);outline-offset:5px}.piano-surface{min-width:900px}.piano-air{pointer-events:none;height:65px;position:relative;overflow:hidden}.piano-flying-note{color:var(--berry);font:25px var(--serif);opacity:0;animation:1.8s 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%,-135px)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-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}.piano-air{height:65px}}.attractor-heading{padding:0 18px}.attractor-next{align-items:center;gap:14px;display:flex}.quote-art-home .quote-orbit{animation:none}.theme-glyph{flex-shrink:0;width:20px;height:20px}.journal-navigation{border-left:1px solid var(--line);align-items:center;gap:20px;padding-left:20px;display:flex}.midnight-meteor{pointer-events:none;z-index:100;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){.journal-navigation{gap:10px;padding-left:10px}.midnight-meteor{width:100px}}@media (prefers-reduced-motion:reduce){.piano-flying-note{display:none}}@media (max-width:480px){.site-header nav{flex-wrap:wrap;justify-content:flex-start;gap:12px 24px}.journal-navigation{border-left:0;flex-basis:100%;gap:24px;padding-left:0}}.piano-now-playing{text-align:right;color:var(--muted);flex-wrap:wrap;justify-content:flex-end;align-items:baseline;gap:4px 10px;margin-left:auto;font-size:10px;display:flex}.piano-now-playing>span{font:13px/1.3 var(--serif);color:var(--ink)}.piano-menu>div:first-child{flex-shrink:0}@media (max-width:700px){.piano-now-playing{min-height:25px}}@media (prefers-reduced-motion:reduce){.quote-reveal[data-lens] .quote-soft{-webkit-mask-image:none;mask-image:none}}
.note-article{max-width:760px;margin:50px auto 0}.back-link{color:var(--muted);font-size:12px;text-decoration:none}.note-article header{margin:38px 0 40px}.note-article h1{max-width:730px;margin-bottom:24px;font-size:72px}.note-deck{font:21px/1.55 var(--serif);color:var(--muted);max-width:610px}.note-body>p{max-width:660px;font-size:17px;line-height:1.9}.note-body>p+p{margin-top:24px}.note-body .link-row{margin:30px 0}.note-body .attractor{max-width:330px;margin:30px auto}.note-photos{margin:35px 0}.note-photos:not(.three-photos){max-width:600px}@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}.note-deck{font-size:20px}}@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%}.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}.leaf-topic{color:var(--muted);margin-bottom:28px;font-size:10px}.notebook-leaf h2{margin-bottom:18px;font-size:38px}.notebook-leaf p{color:var(--muted);font-size:12px;line-height:1.8}.leaf-date{font:italic 16px var(--serif);color:var(--muted);align-self:end;margin-top:auto;padding-top:30px}@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}}.gallery-room{padding:65px 0 30px}.gallery-cabinet{grid-template-columns:repeat(3,minmax(0,1fr));align-items:center;gap:72px 48px;padding:0 12px;display:grid}.gallery-cabinet>figure{margin:0}.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)}.gallery-cabinet>.record-object{margin:0 auto}.record-object{justify-self:center;width:205px;max-width:100%;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-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:var(--paper);width:24px;height:24px;color:var(--ink);opacity:0;border-radius:50%;place-items:center;font-size:13px;transition:opacity .2s;display:grid;position:absolute;bottom:3px;right:3px}.record-button:hover .record-state,.record-button:focus-visible .record-state,.record-button[aria-pressed=true] .record-state{opacity:1}.spotify-link{color:var(--ink);background:var(--paper);border-radius:50%;padding:5px;position:absolute;bottom:-9px;right:-12px}.spotify-link:hover{color:var(--berry)}@media (max-width:700px){.gallery-room{padding:45px 0}.gallery-cabinet{grid-template-columns:repeat(2,minmax(0,1fr));gap:54px 28px;padding:0 7px}.cabinet-photo{padding:5px 5px 17px}.record-object{width:150px}.record-turntable{width:170px}.record-turntable .record-button{padding:10px 28px 10px 10px}.record-state{opacity:1}}@media (prefers-reduced-motion:reduce){.record-button[aria-pressed=true] .record-disc{animation:none}}@media (max-width:480px){.gallery-cabinet{grid-template-columns:1fr;gap:55px;padding:0 12px}.gallery-cabinet>.record-object{width:205px;margin:20px auto 32px}}.gallery-cabinet{grid-template-columns:repeat(6,minmax(0,1fr));gap:90px 40px}.gallery-cabinet>figure{grid-column:span 2}.gallery-cabinet>.cabinet-photo{justify-self:center;width:100%}.gallery-cabinet>.cabinet-photo-small{width:74%}.gallery-cabinet>.cabinet-photo-large{grid-column:span 3;width:100%}.record-object{padding-bottom:0}.record-state{opacity:1;width:40px;height:40px;inset:50% auto auto 50%;transform:translate(-50%,-50%)}.spotify-link{width:40px;height:40px;padding:10px;bottom:-7px;right:-7px}.spotify-link svg{width:20px;height:20px}@media (max-width:700px){.gallery-cabinet{grid-template-columns:repeat(4,minmax(0,1fr));gap:60px 24px}.gallery-cabinet>.cabinet-photo-large{grid-column:span 4;width:85%}}@media (max-width:480px){.gallery-cabinet{grid-template-columns:1fr;gap:55px;max-width:370px;margin-inline:auto}.gallery-cabinet>figure,.gallery-cabinet>.cabinet-photo-large{grid-column:1}.gallery-cabinet>.cabinet-photo{width:87%}.gallery-cabinet>.cabinet-photo-large{width:100%}.gallery-cabinet>.cabinet-photo-small{width:68%}.gallery-cabinet>.record-object{margin:0 auto}}.record-state{background:color-mix(in srgb, var(--paper) 90%, transparent);box-shadow:0 0 0 1px color-mix(in srgb, var(--ink) 12%, transparent), 0 2px 10px #0002}.spotify-link{box-shadow:0 0 0 3px var(--paper), 0 2px 8px #0002}.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}.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)}}@media (max-width:700px){.campus-scene{width:780px;max-width:none;position:relative;left:50%;transform:translate(-48%)}.footer-bottom{gap:14px;width:calc(100% - 40px);margin:0;bottom:16px}.footer-signature .signature{width:115px;height:44px}.footer-actions{gap:20px;font-size:11px}.footer-year{font-size:10px}}@media (max-width:360px){.footer-signature .signature{width:100px}.footer-actions{gap:14px}}.campus-ink-art{opacity:var(--campus-ink-opacity,.9)}.campus-lights{opacity:var(--campus-light-opacity,.22);transition:opacity 1s}:root[data-theme=dusk]{--campus-light-opacity:.48}:root[data-theme=night]{--campus-ink-opacity:.52;--campus-light-opacity:.9}:root[data-theme=midnight]{--campus-ink-opacity:.44;--campus-light-opacity:1}@media (prefers-reduced-motion:reduce){.campus-lights{transition:none}}.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){.footer-bottom{flex-wrap:wrap;align-items:center;gap:0 12px;margin:0 auto;padding:10px 0 16px;position:relative;bottom:auto;left:auto;transform:none}.footer-actions{flex-wrap:wrap;justify-content:flex-end;gap:0 18px;transform:none}.footer-signature{position:absolute;bottom:16px}.footer-actions{gap:0 14px;width:100%}}@media (prefers-reduced-motion:reduce){.campus-rooms path{transition:none}}@media (max-width:700px){.footer-signature{position:static}.footer-bottom{flex-wrap:nowrap;gap:10px;width:calc(100% - 24px)}.footer-signature .signature{width:80px}.footer-actions{font-size:10px}}
.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(76%,280px);transform:rotate(4deg)}.life-photo-stack .photo-frame{aspect-ratio:.8;border:7px solid #fbfaf5;box-shadow:2px 6px 18px #00000012}.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-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:1.6fr 1fr;align-items:center;gap:15px;display:grid}.contest-photos .photo:first-child .photo-frame{aspect-ratio:.95}.contest-photos .photo:last-child{margin-top:100px;margin-left:-45px;transform:rotate(5deg)}.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){.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}}.experience{grid-template-columns:170px 1fr;gap:55px;padding:35px 0 45px}.experience-logo{object-position:left center;background:0 0;width:155px;max-width:100%;height:65px;margin-bottom:20px;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:80px;height:38px}.mentor-marks img[alt=CEMC]{max-width:55px;height:55px}@media (max-width:700px){.experience{grid-template-columns:1fr;gap:18px}.experience-logo{width:135px;height:55px;margin:0}.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}.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{margin-bottom:20px}.experience-logo-frame .experience-logo{margin:0}.experience-logo-hamming{width:96px;height:96px}.experience-logo-breakout{width:115px;height:90px}.mentor-marks img[alt=USACO]{object-fit:contain;width:80px;max-width:80px;height:65px}.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-logo-codeforces{width:170px;max-width:none;height:auto}.experience-logo-frame-codeforces{align-items:center;min-height:45px;display:flex}:root:is([data-theme=night],[data-theme=midnight]) .experience-logo-waterloo{content:url(/industry/waterloo-logo.svg)}.experience-role{color:var(--ink);font-size:17px;line-height:1.5}.work-details{border-top:0}.experience-logo-frame-hamming{width:96px;position:relative}.experience-yc{border:3px solid var(--paper);box-sizing:content-box;position:absolute;bottom:-5px;right:-8px}.experience-logo-frame-grebel{background:#25302d;border-radius:3px;width:fit-content;padding:10px}.experience-logo-frame-grebel .experience-logo{width:155px;height:auto}.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}@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}.quote-end-home:before{content:"";background:var(--line);width:min(240px,38%);height:1px;position:absolute;top:0;left:0}.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;margin-bottom:45px}
.flower-story{z-index:200;cursor:default;position:fixed;inset:0;overflow:hidden}.flower-story>canvas{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{pointer-events:none;background:linear-gradient(90deg,#0000,#e4e8ff);width:200px;height:1px;animation:3.8s ease-out 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)rotate(12deg)}10%{opacity:.85}70%{opacity:.65}to{opacity:0;transform:translate(calc(100vw + 240px),130px)rotate(12deg)}}@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}}
