@@ -440,7 +440,13 @@ function materializeRules(
440440 zones : ResponsiveZone [ ] ,
441441) : StyleResult [ ] {
442442 return logicalRules . map ( ( rule ) => {
443- const selector = `.${ className } ${ rule . selectorSuffix } ` ;
443+ // Generate base selector
444+ let selector = `.${ className } ${ rule . selectorSuffix } ` ;
445+
446+ // Increase specificity for tasty class selectors by duplicating the class
447+ if ( / ^ t \d + $ / . test ( className ) ) {
448+ selector = `.${ className } ${ selector } ` ;
449+ }
444450
445451 const declarations = Object . entries ( rule . declarations )
446452 . map ( ( [ prop , value ] ) => `${ prop } : ${ value } ;` )
@@ -976,10 +982,19 @@ export function renderStyles(
976982 // Direct selector mode: convert logical rules directly to StyleResult format
977983 return allLogicalRules . map ( ( rule ) => {
978984 // Replace & with the actual selector or append suffix to selector
979- const finalSelector = rule . selectorSuffix
985+ let finalSelector = rule . selectorSuffix
980986 ? `${ classNameOrSelector } ${ rule . selectorSuffix } `
981987 : classNameOrSelector ;
982988
989+ // Increase specificity for tasty class selectors by duplicating the class
990+ if ( finalSelector . startsWith ( '.' ) && / ^ \. t \d + / . test ( finalSelector ) ) {
991+ const classMatch = finalSelector . match ( / ^ \. t \d + / ) ;
992+ if ( classMatch ) {
993+ const baseClass = classMatch [ 0 ] ;
994+ finalSelector = baseClass + finalSelector ;
995+ }
996+ }
997+
983998 const declarations = Object . entries ( rule . declarations )
984999 . map ( ( [ prop , value ] ) => `${ prop } : ${ value } ;` )
9851000 . join ( ' ' ) ;
0 commit comments