// importing plugin globally @plugin “./plugin/plugin-global”;

// transitively include plugins from importing another sheet @import “./plugin/plugin-transitive”;

// `test-global` function should be reachable // `test-local` function should not be reachable // `test-shadow` function should return global version .class {

trans  : test-transitive();
global : test-global();
local  : test-local();
shadow : test-shadow();

// `test-global` function should propagate and be reachable
// `test-local`  function should be reachable
// `test-shadow` function should return local version, shadowing global version
.local {
  @plugin "./plugin/plugin-local";
  global : test-global();
  local  : test-local();
  shadow : test-shadow();
}

}

// calling a mixin or detached ruleset should not bubble local plugins // imported inside either into the parent scope. .mixin() {

@plugin "./plugin/plugin-local";
mixin-local  : test-local();
mixin-global : test-global();
mixin-shadow : test-shadow();

} @ruleset : {

@plugin "./plugin/plugin-local";
ruleset-local  : test-local();
ruleset-global : test-global();
ruleset-shadow : test-shadow();

}; ns {

@plugin "./plugin/plugin-local";
.mixin() {
  ns-mixin-global : test-global();
  ns-mixin-local  : test-local();
  ns-mixin-shadow : test-shadow();
}

} .class {

#ns > .mixin();
.mixin();
@ruleset();
class-local : test-local();

}

// `test-global` function should propagate into directive scope @media screen {

.test {
  result : test-global();
}

} @font-face {

result : test-global();

}

// `test-global` function should propagate into nested directive scopes @media screen and (min-width:100px) {

@media (max-width:400px) {
              .test {
                      result : test-global();
              }
      }

}

.test {

@media screen {
  @plugin "./plugin/plugin-local";
  result : test-local();
}

}