@import"https://api.fontshare.com/v2/css?f[]=plein@1,2&display=swap";:root{--bg: #123524;--text: #f1f1f1;--muted: #c7cec8;--max-width: 42rem;--wide-width: 68rem}*{box-sizing:border-box}html{font-size:16px}body{margin:0;min-height:100vh;font-family:Plein,Aptos,Segoe UI,Helvetica Neue,sans-serif;background:var(--bg);color:var(--text);line-height:1.65;text-rendering:optimizeLegibility}h1,h2,p{margin-top:0}a{color:inherit;text-decoration-color:color-mix(in srgb,currentColor 45%,transparent);text-underline-offset:.18em}a:hover{text-decoration-color:currentColor}.container{width:min(100% - 2rem,var(--max-width));margin:0 auto}.landing-page{min-height:100vh;display:flex;flex-direction:column;justify-content:space-between;padding:2rem 0}.landing-content{flex:1;display:grid;place-items:center;animation:fade-up .7s ease-out both}.intro{width:100%;text-align:center}.profile-photo{display:block;width:clamp(6.5rem,16vw,9rem);height:clamp(6.5rem,16vw,9rem);margin:0 auto 1.5rem;border:3px solid color-mix(in srgb,var(--text) 70%,transparent);border-radius:50%;object-fit:cover;object-position:50% 30%;box-shadow:0 1rem 2.5rem color-mix(in srgb,#000 25%,transparent)}h1{margin-bottom:1.5rem;font-size:clamp(3rem,10vw,6rem);line-height:1;letter-spacing:-.04em}.intro-copy{width:min(100%,34rem);margin:0 auto .8rem;color:var(--muted);font-size:clamp(1.1rem,2vw,1.5rem)}.intro-copy:last-child{margin-bottom:0}.footer{display:flex;justify-content:center;gap:1.25rem;padding-top:2rem;animation:fade-up .7s ease-out .18s both}.footer-link{color:var(--muted);text-decoration:none;transition:color .15s ease,transform .15s ease}.footer-link:hover{color:var(--text);transform:translateY(-1px)}.footer-link svg{display:block;width:2.5rem;height:2.5rem}.page{padding:3rem 0 4rem;animation:fade-up .7s ease-out both}.page-header{margin-bottom:3rem}.page-header h1{margin:.35rem 0 1rem;font-size:clamp(3rem,10vw,5rem)}.page-header p{max-width:34rem;color:var(--muted);font-size:clamp(1.05rem,2vw,1.35rem)}.home-word{text-decoration:none}.music-page,.projects-page{width:min(100% - 2rem,var(--wide-width))}.project-list{display:grid;gap:3rem}.project-feature{display:grid;gap:1.25rem;padding-bottom:3rem;border-bottom:1px solid color-mix(in srgb,var(--muted) 24%,transparent)}.project-preview{display:block;width:100%;padding:.35rem;border-radius:.6rem;background:color-mix(in srgb,var(--text) 8%,transparent);object-fit:cover}.project-copy h2,.project-copy h3,.project-copy p{margin-bottom:0}.project-copy{max-width:42rem}.project-title-row{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.project-copy h2{font-size:clamp(1.5rem,4vw,2.2rem);line-height:1.1}.project-copy h3{font-size:.9rem}.project-github-link{flex:0 0 auto;color:var(--muted);line-height:0;text-decoration:none;transition:color .15s ease,transform .15s ease}.project-github-link:hover{color:var(--text);transform:translateY(-1px)}.project-github-link svg{display:block;width:1.8rem;height:1.8rem}.project-commentary{margin-top:1.25rem;color:var(--muted)}.project-commentary h3{margin-bottom:.5rem;color:var(--text)}.music-sections{display:grid;gap:3rem}.music-section h2,.setup-note h2{margin-bottom:1rem;font-size:1.2rem}.music-list{display:grid;gap:.85rem;margin:0;padding:0;list-style:none}.music-item{display:grid;grid-template-columns:2ch 1fr;align-items:center;gap:1rem}.music-rank{color:var(--muted);font-variant-numeric:tabular-nums}.music-link{display:grid;grid-template-columns:3.5rem 1fr;align-items:center;gap:1rem;min-width:0;text-decoration:none}.music-link:hover span:first-of-type{text-decoration:underline;text-decoration-color:currentColor;text-underline-offset:.18em}.music-link img,.music-artwork{display:block;width:3.5rem;height:3.5rem;border-radius:.35rem;background:color-mix(in srgb,var(--text) 10%,transparent)}.music-link img{object-fit:contain}.music-link span{overflow-wrap:anywhere}.track-name,.track-artists{display:block;min-width:0}.track-artists,.setup-note{color:var(--muted)}.setup-note{padding:1.25rem 0}.setup-note code{color:var(--text);font-size:.95em}@keyframes fade-up{0%{opacity:0;transform:translateY(.75rem)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.landing-content,.footer,.page{animation:none}}@media(min-width:700px){.container{width:min(100% - 3rem,var(--max-width))}.music-page{width:min(100% - 3rem,var(--wide-width))}.music-sections{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}}
