@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;600&display=swap');
:root{--paper:#faf9f6;--ink:#273137;--muted:#68716f;--line:#dcded8;--accent:#315d67;--serif:Georgia,'Times New Roman',serif;--sans:'DM Sans',Arial,sans-serif;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:35px}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.6 var(--sans);-webkit-font-smoothing:antialiased}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer;background:none;border:0}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:6px}img{display:block;max-width:100%}h1,h2,h3,p{margin:0}h2,h3{font-family:var(--serif);font-weight:400;line-height:1.13}p+p{margin-top:18px}h2{font-size:clamp(32px,3.7vw,51px);letter-spacing:-.045em}h3{font-size:31px;letter-spacing:-.025em}p{max-width:70ch}button:hover,a:hover{color:var(--accent)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:fixed;top:-100px;left:20px;z-index:100;background:var(--ink);color:white;padding:10px 20px}.skip:focus{top:10px}.site-header{max-width:1600px;margin:auto;padding:28px 4.5%;display:flex;align-items:center;justify-content:space-between;gap:30px}.wordmark{font-family:var(--serif);font-size:23px;letter-spacing:-.6px;white-space:nowrap}.wordmark-dot{color:#b95844}.site-header nav{display:flex;gap:31px;font-size:13px}.contact-link{font-size:13px}.contact-link span{padding-left:20px}.gallery-intro{max-width:1700px;margin:auto;padding:18px 3% 0}.gallery-top{display:flex;justify-content:space-between;font-size:10px;text-transform:uppercase;letter-spacing:.13em;color:var(--muted);padding:0 1.7% 16px}.gallery-stage{position:relative;width:100%;height:clamp(420px,45vw,680px);touch-action:pan-y;outline:none!important}.gallery-stage:focus-visible{box-shadow:inset 0 0 0 1px var(--accent)}.gallery-stage canvas{position:absolute;width:100%;height:100%;inset:0;touch-action:pan-y;cursor:grab}.gallery-stage canvas:active{cursor:grabbing}.gallery-fallback{position:absolute;inset:0;display:grid;place-items:center;background:var(--paper);overflow:hidden;transition:opacity .5s}.gallery-fallback span{font-family:var(--serif);text-align:center;font-size:clamp(68px,11vw,170px);line-height:.95;letter-spacing:-.065em}.gallery-stage[data-ready=true] .gallery-fallback{opacity:0;pointer-events:none}.gallery-error{position:absolute;bottom:30px;left:15%;right:15%;font-size:12px;text-align:center}.gallery-toolbar{display:flex;align-items:center;justify-content:space-between;padding:21px 1.7% 27px;border-bottom:1px solid var(--line);gap:20px;font-size:12px}.gallery-toolbar p{color:var(--muted)}.gallery-toolbar p span{margin:0 9px}.gallery-toolbar>div{display:flex;gap:25px;align-items:center}.gallery-toolbar button{font-size:12px;padding:3px 0}.gallery-toolbar button span{margin-left:8px}#return-view{color:var(--muted)}.section-shell{width:min(1136px,88vw);margin:0 auto}.introduction{display:grid;grid-template-columns:1fr 1.62fr;gap:75px;padding-top:79px;padding-bottom:96px}.intro-meta{display:flex;flex-direction:column;gap:15px;padding-top:9px}.meta{text-transform:uppercase;font:500 10px/1.5 var(--sans);letter-spacing:.13em;display:block;color:var(--muted)}.small-status{font-size:12px;color:var(--muted)}.intro-statement{font:400 clamp(26px,2.9vw,40px)/1.27 var(--serif);letter-spacing:-.028em;max-width:620px}.intro-detail{font-size:15px;margin-top:25px;max-width:570px;color:#53615f}.inline-link{display:inline-flex;gap:25px;align-items:center;border-bottom:1px solid var(--ink);padding:0 0 6px;font-size:12px}.introduction .inline-link{margin-top:27px}.section-heading{display:flex;justify-content:space-between;align-items:end;gap:35px;margin-bottom:40px}.section-heading h2{margin-top:16px}.section-heading>p{font-size:13px;color:var(--muted);max-width:250px;line-height:1.65;padding-bottom:4px}.work-section{padding-top:20px;padding-bottom:105px}.project{border-top:1px solid var(--line)}.project:last-child{border-bottom:1px solid var(--line)}summary{list-style:none;cursor:pointer}summary::-webkit-details-marker{display:none}.project summary{display:grid;grid-template-columns:58px 1fr auto 18px;gap:16px;padding:29px 0;align-items:center}.index{font-size:11px;color:#8a918c;align-self:start;padding-top:3px}.project h3{margin:9px 0;font-size:33px}.project .meta{font-size:9px}.project-description{color:var(--muted);font-size:13px}.project-date{font-size:11px;align-self:start;padding-top:3px;color:var(--muted)}.plus{font-size:23px;font-weight:400}.project[open] .plus{transform:rotate(45deg)}.project-body{margin-left:74px;max-width:700px;padding:0 0 35px;font-size:15px;line-height:1.8}.project-body ul{padding-left:20px}.project-body li+li{margin-top:12px}.interests-section{border-top:1px solid var(--line);padding-top:65px;padding-bottom:90px}.music-feature{display:grid;grid-template-columns:.9fr 1.15fr;gap:75px;align-items:start;margin-top:55px}.music-art{height:510px;background:#e8ece5;position:relative;overflow:hidden}.score-line{position:absolute;left:12%;right:12%;height:1px;background:#9caea0;top:40%}.line-2{top:44%}.line-3{top:48%}.line-4{top:52%}.line-5{top:56%}.music-clef{position:absolute;left:20%;top:23%;font:190px/1 var(--serif);color:#485e51}.music-note{position:absolute;font:110px/1 var(--serif);color:#485e51}.note-1{left:48%;top:33%;transform:rotate(-6deg)}.note-2{left:70%;top:41%}.music-art-label{position:absolute;bottom:24px;width:100%;text-align:center;font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:#526653}.music-copy h3{font-size:42px;margin:13px 0 26px}.music-copy p{font-size:14px;line-height:1.8}.keyboard{display:flex;height:87px;margin-top:30px;border:1px solid #c9cdc5}.keyboard button{position:relative;flex:1;border-right:1px solid #c9cdc5;background:#fffefa}.keyboard button:last-child{border:0}.keyboard button:after{content:'';position:absolute;right:-7px;top:0;width:13px;height:47px;background:#2c3836;z-index:1}.keyboard button:nth-child(3):after,.keyboard button:nth-child(7):after,.keyboard button:last-child:after{display:none}.keyboard button span{position:absolute;bottom:7px;left:0;right:0;text-align:center;font-size:10px;color:#74817b}.keyboard button:active,.keyboard button.playing{background:#cddbd1}.small-note{display:block;font-size:11px;color:var(--muted);line-height:1.7;margin-top:14px}.interest-pair{display:grid;grid-template-columns:.9fr 1.15fr;gap:75px;margin-top:65px;padding-top:37px;border-top:1px solid var(--line)}.interest-pair h3{margin:13px 0 22px}.interest-pair p{font-size:14px;line-height:1.8}.interest-pair .inline-link{margin-top:24px}.writing-section{border-top:1px solid var(--line);padding-top:65px;padding-bottom:95px}.writing-layout{display:grid;grid-template-columns:.9fr 1.15fr;gap:75px;margin-top:50px}.writing-intro p{font-size:14px;line-height:1.8}.publications{font-size:13px;padding-left:18px;margin:27px 0}.publications li+li{margin-top:12px}.reading-list button{display:block;text-align:left;width:100%;border-top:1px solid var(--line);padding:23px 0 26px}.reading-list button:last-child{border-bottom:1px solid var(--line)}.reading-list h3{font-size:26px;margin:13px 0 18px;max-width:400px}.read-link{font-size:11px;color:var(--muted)}.archive-preview{padding-bottom:95px}.photo-strip{display:grid;grid-template-columns:1.2fr .85fr 1fr 1.1fr;gap:17px;align-items:center}.photo-strip button{padding:0;overflow:hidden}.photo-strip img{height:290px;width:100%;object-fit:cover;transition:transform .45s}.photo-strip button:nth-child(2){margin-top:65px}.photo-strip button:nth-child(4){margin-bottom:50px}.photo-strip button:hover img{transform:scale(1.025)}.about-section{display:grid;grid-template-columns:.9fr 1.15fr;gap:75px;border-top:1px solid var(--line);padding:65px 0 90px}.about-section h2{margin-top:16px}.about-copy{padding-top:34px;font-size:14px;line-height:1.8}.city-pair{display:flex;gap:16px;margin-top:35px}.city-pair button{padding:0;width:50%;text-align:left;font-size:11px}.city-pair img{width:100%;height:230px;object-fit:cover;margin-bottom:10px}.city-pair button:nth-child(2){margin-top:50px}.education{margin:30px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:19px 0}.education summary{display:flex;justify-content:space-between;font-size:13px}.education[open] summary{margin-bottom:24px}.education p{font-size:13px}.contact-section{padding:60px 0 70px;border-top:1px solid var(--line)}.contact-section h2{font-size:clamp(54px,7vw,90px);margin-top:20px}.contact-bottom{display:flex;justify-content:space-between;margin-top:30px;gap:20px}.contact-bottom>a:first-child{font-size:clamp(17px,2vw,25px);letter-spacing:-.02em}.contact-bottom>a:first-child span{margin-left:25px}footer{width:88vw;max-width:1136px;margin:auto;border-top:1px solid var(--line);padding:25px 0 35px;display:flex;justify-content:space-between;font-size:11px;color:var(--muted)}
dialog{border:0;padding:0;background:var(--paper);color:var(--ink);max-height:90dvh;overscroll-behavior:contain;box-shadow:0 20px 100px #172c3225}dialog::backdrop{background:#1b2529a6;backdrop-filter:blur(6px)}dialog[open]{animation:appear .28s ease}.dialog-close{font-size:12px;padding:13px 20px;border:1px solid var(--line);border-radius:2px;background:var(--paper);white-space:nowrap}.reading-dialog{width:min(780px,94vw);padding:30px 65px 55px}.reading-dialog>.dialog-close{display:block;margin-left:auto;position:sticky;top:0;z-index:2}.reading-dialog article{padding-top:35px}.reading-dialog h2{font-size:37px;line-height:1.18;margin-bottom:30px;letter-spacing:-.035em}.reading-dialog h3{font-size:25px;margin:30px 0 15px}.reading-dialog p,.reading-dialog li{font:17px/1.85 var(--serif)}.reading-dialog p+p{margin-top:23px}.reading-dialog ol{padding-left:23px}.reading-dialog .meta{margin-bottom:15px}.notebook-image{width:130px;margin:35px auto 0}.archive-dialog{width:min(1280px,95vw);padding:30px}.archive-header{display:flex;justify-content:space-between;align-items:center;background:var(--paper);padding:0 0 25px;position:sticky;top:0;z-index:2}.archive-header h2{font-size:32px;margin-top:6px}.archive-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:15px}.archive-grid button{padding:0;text-align:left;font-size:10px;color:var(--muted)}.archive-grid img{aspect-ratio:4/5;width:100%;height:auto;object-fit:cover;background:#e6e9e2;margin-bottom:7px}.archive-more{padding:30px 0 5px;display:flex;justify-content:space-between;gap:20px;font-size:12px}.archive-more button{border-bottom:1px solid var(--ink)}.photo-dialog{width:min(1200px,96vw);height:90dvh;padding:18px 25px;overflow:hidden;display:none}.photo-dialog[open]{display:flex;flex-direction:column}.photo-viewer-top{display:flex;align-items:center;justify-content:space-between;flex-shrink:0;font-size:11px}.photo-image-wrap{flex:1;min-height:0;position:relative;margin:18px 0}.photo-image-wrap img{width:100%;height:100%;object-fit:contain}.photo-prev,.photo-next{position:absolute;top:50%;transform:translateY(-50%);background:#faf9f6eb;border:1px solid var(--line);width:42px;height:42px;border-radius:50%;font-size:18px}.photo-prev{left:0}.photo-next{right:0}.photo-caption{display:flex;justify-content:space-between;font-size:12px;gap:20px;padding-bottom:5px}.photo-dialog.photo-loading img{opacity:.5}@keyframes appear{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1800px){.gallery-stage{height:720px}}
@media(max-width:1000px){.site-header{gap:25px}.site-header nav{gap:20px}.contact-link{display:none}.gallery-stage{height:520px}.section-shell{width:88vw}.introduction,.music-feature,.interest-pair,.writing-layout,.about-section{gap:40px}.music-art{height:430px}.music-copy h3{font-size:36px}.project-date{display:none}.project summary{grid-template-columns:35px 1fr 18px}.project-body{margin-left:51px}.photo-strip img{height:230px}}
@media(max-width:650px){.site-header{padding:23px 6%;flex-wrap:wrap;gap:17px}.wordmark{font-size:22px}.site-header nav{width:100%;justify-content:space-between;font-size:12px;gap:15px}.gallery-intro{padding:15px 2% 0}.gallery-top{font-size:8px;padding:0 4% 12px;letter-spacing:.08em}.gallery-stage{height:440px}.gallery-toolbar{margin:0 4%;padding:17px 0;display:block;font-size:10px}.gallery-toolbar p{font-size:10px}.gallery-toolbar>div{justify-content:space-between;margin-top:16px}.gallery-toolbar button{font-size:11px}.section-shell{width:88vw}.introduction{display:block;padding:45px 0 65px}.intro-meta{margin-bottom:26px;gap:8px}.intro-statement{font-size:29px}.intro-detail{font-size:14px}.section-heading{display:block;margin-bottom:25px}.section-heading>p{margin-top:20px}.section-heading h2{font-size:35px}.work-section{padding-bottom:65px}.project summary{padding:24px 0;grid-template-columns:23px 1fr 12px;gap:12px}.project h3{font-size:27px}.project-description{font-size:12px;display:block}.project-body{margin-left:35px;font-size:14px}.music-feature,.interest-pair,.writing-layout,.about-section{grid-template-columns:1fr;gap:33px}.interests-section,.writing-section{padding-top:45px;padding-bottom:65px}.music-feature{margin-top:30px}.music-art{height:230px}.music-clef{font-size:135px;top:17%}.music-note{font-size:80px}.music-copy h3{font-size:36px}.interest-pair{margin-top:40px}.writing-layout{margin-top:30px}.archive-preview{padding-bottom:60px}.archive-preview .inline-link{margin-top:25px}.photo-strip{grid-template-columns:1fr 1fr;gap:12px}.photo-strip img{height:200px}.photo-strip button:nth-child(2){margin-top:30px}.photo-strip button:nth-child(4){margin-bottom:0}.about-section{padding-top:45px;padding-bottom:60px;gap:0}.about-copy{padding-top:30px}.city-pair img{height:225px}.contact-section{padding:45px 0 45px}.contact-bottom{flex-direction:column;gap:25px}.contact-bottom>a:first-child span{margin-left:10px}footer{font-size:10px;gap:20px}.reading-dialog{padding:18px 24px 35px}.reading-dialog article{padding-top:25px}.reading-dialog h2{font-size:29px}.reading-dialog p,.reading-dialog li{font-size:16px}.archive-dialog{padding:16px}.archive-grid{grid-template-columns:repeat(3,1fr);gap:10px}.archive-header h2{font-size:27px}.photo-dialog{padding:12px 13px}.photo-prev,.photo-next{width:34px;height:34px}.photo-caption{font-size:10px}.archive-more{font-size:10px}.dialog-close{padding:11px 15px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

.venture-timeline{border-left:1px solid var(--line);padding-left:24px;margin-top:8px}.venture-timeline article+article{margin-top:27px}.venture-timeline h4{font:400 25px/1.2 var(--serif);letter-spacing:-.025em;margin:0 0 10px}.venture-timeline p{margin:0}

/* The photographic entrance is painted before the 3D module or full atlas loads. */
.gallery-stage .gallery-entrance{pointer-events:none;cursor:auto;opacity:1;transition:opacity .18s ease}
.gallery-stage .gallery-webgl{opacity:0;pointer-events:none;transition:opacity .18s ease}
.gallery-stage[data-ready=true] .gallery-entrance{opacity:0}
.gallery-stage[data-ready=true] .gallery-webgl{opacity:1;pointer-events:auto}
@media(prefers-reduced-motion:reduce){.gallery-stage .gallery-entrance,.gallery-stage .gallery-webgl{transition:none}}

/* Personal photographs replace the score illustration without changing the music controls. */
.interest-montage{margin:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));grid-template-rows:3fr 2fr;gap:8px;aspect-ratio:4/5;width:100%;align-self:start}
.montage-photo{min-width:0;min-height:0;overflow:hidden;background:#e8e6df}
.montage-piano,.montage-studio{grid-column:span 3}
.montage-performance{grid-column:span 4}
.montage-drawing{grid-column:span 2}
.interest-montage img{width:100%;height:100%;object-fit:cover}
.montage-piano img{object-position:58% 50%}
.montage-performance img{object-position:48% 50%}
.montage-drawing img{object-position:50% 60%}
@media(max-width:650px){.interest-montage{gap:6px;max-width:480px}}

.drawing-section{margin-top:64px;padding-top:40px;border-top:1px solid var(--line)}
.drawing-heading{display:flex;align-items:end;justify-content:space-between;gap:40px;margin-bottom:28px}
.drawing-heading h3{margin-top:12px}.drawing-heading p{font:italic 17px/1.6 var(--serif);max-width:375px;color:var(--muted)}
.drawing-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px}
.drawing-thumb{display:block;text-align:left;min-width:0;padding:0}
.drawing-thumb img{width:100%;height:auto;aspect-ratio:4/5;object-fit:contain;background:#eeeae4}
.drawing-thumb>span{display:flex;justify-content:space-between;margin-top:9px;color:var(--muted);font-size:10px;letter-spacing:.08em}
.interest-pair-single{display:block;margin-top:42px}.interest-pair-single article{max-width:760px}
.drawing-dialog{width:min(1050px,96vw);max-width:96vw;max-height:94dvh;border:1px solid var(--line);padding:18px 24px;background:var(--paper);color:var(--ink)}
.drawing-dialog::backdrop{background:rgba(25,30,28,.68)}
.drawing-viewer-header{display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:12px}
.drawing-viewer-image{position:relative;margin-top:12px;display:grid;place-items:center}
.drawing-viewer-image img{width:100%;height:68dvh;object-fit:contain}
.drawing-viewer-image button{position:absolute;top:50%;transform:translateY(-50%);width:38px;height:38px;border:1px solid var(--line);border-radius:50%;background:var(--paper);font-size:20px}
#drawing-prev{left:0}#drawing-next{right:0}#drawing-caption{margin-top:16px;font-size:12px;color:var(--muted)}
@media(max-width:1000px){.drawing-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.drawing-section{margin-top:40px;padding-top:30px}.drawing-heading{display:block}.drawing-heading p{margin-top:16px;font-size:16px}.drawing-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 12px}.drawing-dialog{padding:12px}.drawing-viewer-image img{height:65dvh}}

.drawing-toggle{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-bottom:8px}.drawing-toggle-title{display:block;font:400 31px/1.2 var(--serif);letter-spacing:-.025em;margin-top:12px}.drawing-toggle-mark{font-size:26px;font-weight:300;color:var(--muted)}.drawing-section[open] .drawing-toggle-mark{transform:rotate(45deg)}.drawing-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:8px}.drawing-note{font:italic 17px/1.6 var(--serif);color:var(--muted);margin:16px 0 28px}
