@font-face{font-family:'Site Sans';font-style:normal;font-weight:400 600;font-display:swap;src:url('assets/fonts/SiteSans.woff2') format('woff2')}
/* CJK advance width is preserved; overrides align the fallback line box with Noto Sans SC. */
@font-face{font-family:'Site Sans Fallback';src:local('Microsoft YaHei');size-adjust:100%;ascent-override:116%;descent-override:28.8%;line-gap-override:0%}
:root{--font-body:'Site Sans','Site Sans Fallback','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;--font-identity:'Personal WenKai','KaiTi','STKaiti',serif;--font-music:'Music Sans','Site Sans','Site Sans Fallback',sans-serif;--font-music-display:'Music Display','Site Sans','Site Sans Fallback',sans-serif;--type-body:1.0625rem;--type-label:1rem;--type-meta:.8125rem}
body{font-family:var(--font-body);font-size:var(--type-body);line-height:1.75;font-synthesis:none}
button,input,select,textarea{font-family:var(--font-body);font-size:var(--type-label);line-height:1.5}
h1,h2,h3,strong{font-family:var(--font-body);font-weight:600}
h1{font-size:2.75rem;line-height:1.25}h2{font-size:1.625rem;line-height:1.35}h3{font-size:1.375rem;line-height:1.4}
.page-head p{max-width:44ch;font-size:var(--type-body);line-height:1.8}
.profile-name h1{font-family:var(--font-identity);font-weight:400;font-size:4.5rem;line-height:1.12;letter-spacing:.02em}
.profile-name p{font:400 1.4375rem/1.5 var(--font-music)}
.profile-poem{font-weight:500;letter-spacing:.015em;text-wrap:balance}
.profile-intro .profile-poem{font-size:1.75rem;line-height:1.6}
.profile-tag{font-size:var(--type-label);font-weight:400;line-height:1.5}
.peek-heading h2{font-size:var(--type-label);font-weight:500;line-height:1.4}
.back-link,.object-link,.listen-link,.section-heading a,.section-heading button,.segmented button,.work-try p,.work-try a{font-size:var(--type-label);line-height:1.5}
.full-image-link>span,.work-details summary,.repo-card .object-link{font-size:var(--type-label);line-height:1.5}
.capsule-label{font-size:var(--type-label)}.capsule-current,.site-footer{font-size:var(--type-meta);line-height:1.5}
.section-heading h2{font-size:1.375rem}.section-heading p,.browse-controls>p,.project-note{font-size:var(--type-meta)}
.hana-identity h2{font-size:1.875rem;line-height:1.35;font-weight:600}.hana-copy p{font-size:var(--type-body);line-height:1.75}.hana-copy .hana-flow{font-size:var(--type-meta)}
.collection-copy h2{font-size:1.625rem;line-height:1.35}.collection-copy p{font-size:var(--type-body);line-height:1.75}
.art-caption h2,.art-grid[data-density=compact] h2{font-size:var(--type-label);font-weight:500;line-height:1.5}.art-caption p,.image-index a,.image-sequence figcaption,.work-details dl{font-size:var(--type-meta);line-height:1.7}
.image-sequence figcaption{gap:20px}.image-sequence figcaption>span{font-variant-numeric:tabular-nums}
.tdd-title h2{font-size:2rem;line-height:1.3}.tdd-card>p,.repo-card p,.empty-state p{font-size:var(--type-body);line-height:1.8}.repo-card h2{font-size:1.4375rem;line-height:1.4}.source-person,.tdd-cycle{font-size:var(--type-meta)}
.music-search input{font:400 var(--type-label)/1.7 var(--font-body)}
.artist-caption h2{font:500 2.0625rem/1.2 var(--font-music-display)}.artist-caption p{font-size:var(--type-meta);line-height:1.5}
.sleeve-caption h2,.sleeve-caption h3{font:400 1.125rem/1.45 var(--font-music);min-height:2.9em}.sleeve-caption p{font:400 var(--type-meta)/1.6 var(--font-music)}
.track-list a{font:400 var(--type-body)/1.6 var(--font-music)}.record-room .record-copy h1{font:500 2.6875rem/1.22 var(--font-music-display)}.record-artist{font:400 1.25rem/1.5 var(--font-music)}.record-room .record-meta{font:400 var(--type-meta)/1.6 var(--font-music)}.record-room .listen-link{font-size:var(--type-label)}
.artist-tracks h2,.record-tracks h2{font-size:1.375rem}.music-empty{font-size:var(--type-body)}
.viewer-head h2{font-size:var(--type-label);font-weight:500}.viewer-controls button{font-size:var(--type-label)}.viewer-foot{font-size:var(--type-meta)}
/* Future writing surfaces use these reading roles without changing the outer shell. */
.blog-intro,.blog-posts,.post-content{max-width:42rem}.post-content{font-size:1.125rem;line-height:1.85}.post-content p+p{margin-top:1.25em}.post-content h2{margin-top:2em;margin-bottom:.6em}.post-content h3{margin-top:1.75em;margin-bottom:.5em}.post-meta,.blog-entry-meta{font-size:var(--type-meta);font-variant-numeric:tabular-nums}.blog-entry-summary{font-size:var(--type-body);line-height:1.8}
@media(min-width:701px) and (max-width:1120px){.profile-name h1{font-size:4rem}.record-room .record-copy h1{font-size:2.375rem}}
@media(min-width:701px) and (max-width:1000px){.profile-name h1{font-size:3.75rem}.profile-intro .profile-poem{font-size:1.5rem}}
@media(max-width:700px){
 :root{--type-body:1rem}h1{font-size:2.125rem}.page-head p{font-size:var(--type-body)}
 .profile-name h1{font-size:3.0625rem;line-height:1.2}.profile-name p{font-size:1.1875rem}.profile-intro .profile-poem{font-size:1.375rem;line-height:1.55}.profile-tag,.peek-heading h2{font-size:var(--type-label)}
 .hana-identity h2{font-size:1.625rem}.collection-copy h2{font-size:1.5rem}.collection-copy p,.hana-copy p{font-size:var(--type-body)}
 .art-caption h2,.art-grid[data-density=compact] h2{font-size:var(--type-label)}.art-caption p,.image-index a,.image-sequence figcaption{font-size:var(--type-meta)}
 .tdd-title h2{font-size:1.75rem}.tdd-card>p,.repo-card p,.empty-state p{font-size:var(--type-body)}
 .artist-caption h2{font-size:2.125rem}.artist-caption p{font-size:var(--type-meta)}.sleeve-caption h2,.sleeve-caption h3{font-size:var(--type-label)}.sleeve-caption p{font-size:var(--type-meta)}.record-room .record-copy h1{font-size:2.1875rem}.track-list a{font-size:var(--type-body)}
 .post-content{font-size:var(--type-body)}.image-viewer[open]{grid-template-rows:auto minmax(0,1fr) auto}.viewer-head{flex-direction:column;align-items:stretch;padding:12px;gap:10px}.viewer-head h2{max-width:100%;white-space:normal;overflow-wrap:anywhere}.viewer-controls{align-self:flex-end;flex-wrap:wrap;gap:6px}.viewer-controls button{padding:7px 10px}.viewer-foot{min-height:43px;align-items:center}.viewer-head h2,.viewer-controls button{font-size:var(--type-label)}.viewer-foot{font-size:var(--type-meta)}
}
@media(max-width:360px){.profile-name h1{font-size:2.6875rem}.profile-intro .profile-poem{font-size:1.25rem}.profile-tag{font-size:.875rem}}
