@font-face{font-family:'Portfolio Display';src:url('fonts/portfolio-display.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'Portfolio Sans';src:url('fonts/portfolio-sans.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
body{font-family:'Portfolio Sans','PingFang SC','Microsoft YaHei',sans-serif;font-synthesis:none;letter-spacing:.01em}
.desktop-kit text{font-family:'Portfolio Sans','Microsoft YaHei',sans-serif;font-weight:400}
.desktop-kit .module-title{font-family:'Portfolio Display','Arial Narrow',sans-serif;font-weight:600}
.desktop-kit .label-cn{letter-spacing:.7px}
.desktop-kit .identity-name{font-weight:400;letter-spacing:5px}
.part-fill{fill:var(--paper);transition:fill .18s ease}
.kit-link:hover .part-fill,.kit-link:focus-visible .part-fill{fill:var(--orange)}
.connector>path:nth-child(even){transition:stroke .18s ease}

.kit-link:focus-visible .part-surface>:first-child{stroke:var(--ink);stroke-width:4.5px}
.mobile-part{background:var(--paper);transition:background .18s ease}
.mobile-part:hover,.mobile-part:focus-visible{background:var(--orange)}
.mobile-part>strong,.page-title h1,.work h2,.launch>span,.detail-header nav{font-family:'Portfolio Display','Portfolio Sans',sans-serif;font-weight:600;letter-spacing:.045em}
.mobile-part>strong{font-size:27px}.part-241>strong{font-size:54px}
.mobile-header h1,.wordmark{font-family:'Portfolio Sans',sans-serif;font-weight:400;letter-spacing:.13em}
.page-title h1{font-size:clamp(44px,7vw,84px)}
.work h2{font-size:29px;letter-spacing:.015em}
.detail-header nav{font-size:13px;letter-spacing:.05em}
.facts dt,.about-facts dt,.section-bar h2,.text-section h2{font-weight:400;letter-spacing:.08em}
.page-title p,.mobile-header p{letter-spacing:.08em}
.dialogue{line-height:2.2}.about-facts{line-height:2}
@media(max-width:700px){.detail-header nav{font-size:12px}.page-title h1{font-size:50px}.work h2{font-size:26px}.desktop-kit .label-cn{letter-spacing:.4px}}
@media(prefers-reduced-motion:reduce){.part-fill,.connector>path:nth-child(even),.mobile-part{transition:none}}

.desktop-kit .kit-link:focus-visible{outline:none}

/* Rigid sprue gates; only the detachable module changes color. */
.kit-link:hover .connector>path:nth-child(odd),.kit-link:focus-visible .connector>path:nth-child(odd){stroke:var(--ink)}
.kit-link:hover .connector>path:nth-child(even),.kit-link:focus-visible .connector>path:nth-child(even){stroke:var(--paper)}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
 .kit-link:hover .part-surface,.kit-link:focus-visible .part-surface{animation:sprue-snap .52s linear both;filter:drop-shadow(4px 9px 0 #274a5d30)}
 .kit-link .part-surface{transition:transform .2s ease,filter .2s ease}
 @keyframes sprue-snap{0%{transform:translate(0,0) rotate(0)}15%{transform:translate(-1px,0) rotate(-1.3deg)}30%{transform:translate(2px,-1px) rotate(1.7deg)}45%{transform:translate(-2px,-2px) rotate(-2deg)}60%{transform:translate(2px,-3px) rotate(2deg)}72%{transform:translate(-2px,-5px) rotate(-1.8deg)}82%{transform:translate(1px,-12px) rotate(.5deg)}100%{transform:translate(0,-15px) rotate(-1.5deg)}}
}
.home:has([contenteditable]) .kit-link:hover .part-surface{animation:none;transform:none;filter:none}

.home .desktop-kit{user-select:none;-webkit-user-select:none}
