@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600&family=Libre+Caslon+Display&display=swap');
:root{--paper:#f7f5ef;--ink:#182b43;--muted:#596675;--line:#d6d9d6;--accent:#395f73}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',Arial,sans-serif;font-size:16px;line-height:1.65}a{color:inherit;text-decoration:none}a:focus-visible{outline:3px solid var(--accent);outline-offset:6px}::selection{background:#c5dbe2}.wrap{max-width:1240px;margin:auto;padding:0 64px}.nav{display:flex;justify-content:space-between;align-items:center;min-height:102px;border-bottom:1px solid var(--line);gap:24px}.brand{font-size:20px;font-weight:600;letter-spacing:-.04em}.navlinks{display:flex;gap:30px;font-size:14px}.navlinks a:hover,.navlinks a[aria-current=page]{text-decoration:underline;text-underline-offset:7px}.eyebrow{font-size:14px;letter-spacing:.14em;text-transform:uppercase}.hero{padding:92px 0 70px;position:relative}.hero h1{font-family:'Libre Caslon Display',Georgia,serif;font-size:clamp(64px,10.5vw,136px);line-height:1.05;letter-spacing:-.045em;font-weight:400;margin:26px 0}.tagline{font-family:'Libre Caslon Display',Georgia,serif;font-size:clamp(25px,3vw,37px);margin:0;color:var(--accent)}.hero-bottom{display:flex;justify-content:space-between;align-items:center;margin-top:55px;color:var(--muted);font-size:14px}.hero-bottom span{letter-spacing:.08em}.about{border-top:1px solid var(--line);padding:64px 0 85px;display:grid;grid-template-columns:1.2fr 1fr;gap:90px;align-items:center}.about h2,.page h1{font-family:'Libre Caslon Display',Georgia,serif;font-weight:400;font-size:54px;line-height:1.15;letter-spacing:-.025em;margin:18px 0 25px}.about p{max-width:520px;color:var(--muted);font-size:18px;line-height:1.8}.buttons{display:flex;flex-direction:column;margin-top:34px}.work-link{padding:18px 0;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:20px;transition:color .15s,padding .15s}.work-link:first-child{border-top:1px solid var(--line)}.work-link:hover{padding-left:8px;color:var(--accent)}.work-link .num{font-size:14px;color:var(--muted);font-variant-numeric:tabular-nums}.work-link .label{font-size:26px;font-weight:600;line-height:1.3}.work-link .kind{margin-left:auto;font-size:14px;color:var(--muted)}.portrait{aspect-ratio:4/5;background:#e2e7e6;border:1px solid #cbd4d5;display:flex;flex-direction:column;justify-content:space-between;padding:28px;position:relative}.portrait .placeholder{flex:1;display:flex;align-items:center;justify-content:center;font-family:'Libre Caslon Display',Georgia,serif;font-size:90px;color:#82989e;letter-spacing:-.06em}.portrait .caption{display:flex;justify-content:space-between;border-top:1px solid #b8c6c8;padding-top:16px;gap:14px;font-size:14px;color:#4e6871}.footer{border-top:1px solid var(--line);padding:26px 0 36px;display:flex;justify-content:space-between;gap:20px;font-size:14px;color:var(--muted)}.page{padding:68px 0 100px;min-height:75vh}.back{display:inline-block;color:var(--muted);font-size:14px;margin-bottom:48px;text-decoration:underline;text-underline-offset:5px}.page h1{font-size:clamp(52px,7vw,88px);max-width:850px}.lead{font-size:21px;color:var(--muted);max-width:680px}.empty{margin-top:58px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:40px 0;display:grid;grid-template-columns:90px 1fr;gap:24px}.empty .index{font-family:'Libre Caslon Display',Georgia,serif;font-size:48px;color:#8b9da8}.empty h2{font-size:22px;font-weight:500;margin:0 0 9px}.empty p{color:var(--muted);margin:0;max-width:650px}.skip{position:absolute;top:-100px;left:15px}.skip:focus{top:15px;background:white;padding:10px;z-index:5}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}@media(max-width:800px){.wrap{padding:0 28px}.nav{padding:22px 0;min-height:90px;flex-wrap:wrap}.navlinks{gap:16px;flex-wrap:wrap;font-size:14px}.hero{padding:65px 0 44px}.hero-bottom{margin-top:36px}.about{gap:35px;padding:45px 0 55px;grid-template-columns:1fr}.portrait{max-width:500px;width:100%;justify-self:center}.about h2{font-size:46px}.page{padding-top:40px}.empty{grid-template-columns:55px 1fr}.footer{flex-wrap:wrap}}@media(max-width:440px){.wrap{padding:0 22px}.hero h1{font-size:66px}.navlinks{gap:12px}.navlinks a{font-size:13px}.hero-bottom{align-items:flex-start;gap:20px}.work-link .kind{display:none}.tagline{max-width:280px}.portrait{padding:22px}}

.portrait-photo{margin:0;align-self:center;width:100%;max-width:480px;justify-self:center}.portrait-photo img{display:block;width:100%;height:auto}.portrait-photo figcaption{font-size:14px;color:var(--muted);padding-top:12px}.about{align-items:start}

@media(min-width:600px){.about{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:clamp(24px,5vw,64px);align-items:start}.about>div{grid-column:1;grid-row:1;min-width:0}.portrait-photo{grid-column:2;grid-row:1;align-self:start}}

.composition-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:48px}.composition-card{border:1px solid var(--line);padding:30px 26px;display:flex;flex-direction:column;min-height:310px;background:#fff;transition:border-color .15s,background .15s}.composition-card:hover{border-color:var(--accent);background:#edf2f3}.score-number{font-size:14px;letter-spacing:.12em;color:var(--muted)}.composition-card h2{font-family:"Libre Caslon Display",Georgia,serif;font-size:34px;font-weight:400;line-height:1.2;margin:26px 0 18px;overflow-wrap:break-word}.score-author{font-size:14px;color:var(--muted)}.score-action{display:flex;justify-content:space-between;gap:16px;border-top:1px solid var(--line);padding-top:16px;margin-top:auto;font-size:16px}.score-action>span{font-size:14px;color:var(--muted)}.score-author{margin-bottom:28px}@media(max-width:900px){.composition-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.composition-grid{grid-template-columns:1fr;gap:18px}.composition-card{min-height:260px}}
.recording{margin:0 0 24px;min-width:0}.recording-label{display:block;font-size:14px;color:var(--muted);margin-bottom:10px}.recording audio{display:block;width:100%;max-width:100%}.composition-card h2 a:hover{text-decoration:underline;text-underline-offset:5px}.composition-card .score-action:hover{color:var(--accent)}

.composition-description{font-size:16px;line-height:1.6;color:var(--muted);margin:0 0 18px}

.performance-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin-top:48px}.performance-card{border:1px solid var(--line);padding:28px;background:white;min-width:0}.performance-card h2{font-family:"Libre Caslon Display",Georgia,serif;font-size:32px;font-weight:400;line-height:1.25}.performance-card p{color:var(--muted)}.performance-card video{display:block;width:100%;max-height:580px;background:#182b43;margin-top:24px}@media(max-width:800px){.performance-grid{grid-template-columns:1fr}}

.technical-project{border-top:1px solid var(--line);margin-top:48px;padding-top:38px}.project-heading{display:flex;justify-content:space-between;align-items:start;gap:24px}.project-heading h2{font-family:"Libre Caslon Display",Georgia,serif;font-size:64px;font-weight:400;line-height:1.1;margin:12px 0}.project-heading .lead{margin-top:12px}.project-role{font-size:14px;color:var(--muted);white-space:nowrap}.project-summary{max-width:850px;font-size:18px;color:var(--muted)}.project-links{display:flex;gap:24px;flex-wrap:wrap;margin:26px 0 42px}.project-links a,.project-credit a{text-decoration:underline;text-underline-offset:4px}.project-example{padding-top:36px;border-top:1px solid var(--line)}.project-example h3{font-family:"Libre Caslon Display",Georgia,serif;font-size:40px;line-height:1.2;font-weight:400;margin:16px 0}.project-example>p{max-width:850px;color:var(--muted)}.example-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px;margin:32px 0}.example-steps h4{font-size:20px;margin:12px 0}.example-steps p{font-size:16px;color:var(--muted)}.example-figures{display:grid;grid-template-columns:1fr 1fr;gap:28px}.example-figures figure,.hierarchy-figure{margin:0;background:white;border:1px solid var(--line);padding:24px}.example-figures img{display:block;width:100%;height:auto;max-width:430px;margin:auto}.example-figures figure:first-child img{max-width:300px;image-rendering:auto}.example-figures figcaption,.hierarchy-figure figcaption{font-size:14px;color:var(--muted);margin-top:16px}.hierarchy-figure{margin-top:28px}.hierarchy-figure img{display:block;width:100%;max-width:648px;height:auto;margin:auto}.project-note{font-size:16px}.project-credit{font-size:14px;margin-top:28px}@media(max-width:800px){.project-heading{flex-direction:column}.example-steps,.example-figures{grid-template-columns:1fr}.project-role{white-space:normal}.project-example h3{font-size:32px}}

.project-overview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin:40px 0}.project-overview-card{display:flex;flex-direction:column;border:1px solid var(--line);background:white;padding:28px}.project-overview-card:hover{border-color:var(--accent)}.project-overview-card h2{font-family:"Libre Caslon Display",Georgia,serif;font-size:38px;line-height:1.2;font-weight:400;margin:16px 0}.project-overview-card p{color:var(--muted);margin:0 0 24px}.overview-action{font-size:16px;margin-top:auto;text-decoration:underline;text-underline-offset:5px}.technical-project{scroll-margin-top:28px}.cadencv-figures{display:grid;gap:24px;margin:30px 0}.cadencv-figures figure{margin:0;padding:24px;background:white;border:1px solid var(--line)}.cadencv-figures img{display:block;width:100%;height:auto}.cadencv-figures figcaption{font-size:14px;color:var(--muted);margin-top:16px}.project-result{max-width:850px;margin:32px 0}.project-result h4{font-size:22px;margin-bottom:12px}.project-result p{color:var(--muted)}@media(max-width:800px){.project-overview{grid-template-columns:1fr}.project-heading h2{font-size:clamp(38px,8vw,64px);overflow-wrap:anywhere}}

.navlinks{flex-wrap:wrap;justify-content:flex-end}.project-heading h1{font-size:clamp(38px,6vw,64px);margin:12px 0;overflow-wrap:anywhere}

.work-link{display:grid;grid-template-columns:24px minmax(0,1fr);gap:6px 18px;padding:22px 0}.work-link .num{grid-column:1;grid-row:1;font-size:16px}.work-link .label{grid-column:2;grid-row:1}.work-link .kind{grid-column:2;grid-row:2;margin-left:0;font-size:15px}@media(max-width:800px){.work-link .label{font-size:23px}}

.cv-document{display:block;width:100%;height:85vh;min-height:540px;border:1px solid var(--line);background:white}.cv-document a{text-decoration:underline}@media(max-width:600px){.cv-document{height:70vh;min-height:420px}}

.composition-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.composition-note{border-top:1px solid var(--line);padding-top:18px;margin-bottom:26px}.composition-note h3{font-size:15px;font-weight:600;margin:0 0 10px}.composition-note p{font-size:16px;line-height:1.75;color:var(--muted);margin:0}@media(max-width:600px){.composition-grid{grid-template-columns:1fr}}
